
    dcg             	          d Z dZddlZddlZddlZddlmZ	 d Z
dZdZdZg d	Zd
gZdZedd         D ]Ze                    e           eez  Z[[d Zd Zd Zd Zd Z ed          Z ed          Z ed          Zedk    sJ edez  dz   k    sJ edez  dz
  k    sJ d Zg dZg dZd ZdJdZd Z d Z!d Z"d Z#d  Z$g d!Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/ G d, d-          Z0 e0d.          e0_1         e0d/d0d1d1d23          e0_2         e0d4          e0_3         G d5 d6          Z4e4Z5 e4ddd          e4_1         e4dd7d8          e4_2         e0d9          e4_3         G d: d;          Z6 G d< d=e7          Z8e8Z9[8e6Z: G d> d?          ZeZ; eddd          e_1         ed0d1d1d2          e_2         e0d4          e_3         G d@ dAe4          Z< e<ddd          e<_1         e<dd7d8d0d1d1d2          e<_2         e0d4          e<_3        dB Z= G dC dDe6          Z>e>?                     e0d                    xZ@e>_A        e>?                     e0d0d1E                     e>_1        e>?                     e0d0d1E                    e>_2         e<dFdde>jA        G          ZB	 ddHlCT [[[[[[[B[[[[+[,[-[)[*[
[.[5[[[[[ [	[[=[[[[;[:[![[/[$['[&[9[([#[%["ddIlCm Z  dS # eD$ r Y dS w xY w)KzConcrete date/time and related types.

See http://www.iana.org/time-zones/repository/tz-link.html for
time zone and DST data sources.
)	datedatetimetime	timedeltatimezonetzinfoMINYEARMAXYEARUTC    N)indexc                 &    | |k    rdn	| |k    rdndS )Nr       xys       /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/datetime.py_cmpr      s     Q11QAAB.    r   i'  i۹7 )r         r      r   r   r   r   r   r   r   r   r   c                 8    | dz  dk    o| dz  dk    p| dz  dk    S )zyear -> 1 if leap year, else 0.   r   d     r   )years    r   _is_leapr   *   s*    !8q=AdSjAo@qAr   c                 :    | dz
  }|dz  |dz  z   |dz  z
  |dz  z   S )z2year -> number of days before January 1st of year.r   m  r   r   r   r   )r   r   s     r   _days_before_yearr"   .   s/    qAS51a4<!S& 1c6))r   c                 |    d|cxk    rdk    sn J |            |dk    rt          |           rdS t          |         S )z9year, month -> number of days in that month in that year.r            )r   _DAYS_IN_MONTHr   months     r   _days_in_monthr*   3   sR    Uzzhtnnzr%  r   c                 z    d|cxk    rdk    sn J d            t           |         |dk    ot          |           z   S )zCyear, month -> number of days in year preceding first day of month.r   r$   month must be in 1..12r%   )_DAYS_BEFORE_MONTHr   r(   s     r   _days_before_monthr.   :   sO    5e$	(DhtnnEEr   c                     d|cxk    rdk    sn J d            t          | |          }d|cxk    r|k    sn J d|z              t          |           t          | |          z   |z   S )z>year, month, day -> ordinal, considering 01-Jan-0001 as day 1.r   r$   r,   day must be in 1..%d)r*   r"   r.   r   r)   daydims       r   _ymd2ordr4   ?   s    5
u
%
%C????s?????3c9???d##tU++, r   i  e      i  r      c                 V   | dz  } t          | t                    \  }} |dz  dz   }t          | t                    \  }} t          | t                    \  }} t          | d          \  }} ||dz  |dz  z   |z   z  }|dk    s|dk    r| dk    sJ |dz
  ddfS |d	k    o|d
k    p|d	k    }|t	          |          k    sJ | dz   dz	  }t
          |         |dk    o|z   }|| k    r|dz  }|t          |         |dk    o|z   z  }| |z  } d| cxk    rt          ||          k     sn J ||| dz   fS )z@ordinal -> (year, month, day), considering 01-Jan-0001 as day 1.r   r   r!   r   r   r   r$   r         2   r6   r%   )divmod_DI400Y_DI100Y_DI4Yr   r-   r'   r*   )	nn400r   n100n4n1leapyearr)   	precedings	            r   _ord2ymdrG   X   s   . FAQ  GD!#:>D Q  GD! 1eEB 1cNNEBD3Ja"$$D	Qww$!))AvvvvAvr2~ Qw2B"H1	Hx~~%%%%VME"5)UQY-C8DI1}}
^E*eqj.EXFF	NA////N4//////// !r   )NJanFebMarAprMayJunJulAugSepOctNovDec)NMonTueWedThuFriSatSunc                     t          | ||          dz   dz  }t          | |          |z   }t          j        | ||||||||f	          S )N      )r4   r.   _timestruct_time)	r   mdhhmmssdstflagwdaydnums	            r   _build_struct_timerh      sU    Q1!Q&Da##a'DaAr2r4wGHHHr   autoc                     dddddd}|dk    r|rdnd	}n|d
k    r|dz  }	 ||         }|                     | |||          S # t          $ r t          d          w xY w)Nz{:02d}z{:02d}:{:02d}z{:02d}:{:02d}:{:02d}z{:02d}:{:02d}:{:02d}.{:03d}z{:02d}:{:02d}:{:02d}.{:06d})hoursminutessecondsmillisecondsmicrosecondsri   ro   rm   rn     zUnknown timespec value)formatKeyError
ValueError)rb   rc   rd   ustimespecspecsfmts          r   _format_timerx      s    ")55 E 6%'6>>Y	^	#	#
t*Ho zz"b"b)))  3 3 312223s   A Ac                 "   d}| | j         dk     rd}|  } nd}t          | t          d                    \  }}t          |t          d                    \  }}|d|||fz  z  }|s|j        r!|d	|j        z  z  }|j        r|d
|j        z  z  }|S )N r   -+r   rk   rl   z%s%02d:%02dz:%02d.%06d)daysr<   r   ro   rm   )offssignrb   rc   rd   s         r   _format_offsetr      s    
A
8a<<D$CCDYQ///00BIa00011B	]dB^++ 	/ 	/2:%%A /Wr..Hr   c                    d }d }d }g }|j         }dt          |          }	}||	k     r||         }
|dz  }|
dk    r||	k     r||         }
|dz  }|
dk    r-|dt          | dd          z  }|                     |           nY|
dk    r|d}t          | d	          r|                                 }|d
}|j        dk     r| }d}t          |t          d                    \  }}t          |t          d                    \  }}|j        }|j	        }|rd|||||fz  }n|r
d||||fz  }nd|||fz  }d|vsJ |                     |           n|
dk    rV|>d}t          | d          r,| 
                                }||                    dd          }|                     |           n. |d            ||
           n |d           n ||
           ||	k     d                    |          }t          j        ||          S )Nr   r   %fz%06dmicrosecondzrz   	utcoffsetr|   r{   r}   r~   z%c%02d%02d%02d.%06dz%c%02d%02d%02dz
