
    9i!'             	       &   S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SS	KJ
r
  SS
KJr  SSKJr  SSKJrJr  SSKrSSKrS rSrSrSr/ SQrS/rSr\SS  H  r\R9                  \5        \\-  rM     CCS rS rS rS r S r!\" S5      r"\" S5      r#\" S5      r$\$S:X  d   e\"S\#-  S-   :X  d   e\#S\$-  S-
  :X  d   eS r%/ SQr&/ S Qr'S! r(S" r)S# r*S$ r+S% r,S& r-S' r.S( r/S) r0S* r1 " S+ S,\5      r2\2" S-5      \2l3        \2" S.S/S0S0S1S29\2l4        \2" SS39\2l5         " S4 S5\5      r6\6r7\6" SSS5      \6l3        \6" SS6S75      \6l4        \2" SS89\6l5         " S9 S:\5      r8\8r9 " S; S<\5      r\r:\" SSS5      \l3        \" S/S0S0S15      \l4        \2" SS39\l5         " S= S>\65      r;\;" SSS5      \;l3        \;" SS6S7S/S0S0S15      \;l4        \2" SS39\;l5        S? r< " S@ SA\85      r=\=R}                  \2" S5      5      \=l?        \=R}                  \=R                  5      \=l3        \=R}                  \=R                  5      \=l4        \;" SBSS\=R~                  SC9rB  SSDKC7  C'CCC#C"C$CC&C(C+C.C/C0C,C-CC1C7C CCC)CC<CC%CC:C9C*C!SSEKCJ r   g! \D a     gf = f)FzConcrete date/time and related types.

See http://www.iana.org/time-zones/repository/tz-link.html for
time zone and DST data sources.
    )division)unicode_literals)print_function)absolute_import)str)bytes)map)round)int)object)