%c%02d%02dZtznamez%%)appendlengetattrhasattrr   r   r<   r   rm   ro   r   replacejoinr^   strftime)objectrq   	timetuplefreplacezreplaceZreplace	newformatpushir@   choffsetr   hrestr`   r   us                     r   _wrap_strftimer      s   HHH IDc&kkqA
a%%AY	Q991uuAYQ99'#)GF4A1-F -F $F$$X....3YY'#%"6;77 K%+%5%5%7%7F%1'*#);??.4WF+.D*09K9K9K*L*L4*0y7K7K7K*L*L4$(L$*$7#$ !K/DaQRTUWXGY/YHH%& !K/?4Aq//QHH/;tQl/JHh....$$X....3YY'#%"6844 @ &A }+,99S$+?+?$$X....DIIIDHHHHS				DHHHc a%%d 	""I>)Y///r   c                 
    | dv S )N
0123456789r   )cs    r   _is_ascii_digitr   	  s    r   c                    t          |           }|dk    rdS |dk    sJ d}d}| d         |k    rk| d         |k    r]|dk     rt          d          |dk    r@| d         |k    r4|dk    rt          d          |d	k    rt          | d	                   rdS d	S dS d	S | d         |k    r>d}||k     r!t          | |                   sn|d
z  }||k     !|dk     r|S |dz  dk    rdS dS dS )Nr]   r{   Wr   r6      zInvalid ISO string	   
   r   r%   r   )r   rs   r   )dtstr	len_dtstrdate_separatorweek_indicatoridxs        r   "_find_isoformat_datetime_separatorr     s@   E

IA~~qq====NNQx>!!8~%%1}} !56661}}q^!;!;>>$%9:::r>>oeBi&@&@> 1r q 28~%%C	//&uSz22 q 	//
 Qww
Qw!||qq 1r   c                    t          |           dv sJ t          | dd                   }| d         dk    }d|z   }| ||dz            dk    r|dz  }t          | ||dz                      }|dz  }d}t          |           |k    rC| ||dz            dk    |k    rt          d          ||z  }t          | ||dz                      }t          t	          |||                    S t          | ||dz                      }|dz  }| ||dz            dk    |k    rt          d          ||z  }t          | ||dz                      }|||gS )	Nr]   r   r   r   r   r{   r   r   r%   z"Inconsistent use of dash separator)r   intrs   list_isoweek_to_gregorian)r   r   has_sepposweeknodaynor)   r2   s           r   _parse_isoformat_dater   E  s    u::####uQqSz??DAh#oG
g+CSq[S  qU3sQw;'((qu::c#'k"c)g55 !EFFF7NCc#'k*++E)$>>???E#cAg+&''q#cAg+#%'11ABBBw%C!G$%%eS!!r   )i i'  rp   r   r   c                    t          |           }g d}d}t          dd          D ]~}||z
  dk     rt          d          t          | ||dz                      ||<   |dz  }| ||dz            }|dk    r|dk    }|r|dk    r n |r|dk    rt          d|z            ||z  }||k     r| |         d	vrt          d
          |dz  }||z
  }|dk    rd}n|}t          | |||z                      |d<   |dk     r|dxx         t          |dz
           z  cc<   ||k    r<t          t          t          | ||z   d                              st          d          |S )N)r   r   r   r   r   r9   r%   zIncomplete time componentr   :zInvalid time separator: %cz.,zInvalid microsecond componentr\   z%Non-digit values in unparsed fraction)r   rangers   r   _FRACTION_CORRECTIONallmapr   )	tstrlen_str
time_compsr   comp	next_charr   len_remainderto_parses	            r   _parse_hh_mm_ss_ffr   l  s   $iiGJ
Ca  cMQ8999tCAI//
4qSUO	1993&G 	DAIIE 	GyC''9IEFFFw
W}}9D  <===1HC#cMM!!(S#h,%7 899JqM!||1!5hqj!AA((OT3x<//5J K KLL ) !HIIIr   c                    t          |           }|dk     rt          d          |                     d          dz   p/|                     d          dz   p|                     d          dz   }|dk    r| d |dz
           n| }t          |          }d }||k    r| d         dk    rt          j        }n|dk    r| |d          }t          |          d	v rt          d
          t          |          }t          d |D                       rt          j        }nP| |dz
           dk    rdnd}t          |d         |d         |d         |d                   }	t	          ||	z            }|                    |           |S )Nr%   zIsoformat time too shortr{   r   r|   r   r   r   )r   r   r9   zMalformed time zone stringc              3   "   K   | ]
}|d k    V  dS )r   Nr   ).0r   s     r   	<genexpr>z(_parse_isoformat_time.<locals>.<genexpr>  s&      ((!qAv((((((r   r9   rk   rl   rm   ro   )	r   rs   findr   r   utcr   r   r   )
r   r   tz_postimestrr   tzitzstrtz_compstzsigntds
             r   _parse_isoformat_timer     s   $iiG{{3444 iinnq LDIIcNNQ$6L$))C..1:LF!'!d9F1H9ooG#G,,J
CT"X__l	!VWW u::""9:::%e,,((x((((( 	(,CC
+s22RRF!hqk#+A;Xa[J J JB 6B;''Ccr   c                    t           | cxk    rt          k    sn t          d|            d|cxk     rdk     sOn d}|dk    r1t          | dd          dz  }|dk    s|dk    rt	          |           rd	}|rt          d
|           d|cxk     rdk     sn t          d| d          |dz
  dz  |dz
  z   }t          |           }||z   }t          |          S )NzYear is out of range: r   5   Tr   r]   r   r9   FzInvalid week: r   zInvalid weekday: z (range is [1, 7]))r   r	   rs   r4   r   _isoweek1mondayrG   )r   weekr2   out_of_rangefirst_weekday
day_offsetday_1ord_days           r   r   r     s,   d%%%%g%%%%8$88999t====b====2:: %T1a0014M""}'9'9'/~~ (:$ 	64d44555s;;;;Q;;;;DSDDDEEE (a37+J D!!Ej GGr   c                 v    | 4t          | t                    s!t          dt          |           z            d S d S )Nz4tzinfo.tzname() must return None or string, not '%s')
isinstancestr	TypeErrortype)names    r   _check_tznamer     sJ    
4 5 5 #%)$ZZ0 1 1 	1 r   c                    | dv sJ |d S t          |t                    s#t          d| dt          |          d          t          d           |cxk     rt          d          k     sn t	          | d|d          d S )N)r   dstztzinfo.z'() must return None or timedelta, not ''r   z()=zG, must be strictly between -timedelta(hours=24) and timedelta(hours=24))r   r   r   r   rs   )r   r   s     r   _check_utc_offsetr     s    '''''~fi(( Ii48DD$v,,,,H I I 	IaLL=60000IaLL0000$$( ) ) 	) 10r   c                 x   t          |           } t          |          }t          |          }t          | cxk    rt          k    s!n t          dt          t          fz  |           d|cxk    rdk    sn t          d|          t	          | |          }d|cxk    r|k    sn t          d|z  |          | ||fS )Nzyear must be in %d..%dr   r$   r,   r0   )_indexr   r	   rs   r*   r1   s       r   _check_date_fieldsr     s    $<<D5MME
++Cd%%%%g%%%%1Wg4FFMMM15999
u
%
%C????s????/#5s;;;r   c                    t          |           } t          |          }t          |          }t          |          }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|cxk    rdk    sn t          d|          |d	vrt          d
|          | ||||fS )Nr      zhour must be in 0..23;   zminute must be in 0..59zsecond must be in 0..59?B z microsecond must be in 0..999999)r   r   zfold must be either 0 or 1)r   rs   )hourminutesecondr   folds        r   _check_time_fieldsr     s   $<<DF^^FF^^F%%K????????0$777"2F;;;"2F;;;%%%%v%%%%;[III65t<<<d22r   c                 V    | $t          | t                    st          d          d S d S )Nz4tzinfo argument must be None or of a tzinfo subclass)r   r   r   )tzs    r   _check_tzinfo_argr   !  s/    	~jV44~NOOO ~~~r   c                 v    t          dt          |           j        dt          |          j        d          )Nzcan't compare 'z' to 'r   )r   r   __name__r   s     r   	_cmperrorr   %  s>    
)GG$$$d1gg&6&6&68 9 9 9r   c                     t          | |          \  }}|dz  }|dk    r||k    n||k     }|s||k    r|dz  dk    r|dz  }|S )zdivide a by b and round result to the nearest integer

    When the ratio is exactly half-way between two integers,
    the even integer is returned.
    r%   r   r   )r<   )abqrgreater_than_halfs        r   _divide_and_roundr  )  sd     !Q<<DAq FA!"QAAE AFFq1uzz	QHr   c                      e Zd ZdZdZ	 	 d"dZd Zd Zd Ze	d             Z
e	d	             Ze	d
             Zd ZeZd Zd Zd Zd Zd Zd Ze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!S )#r   a  Represent the difference between two datetime objects.

    Supported operators:

    - add, subtract timedelta
    - unary plus, minus, abs
    - compare to timedelta
    - multiply, divide by int

    In addition, datetime supports subtraction of two datetime objects
    returning a timedelta, and addition or subtraction of a datetime
    and a timedelta giving a datetime.

    Representation: (days, seconds, microseconds).  Why?  Because I
    felt like it.
    )_days_seconds_microseconds	_hashcoder   c                 B   dx}x}	}
||dz  z  }||dz  |dz  z   z  }||dz  z  }t          |t                    rzt          j        |          \  }}t          j        |dz            \  }}|t	          |          k    sJ t	          |          }	|t	          |          k    sJ t	          |          }nd}|}t          |t                    sJ t          |          dk    sJ t          |t                    sJ t          |	          d	k    sJ t          |t                    rVt          j        |          \  }}|t	          |          k    sJ t	          |          }||z  }t          |          d
k    sJ n|}t          |t                    sJ t          |          d
k    sJ t          |t                    sJ t          |d	          \  }}||z  }|	t	          |          z  }	t          |	t                    sJ t          |	          dk    sJ |dz  }t          |          dk     sJ t          |t                    rCt          ||z             }t          |d          \  }}t          |d	          \  }}||z  }|	|z  }	nQt	          |          }t          |d          \  }}t          |d	          \  }}||z  }|	|z  }	t          ||z             }t          |	t                    sJ t          |t                    sJ t          |	          dk    sJ t          |          dk     sJ t          |d          \  }}
|	|z  }	t          |	d	          \  }}	||z  }t          |t                    sJ t          |	t                    rd|	cxk    rd	k     sn J t          |
t                    rd|
cxk    rdk     sn J t          |          dk    rt          d|z            t          
                    |           }||_        |	|_        |
|_        d|_        |S )Nr   r]   <     rp   g     @g        g      ?Q g       @i      .Ag    @A@B i g    GAɚ;z$timedelta # of days is too large: %dr   )r   float_mathmodfr   absr<   roundOverflowErrorr   __new__r  r  r  r	  )clsr   rm   ro   rn   rl   rk   weeksra   r   rt   dayfracdaysecondsfracdaysecondswholesecondsfracusdoubleselfs                    r   r  ztimedelta.__new__P  s    A 	a72:d
**T)) dE"" 		!Jt,,MGT.3jI9N.O.O+NO"c/&:&:::::O$$A3t99$$$$D		AA NA.%00000>""c))))!S!!!!!1vv"""" gu%% 	)#(:g#6#6 Kc'll****'llG>)K{##s*****(K+u-----;3&&&&'3'''''w00g	T		S\\!S!!!!!1vv&&&& $8}}u$$$$ lE** 	: !899L$*<$A$A!G\"7G44MD'IALAA|,,L$*<$A$A!G\"7G44MD'IALA !899L!S!!!!!,,,,,,1vv&&&&<  5(((( \733	WG$$a	T	!S!!!!!!S!!6a1&6&6&6&6w&6&6&6&6&6&6"c""8qB'8'8'8'8'8'8'8'8'8'8q66I F JKKK~~c""
r   c                 p   g }| j         r|                    d| j         z             | j        r|                    d| j        z             | j        r|                    d| j        z             |s|                    d           | j        j        d| j        j        dd                    |          dS )	Nzdays=%dz
seconds=%dzmicroseconds=%d0.(, ))r  r   r  r  	__class__
__module____qualname__r   )r  argss     r   __repr__ztimedelta.__repr__  s    : 	0KK	DJ.///= 	6KKt}4555 	@KK)D,>>??? 	KK"n777"n999"iioooo/ 	/r   c                     t          | j        d          \  }}t          |d          \  }}d|||fz  }| j        rd }d || j                  z  |z   }| j        r|d| j        z  z   }|S )Nr  z%d:%02d:%02dc                 4    | t          |           dk    rdpdfS )Nr   r   rz   )r  )r@   s    r   pluralz!timedelta.__str__.<locals>.plural  s!    #a&&A+-#333r   z
%d day%s, r   )r<   r  r  r  )r  rc   rd   rb   r   r-  s         r   __str__ztimedelta.__str__  s    r**BBBb"b\): 	84 4 4tz 2 22a7A 	1Gd000Ar   c                 B    | j         dz  | j        z   dz  | j        z   dz  S )zTotal seconds in the duration.r  r  )r   rm   ro   r  s    r   total_secondsztimedelta.total_seconds  s0    U"T\1U:!"%*+ 	+r   c                     | j         S r   r  r0  s    r   r   ztimedelta.days       zr   c                     | j         S rm   )r  r0  s    r   rm   ztimedelta.seconds  s     }r   c                     | j         S ro   )r  r0  s    r   ro   ztimedelta.microseconds  s     !!r   c                     t          |t                    r8t          | j        |j        z   | j        |j        z   | j        |j        z             S t
          S Nr   r   r  r  r  NotImplementedr  others     r   __add__ztimedelta.__add__  Y    eY'' 	G TZ%+5!]U^;!/%2EEG G G r   c                     t          |t                    r8t          | j        |j        z
  | j        |j        z
  | j        |j        z
            S t
          S r;  r<  r>  s     r   __sub__ztimedelta.__sub__  rA  r   c                 F    t          |t                    r|  |z   S t          S r;  )r   r   r=  r>  s     r   __rsub__ztimedelta.__rsub__  s&    eY'' 	!55= r   c                 H    t          | j         | j         | j                   S r;  )r   r  r  r  r0  s    r   __neg__ztimedelta.__neg__  s,     $*-,,. . 	.r   c                     | S r;  r   r0  s    r   __pos__ztimedelta.__pos__  s    r   c                 "    | j         dk     r|  S | S Nr   r4  r0  s    r   __abs__ztimedelta.__abs__  s    :>>5LKr   c                 P   t          |t                    r)t          | j        |z  | j        |z  | j        |z            S t          |t                    rM|                                 }|                                \  }}t          ddt          ||z  |                    S t          S rK  )r   r   r   r  r  r  r  _to_microsecondsas_integer_ratior  r=  r  r?  usecr   r   s        r   __mul__ztimedelta.__mul__  s    eS!! 	9 TZ%/!]U2!/%79 9 9 eU## 	C((**D))++DAqQ#4TAXq#A#ABBBr   c                 <    | j         dz  | j        z   dz  | j        z   S )Nr  r  r  r  r  r0  s    r   rN  ztimedelta._to_microseconds  s(    w'$-77B"# 	$r   c                    t          |t          t          f          st          S |                                 }t          |t                    r||                                z  S t          |t                    rt          dd||z            S d S rK  )r   r   r   r=  rN  )r  r?  rQ  s      r   __floordiv__ztimedelta.__floordiv__   s    %#y!122 	"!!$$&&eY'' 	45113333eS!! 	2Q45=111	2 	2r   c                    t          |t          t          t          f          st          S |                                 }t          |t                    r||                                z  S t          |t                    rt          ddt          ||                    S t          |t                    r9|                                \  }}t          ddt          ||z  |                    S d S rK  )r   r   r  r   r=  rN  r  rO  rP  s        r   __truediv__ztimedelta.__truediv__)  s    %#ui!899 	"!!$$&&eY'' 	3%002222eS!! 	CQ#4T5#A#ABBBeU## 	C))++DAqQ#4QXq#A#ABBB	C 	Cr   c                     t          |t                    r:|                                 |                                z  }t          dd|          S t          S rK  )r   r   rN  r=  )r  r?  r  s      r   __mod__ztimedelta.__mod__5  sN    eY'' 	&%%''%*@*@*B*BBAQ1%%%r   c                     t          |t                    rJt          |                                 |                                          \  }}|t          dd|          fS t          S rK  )r   r   r<   rN  r=  )r  r?  r  r  s       r   
__divmod__ztimedelta.__divmod__;  sa    eY'' 	)$//1100224 4DAqi1a((((r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r   r   r   r=  r>  s     r   __eq__ztimedelta.__eq__D  1    eY'' 	"99U##q((!!r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r^  r>  s     r   __le__ztimedelta.__le__J  r`  r   c                 l    t          |t                    r|                     |          dk     S t          S rK  r^  r>  s     r   __lt__ztimedelta.__lt__P  1    eY'' 	"99U##a''!!r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r^  r>  s     r   __ge__ztimedelta.__ge__V  r`  r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r^  r>  s     r   __gt__ztimedelta.__gt__\  re  r   c                     t          |t                    sJ t          |                                 |                                          S r;  )r   r   r   	_getstater>  s     r   r   ztimedelta._cmpb  s<    %+++++DNN$$eoo&7&7888r   c                 r    | j         dk    r&t          |                                           | _         | j         S )Nr   r	  hashrk  r0  s    r   __hash__ztimedelta.__hash__f  s0    >R!$.."2"233DN~r   c                 D    | j         dk    p| j        dk    p
| j        dk    S rK  rT  r0  s    r   __bool__ztimedelta.__bool__k  s/    
a ("("a'	)r   c                 *    | j         | j        | j        fS r;  rT  r0  s    r   rk  ztimedelta._getstater  s    
DM4+=>>r   c                 8    | j         |                                 fS r;  r&  rk  r0  s    r   
__reduce__ztimedelta.__reduce__u       0 011r   N)r   r   r   r   r   r   r   )%r   r'  r(  __doc__	__slots__r  r*  r.  r1  propertyr   rm   ro   r@  __radd__rC  rE  rG  rI  rL  rR  __rmul__rN  rV  rX  rZ  r\  r_  rb  rd  rg  ri  r   ro  rq  rk  ru  r   r   r   r   r   =  s          BI56:;c c c cJ/ / /
 
 
+ + +   X   X " " X"   H    
. . .       H$ $ $2 2 2
C 
C 
C    " " "" " "" " "" " "" " "9 9 9  
) ) )? ? ?2 2 2 2 2r   r   i6er  r   r   r   )r   rk   rl   rm   ro   r9  c                   b   e Zd ZdZdZd$dZed             Zed             Zed             Z	ed             Z
ed	             Zd
 Zd Zd Zd Zd ZeZed             Zed             Zed             Zd Zd Zd%dZd Zd Zd Zd Zd Zd Zd Zd Z e Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(dS )&r   a  Concrete date type.

    Constructors:

    __new__()
    fromtimestamp()
    today()
    fromordinal()

    Operators:

    __repr__, __str__
    __eq__, __le__, __lt__, __ge__, __gt__, __hash__
    __add__, __radd__, __sub__ (add/radd only with timedelta arg)

    Methods:

    timetuple()
    toordinal()
    weekday()
    isoweekday(), isocalendar(), isoformat()
    ctime()
    strftime()

    Properties (readonly):
    year, month, day
    )_year_month_dayr	  Nc                 J   |t          |t          t          f          rt          |          dk    rdt	          |dd                   cxk    rdk    rn nt          |t                    r4	 |                    d          }n# t          $ r t          d          w xY wt          	                    |           }|
                    |           d	|_        |S t          |||          \  }}}t          	                    |           }||_        ||_        ||_        d	|_        |S )
zVConstructor.

        Arguments:

        year, month, day (required, base 1)
        Nr   r   r%   r9   r$   latin1znFailed to encode latin1 string when unpickling a date object. pickle.load(data, encoding='latin1') is assumed.r   )r   bytesr   r   ordencodeUnicodeEncodeErrorrs   r   r  _date__setstater	  r   r}  r~  r  )r  r   r)   r2   r  s        r   r  zdate.__new__  s?    MteS\** /24yyA~~T!A#Y%%%%2%%%%%$$$ LL;;x00DD) L L L$KL L LL >>#&&DOOD!!!DNK-dE3??eS~~c""
	s   -B Bc           	      X    t          j        |          \	  }}}}}}}}	}
 | |||          S )z;Construct a date from a POSIX timestamp (like time.time()).)r^   	localtime)r  tr   r`   ra   rb   rc   rd   weekdayjdayr   s              r   fromtimestampzdate.fromtimestamp  s8     38/!2D2D/1aRWdCs1a||r   c                 R    t          j                    }|                     |          S )z"Construct a date from time.time().r^   r   r  r  r  s     r   todayz
date.today  s#     JLL  ###r   c                 B    t          |          \  }}} | |||          S )zConstruct a date from a proleptic Gregorian ordinal.

        January 1 of year 1 is day 1.  Only the year, month and day are
        non-zero in the result.
        )rG   )r  r@   r   r`   ra   s        r   fromordinalzdate.fromordinal  s'     1++1as1a||r   c                     t          |t                    st          d          t          |          dvrt	          d|          	  | t          |           S # t          $ r t	          d|          w xY w)z2Construct a date from a string in ISO 8601 format.#fromisoformat: argument must be strr   Invalid isoformat string: )r   r   r   r   rs   r   	Exception)r  date_strings     r   fromisoformatzdate.fromisoformat  s     +s++ 	CABBB{:--I+IIJJJ	K3-k::;; 	K 	K 	KI+IIJJJ	Ks   	A A8c                 *     | t          |||           S )z|Construct a date from the ISO year, week number and weekday.

        This is the inverse of the date.isocalendar() function)r   )r  r   r   r2   s       r   fromisocalendarzdate.fromisocalendar  s    
 s)$c::;;r   c                 \    d| j         j        | j         j        | j        | j        | j        fz  S )a5  Convert to formal string, for repr().

        >>> dt = datetime(2010, 1, 1)
        >>> repr(dt)
        'datetime.datetime(2010, 1, 1, 0, 0)'

        >>> dt = datetime(2010, 1, 1, tzinfo=timezone.utc)
        >>> repr(dt)
        'datetime.datetime(2010, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)'
        z%s.%s(%d, %d, %d))r&  r'  r(  r}  r~  r  r0  s    r   r*  zdate.__repr__  s4     #dn&?&*n&A&*j&*k&*i	&1 1 	1r   c                     |                                  dz  pd}dt          |         t          | j                 | j        | j        fz  S )Return ctime() style string.r]   z%s %s %2d 00:00:00 %04d)	toordinal	_DAYNAMES_MONTHNAMESr~  r  r}  r  r  s     r   ctimez