native_strPY2Nc                 "    X:X  a  S$ X:  a  S$ S$ )Nr       xys     Y/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/future/backports/datetime.py_cmpr      s    1.A.B.    r   i'  i۹7 )N      r      r   r   r   r   r   r   r   r   c                 N    U S-  S:H  =(       a    U S-  S:g  =(       d    U S-  S:H  $ )zyear -> 1 if leap year, else 0.   r   d     r   )years    r   _is_leapr!   .   s*    !8q=AdSjAo@qAr   c                 :    U S-
  nUS-  US-  -   US-  -
  US-  -   $ )z2year -> number of days before January 1st of year.r   m  r   r   r   r   )r    r   s     r   _days_before_yearr$   2   s/    qAS51a4<!S& 1c6))r   c                 z    SUs=::  a  S::  d   U5       e   U5       eUS:X  a  [        U 5      (       a  g[        U   $ )z9year, month -> number of days in that month in that year.r            )r!   _DAYS_IN_MONTHr    months     r   _days_in_monthr,   7   sB    "U""U"zhtnn%  r   c                 |    SUs=::  a  S::  d   S5       e   S5       e[         U   US:  =(       a    [        U 5      -   $ )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_monthr0   >   sD    555555e$	(DhtnEEr   c                     SUs=::  a  S::  d   S5       e   S5       e[        X5      nSUs=::  a  U::  d  O   SU-  5       e[        U 5      [        X5      -   U-   $ )z>year, month, day -> ordinal, considering 01-Jan-0001 as day 1.r   r&   r.   day must be in 1..%d)r,   r$   r0   r    r+   daydims       r   _ymd2ordr6   C   sn    555555

%C?s?:3c9:?d#t+, r   i  e      i  r      c                 .   U S-  n [        U [        5      u  pUS-  S-   n[        U [        5      u  p0[        U [        5      u  p@[        U S5      u  pPX#S-  US-  -   U-   -  nUS:X  d  US:X  a  U S:X  d   eUS-
  SS4$ US	:H  =(       a    US
:g  =(       d    US	:H  nU[	        U5      :X  d   eU S-   S-	  n[
        U   US:  =(       a    U-   nX:  a   US-  nU[        U   US:H  =(       a    U-   -  nX-  n SU s=::  a  [        X'5      :  d   e   eX'U S-   4$ )z@ordinal -> (year, month, day), considering 01-Jan-0001 as day 1.r   r   r#   r   r   r   r&   r         2   r8   r'   )divmod_DI400Y_DI100Y_DI4Yr!   r/   r)   r,   )	nn400r    n100n4n1leapyearr+   	precedings	            r   _ord2ymdrI   \   sN   . FAQ GD#:>D Q GD 1eEB 1cNEB3Ja"$$D	Qw$!)AvvAvr2~ Qw2B"H1	Hx~%%%VME"5)UQY-C8DI}
^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                 x    [        XU5      S-   S-  n[        X5      U-   n[        R                  " XX#XEXxU4	5      $ )N      )r6   r0   _timestruct_time)	r   mdhhmmssdstflagwdaydnums	            r   _build_struct_timerj      sC    Q1!Q&Da#a'DaA24wGHHr   c                 2    SXU4-  nU(       a  USU-  -  nU$ )Nz%02d:%02d:%02d.%06dr   )rd   re   rf   usresults        r   _format_timero      s&    ,F	'B,Mr   c                 p   S nS nS n/ nUR                   nS[        U5      pX:  Gaj  X   n
US-  nU
S:X  GaJ  X:  Ga;  X   n
US-  nU
S:X  a&  Uc  S[        U SS5      -  nUR                  U5        GOU
S:X  a  Uc~  Sn[        U S	5      (       ak  U R                  " 5       nUbW  S
nUR
                  S:  a  U* nSn[        U[        SS95      u  pU[        SS9-  (       a   S5       eU[        SS9-  nSXU4-  nSU;  d   eUR                  U5        OvU
S:X  aN  Uc9  Sn[        U S5      (       a&  U R                  " 5       nUb  UR                  SS5      nUR                  U5        O"U" S5        U" U
5        OU" S5        OU" U
5        X:  a  GMj  SR                  U5      n[        R                  " Xb5      $ )Nr   r   %fz%06dmicrosecondz 	utcoffset+-hoursminuteswhole minutez
%c%02d%02dZtznamez%%)appendlengetattrhasattrrv   daysr>   	timedeltar   replacejoinr`   strftime)r   format	timetuplefreplacezreplaceZreplace	newformatpushirB   choffsetsignhrb   ss                   r   _wrap_strftimer      s   HHH IDc&kq
%Y	Q9uYQ9'#)GF4A1-F $F$$X.3Y'#%"6;77%+%5%5%7F%1'*#);;?.4WF+.D'-fia6H'I+,y/C+C S^ S'C !i&: :+74A,+Fh...$$X.3Y'#%"6844 &A }+,99S$+?$$X.IHS	HW %X 	"I>>)//r   c                 ,    U c  g [        X5      " U5      $ N)r   )tzinfomethname	tzinfoargs      r   _call_tzinfo_methodr      s    ~6$Y//r   c                 d    U b-  [        U [        5      (       d  [        S[        U 5      -  5      eg g )Nz4tzinfo.tzname() must return None or string, not '%s')
isinstancer   	TypeErrortype)names    r   _check_tznamer      s:    
4 5 5 #%)$Z0 1 	1 !6r   c                 T   U S;   d   eUc  g [        U[        5      (       d  [        SU < S[        U5      < S35      eU[        SS9-  (       d  UR                  (       a  [        SU < SU< 35      e[        S5      * Us=:  a  [        S5      :  d  O  [        U < SU< S	35      eg )
N)rv   dstztzinfo.z'() must return None or timedelta, not ''r   r{   z.() must return a whole number of minutes, got z()=zO, must be must be strictly between -timedelta(hours=24) and timedelta(hours=24))r   r   r   r   microseconds
ValueError)r   r   s     r   _check_utc_offsetr      s    ''''~fi((48$v,H I 	I	!$$(;(;15v? @ 	@aL=60IaL0 &* + 	+ 1r   c                 ,   [        U [        5      (       d  [        S5      e[        U s=::  a
  [        ::  d  O  [        S[        [        4-  U 5      eSUs=::  a  S::  d  O  [        SU5      e[        X5      nSUs=::  a  U::  d  O  [        SU-  U5      eg )Nint expectedzyear must be in %d..%dr   r&   r.   r2   )r   r   r   MINYEARMAXYEARr   r,   r3   s       r   _check_date_fieldsr     s    dC  ''d%g%1Wg4FFMM1599

%C?s?/#5s;; r   c                    [        U [        5      (       d  [        S5      eSU s=::  a  S::  d  O  [        SU 5      eSUs=::  a  S::  d  O  [        SU5      eSUs=::  a  S::  d  O  [        SU5      eSUs=::  a  S::  d  O  [        S	U5      eg )
Nr   r      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   r   r   )hourminutesecondrs   s       r   _check_time_fieldsr     s    dC  ''??0$77"2F;;"2F;;%v%;[II &r   c                 L    U b!  [        U [        5      (       d  [        S5      eg g )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 5~r   c                 v    [        S[        U 5      R                  < S[        U5      R                  < S35      e)Nzcan't compare 'z' to 'r   )r   r   __name__r   s     r   	_cmperrorr   !  s-    
G$$d1g&6&68 9 9r   c                       \ rS rSrSrSr  S$S jrS rS rS r	\
S 5       r\
S	 5       r\
S
 5       rS r\rS rS rS rS rS rS r\rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S  r%S! r&S"r'g#)%r   i%  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_microsecondsc                    S=n=pXS-  -  nX%S-  US-  -   -  nX4S-  -  n[        U[        5      (       al  [        R                  " U5      u  p[        R                  " US-  5      u  pU[	        U5      :X  d   e[	        U5      n	U[	        U5      :X  d   e[	        U5      nOSnUn[        U[        5      (       d   e[        U5      S::  d   e[        U[        5      (       d   e[        U	5      S	::  d   e[        U[        5      (       aJ  [        R                  " U5      u  pU[	        U5      :X  d   e[	        U5      nX-  n[        U5      S
::  d   eOUn[        U[        5      (       d   e[        U5      S
::  d   e[        U[        5      (       d   e[        US	5      u  pX-  nU	[	        U5      -  n	[        U	[        5      (       d   e[        U	5      S::  d   eUS-  n[        U5      S:  d   e[        U[        5      (       a  X?-  n[        US5      n[        US5      u  p#U[	        U5      :X  d   eU[	        U5      :X  d   e[        US5      u  pU[	        U5      :X  d   eU[	        U5      :X  d   eU[	        U5      -  nU	[	        U5      -  n	[        U	[        5      (       d   e[        U	5      S::  d   eOq[        US5      u  p#[        US	5      u  pX-  nU	[	        U5      -  n	[        U	[        5      (       d   e[        U	5      S::  d   e[        U5      nX?-  n[        US5      n[        U	5      S::  d   e[        U5      S:  d   e[        U[        5      (       d   e[	        U5      U:X  d   e[	        U5      n
[        U
S5      u  p*X-  n	[        U	[        5      (       d   e[        U	S	5      u  pX-  n[        U[        5      (       d   e[        U	[        5      (       a  SU	s=::  a  S	:  d   e   e[        U
[        5      (       a  SU
s=::  a  S:  d   e   e[        R                  " U 5      nUUl
        U	Ul        U
Ul        [        U5      S:  a  [        SU-  5      eU$ )Nr   r_   <     i  g     @g              ?Q g       @i      .Ag    @Ai @B g    GAɚ;z$timedelta # of days is too large: %d)r   float_mathmodfr   absr>   r
   r   __new__r   r   r   OverflowError)clsr   secondsr   millisecondsr|   rz   weeksrc   r   rm   dayfracdaysecondsfracdaysecondswholesecondsfracusdoubleselfs                    r   r   timedelta.__new__8  su    A 	a2:d
**T)) dE""!JJt,MG.3jjI9N.O+N"c/&::::O$A3t9$$$D	A NA.%0000>"c)))!S!!!!1v""" gu%%#(::g#6 Kc'l***'lG)K{#s***(K+u----;3&&&'3''''w0			S\!S!!!!1v&&& $8}u$$$ lE**$L q1L$*<$=!G3|#4444c'l***"7I6MD3t9$$$c'l***TNAWAa%%%%q6]***$*<$A!G"7G4MDIAWAa%%%%q6]*** .L$L q1L1v&&&< 5((( ,....< L000R)	!S!!!!G$		!S!!!!!S!!a1&6w&666&666"c""qB'8'888'888~~c"
q6I F JKKr   c                 x   U R                   (       a>  SSU R                  R                  -   U R                  U R                  U R                   4-  $ U R                  (       a3  SSU R                  R                  -   U R                  U R                  4-  $ SSU R                  R                  -   U R                  4-  $ )N%s(%d, %d, %d)	datetime.z
%s(%d, %d)z%s(%d))r   	__class__r   r   r   r   s    r   __repr__timedelta.__repr__  s    #{T^^5L5L'L'+zz'+}}'+'9'9'; ; ; ==;1H1H#H#'::#'==#2 2 2 ;)@)@@$**MMMr   c                     [        U R                  S5      u  p[        US5      u  p1SX1U4-  nU R                  (       a  S nSU" U R                  5      -  U-   nU R                  (       a  USU R                  -  -   nU$ )Nr   z%d:%02d:%02dc                 F    U [        U 5      S:g  =(       a    S=(       d    S4$ )Nr   r   ru   )r   )rB   s    r   plural!timedelta.__str__.<locals>.plural  s    #a&A+-#333r   z
%d day%s, rl   )r>   r   r   r   )r   re   rf   rd   r   r   s         r   __str__timedelta.__str__  sv    r*Bbb\)::4tzz 22a7AGd0000Ar   c                 `    U R                   S-  U R                  -   S-  U R                  -   S-  $ )zTotal seconds in the duration.r   r   )r   r   r   r   s    r   total_secondstimedelta.total_seconds  s7    U"T\\158!!"%*+ 	+r   c                     U R                   $ r   r   r   s    r   r   timedelta.days       zzr   c                     U R                   $ r   )r   r   s    r   r   timedelta.seconds  s     }}r   c                     U R                   $ r   )r   r   s    r   r   timedelta.microseconds  s     !!!r   c                     [        U[        5      (       aR  [        U R                  UR                  -   U R                  UR                  -   U R                  UR                  -   5      $ [
        $ r   r   r   r   r   r   NotImplementedr   others     r   __add__timedelta.__add__  [    eY'' TZZ%++5!]]U^^;!//%2E2EEG G r   c                     [        U[        5      (       aR  [        U R                  UR                  -
  U R                  UR                  -
  U R                  UR                  -
  5      $ [
        $ r   r   r   s     r   __sub__timedelta.__sub__  r   r   c                 D    [        U[        5      (       a  U * U-   $ [        $ r   )r   r   r   r   s     r   __rsub__timedelta.__rsub__  s!    eY''55= r   c                 ^    [        U R                  * U R                  * U R                  * 5      $ r   )r   r   r   r   r   s    r   __neg__timedelta.__neg__  s.     $**--,,,. 	.r   c                     U $ r   r   r   s    r   __pos__timedelta.__pos__  s    r   c                 ,    U R                   S:  a  U * $ U $ Nr   r   r   s    r   __abs__timedelta.__abs__  s    ::>5LKr   c                     [        U[        5      (       a4  [        U R                  U-  U R                  U-  U R
                  U-  5      $ [        U[        5      (       a  UR                  5       u  p#X-  U-  $ [        $ r   )	r   r   r   r   r   r   r   as_integer_ratior   )r   r   abs       r   __mul__timedelta.__mul__  st    eS!! TZZ%/!]]U2!//%79 9 eU##))+DA8a<r   c                 Z    U R                   S-  U R                  -   S-  U R                  -   $ )Nr   r   r   r   s    r   _to_microsecondstimedelta._to_microseconds  s/    w'$--77B""# 	$r   c                     [        U[        [        45      (       d  [        $ U R	                  5       n[        U[        5      (       a  X!R	                  5       -  $ [        U[        5      (       a  [        SSX!-  5      $ g r
  )r   r   r   r   r  )r   r   usecs      r   __floordiv__timedelta.__floordiv__  sj    %#y!122!!$$&eY''11333eS!!Q4=11 "r   c                 x   [        U[        [        [        45      (       d  [        $ U R                  5       n[        U[        5      (       a  X!R                  5       -  $ [        U[        5      (       a  [        SSX!-  5      $ [        U[        5      (       a$  UR                  5       u  p4[        SSXB-  U-  5      $ g r
  )r   r   r   r   r   r  r  )r   r   r  r  r  s        r   __truediv__timedelta.__truediv__  s    %#ui!899!!$$&eY''00222eS!!Q4<00eU##))+DAQ18a<00 $r   c                     [        U[        5      (       a.  U R                  5       UR                  5       -  n[        SSU5      $ [        $ r
  )r   r   r  r   )r   r   rs      r   __mod__timedelta.__mod__&  s@    eY''%%'%*@*@*BBAQ1%%r   c                     [        U[        5      (       a9  [        U R                  5       UR                  5       5      u  p#U[        SSU5      4$ [        $ r
  )r   r   r>   r  r   )r   r   qr  s       r   
__divmod__timedelta.__divmod__,  sL    eY''$//10024DAi1a(((r   c                 V    [        U[        5      (       a  U R                  U5      S:H  $ g)Nr   Fr   r   r   r   s     r   __eq__timedelta.__eq__5  s&    eY''99U#q((r   c                 V    [        U[        5      (       a  U R                  U5      S:g  $ g)Nr   Tr&  r   s     r   __ne__timedelta.__ne__;  s&    eY''99U#q((r   c                 l    [        U[        5      (       a  U R                  U5      S:*  $ [        X5        g r
  r   r   r   r   r   s     r   __le__timedelta.__le__A  +    eY''99U#q((d"r   c                 l    [        U[        5      (       a  U R                  U5      S:  $ [        X5        g r
  r-  r   s     r   __lt__timedelta.__lt__G  +    eY''99U#a''d"r   c                 l    [        U[        5      (       a  U R                  U5      S:  $ [        X5        g r
  r-  r   s     r   __ge__timedelta.__ge__M  r0  r   c                 l    [        U[        5      (       a  U R                  U5      S:  $ [        X5        g r
  r-  r   s     r   __gt__timedelta.__gt__S  r4  r   c                     [        U[        5      (       d   e[        U R                  5       UR                  5       5      $ r   )r   r   r   	_getstater   s     r   r   timedelta._cmpY  s0    %++++DNN$eoo&788r   c                 4    [        U R                  5       5      $ r   hashr<  r   s    r   __hash__timedelta.__hash__]  s    DNN$%%r   c                 x    U R                   S:g  =(       d%    U R                  S:g  =(       d    U R                  S:g  $ r
  r   r   s    r   __bool__timedelta.__bool__`  s6    

a ("(""a'	)r   c                 H    U R                   U R                  U R                  4$ r   r   r   s    r   r<  timedelta._getstateg  s    

DMM4+=+=>>r   c                 :    U R                   U R                  5       4$ r   r   r<  r   s    r   
__reduce__timedelta.__reduce__j       011r   )r   r   r   N)r   r   r   r   r   r   r   )(r   
__module____qualname____firstlineno____doc__	__slots__r   r   r   r   propertyr   r   r   r   __radd__r   r  r  r  r  r  __rmul__r  r  r  r  r#  r'  r*  r.  r2  r6  r9  r   rA  rD  r<  rJ  __static_attributes__r   r   r   r   r   %  s      5I56:;ob
N
+     " " H
.
 H$2
1####9&)?2r   r   i6er   r   r   r   )r   rz   r|   r   r   r   c                   "   \ rS rSrSrSrS%S jr\S 5       r\S 5       r	\S 5       r
S	 rS
 rS rS rS r\r\S 5       r\S 5       r\S 5       rS rS rS&S jrS rS rS rS rS rS rS rS rS r \ r!S r"S r#S r$S  r%S! r&S" r'S# r(S$r)g)'dateir  aU  Concrete date type.

Constructors:

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

Operators:

__repr__, __str__
__cmp__, __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_dayNc                 4   [        U[        5      (       aN  [        U5      S:X  a?  SUS   s=::  a  S::  a/  O  O,Uc)  [        R                  " U 5      nUR                  U5        U$ [        XU5        [        R                  " U 5      nXl        X$l        X4l	        U$ )z>Constructor.

Arguments:

year, month, day (required, base 1)
r   r   r'   r&   )
r   r   r   r   r   _date__setstater   rY  rZ  r[  )r   r    r+   r4   r   s        r   r   date.__new__  s{     tU##D	QaB5=>>#&DOOD!K4,~~c"
	r   c           	      L    [         R                  " U5      u	  p#pEpgpn
U " X#U5      $ )z;Construct a date from a POSIX timestamp (like time.time()).)r`   	localtime)r   tr   rb   rc   rd   re   rf   weekdayjdayr   s              r   fromtimestampdate.fromtimestamp  s)     38//!2D/aRWC1|r   c                 N    [         R                  " 5       nU R                  U5      $ )z"Construct a date from time.time().r`   timerd  r   ra  s     r   today
date.today  s      JJL  ##r   c                 0    [        U5      u  p#nU " X#U5      $ )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.
)rI   )r   rB   r   rb   rc   s        r   fromordinaldate.fromordinal  s     1+a1|r   c                 ~    SSU R                   R                  -   U R                  U R                  U R                  4-  $ )zConvert 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)'
r   r   )r   r   rY  rZ  r[  r   s    r   r   date.__repr__  s<      ;1H1H#H#'::#';;#'99#. . 	.r   c                     U R                  5       S-  =(       d    SnS[        U   [        U R                     U R                  U R
                  4-  $ )Return ctime() style string.r_   z%s %s %2d 00:00:00 %04d)	toordinal	_DAYNAMES_MONTHNAMESrZ  r[  rY  r   rb  s     r   ctime
date.ctime  sK    .."Q&+!(g$IItzz,# # 	#r   c                 6    [        XU R                  5       5      $ )zFormat using strftime().)r   r   r   fmts     r   r   date.strftime  s    d)9::r   c                 X    [        U5      S:w  a  U R                  U5      $ [        U 5      $ r
  r   r   r   rz  s     r   
__format__date.__format__  &    s8q===%%4yr   c                 N    SU R                   U R                  U R                  4-  $ )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-%02drX  r   s    r   	isoformatdate.isoformat  s"      4::t{{DII"FFFr   c                     U R                   $ )zyear (1-9999))rY  r   s    r   r    	date.year  r   r   c                     U R                   $ )zmonth (1-12))rZ  r   s    r   r+   
date.month  s     {{r   c                     U R                   $ )z
day (1-31))r[  r   s    r   r4   date.day  s     yyr   c           	      `    [        U R                  U R                  U R                  SSSS5      $ )9Return local time tuple compatible with time.localtime().r   r   )rj   rY  rZ  r[  r   s    r   r   date.timetuple  s*    !$**dkk499"#Q2/ 	/r   c                 X    [        U R                  U R                  U R                  5      $ )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.
)r6   rY  rZ  r[  r   s    r   rs  date.toordinal  s     

DKK;;r   c                     Uc  U R                   nUc  U R                  nUc  U R                  n[        XU5        [	        XU5      $ )z;Return a new date with new values for the specified fields.)rY  rZ  r[  r   rW  )r   r    r+   r4   s       r   r   date.replace  sC    <::D=KKE;))C4,D%%r   c                 `    [        U[        5      (       a  U R                  U5      S:H  $ [        $ r
  r   rW  r   r   r   s     r   r'  date.__eq__  )    eT""99U#q((r   c                 `    [        U[        5      (       a  U R                  U5      S:g  $ [        $ r
  r  r   s     r   r*  date.__ne__"  r  r   c                 `    [        U[        5      (       a  U R                  U5      S:*  $ [        $ r
  r  r   s     r   r.  date.__le__'  r  r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ r
  r  r   s     r   r2  date.__lt__,  )    eT""99U#a''r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ r
  r  r   s     r   r6  date.__ge__1  r  r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ r
  r  r   s     r   r9  date.__gt__6  r  r   c                     [        U[        5      (       d   eU R                  U R                  U R                  pCnUR                  UR                  UR                  pvn[        X#U4XVU45      $ r   )r   rW  rY  rZ  r[  r   )r   r   r   rb   rc   y2m2d2s           r   r   	date._cmp;  sX    %&&&&**dkk499a[[%,,

Q1I|,,r   c                 4    [        U R                  5       5      $ )Hash.r?  r   s    r   rA  date.__hash__A  s    DNN$%%r   c                     [        U[        5      (       aQ  U R                  5       UR                  -   nSUs=:  a
  [        ::  a  O  O[
        R                  U5      $ [        S5      e[        $ )zAdd a date to a timedelta.r   result out of range)	r   r   rs  r   _MAXORDINALrW  rm  r   r   )r   r   os      r   r   date.__add__G  sT    eY'' 5::-A1##''** 566r   c                     [        U[        5      (       a  U [        UR                  * 5      -   $ [        U[        5      (       a-  U R	                  5       nUR	                  5       n[        X#-
  5      $ [
        $ )z.Subtract two dates, or a date and a timedelta.)r   r   r   rW  rs  r   )r   r   days1days2s       r   r   date.__sub__R  s]    eY'')UZZK000eT""NN$EOO%EU]++r   c                 .    U R                  5       S-   S-  $ )z:Return day of the week, where Monday == 0 ... Sunday == 6.r^   r_   rs  r   s    r   rb  date.weekday\  s     1$))r   c                 :    U R                  5       S-  =(       d    S$ )z:Return day of the week, where Monday == 1 ... Sunday == 7.r_   r  r   s    r   
isoweekdaydate.isoweekdayb  s     ~~!#(q(r   c                 F   U R                   n[        U5      n[        U R                   U R                  U R                  5      n[        X2-
  S5      u  pEUS:  a!  US-  n[        U5      n[        X2-
  S5      u  pEOUS:  a  U[        US-   5      :  a  US-  nSnXS-   US-   4$ )aK  Return a 3-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
r_   r   r   4   )rY  _isoweek1mondayr6   rZ  r[  r>   )r   r    week1mondayrj  weekr4   s         r   isocalendardate.isocalendarg  s     zz%d+T[[$))<5.2	!8AID)$/Ku2A6ID#RZQ//	!VSU""r   c                 x    [        U R                  S5      u  p[        XU R                  U R                  /5      4$ N   )r>   rY  r   rZ  r[  )r   yhiylos      r   r<  date._getstate  s1    $**c*cTYY7899r   c                     [        U5      S:w  d  SUS   s=::  a  S::  d  O  [        S5      eUu  p#U l        U l        US-  U-   U l        g )Nr   r   r'   r&   znot enough argumentsr  )r   r   rZ  r[  rY  )r   stringr  r  s       r   
__setstatedate.__setstate  sI    v;!A$8b$8233+1($+ty3Y_
r   c                 :    U R                   U R                  5       4$ r   rI  r   s    r   rJ  date.__reduce__  rL  r   )r[  rZ  rY  )NN)NNN)*r   rM  rN  rO  rP  rQ  r   classmethodrd  rj  rm  r   rw  r   r  r  r   rR  r    r+   r4   r   rs  r   r'  r*  r.  r2  r6  r9  r   rA  r   rS  r   rb  r  r  r<  r]  rJ  rU  r   r   r   rW  rW  r  s   6 *I,  
 $ $
  .*#;
	G G      /
<	&





-& H*)
#::%2r   rW  r&   r   r   c                   :    \ rS rSrSrSrS rS rS rS r	S r
Srg	)
r   i  zuAbstract base class for time zone info classes.

Subclasses must override the name(), utcoffset() and dst() methods.
r   c                     [        S5      e)z%datetime -> string name of time zone.z&tzinfo subclass must override tzname()NotImplementedErrorr   dts     r   r   tzinfo.tzname  s    !"JKKr   c                     [        S5      e)z:datetime -> minutes east of UTC (negative for west of UTC)z)tzinfo subclass must override utcoffset()r  r  s     r   rv   tzinfo.utcoffset  s    !"MNNr   c                     [        S5      e)zydatetime -> DST offset in minutes 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   
tzinfo.dst  s     ""GHHr   c                 P   [        U[        5      (       d  [        S5      eUR                  U La  [	        S5      eUR                  5       nUc  [	        S5      eUR                  5       nUc  [	        S5      eX#-
  nU(       a"  X-  nUR                  5       nUc  [	        S5      eX-   $ )z*datetime in UTC -> datetime in local time.z&fromutc() requires a datetime argumentzdt.tzinfo is not selfz0fromutc() requires a non-None utcoffset() resultz*fromutc() requires a non-None dst() resultz;fromutc(): dt.dst gave inconsistent results; cannot convert)r   datetimer   r   r   rv   r   )r   r  dtoffdtdstdeltas        r   fromutctzinfo.fromutc  s     "h''DEE99D 455= & ' '
 =IJJKBFFHE}  "; < <zr   c                     [        U SS 5      nU(       a  U" 5       nOSn[        U SS 5      nU(       a  U" 5       nO[        U SS 5      =(       d    S nUc  U R                  U4$ U R                  X$4$ )N__getinitargs__r   __getstate____dict__)r   r   )r   getinitargsargsgetstatestates        r   rJ  tzinfo.__reduce__  sn    d$5t<=DD46JED*d3;tE=NND))NND00r   N)r   rM  rN  rO  rP  rQ  r   rv   r   r  rJ  rU  r   r   r   r   r     s*     ILOI:1r   r   c                      \ rS rSrSrS S jr\S 5       r\S 5       r\S 5       r	\S 5       r
\S	 5       rS
 rS rS rS rS rS rS!S jrS rS"S jrS rS r\rS rS rS rS rS r  S#S jrS rS rS r S r!Sr"g)$rh  i  zTime with time zone.

Constructors:

__new__()

Operators:

__repr__, __str__
__cmp__, __hash__

Methods:

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

Properties (readonly):
hour, minute, second, microsecond, tzinfo
Nc                    [         R                  " U 5      n[        U[        5      (       a+  [	        U5      S:X  a  UR                  X=(       d    S5        U$ [        U5        [        XX45        Xl        X&l	        X6l
        XFl        XVl        U$ )zqConstructor.

Arguments:

hour, minute (required)
second, microsecond (default to zero)
tzinfo (default to None)
r^   N)r   r   r   r   r   _time__setstater   r   _hour_minute_second_microsecond_tzinfo)r   r   r   r   rs   r   r   s          r   r   time.__new__  so     ~~c"dE""s4yA~OOD.D1K&!4=
'r   c                     U R                   $ zhour (0-23)r  r   s    r   r   	time.hour  r   r   c                     U R                   $ zminute (0-59)r  r   s    r   r   time.minute       ||r   c                     U R                   $ zsecond (0-59)r  r   s    r   r   time.second  r  r   c                     U R                   $ zmicrosecond (0-999999)r  r   s    r   rs   time.microsecond          r   c                     U R                   $ ztimezone info objectr  r   s    r   r   time.tzinfo   r  r   c                 T    [        U[        5      (       a  U R                  USS9S:H  $ gNTallow_mixedr   Fr   rh  r   r   s     r   r'  time.__eq__)  s*    eT""99U95::r   c                 T    [        U[        5      (       a  U R                  USS9S:g  $ gNTr  r   r
  r   s     r   r*  time.__ne__/  s*    eT""99U95::r   c                 l    [        U[        5      (       a  U R                  U5      S:*  $ [        X5        g r
  r   rh  r   r   r   s     r   r.  time.__le__5  +    eT""99U#q((d"r   c                 l    [        U[        5      (       a  U R                  U5      S:  $ [        X5        g r
  r  r   s     r   r2  time.__lt__;  +    eT""99U#a''d"r   c                 l    [        U[        5      (       a  U R                  U5      S:  $ [        X5        g r
  r  r   s     r   r6  time.__ge__A  r  r   c                 l    [        U[        5      (       a  U R                  U5      S:  $ [        X5        g r
  r  r   s     r   r9  time.__gt__G  r  r   c                    [        U[        5      (       d   eU R                  nUR                  nS =pVX4L a  SnO$U R                  5       nUR                  5       nXV:H  nU(       ad  [	        U R
                  U R                  U R                  U R                  4UR
                  UR                  UR                  UR                  45      $ Ub  Uc  U(       a  g[        S5      eU R
                  S-  U R                  -   U[        SS9-  -
  nUR
                  S-  UR                  -   U[        SS9-  -
  n	[	        XR                  U R                  4XR                  UR                  45      $ )NTr'   z$cannot compare naive and aware timesr   r   r{   )r   rh  r  rv   r   r  r  r  r  r   r   )
r   r   r	  mytzottzmyoffotoffbase_comparemyhhmmothhmms
             r   r   	time._cmpM  sC   %&&&&||}}<LNN$EOO%E >LT\\4<<**,U]]EMM**,- - =EM FGGb4<</%19M2MMr!EMM1E9Q;O4OOV\\4+<+<=]]E,>,>?A 	Ar   c                    U R                  5       nU(       d  [        U R                  5       S   5      $ [        [	        U R
                  U R                  S9U-
  [	        SS95      u  p#U[	        SS9-  (       a   S5       eU[	        SS9-  nSUs=::  a  S:  a-  O  O*[        [        X#U R                  U R                  5      5      $ [        X#U R                  U R                  45      $ )r  r   rz   r|   r   ry   r{   r}   r<   )
rv   r@  r<  r>   r   r   r   rh  r   rs   )r   tzoffr   rb   s       r   rA  time.__hash__i  s     (+,,idiiEMa(*y++;^;+	i"";B;Q4;;0@0@ABBQ4;;(8(89::r   c                     U R                  5       nUbj  UR                  S:  a  SnU* nOSn[        U[        SS95      u  pEU[        SS9-  (       a   S5       eU[        SS9-  nSUs=::  a  S:  d   e   eS	X4X4-  nU$ )
z2Return formatted timezone offset (+xx:xx) or None.r   rx   rw   r   ry   r{   r}   r<   z%s%02d%s%02d)rv   r   r>   r   )r   sepoffr   rd   re   s         r   _tzstrtime._tzstrx  s    nn?xx!|dC!34FBIa00@.@09Q''B<R<<< Dc#66C
r   c                 j   U R                   S:w  a  SU R                  U R                   4-  nO"U R                  S:w  a  SU R                  -  nOSnSSU R                  R                  -   U R                  U R
                  U4-  nU R                  b#  USS S	:X  d   eUSS S
U R                  -  -   S	-   nU$ )%Convert to formal string, for repr().r   z, %d, %dz, %dru   z%s(%d, %d%s)r   Nr   ), tzinfo=%r)r  r  r   r   r  r  r  )r   r   s     r   r   time.__repr__  s    !dllD,=,=>>A\\Q%AA[4>>+B+BB!ZZq: :<<#RS6S= =#255;Ar   c                     [        U R                  U R                  U R                  U R                  5      nU R                  5       nU(       a  X-  nU$ )z|Return the time formatted according to ISO.

This is 'HH:MM:SS.mmmmmm+zz:zz', or 'HH:MM:SS+zz:zz' if
self.microsecond == 0.
)ro   r  r  r  r  r*  )r   r   r   s      r   r  time.isoformat  sC     T\\4<<**,[[]GAr   c           	      l    SSSU R                   U R                  U R                  SSS4	n[        XU5      $ )zkFormat 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   r{  r   s      r   r   time.strftime  s;     1aZZt||2	 d33r   c                 X    [        U5      S:w  a  U R                  U5      $ [        U 5      $ r
  r~  rz  s     r   r  time.__format__  r  r   c                 p    U R                   c  gU R                   R                  S5      n[        SU5        U$ zIReturn the timezone offset in minutes east of UTC (negative west of
UTC).Nrv   r  rv   r   r   r   s     r   rv   time.utcoffset  4     <<''-+v.r   c                 n    U R                   c  gU R                   R                  S5      n[        U5        U$ )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   time.tzname  s2     <<||""4(dr   c                 p    U R                   c  gU R                   R                  S5      n[        SU5        U$ a6  Return 0 if DST is not in effect, or the DST offset (in minutes
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   time.dst  4     <<!!$'%(r   c                     Uc  U R                   nUc  U R                  nUc  U R                  nUc  U R                  nUSL a  U R                  n[        XX45        [        U5        [        XX4U5      $ )z;Return a new time with new values for the specified fields.T)r   r   r   rs   r   r   r   rh  )r   r   r   r   rs   r   s         r   r   time.replace  sp     <99D>[[F>[[F**KT>[[F4=&!D&v>>r   c                     U R                   (       d  U R                  (       a  gU R                  5       =(       d    [        S5      n[        U R                  U R
                  S9U:g  $ )NTr   r$  )r   rs   rv   r   r   r   r:  s     r   rD  time.__bool__  sC    ;;$**!1Yq\tyy$++>&HHr   c                     [        U R                  S5      u  p[        US5      u  p1[        U R                  U R                  U R
                  X1U/5      nU R                  c  U4$ X@R                  4$ r  )r>   r  r   r  r  r  r  )r   us2us3us1	basestates        r   r<  time._getstate  si    $++S1#s#4::t||T\\S* +	<<<||,,r   c                     [        U5      S:w  d	  US   S:  a  [        S5      eUu  U l        U l        U l        p4nUS-  U-  S-  U-  U l        Ub  [        U[        5      (       a  X l        g [        SU-  5      e)Nr^   r   r<   zan integer is required   bad tzinfo state arg %r)	r   r   r  r  r  r  r   _tzinfo_classr  )r   r  r   rM  rK  rL  s         r   r  time.__setstate   s    v;!vayB455 	T\4<	3"ax3.14;>Z>>!L5>??r   c                 .    [         U R                  5       4$ r   )rh  r<  r   s    r   rJ  time.__reduce__  s    dnn&''r   )r  r  r  r  r  )r   r   r   r   NF):)NNNNT)#r   rM  rN  rO  rP  r   rR  r   r   r   rs   r   r'  r*  r.  r2  r6  r9  r   rA  r*  r   r  r   r   r  rv   r   r   r   rD  r<  r  rJ  rU  r   r   r   rh  rh    s    .0       ! !  ####A8;  G	4 HL?"I-	@(r   rh  c                      \ rS rSrSr\R                  S-   r  S.S jr\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S/S j5       r\S 5       r\S/S j5       r\S 5       r\S 5       rS rS rS rS rS rS r  S0S jrS/S jrS rS1S jrS rS r\S 5       rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S2S& jr)S' r*\*r+S( r,S) r-S* r.S+ r/S, r0S-r1g)3r  i  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.
)r  r  r  r  r  Nc	                 :   [        U[        5      (       a:  [        U5      S:X  a+  [        R	                  XS S 5      n	U	R                  X5        U	$ [        U5        [        XEXg5        [        R	                  XX#5      n	XIl        XYl	        Xil
        Xyl        Xl        U	$ )N
   r   )r   r   r   rW  r   _datetime__setstater   r   r  r  r  r  r  )
r   r    r+   r4   r   r   r   rs   r   r   s
             r   r   datetime.__new__  s    dE""s4yB<<"1X.DOOD(K&!4=||Cu2
'r   c                     U R                   $ r  r  r   s    r   r   datetime.hour0  r   r   c                     U R                   $ r  r  r   s    r   r   datetime.minute5  r  r   c                     U R                   $ r  r  r   s    r   r   datetime.second:  r  r   c                     U R                   $ r  r  r   s    r   rs   datetime.microsecond?  r  r   c                     U R                   $ r  r  r   s    r   r   datetime.tzinfoD  r  r   c           
      &   [        U5        Uc  [        R                  O[        R                  n[	        US5      u  p[        US-  5      nUS:X  a  US-  nSnU" U5      u	  pgpppn[        US5      nU " XgXXXR5      nUb  UR                  U5      nU$ )zrConstruct a datetime from a POSIX timestamp (like time.time()).

A timezone info object may be passed in as well.
r   r   r   r   r   r   )r   r`   r`  gmtimer>   r   minr  )r   ra  r   	converterfracrm   r   rb   rc   rd   re   rf   rb  rc  r   rn   s                   r   rd  datetime.fromtimestampI  s     	"')zEOOu||	C._ =FAB2;A,/aRWCR[Q1""1>ZZ'Fr   c           	          [        US5      u  p[        US-  5      nUS:X  a  US-  nSn[        R                  " U5      u	  pEpgppn[	        U	S5      n	U " XEXgXU5      $ )zCConstruct a UTC datetime from a POSIX timestamp (like time.time()).r   r   r   r   r   r   )r>   r   r`   ri  rj  )r   ra  rl  rm   r   rb   rc   rd   re   rf   rb  rc  r   s                r   utcfromtimestampdatetime.utcfromtimestampe  si     C._ =FAB27,,q//aRWCR[1++r   c                 N    [         R                  " 5       nU R                  X!5      $ )zBConstruct a datetime from time.time() and optional time zone info.rg  )r   r   ra  s      r   nowdatetime.now{  s      JJL  ''r   c                 N    [         R                  " 5       nU R                  U5      $ )z*Construct a UTC datetime from time.time().)r`   rh  ro  ri  s     r   utcnowdatetime.utcnow  s      JJL##A&&r   c           
      @   [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      eU " UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  5      $ )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 instance)r   _date_classr   _time_classr    r+   r4   r   r   r   rs   r   )r   rW  rh  s      r   combinedatetime.combine  sw     $,,CDD$,,CDD499djj$((99dkk4;;8H8H;;  	 r   c           	          U R                  5       nUc  SnOU(       a  SnOSn[        U R                  U R                  U R                  U R
                  U R                  U R                  U5      $ )r  r   r   r   )r   rj   r    r+   r4   r   r   r   )r   r   s     r   r   datetime.timetuple  sY    hhj;CCC!$))TZZ"&))T[[$++"%' 	'r   c                     U R                   ck  [        R                  " U R                  U R                  U R
                  U R                  U R                  U R                  SSS4	5      U R                  S-  -   $ U [        -
  R                  5       $ )zReturn POSIX timestamp as floatr   r   )r  r`   mktimer    r+   r4   r   r   r   rs   _EPOCHr   r   s    r   	timestampdatetime.timestamp  sx    <<<<DJJ!%DKK!#R!- .040@0@30FG G 6M0022r   c           	          U R                  5       nU(       a  X-  n U R                  U R                  U R                  pCnU R                  U R
                  U R                  pvn[        X#XEXgS5      $ )z4Return UTC time tuple compatible with time.gmtime().r   )rv   r    r+   r4   r   r   r   rj   )r   r   r   rb   rc   rd   re   rf   s           r   utctimetupledatetime.utctimetuple  sW    !ND))TZZaYYT[[!!rq99r   c                 X    [        U R                  U R                  U R                  5      $ )zReturn the date part.)rW  rY  rZ  r[  r   s    r   rW  datetime.date  s    DJJTYY77r   c                 n    [        U R                  U R                  U R                  U R                  5      $ )z'Return the time part, with tzinfo None.)rh  r   r   r   rs   r   s    r   rh  datetime.time  s%    DIIt{{DKK9I9IJJr   c                     [        U R                  U R                  U R                  U R                  U R
                  5      $ )z'Return the time part, with same tzinfo.)rh  r   r   r   rs   r  r   s    r   timetzdatetime.timetz  s0    DIIt{{DKK9I9ILL" 	"r   c	           
      X   Uc  U R                   nUc  U R                  nUc  U R                  nUc  U R                  nUc  U R                  nUc  U R
                  nUc  U R                  nUSL a  U R                  n[        XU5        [        XEXg5        [        U5        [        XX4XVXx5      $ )z?Return a new datetime with new values for the specified fields.T)r    r+   r4   r   r   r   rs   r   r   r   r   r  )	r   r    r+   r4   r   r   r   rs   r   s	            r   r   datetime.replace  s     <99D=JJE;((C<99D>[[F>[[F**KT>[[F4,4=&!S%/ 	/r   c                 l   Ucy  U R                   c  [        S5      eU [        -
  [        SS9-  n[        R
                  " U5      n[        US S 6 n UR                  nUR                  n[        [        US9U5      nO [!        U[         5      (       d  [#        S5      eU R                   n	U	c  [        S5      eXL a  U $ U R%                  5       n
U
c  [        S5      eX
-
  R'                  US9nUR)                  U5      $ ! [         a    U[        [        R                  " U5      S S 6 -
  n[        R                  =(       a    UR                  S:  nU(       a  [        R                  O[        R                  * nU[        US9:X  a   [        U[        R                  U   5      n GN[        U5      n GNf = f)Nz'astimezone() requires an aware datetimer   r   r^   r   z)tz argument must be an instance of tzinfor   )r   r   r  r   r`   r`  r  	tm_gmtofftm_zonetimezoneAttributeErrorri  daylighttm_isdstaltzoner   r   r   rv   r   r  )r   r   tslocaltmlocalgmtoffzoner  r   r  myoffsetutcs               r   
astimezonedatetime.astimezone  s   :{{" !JKK-Ia$88Boob)Ggbqk*E? ** i7>B''GHH{{<FGG:K >>#FGG''r'2 zz#? " 
) %,,r*:2A*> ??nn=)9)9A)=,/5==U^^DIf55!%c):;B!%B
)s   C= =B$F3$F32F3c                     U R                  5       S-  =(       d    SnS[        U   [        U R                     U R                  U R
                  U R                  U R                  U R                  4-  $ )rr  r_   z%s %s %2d %02d:%02d:%02d %04d)	rs  rt  ru  rZ  r[  r  r  r  rY  rv  s     r   rw  datetime.ctime  s_    .."Q&+!.g$IIJJdllJJ2  	r   c                    SU R                   U R                  U R                  U4-  [        U R                  U R
                  U R                  U R                  5      -   nU R                  5       nUb[  UR                  S:  a  SnU* nOSn[        U[        SS95      u  pVU[        SS9-  (       a   S5       eU[        SS9-  nUS	XEU4-  -  nU$ )
aa  Return the time formatted according to ISO.

This is 'YYYY-MM-DD HH:MM:SS.mmmmmm', or 'YYYY-MM-DD HH:MM:SS' if
self.microsecond == 0.

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

Optional argument sep specifies the separator between date and
time, default 'T'.
z%04d-%02d-%02d%cr   rx   rw   r   ry   r{   r}   z%s%02d:%02d)rY  rZ  r[  ro   r  r  r  r  rv   r   r>   r   )r   r(  r   r)  r   rd   re   s          r   r  datetime.isoformat  s      4::t{{DII"%#' 'TZZt||!..00 nn?xx!|dC!34FBIa00@.@09Q''B$B//Ar   c                    U R                   U R                  U R                  U R                  U R                  U R
                  U R                  /nUS   S:X  a  US	 US   S:X  a  US	 SR                  [        [        U5      5      nSU R                  R                  -   < SU< S3nU R                  b#  USS S:X  d   eUSS SU R                  -  -   S-   nU$ )	r-  r   r   , r   (r.  Nr/  )rY  rZ  r[  r  r  r  r  r   r	   r   r   r   r  )r   Lr   s      r   r   datetime.__repr__,  s    ZZdiiZZt||T5F5FHR5A:"R5A:"IIc#qk"#dnn&=&==qA<<#RS6S= =#255;Ar   c                      U R                  SS9$ )zConvert to string, for str(). )r(  )r  r   s    r   r   datetime.__str__;  s    ~~#~&&r   c                 .    SSK nUR                  XU5      $ )zKstring, format -> new datetime parsed from a string (like time.strptime()).r   N)	_strptime_strptime_datetime)r   date_stringr   r  s       r   strptimedatetime.strptime?  s     	++CfEEr   c                 p    U R                   c  gU R                   R                  U 5      n[        SU5        U$ r8  r9  r:  s     r   rv   datetime.utcoffsetE  r<  r   c                 J    [        U R                  SU 5      n[        U5        U$ )r>  r   )r   r  r   r?  s     r   r   datetime.tznameN  s#     #4<<4@dr   c                 p    U R                   c  gU R                   R                  U 5      n[        SU5        U$ rB  rC  r:  s     r   r   datetime.dstY  rE  r   c                     [        U[        5      (       a  U R                  USS9S:H  $ [        U[        5      (       d  [        $ gr  r   r  r   rW  r   r   s     r   r'  datetime.__eq__j  s=    eX&&99U95::E4((!!r   c                     [        U[        5      (       a  U R                  USS9S:g  $ [        U[        5      (       d  [        $ gr  r  r   s     r   r*  datetime.__ne__r  s=    eX&&99U95::E4((!!r   c                     [        U[        5      (       a  U R                  U5      S:*  $ [        U[        5      (       d  [        $ [        X5        g r
  r   r  r   rW  r   r   r   s     r   r.  datetime.__le__z  >    eX&&99U#q((E4((!!d"r   c                     [        U[        5      (       a  U R                  U5      S:  $ [        U[        5      (       d  [        $ [        X5        g r
  r  r   s     r   r2  datetime.__lt__  >    eX&&99U#a''E4((!!d"r   c                     [        U[        5      (       a  U R                  U5      S:  $ [        U[        5      (       d  [        $ [        X5        g r
  r  r   s     r   r6  datetime.__ge__  r  r   c                     [        U[        5      (       a  U R                  U5      S:  $ [        U[        5      (       d  [        $ [        X5        g r
  r  r   s     r   r9  datetime.__gt__  r  r   c           
         [        U[        5      (       d   eU R                  nUR                  nS =pVX4L a  SnO$U R                  5       nUR                  5       nXV:H  nU(       a  [	        U R
                  U R                  U R                  U R                  U R                  U R                  U R                  4UR
                  UR                  UR                  UR                  UR                  UR                  UR                  45      $ Ub  Uc  U(       a  g[        S5      eX-
  nUR                  S:  a  gU=(       a    S=(       d    S$ )NTr'   z(cannot compare naive and aware datetimesr   r   r   )r   r  r  rv   r   rY  rZ  r[  r  r  r  r  r   r   )	r   r   r	  r  r  r  r  r  diffs	            r   r   datetime._cmp  s   %****||}}<LNN$EOO%E >LT[[$))T\\4<<**, U\\5::U]]EMM**,- - =EM JKK|99q=zQr   c                    [        U[        5      (       d  [        $ [        U R                  5       U R                  U R
                  U R                  U R                  S9nX!-  n[        UR                  S5      u  p4[        US5      u  pVSUR                  s=:  a
  [        ::  aT  O  OQ[        R                  [        R                  UR                  5      [!        X5UUR"                  U R$                  S95      $ ['        S5      e)zAdd a datetime and a timedelta.)rz   r|   r   r   r   r   r   r  r  )r   r   r   rs  r  r  r  r  r>   r   r   r  r  rz  rW  rm  rh  r   r  r   )r   r   r  r   remr   r   s          r   r   datetime.__add__  s    %++!!$..* $

"&,,"&,,'+'8'8	:
 	5==$/	Ruzz([(##D$4$4UZZ$@$(v).););04%>? ? 122r   c                 `   [        U[        5      (       d   [        U[        5      (       a  X* -   $ [        $ U R	                  5       nUR	                  5       nU R
                  U R                  S-  -   U R                  S-  -   nUR
                  UR                  S-  -   UR                  S-  -   n[        X#-
  XE-
  U R                  UR                  -
  5      nU R                  UR                  L a  U$ U R                  5       nUR                  5       nXx:X  a  U$ Ub  Uc  [        S5      eXh-   U-
  $ )z6Subtract two datetimes, or a datetime and a timedelta.r   r   z(cannot mix naive and timezone-aware time)r   r  r   r   rs  r  r  r  r  r  rv   r   )	r   r   r  r  secs1secs2baser  r  s	            r   r   datetime.__sub__  s   %**%++f}$!! !t||b004::3DD 22U[[45GG**U-?-??A <<5==(K !>K=EMFGG|e##r   c                 R   U R                  5       nUc  [        U R                  5       S   5      $ [        U R                  U R
                  U R                  5      nU R                  S-  U R                  S-  -   U R                  -   n[        [        X#U R                  5      U-
  5      $ )Nr   r   r   )rv   r@  r<  r6   r    r+   r4   r   r   r   r   rs   )r   r%  r   r   s       r   rA  datetime.__hash__  s     =(+,,		4::txx8))d"T[[2%55CIdT-=-=>FGGr   c                 B   [        U R                  S5      u  p[        U R                  S5      u  p4[        US5      u  pS[        XU R                  U R
                  U R                  U R                  U R                  XSU/
5      nU R                  c  U4$ X`R                  4$ r  )
r>   rY  r  r   rZ  r[  r  r  r  r  )r   r  r  rK  rL  rM  rN  s          r   r<  datetime._getstate  s    $**c*$++S1#s#3T[[$))::t||T\\S* +	 <<<||,,r   c           
          Uu
  p4U l         U l        U l        U l        U l        pVnUS-  U-   U l        US-  U-  S-  U-  U l        Ub  [        U[        5      (       a  X l	        g [        SU-  5      e)Nr  rQ  rR  )rZ  r[  r  r  r  rY  r  r   rS  r  r   )r   r  r   r  r  rM  rK  rL  s           r   r  datetime.__setstate  sv    6<	44;	4:	t|Ss3Y_
"ax3.14;>Z>>!L5>??r   c                 :    U R                   U R                  5       4$ r   rI  r   s    r   rJ  datetime.__reduce__  rL  r   )r[  r  r  r  rZ  r  r  rY  )NNr   r   r   r   Nr   )NNNNNNNT)TrW  )2r   rM  rN  rO  rP  rW  rQ  r   rR  r   r   r   rs   r   r  rd  ro  rr  ru  rz  r   r  r  rh  r  r   r  rw  r  r   r   r  rv   r   r   r'  r*  r.  r2  r6  r9  r   r   rS  r   rA  r<  r\  rJ  rU  r   r   r   r  r    s     "# #I KL&*$       ! !    6 , ,* ( (
 ' '
    '3:8K"
 =ACG/2*\:' F F
	"####>3& H$0H
-@2r   r  c                 P    Sn[        U SS5      nUS-   S-  nX#-
  nX1:  a  US-  nU$ )Nr;   r   r^   r_   )r6   )r    THURSDAYfirstdayfirstweekdayr  s        r   r  r    sC     Ha#HqLA%L)Kqr   c                       \ rS rSrSr\" 5       r\4S jr\SS j5       r	S r
S rS rS	 rS
 rS rS rS rS r\" SSS9r\* r\S 5       rSrg)r  i  )_offset_namec                    [        U[        5      (       d  [        S5      eX R                  L a  U(       d  U R                  $ S nOQ[        U[
        5      (       d<  [        (       a&  [        U[        5      (       a  UR                  5       nO[        S5      eU R                  Us=::  a  U R                  ::  d  O  [        S5      eUR                  S:w  d  UR                  S-  S:w  a  [        S5      eU R                  X5      $ )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   zAoffset must be a timedelta representing a whole number of minutes)r   r   r   _Omittedr  r   r   r   decode
_minoffset
_maxoffsetr   r   r   _create)r   r   r   s      r   r   timezone.__new__  s    &),,899<<wwDD#&& sz$
33{{} 788~~93>>9 5 6 6 1$NNR1$ G H H{{6((r   Nc                 H    [         R                  U 5      nXl        X#l        U$ r   )r   r   r  r  )r   r   r   r   s       r   r  timezone._create8  s    ~~c"
r   c                 f    U R                   c  U R                  4$ U R                  U R                   4$ )zpickle supportr  r  r   s    r   r  timezone.__getinitargs__?  s+    ::LL?"djj))r   c                 \    [        U5      [        :w  a  gU R                  UR                  :H  $ )NF)r   r  r  r   s     r   r'  timezone.__eq__E  s$    ;("||u}},,r   c                 ,    [        U R                  5      $ r   )r@  r  r   s    r   rA  timezone.__hash__J  s    DLL!!r   c                    X R                   L a  gU R                  c+  SU R                  R                  -   < SU R                  < S3$ SU R                  R                  -   < SU R                  < SU R                  < S3$ )zConvert 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.utcr   r  r.  r  )r  r  r   r   r  r   s    r   r   timezone.__repr__M  sg     88*::*T^^-D-DD#||- -*T^^-D-DD#||TZZ9 	9r   c                 $    U R                  S 5      $ r   )r   r   s    r   r   timezone.__str___  s    {{4  r   c                 `    [        U[        5      (       d  Uc  U R                  $ [        S5      e)Nz8utcoffset() argument must be a datetime instance or None)r   r  r  r   r  s     r   rv   timezone.utcoffsetb  s/    b(##rz<< # $ 	$r   c                     [        U[        5      (       d  Uc4  U R                  c  U R                  U R                  5      $ U R                  $ [        S5      e)Nz5tzname() argument must be a datetime instance or None)r   r  r  _name_from_offsetr  r   r  s     r   r   timezone.tznameh  sN    b(##rzzz!--dll;;:: # $ 	$r   c                 J    [        U[        5      (       d  Uc  g [        S5      e)Nz2dst() argument must be a datetime instance or None)r   r  r   r  s     r   r   timezone.dstp  s(    b(##rz # $ 	$r   c                     [        U[        5      (       a(  UR                  U La  [        S5      eXR                  -   $ [        S5      e)Nzfromutc: dt.tzinfo is not selfz6fromutc() argument must be a datetime instance or None)r   r  r   r   r  r   r  s     r   r  timezone.fromutcv  sL    b(##yy$  "/ 0 0$$ # $ 	$r   r   r   r$  c                     U [        S5      :  a  SnU * n OSn[        U [        SS95      u  p#U[        SS9-  nSR                  XU5      $ )Nr   rx   rw   r   ry   r{   zUTC{}{:02d}:{:02d})r   r>   r   )r  r   rz   restr|   s        r   r  timezone._name_from_offset  sT    9Q<DFEDUIA$67)A..#**4@@r   r  r   )r   rM  rN  rO  rQ  r   r  r   r  r  r  r'  rA  r   r   rv   r   r   r  r   r  r  staticmethodr  rU  r   r   r   r  r    s    "I xH"* )2  *-
"9$!$$$$ R0JJA Ar   r  i  r  )*)rP  )ErP  
__future__r   r   r   r   future.builtinsr   r   r	   r
   r   r   future.utilsr   r   rh  r`   mathr   r   r   r   r  r)   r/   dbmr5   r   r!   r$   r,   r0   r6   r?   r@   rA   rI   ru  rt  rj   ro   r   r   r   r   r   r   r   r   r   rj  max
resolutionrW  rx  r   rS  ry  r  r  r  r  r  r  r  r  	_datetimeImportErrorr   r   r   <module>r     sX  
   ' % &  !  !  " (  / 
 HV !"Cc"3JC  B*
!F
 C
 
C
 
A
   !g+/! !! "u*q.    <~?C	I
70r01+	<
JP9F2 F2P
 *%	yB'-/	 a0	 ]26 ]2~ 1a=b"#A1V A1F p(6 p(d	 1a=BF#+s2t s2l 1a b"b"b&9Q/ 	qAv qAf 	!- 3 34 3 34	$1X\\	2DJ"
 
&	'5+{	02D	.	D)[:L	NL(	%5+}	
 "!  		s   J JJ