date.ctime   sH    ..""Q&+!(g$Itz,# # 	#r   c                 H    t          | ||                                           S )zQ
        Format using strftime().

        Example: "%d/%m/%Y, %H:%M:%S"
        )r   r   r  rw   s     r   r   zdate.strftime  s      dC)9)9:::r   c                     t          |t                    s$t          dt          |          j        z            t          |          dk    r|                     |          S t          |           S Nzmust be str, not %sr   r   r   r   r   r   r   r   r  s     r   
__format__zdate.__format__  _    #s## 	H1DII4FFGGGs88q====%%%4yyr   c                 0    d| j         | j        | j        fz  S )zReturn the date formatted according to ISO.

        This is 'YYYY-MM-DD'.

        References:
        - http://www.w3.org/TR/NOTE-datetime
        - http://www.cl.cam.ac.uk/~mgk25/iso-time.html
        z%04d-%02d-%02d)r}  r~  r  r0  s    r   	isoformatzdate.isoformat  s      4:t{DI"FFFr   c                     | j         S )zyear (1-9999))r}  r0  s    r   r   z	date.year%  r5  r   c                     | j         S )zmonth (1-12))r~  r0  s    r   r)   z
date.month*  s     {r   c                     | j         S )z
day (1-31))r  r0  s    r   r2   zdate.day/  s     yr   c           	      J    t          | j        | j        | j        dddd          S )9Return local time tuple compatible with time.localtime().r   r   )rh   r}  r~  r  r0  s    r   r   zdate.timetuple7  s)    !$*dk49"#Q2/ / 	/r   c                 B    t          | j        | j        | j                  S )zReturn proleptic Gregorian ordinal for the year, month and day.

        January 1 of year 1 is day 1.  Only the year, month and day values
        contribute to the result.
        )r4   r}  r~  r  r0  s    r   r  zdate.toordinal<  s     
DK;;;r   c                 l    || j         }|| j        }|| j        } t          |           |||          S )z;Return a new date with new values for the specified fields.)r}  r~  r  r   )r  r   r)   r2   s       r   r   zdate.replaceD  s@    <:D=KE;)CtDzz$s+++r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r   r   r   r=  r>  s     r   r_  zdate.__eq__P  1    eT"" 	)99U##q((r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r  r>  s     r   rb  zdate.__le__U  r  r   c                 l    t          |t                    r|                     |          dk     S t          S rK  r  r>  s     r   rd  zdate.__lt__Z  1    eT"" 	(99U##a''r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r  r>  s     r   rg  zdate.__ge___  r  r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r  r>  s     r   ri  zdate.__gt__d  r  r   c                     t          |t                    sJ | j        | j        | j        }}}|j        |j        |j        }}}t          |||f|||f          S r;  )r   r   r}  r~  r  r   )r  r?  r   r`   ra   y2m2d2s           r   r   z	date._cmpi  sZ    %&&&&&*dk49a1[%,
BQ1IB|,,,r   c                 r    | j         dk    r&t          |                                           | _         | j         S )Hash.r   rm  r0  s    r   ro  zdate.__hash__o  s0    >R!$.."2"233DN~r   c                     t          |t                    rb|                                 |j        z   }d|cxk     rt          k    r%n n"t          |                               |          S t          d          t          S )zAdd a date to a timedelta.r   result out of range)	r   r   r  r   _MAXORDINALr   r  r  r=  )r  r?  os      r   r@  zdate.__add__w  s{    eY'' 	7  5:-A1#########Dzz--a000 5666r   c                    t          |t                    r| t          |j                   z   S t          |t                    r:|                                 }|                                }t          ||z
            S t
          S )z.Subtract two dates, or a date and a timedelta.)r   r   r   r   r  r=  )r  r?  days1days2s       r   rC  zdate.__sub__  ss    eY'' 	1)UZK0000eT"" 	,NN$$EOO%%EUU]+++r   c                 6    |                                  dz   dz  S )z:Return day of the week, where Monday == 0 ... Sunday == 6.r\   r]   r  r0  s    r   r  zdate.weekday  s      1$))r   c                 4    |                                  dz  pdS )z:Return day of the week, where Monday == 1 ... Sunday == 7.r]   r  r0  s    r   
isoweekdayzdate.isoweekday  s     ~~!#(q(r   c                 p   | j         }t          |          }t          | j         | j        | j                  }t          ||z
  d          \  }}|dk     r+|dz  }t          |          }t          ||z
  d          \  }}n#|dk    r|t          |dz             k    r|dz  }d}t          ||dz   |dz             S )a  Return a named tuple containing ISO year, week number, and weekday.

        The first ISO week of the year is the (Mon-Sun) week
        containing the year's first Thursday; everything else derives
        from that.

        The first week is 1; Monday is 1 ... Sunday is 7.

        ISO calendar algorithm taken from
        http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm
        (used with permission)
        r]   r   r   4   )r}  r   r4   r~  r  r<   _IsoCalendarDate)r  r   week1mondayr  r   r2   s         r   isocalendarzdate.isocalendar  s     z%d++T[$)<<5;.22	c!88AID)$//Ku{2A66ID##RZZQ////	d1fc!e444r   c                 n    t          | j        d          \  }}t          ||| j        | j        g          fS N   )r<   r}  r  r~  r  )r  yhiylos      r   rk  zdate._getstate  s5    $*c**Sc3TY78899r   c                 B    |\  }}| _         | _        |dz  |z   | _        d S r  )r~  r  r}  )r  stringr  r  s       r   
__setstatezdate.__setstate  s'    +1(S$+ty3Y_


r   c                 8    | j         |                                 fS r;  rt  r0  s    r   ru  zdate.__reduce__  rv  r   )NN)NNN))r   r'  r(  rw  rx  r  classmethodr  r  r  r  r  r*  r  r   r  r  r.  ry  r   r)   r2   r   r  r   r_  rb  rd  rg  ri  r   ro  r@  rz  rC  r  r  r  rk  r  ru  r   r   r   r   r   }  s        6 7I   D   [
 $ $ [$
   [ K K [K < < [<1 1 1,# # #; ; ;  	G 	G 	G G   X   X   X/ / /
< < <, , , ,  
  
  
  
  
- - -     H  * * *) ) )
5 5 5<: : :% % %2 2 2 2 2r   r   r$   r   r3  c                   4    e Zd ZdZdZd Zd Zd Zd Zd Z	dS )	r   z}Abstract base class for time zone info classes.

    Subclasses must override the name(), utcoffset() and dst() methods.
    r   c                      t          d          )z%datetime -> string name of time zone.z&tzinfo subclass must override tzname()NotImplementedErrorr  dts     r   r   ztzinfo.tzname  s    !"JKKKr   c                      t          d          )zIdatetime -> timedelta, positive for east of UTC, negative for west of UTCz)tzinfo subclass must override utcoffset()r  r  s     r   r   ztzinfo.utcoffset  s    !"MNNNr   c                      t          d          )zdatetime -> DST offset as timedelta, positive for east of UTC.

        Return 0 if DST not in effect.  utcoffset() must include the DST
        offset.
        z#tzinfo subclass must override dst()r  r  s     r   r   z
tzinfo.dst  s     ""GHHHr   c                 z   t          |t                    st          d          |j        | urt	          d          |                                }|t	          d          |                                }|t	          d          ||z
  }|r*||z  }|                                }|t	          d          ||z   S )z*datetime in UTC -> datetime in local time.z&fromutc() requires a datetime argumentzdt.tzinfo is not selfNz0fromutc() requires a non-None utcoffset() resultz*fromutc() requires a non-None dst() resultz;fromutc(): dt.dst gave inconsistent results; cannot convert)r   r   r   r   rs   r   r   )r  r  dtoffdtdstdeltas        r   fromutcztzinfo.fromutc  s     "h'' 	FDEEE9D  4555= & ' ' '
 =IJJJ 	<%KBFFHHE}  "; < < <Ezr   c                 z    t          | dd           }|r |            }nd}| j        ||                                 fS )N__getinitargs__r   )r   r&  __getstate__)r  getinitargsr)  s      r   ru  ztzinfo.__reduce__  sI    d$5t<< 	;==DDDd&7&7&9&9::r   N)
r   r'  r(  rw  rx  r   r   r   r  ru  r   r   r   r   r     sy          IL L LO O OI I I  :; ; ; ; ;r   r   c                   l     e Zd Z fdZed             Zed             Zed             Zd Zd Z	 xZ
S )IsoCalendarDatec                N    t                                          | |||f          S r;  )superr  )r  r   r   r  r&  s       r   r  zIsoCalendarDate.__new__  s"    wwsT4$9:::r   c                     | d         S rK  r   r0  s    r   r   zIsoCalendarDate.year	      Awr   c                     | d         S )Nr   r   r0  s    r   r   zIsoCalendarDate.week  r  r   c                     | d         S Nr%   r   r0  s    r   r  zIsoCalendarDate.weekday  r  r   c                 0    t           t          |           ffS r;  )tupler0  s    r   ru  zIsoCalendarDate.__reduce__  s     d~&&r   c                 V    | j         j         d| d          d| d          d| d          dS )Nz(year=r   z, week=r   z
, weekday=r%   r%  )r&  r   r0  s    r   r*  zIsoCalendarDate.__repr__  s[    >* G GaG G)-aG G<@GG G G 	Hr   )r   r'  r(  r  ry  r   r   r  ru  r*  __classcell__)r&  s   @r   r  r    s        ; ; ; ; ;   X   X   X' ' '
H H H H H H Hr   r  c                   L   e Zd ZdZdZd&dddZed             Zed             Zed	             Z	ed
             Z
ed             Zed             Zd Zd Zd Zd Zd Zd'dZd Zd Zd Zd(dZeZed             Zd Zd Zd Zd Zd Z	 	 d)ddd Zd*d"Z d# Z!d$ Z"d% Z#dS )+r   a<  Time with time zone.

    Constructors:

    __new__()

    Operators:

    __repr__, __str__
    __eq__, __le__, __lt__, __ge__, __gt__, __hash__

    Methods:

    strftime()
    isoformat()
    utcoffset()
    tzname()
    dst()

    Properties (readonly):
    hour, minute, second, microsecond, tzinfo, fold
    )_hour_minute_second_microsecond_tzinfor	  _foldr   Nr   c                   t          |t          t          f          rt          |          dk    rt	          |dd                   dz  dk     rt          |t                    r4	 |                    d          }n# t          $ r t          d          w xY wt          	                    |           }|
                    ||pd           d	|_        |S t          |||||          \  }}}}}t          |           t          	                    |           }||_        ||_        ||_        ||_        ||_        d	|_        ||_        |S )
zConstructor.

        Arguments:

        hour, minute (required)
        second, microsecond (default to zero)
        tzinfo (default to None)
        fold (keyword only, default to zero)
        r\   r   r      r:   r  znFailed to encode latin1 string when unpickling a time object. pickle.load(data, encoding='latin1') is assumed.Nr   )r   r  r   r   r  r  r  rs   r   r  _time__setstater	  r   r   r  r  r  r  r  r  )r  r   r   r   r   r   r   r  s           r   r  ztime.__new__<  s^    teS\** 	s4yyA~~QqS	NN4"$$$$$ LL;;x00DD) L L L$KL L LL >>#&&DOOD&.D111DNK2D&&+t35 35/ffk4&!!!~~c""
'
s   $A: :Bc                     | j         S zhour (0-23)r  r0  s    r   r   z	time.hourd  r5  r   c                     | j         S zminute (0-59)r  r0  s    r   r   ztime.minutei       |r   c                     | j         S zsecond (0-59)r  r0  s    r   r   ztime.secondn  r
  r   c                     | j         S zmicrosecond (0-999999)r  r0  s    r   r   ztime.microseconds         r   c                     | j         S ztimezone info objectr  r0  s    r   r   ztime.tzinfox  r
  r   c                     | j         S r;  r  r0  s    r   r   z	time.fold}  
    zr   c                 p    t          |t                    r|                     |d          dk    S t          S )NTallow_mixedr   r   r   r   r=  r>  s     r   r_  ztime.__eq__  s5    eT"" 	"99U955::!!r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r  r>  s     r   rb  ztime.__le__  1    eT"" 	"99U##q((!!r   c                 l    t          |t                    r|                     |          dk     S t          S rK  r  r>  s     r   rd  ztime.__lt__  1    eT"" 	"99U##a''!!r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r  r>  s     r   rg  ztime.__ge__  r  r   c                 l    t          |t                    r|                     |          dk    S t          S rK  r  r>  s     r   ri  ztime.__gt__  r  r   Fc                 \   t          |t                    sJ | j        }|j        }d x}}||u rd}n.|                                 }|                                }||k    }|r@t	          | j        | j        | j        | j        f|j        |j        |j        |j        f          S |||rdS t          d          | j        dz  | j        z   |t          d          z  z
  }|j        dz  |j        z   |t          d          z  z
  }	t	          || j        | j        f|	|j        |j        f          S )NTr%   z$cannot compare naive and aware timesr  r   r~   )r   r   r  r   r   r  r  r  r  r   r   )
r  r?  r  mytzottzmyoffotoffbase_comparemyhhmmothhmms
             r   r   z	time._cmp  sY   %&&&&&|}4<<LLNN$$EOO%%E E>L 	.T\4<*,emU]+-. . . =EM Hq FGGGb4</%19M9M9M2MMr!EM1E9Q;O;O;O4OOVT\4+<=U]E,>?A A 	Ar   c                    | j         dk    r1| j        r|                     d          }n| }|                                }|s-t	          |                                d                   | _         nt          t          | j        | j	                  |z
  t          d                    \  }}|t          d          z  r
J d            |t          d          z  }d|cxk    rd	k     r2n n/t	          t          ||| j        | j                            | _         n"t	          ||| j        | j        f          | _         | j         S )
r  r   r   r   rk   rl   r   r}   r~   zwhole minuter:   )r	  r   r   r   rn  rk  r<   r   r   r   r   r   r   )r  r  tzoffr   r`   s        r   ro  ztime.__hash__  s<   >Ry LLaL((KKMME 
Q!%akkmmA&6!7!7idiMMMPUU'a0002 21y3333CC^CCCi****;;;;B;;;;;%)$q!T[$BR*S*S%T%TDNN%)1ad>N*O%P%PDN~r   c                 H    |                                  }t          |          S )z=Return formatted timezone offset (+xx:xx) or an empty string.)r   r   )r  r   s     r   _tzstrztime._tzstr  s    nnc"""r   c                 f   | j         dk    rd| j        | j         fz  }n| j        dk    rd| j        z  }nd}d| j        j        | j        j        | j        | j        |fz  }| j        (|dd         dk    sJ |dd         d	| j        z  z   dz   }| j        r|dd         dk    sJ |dd         d
z   }|S )%Convert to formal string, for repr().r   z, %d, %dz, %drz   z%s.%s(%d, %d%s)Nr   r%  , tzinfo=%r	, fold=1))	r  r  r&  r'  r(  r  r  r  r  r  r   s     r   r*  ztime.__repr__  s    !!dlD,=>>AA\Q%AAA 9 $ ; $
DL! = = <#RSS6S====#2#55;A: 	%RSS6S====#2#$Ar   ri   c                     t          | j        | j        | j        | j        |          }|                                 }|r||z  }|S )a  Return the time formatted according to ISO.

        The full format is 'HH:MM:SS.mmmmmm+zz:zz'. By default, the fractional
        part is omitted if self.microsecond == 0.

        The optional argument timespec specifies the number of additional
        terms of the time to include. Valid options are 'auto', 'hours',
        'minutes', 'seconds', 'milliseconds' and 'microseconds'.
        )rx   r  r  r  r  r.  )r  ru   r   r   s       r   r  ztime.isoformat  sJ     T\4<+X7 7[[]] 	GAr   c                     t          |t                    st          d          |                    d          }	  | t	          |           S # t
          $ r t          d|          w xY w)z>Construct a time from a string in one of the ISO 8601 formats.r  Tr  )r   r   r   removeprefixr   r  rs   )r  time_strings     r   r  ztime.fromisoformat  s     +s++ 	CABBB
 "..s33	K3-k::;; 	K 	K 	KI+IIJJJ	Ks   A A*c           	      X    ddd| j         | j        | j        dddf	}t          | ||          S )z{Format using strftime().  The date part of the timestamp passed
        to underlying strftime should not be used.
        il  r   r   r   )r  r  r  r   )r  rw   r   s      r   r   ztime.strftime  s:     1aZt|2	 dC333r   c                     t          |t                    s$t          dt          |          j        z            t          |          dk    r|                     |          S t          |           S r  r  r  s     r   r  ztime.__format__  r  r   c                 l    | j         dS | j                             d          }t          d|           |S )z^Return the timezone offset as timedelta, positive east of UTC
         (negative west of UTC).Nr   r  r   r   r  r   s     r   r   ztime.utcoffset&  ;     <4''--+v...r   c                 j    | j         dS | j                             d          }t          |           |S a  Return the timezone name.

        Note that the name is 100% informational -- there's no requirement that
        it mean anything in particular. For example, "GMT", "UTC", "-500",
        "-5:00", "EDT", "US/Eastern", "America/New York" are all valid replies.
        Nr  r   r   r  r   s     r   r   ztime.tzname/  9     <4|""4((dr   c                 l    | j         dS | j                             d          }t          d|           |S aq  Return 0 if DST is not in effect, or the DST offset (as timedelta
        positive eastward) if DST is in effect.

        This is purely informational; the DST offset has already been added to
        the UTC offset returned by utcoffset() if applicable, so there's no
        need to consult dst() unless you're interested in displaying the DST
        info.
        Nr   r  r   r   r=  s     r   r   ztime.dst<  ;     <4!!$''%(((r   Tc                    || j         }|| j        }|| j        }|| j        }|du r| j        }|| j        } t          |           ||||||          S )z;Return a new time with new values for the specified fields.NTr   )r   r   r   r   r   r  r   )r  r   r   r   r   r   r   s          r   r   ztime.replaceK  su     <9D>[F>[F*KT>>[F<:DtDzz$V$OOOOr   r9   c                     t          | j        d          \  }}t          |d          \  }}| j        }| j        r|dk    r|dz  }t	          || j        | j        |||g          }| j        |fS || j        fS Nr  r9      )r<   r  r  r  r  r  r  r  )r  protocolus2us3us1r   	basestates          r   rk  ztime._getstate^  s    $+S11S#s##SJ: 	(Q,,HA1dlDLS* + +	<<t|,,r   c                     |$t          |t                    st          d          |\  }| _        | _        }}}|dk    rd| _        |dz
  | _        nd| _        || _        |dz  |z  dz  |z  | _        || _        d S )Nbad tzinfo state argr  r   rK  r   r   )	r   _tzinfo_classr   r  r  r  r  r  r  )r  r  r   r   rO  rM  rN  s          r   r  ztime.__setstatek  s    j&G&G23337=44<sCs77DJSDJJDJDJ"ax3.14;r   c                 :    | j         |                     |          fS r;  rt  r  rL  s     r   __reduce_ex__ztime.__reduce_ex__x      x 8 899r   c                 ,    |                      d          S r  rV  r0  s    r   ru  ztime.__reduce__{      !!!$$$r   r   r   r   r   NFri   )NNNNTr9   )$r   r'  r(  rw  rx  r  ry  r   r   r   r   r   r   r_  rb  rd  rg  ri  r   ro  r.  r*  r  r.  r  r  r   r  r   r   r   r   rk  r  rV  ru  r   r   r   r   r   #  sn        , _I%UV % % % % %P   X   X   X ! ! X!   X   X" " "" " "" " "" " "" " "A A A A8  .# # #
  &   " GK K [K 	4 	4 	4         HLP%)P P P P P&- - - -  : : :% % % % %r   r   c                   H   e Zd ZdZej        ej        z   Z	 	 d7dddZed             Z	ed             Z
ed             Zed	             Zed
             Zed             Zed             Zed8d            Zed             Zed8d            Zed             Zed9d            Zed             Zd Zd Zd Zd Zd Zd Zd Z	 	 d:dddZd Zd8dZd Zd;d!Z d" Z!d# Z"ed$             Z#d% Z$d& Z%d' Z&d( Z'd) Z(d* Z)d+ Z*d, Z+d<d.Z,d/ Z-e-Z.d0 Z/d1 Z0d=d3Z1d4 Z2d5 Z3d6 Z4dS )>r   zdatetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

    The year, month and day arguments are required. tzinfo may be None, or an
    instance of a tzinfo subclass. The remaining arguments may be ints.
    Nr   r   c	                   t          |t          t          f          rt          |          dk    rdt	          |dd                   dz  cxk    rdk    rn n}t          |t                    r/	 t          |d          }n# t
          $ r t          d          w xY wt                              |           }
|
	                    ||           d	|
_
        |
S t          |||          \  }}}t          |||||	          \  }}}}}	t          |           t                              |           }
||
_        ||
_        ||
_        ||
_        ||
_        ||
_        ||
_        ||
_        d	|
_
        |	|
_        |
S )
Nr   r   r%   r9   r  r$   r  zrFailed to encode latin1 string when unpickling a datetime object. pickle.load(data, encoding='latin1') is assumed.r   )r   r  r   r   r  r  rs   r   r  _datetime__setstater	  r   r   r   r}  r~  r  r  r  r  r  r  r  )r  r   r)   r2   r   r   r   r   r   r   r  s              r   r  zdatetime.__new__  s   teS\** 	s4yyBT!A#Y$*********$$$ LL x00DD) L L L$KL L LL >>#&&DOOD%(((DNK-dE3??eS2D&&+t35 35/ffk4&!!!~~c""
	
'
s   .A? ?Bc                     | j         S r  r  r0  s    r   r   zdatetime.hour  r5  r   c                     | j         S r  r	  r0  s    r   r   zdatetime.minute  r
  r   c                     | j         S r  r  r0  s    r   r   zdatetime.second  r
  r   c                     | j         S r  r  r0  s    r   r   zdatetime.microsecond  r  r   c                     | j         S r  r  r0  s    r   r   zdatetime.tzinfo  r
  r   c                     | j         S r;  r  r0  s    r   r   zdatetime.fold  r  r   c           
          t          j        |          \  }}t          |dz            }|dk    r|dz  }|dz  }n|dk     r
|dz  }|dz  }|rt          j        nt          j        } ||          \	  }}}	}
}}}}}t          |d          } | |||	|
||||          }||sd}||k     r!t          j        	                    d          r|S  |||z
            dd	         \  }}}	}
}} | |||	|
||||          }||z
  t          d|          z
  }|j        dk     rM |||t          dd          z  z             dd	         \  }}}	}
}} | |||	|
||||          }||k    rd|_        n||                    |          }|S )
Construct a datetime from a POSIX timestamp (like time.time()).

        A timezone info object may be passed in as well.
        r  r  r   r   r   Nr  winr\   )r  r  r  r^   gmtimer  minsysplatform
startswithr   r   r  r  )r  r  r   r   fracrt   	converterr   r`   ra   rb   rc   rd   r  r  r   resultmax_fold_secondsprobe1transprobe2s                        r   _fromtimestampzdatetime._fromtimestamp  s    *Q--a4#:==FA'MBB!VVFA'MB$'<ELLU_	2;)A,,/1aRWdCR[[Q1b"b"b11:c:  ) ###(?(?(F(F#"+)A0@,@"A"A"1""EAq!RRSAq"b"b"55FVOi3C&D&DDEzA~~&/iEYq!__4L0L&M&Mbqb&Q#1aRQ1b"b"b99V###$FL^ZZ''Fr   c                 R    t          |           |                     ||du|          S )ri  N)r   rw  )r  r  r   s      r   r  zdatetime.fromtimestamp  s.     	"!!!Rt^R888r   c                 0    |                      |dd          S )z6Construct a naive UTC datetime from a POSIX timestamp.TN)rw  r  s     r   utcfromtimestampzdatetime.utcfromtimestamp  s     !!!T4000r   c                 T    t          j                    }|                     ||          S )zBConstruct a datetime from time.time() and optional time zone info.r  )r  r   r  s      r   nowzdatetime.now	  s%     JLL  B'''r   c                 R    t          j                    }|                     |          S )z*Construct a UTC datetime from time.time().)r^   r   rz  r  s     r   utcnowzdatetime.utcnow  s#     JLL##A&&&r   Tc                     t          |t                    st          d          t          |t                    st          d          |du r|j        } | |j        |j        |j        |j        |j	        |j
        |j        ||j        	  	        S )z8Construct a datetime from a given date and a given time.z%date argument must be a date instancez%time argument must be a time instanceTr   )r   _date_classr   _time_classr   r   r)   r2   r   r   r   r   r   )r  r   r   r   s       r   combinezdatetime.combine  s     $,, 	ECDDD$,, 	ECDDDT>>[Fs49dj$(9dk4;8H	+ + + 	+r   c                    t          |t                    st          d          t          |          dk     rt	          d|          	 t          |          }|d|         }||dz   d         }t          |          }n!# t          $ r t	          d|          dw xY w|r2	 t          |          }n%# t          $ r t	          d|          dw xY wg d} | ||z    S )zBConstruct a datetime from a string in one of the ISO 8601 formats.r  r]   r  r   r   Nr[  )r   r   r   r   rs   r   r   r   )r  r  separator_locationdstrr   date_componentstime_componentss          r   r  zdatetime.fromisoformat"  sY    +s++ 	CABBB{aI+IIJJJ	H!CK!P!Pq!334D 21 4667D3D99OO 	H 	H 	H<[<<> >CGH	H  	1L"7"="= L L L @@@B BGKLL 100Os_688s   5B B%B5 5Cc           	          |                                  }|d}n|rd}nd}t          | j        | j        | j        | j        | j        | j        |          S )r  Nr   r   r   )r   rh   r   r)   r2   r   r   r   )r  r   s     r   r   zdatetime.timetupleA  s]    hhjj;CC 	CCC!$)TZ"&)T[$+"%' ' 	'r   c                   
 t          ddd          
d}| 
z
  t          dd          z  }
fd} ||          |z
  }||z
  } ||          }||k    r*|| |f| j                 z   } ||          |z
  }||k    r|S n||z
  }||k    sJ ||z
  } ||          }	|	|k    r|S ||k    r|S t          t          f| j                 ||          S )zReturn integer POSIX timestamp.  r   r  r   c                     t          j        |           d d         \  }}}}}}t          ||||||          z
  t          dd          z  S )Nr\   r   r   )r^   r  r   r   )r   r   r`   ra   rb   rc   rd   epochs          r   localzdatetime._mktime.<locals>.localS  sR    "'/!"4"4RaR"8Aq!RRQ1b"b11E9i1ooMMr   )r   r   r   maxrl  )r  rs  r  r  r   u1t1u2r   t2r  s             @r   _mktimezdatetime._mktimeN  s(   q!$$$E\i1oo-	N 	N 	N 	N 	N
 E!HHqLUU2YY77 ((*:;DIFFBb		BAAvv	  RA6666UU2YY77I77I Sz$)$R,,,r   c                     | j         !|                                 }|| j        dz  z   S | t          z
                                  S )zReturn POSIX timestamp as floatNr  )r  r  r   _EPOCHr1  r3  s     r   	timestampzdatetime.timestampq  s@    <At'#---6M00222r   c           	          |                                  }|r| |z  } | j        | j        | j        }}}| j        | j        | j        }}}t          ||||||d          S )z4Return UTC time tuple compatible with time.gmtime().r   )r   r   r)   r2   r   r   r   rh   )r  r   r   r`   ra   rb   rc   rd   s           r   utctimetuplezdatetime.utctimetupley  sb    !! 	FND)TZa1YT[B!!Q2r2q999r   c                 B    t          | j        | j        | j                  S )zReturn the date part.)r   r}  r~  r  r0  s    r   r   zdatetime.date  s    DJTY777r   c                 \    t          | j        | j        | j        | j        | j                  S )z'Return the time part, with tzinfo None.r   )r   r   r   r   r   r   r0  s    r   r   zdatetime.time  s(    DIt{DK9IPTPYZZZZr   c                 h    t          | j        | j        | j        | j        | j        | j                  S )z'Return the time part, with same tzinfo.r   )r   r   r   r   r   r  r   r0  s    r   timetzzdatetime.timetz  s3    DIt{DK9ILty2 2 2 	2r   c	                    || j         }|| j        }|| j        }|| j        }|| j        }|| j        }|| j        }|du r| j        }|	| j        }	 t          |           |||||||||		  	        S )z?Return a new datetime with new values for the specified fields.NTr   )
r   r)   r2   r   r   r   r   r   r   r   )
r  r   r)   r2   r   r   r   r   r   r   s
             r   r   zdatetime.replace  s     <9D=JE;(C<9D>[F>[F*KT>>[F<9DtDzz$sD&&%vD: : : 	:r   c                    | j         |                                 }n| t          z
  t          d          z  }t	          j        |          }t          |d d          }|j        }|j        }t          t          |          |          S )Nr   r7  r\   )
r   r  r  r   r^   r  r   	tm_gmtofftm_zoner   )r  tslocaltmr  gmtoffzones         r   _local_timezonezdatetime._local_timezone  s}    ;BB-Ia$8$8$88B/"%%'"1"+&"	&1114888r   c                    ||                                  }n$t          |t                    st          d          | j        }|*|                                  }|                    |           }nT|                    |           }|=|                     d                                            }|                    |           }||u r| S | |z
                      |          }|                    |          S )Nz)tz argument must be an instance of tzinfor   )r  r   r   r   r   r   r  )r  r   r#  myoffsetr   s        r   
astimezonezdatetime.astimezone  s    :%%''BBB'' 	IGHHH{<''))D~~d++HH~~d++H||4|00@@BB>>$//::K h''r'22 zz#r   c                     |                                  dz  pd}dt          |         t          | j                 | j        | j        | j        | j        | j        fz  S )r  r]   z%s %s %2d %02d:%02d:%02d %04d)	r  r  r  r~  r  r  r  r  r}  r  s     r   r  zdatetime.ctime  sV    ..""Q&+!.g$IJdlJ2  	r   r6  ri   c                     d| j         | j        | j        |fz  t          | j        | j        | j        | j        |          z   }|                                 }t          |          }|r||z  }|S )a  Return the time formatted according to ISO.

        The full format looks like 'YYYY-MM-DD HH:MM:SS.mmmmmm'.
        By default, the fractional part is omitted if self.microsecond == 0.

        If self.tzinfo is not None, the UTC offset is also attached, giving
        giving a full format of 'YYYY-MM-DD HH:MM:SS.mmmmmm+HH:MM'.

        Optional argument sep specifies the separator between date and
        time, default 'T'.

        The optional argument timespec specifies the number of additional
        terms of the time to include. Valid options are 'auto', 'hours',
        'minutes', 'seconds', 'milliseconds' and 'microseconds'.
        z%04d-%02d-%02d%c)
r}  r~  r  rx   r  r  r  r  r   r   )r  sepru   r   r   r   s         r   r  zdatetime.isoformat  sw       4:t{DIs"KK$*dlDL+X7 77 nnC   	GAr   c           
         | j         | j        | j        | j        | j        | j        | j        g}|d         dk    r|d= |d         dk    r|d= | j        j        d| j        j	        dd
                    t          t          |                    d}| j        (|dd         dk    sJ |dd         d| j        z  z   dz   }| j        r|dd         dk    sJ |dd         d	z   }|S )
r0  r   r   r"  r#  r$  r%  Nr1  r2  )r}  r~  r  r  r  r  r  r&  r'  r(  r   r   r   r  r  )r  Lr   s      r   r*  zdatetime.__repr__  s   ZdiZt|T5FHR5A::"R5A::">444>66699Sa[[11113 <#RSS6S====#2#55;A: 	%RSS6S====#2#$Ar   c                 .    |                      d          S )zConvert to string, for str(). )r  )r  r0  s    r   r.  zdatetime.__str__  s    ~~#~&&&r   c                 8    ddl }|                    | ||          S )zKstring, format -> new datetime parsed from a string (like time.strptime()).r   N)	_strptime_strptime_datetime)r  r  rq   r  s       r   strptimezdatetime.strptime  s(     	++CfEEEr   c                 l    | j         dS | j                             |           }t          d|           |S )z\Return the timezone offset as timedelta positive east of UTC (negative west of
        UTC).Nr   r<  r=  s     r   r   zdatetime.utcoffset  r>  r   c                 j    | j         dS | j                             |           }t          |           |S r@  rA  rB  s     r   r   zdatetime.tzname  rC  r   c                 l    | j         dS | j                             |           }t          d|           |S rE  rF  r=  s     r   r   zdatetime.dst'  rG  r   c                     t          |t                    r|                     |d          dk    S t          |t                    st          S dS )NTr  r   F)r   r   r   r   r=  r>  s     r   r_  zdatetime.__eq__8  sL    eX&& 	99U955::E4(( 	!!5r   c                     t          |t                    r|                     |          dk    S t          |t                    st          S t          | |           d S rK  r   r   r   r   r=  r   r>  s     r   rb  zdatetime.__le__@  Y    eX&& 	#99U##q((E4(( 	#!!dE"""""r   c                     t          |t                    r|                     |          dk     S t          |t                    st          S t          | |           d S rK  r  r>  s     r   rd  zdatetime.__lt__H  Y    eX&& 	#99U##a''E4(( 	#!!dE"""""r   c                     t          |t                    r|                     |          dk    S t          |t                    st          S t          | |           d S rK  r  r>  s     r   rg  zdatetime.__ge__P  r  r   c                     t          |t                    r|                     |          dk    S t          |t                    st          S t          | |           d S rK  r  r>  s     r   ri  zdatetime.__gt__X  r  r   Fc           
         t          |t                    sJ | j        }|j        }d x}}||u rd}n|                                 }|                                }|rh||                     | j                                                   k    rdS ||                    |j                                                   k    rdS ||k    }|rdt          | j        | j        | j	        | j
        | j        | j        | j        f|j        |j        |j	        |j
        |j        |j        |j        f          S |||rdS t          d          | |z
  }|j        dk     rdS |rdpdS )NTr   r%   z(cannot compare naive and aware datetimesr   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'  diffs	            r   r   zdatetime._cmp`  s   %*****|}4<<LLNN$$EOO%%E DLL$)mL<<FFHHHH1EMM5:~M>>HHJJJJ1 E>L 	.T[$)T\4<*, elEJemU]+-. . . =EM Lq JKKKe|9q==2zQr   c           
         t          |t                    st          S t          |                                 | j        | j        | j        | j                  }||z  }t          |j	        d          \  }}t          |d          \  }}d|j
        cxk     rt          k    r_n n\t          |                               t                              |j
                  t!          ||||j        | j                            S t'          d          )zAdd a datetime and a timedelta.r   r  r  r   r  r  )r   r   r=  r  r  r  r  r  r<   rm   r   r  r   r  r   r  r   ro   r  r  )r  r?  r  r   remr   r   s          r   r@  zdatetime.__add__  s   %++ 	"!!$..** $
"&,"&,'+'8	: : :
 	5=$//	cRuz(((([(((((::%%d&6&6uz&B&B&*4+0+=26,'@ '@ '@A A A 1222r   c                 2   t          |t                    s"t          |t                    r| | z   S t          S |                                 }|                                }| j        | j        dz  z   | j        dz  z   }|j        |j        dz  z   |j        dz  z   }t          ||z
  ||z
  | j        |j        z
            }| j	        |j	        u r|S | 
                                }|
                                }||k    r|S ||t          d          ||z   |z
  S )z6Subtract two datetimes, or a datetime and a timedelta.r  r  Nz(cannot mix naive and timezone-aware time)r   r   r   r=  r  r  r  r  r  r  r   r   )	r  r?  r  r  secs1secs2baser%  r&  s	            r   rC  zdatetime.__sub__  s)   %** 	"%++ %uf}$!!  !!t|b004:3DD 22U[45GG*U-??A A <5=((K  !!E>>K=EMFGGGe|e##r   c                    | j         dk    r| j        r|                     d          }n| }|                                }|-t	          |                                d                   | _         nht          | j        | j        | j	                  }| j
        dz  | j        dz  z   | j        z   }t	          t          ||| j                  |z
            | _         | j         S )Nr   r   r   r  r  )r	  r   r   r   rn  rk  r4   r   r)   r2   r   r   r   r   r   )r  r  r,  r   rm   s        r   ro  zdatetime.__hash__  s    >Ry LLaL((KKMME}!%akkmmA&6!7!7	4:tx@@)d*T[2-==K!%igt?O&P&PSX&X!Y!Y~r   r9   c                 :   t          | j        d          \  }}t          | j        d          \  }}t          |d          \  }}| j        }| j        r|dk    r|dz  }t          |||| j        | j        | j        | j	        |||g
          }| j
        |fS || j
        fS rJ  )r<   r}  r  r~  r  r  r  r  r  r  r  )	r  rL  r  r  rM  rN  rO  r`   rP  s	            r   rk  zdatetime._getstate  s    $*c**S$+S11S#s##SK: 	(Q,,HA3Q	:t|T\S* + +	 <<t|,,r   c           
      .   |$t          |t                    st          d          |\
  }}}| _        | _        | _        | _        }}}|dk    rd| _        |dz
  | _        nd| _        || _        |dz  |z   | _	        |dz  |z  dz  |z  | _
        || _        d S )NrR  r  r   rK  r   r  r   )r   rS  r   r  r  r  r  r  r~  r}  r  r  )	r  r  r   r  r  r`   rO  rM  rN  s	            r   r  zdatetime.__setstate  s    j&G&G23336<	4c1di	t|S#ss77DJc'DKKDJDK3Y_
"ax3.14;r   c                 :    | j         |                     |          fS r;  rt  rU  s     r   rV  zdatetime.__reduce_ex__  rW  r   c                 ,    |                      d          S r  rY  r0  s    r   ru  zdatetime.__reduce__  rZ  r   )NNr   r   r   r   Nr;  )T)NNNNNNNT)r6  ri   r\  r^  )5r   r'  r(  rw  r   rx  r   r  ry  r   r   r   r   r   r   r  rw  r  rz  r|  r~  r  r  r   r  r  r  r  r   r  r  r  r  r*  r.  r  r   r   r   r_  rb  rd  rg  ri  r   r@  rz  rC  ro  rk  ra  rV  ru  r   r   r   r   r     s        
 /IJK&*!45! ! ! ! !H   X   X   X ! ! X!   X   X ) ) [)V 9 9 9 [9 1 1 [1 ( ( ( [(
 ' ' ['
 
+ 
+ 
+ [
+ 9 9 [9<' ' ' -  -  -F3 3 3: : :8 8 8[ [ [2 2 2
 =ACG:: : : : :2
9 
9 
9   6     6  &' ' ' F F [F
      "  # # ## # ## # ## # ## # # #J3 3 3& H$ $ $0  "- - - -  : : :% % % % %r   r   c                 \    d}t          | dd          }|dz   dz  }||z
  }||k    r|dz  }|S )Nr9   r   r\   r]   )r4   )r   THURSDAYfirstdayfirstweekdayr  s        r   r   r     sM     Ha##HqLA%L\)Khqr   c                       e Zd ZdZ e            ZefdZedd            Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Z edd          Ze Zed             ZdS )r   )_offset_namec                 8   t          |t                    st          d          || j        u r|s| j        S d }n$t          |t
                    st          d          | j        |cxk    r| j        k    sn t          d          | 	                    ||          S )Nzoffset must be a timedeltazname must be a stringzYoffset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).)
r   r   r   _Omittedr   r   
_minoffset
_maxoffsetrs   _create)r  r   r   s      r   r  ztimezone.__new__  s    &),, 	:89993< wDDD#&& 	53444~99993>9999 4 5 5 5 {{64(((r   Nc                 V    t                               |           }||_        ||_        |S r;  )r   r  r  r  )r  r   r   r  s       r   r  ztimezone._create	  s&    ~~c""
r   c                 <    | j         | j        fS | j        | j         fS )zpickle support)r  r  r0  s    r   r  ztimezone.__getinitargs__	  s#    :L?"dj))r   c                 Z    t          |t                    r| j        |j        k    S t          S r;  )r   r   r  r=  r>  s     r   r_  ztimezone.__eq__	  s)    eX&& 	1<5=00r   c                 *    t          | j                  S r;  )rn  r  r0  s    r   ro  ztimezone.__hash__	  s    DL!!!r   c                     | | j         u rdS | j        $| j        j        d| j        j        d| j        dS | j        j        d| j        j        d| j        d| j        dS )a  Convert to formal string, for repr().

        >>> tz = timezone.utc
        >>> repr(tz)
        'datetime.timezone.utc'
        >>> tz = timezone(timedelta(hours=-5), 'EST')
        >>> repr(tz)
        "datetime.timezone(datetime.timedelta(-1, 68400), 'EST')"
        zdatetime.timezone.utcNr"  r#  r%  r$  )r   r  r&  r'  r(  r  r0  s    r   r*  ztimezone.__repr__"	  s     48**:"&.";";";"&."="="="&,,,0 0 #'.";";";"&."="="="&,,,


< 	<r   c                 ,    |                      d           S r;  )r   r0  s    r   r.  ztimezone.__str__6	  s    {{4   r   c                 \    t          |t                    s|| j        S t          d          )Nz8utcoffset() argument must be a datetime instance or None)r   r   r  r   r  s     r   r   ztimezone.utcoffset9	  s7    b(## 	 rz< # $ $ 	$r   c                     t          |t                    s|(| j        |                     | j                  S | j        S t          d          )Nz5tzname() argument must be a datetime instance or None)r   r   r  _name_from_offsetr  r   r  s     r   r   ztimezone.tzname?	  sU    b(## 	rzz!--dl;;;: # $ $ 	$r   c                 R    t          |t                    s|d S t          d          )Nz2dst() argument must be a datetime instance or None)r   r   r   r  s     r   r   ztimezone.dstG	  s4    b(## 	rz4 # $ $ 	$r   c                     t          |t                    r"|j        | urt          d          || j        z   S t          d          )Nzfromutc: dt.tzinfo is not selfz6fromutc() argument must be a datetime instance or None)r   r   r   rs   r  r   r  s     r   r  ztimezone.fromutcM	  s\    b(## 	%y$$  "/ 0 0 0$$ # $ $ 	$r   r:   r   )rk   ro   c           
      H   | sdS | t          d          k     rd}|  } nd}t          | t          d                    \  }}t          |t          d                    \  }}|j        }|j        }|rd| |dd	|dd	|dd
|d	S |rd| |dd	|dd	|dS d| |dd	|dS )Nr
   r   r{   r|   r   r}   r~   02dr   r"  06d)r   r<   rm   ro   )r  r   rk   r   rl   rm   ro   s          r   r  ztimezone._name_from_offsetY	  s*    	59Q<<DFEEDUIA$6$6$677ttYq%9%9%9::,( 	,+$ +G + +GG + +'G + +$*+ + , 	GFFuFFF7FFFFFFF4T45444w4444r   r;  )r   r'  r(  rx  r   r  r  r  r  r  r_  ro  r*  r.  r   r   r   r  r   r  r  staticmethodr  r   r   r   r   r     s       "I vxxH"* ) ) ) )    [* * *  
" " "< < <(! ! !$ $ $$ $ $$ $ $$ $ $ "555JJ5 5 \5 5 5r   r   r+  r  r  )*)rw  r]  )Erw  __all__r   r^   mathr  rm  operatorr   r   r   r   r	   r  r'   r-   dbmr3   r   r   r"   r*   r.   r4   r=   r>   r?   rG   r  r  rh   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rl  r  
resolutionr   r  r   r  r  r  rS  r  r   r   r   r  r
   r   r  	_datetimeImportErrorr   r   r   <module>r     s   (         



 $ $ $ $ $ $/ / / 
 FEET !""  Cc"""3JCCB B B* * *
! ! !F F F
   
C
 
 

C
 
 

A

  !g+/!!!! "u*q.    < < <~? ? ?CCC	I I I
* * * **  &=0 =0 =0@  6 6 6r!" !" !"H 655 . . .`, , ,^  B1 1 1
) 
) 
)  3 3 3"P P P9 9 9  (y2 y2 y2 y2 y2 y2 y2 y2v	 	*%%		yB'-/ / /	 ya000	 A2 A2 A2 A2 A2 A2 A2 A2F
 41a==4b")###:; :; :; :; :; :; :; :;zH H H H He H H H6 # Y% Y% Y% Y% Y% Y% Y% Y%v
 41a==4BF##)+++`	% `	% `	% `	% `	%t `	% `	% `	%F x1a  xb"b"b&99iQ/// 	 	 	r5 r5 r5 r5 r5v r5 r5 r5h %%iill33 3hl
 R!@!@!@ @AA		B ? ? ?@@	$1X\	2	2	2L"
 
&	[2D	/	M+<dI	(*;^	~vx%	5+}nh	13H	-/D	+-A	
 "!!!!!!!'  	 	 	DD	s   2K( (K10K1