
    F\hVg             	          S r SrSSKrSSKrSSKrSSKJr	  S r
S rSrSrS	r/ S
QrS/rSr\SS  H  r\R'                  \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SGS jr SHS jr!S r"S r#S r$S  r%/ S!Qr&S" r'S# r(S$ r)S% r*S& r+S' r,S( r-S) r.S* r/ " S+ S,5      r0\0" S-5      \0l1        \0" S.S/S0S0S1S29\0l2        \0" SS39\0l3         " S4 S55      r4\4r5\4" SSS5      \4l1        \4" SS6S75      \4l2        \0" SS89\4l3         " S9 S:5      r6 " S; S<\75      r8\8r9C8\6r: " S= S>5      r\r;\" SSS5      \l1        \" S/S0S0S15      \l2        \0" SS39\l3         " S? S@\45      r<\<" SSS5      \<l1        \<" SS6S7S/S0S0S15      \<l2        \0" SS39\<l3        SA r= " SB SC\65      r>\>R                  \0" S5      5      =r@\>lA        \>R                  \0" S/S0SD9* 5      \>l1        \>R                  \0" S/S0SD95      \>l2        \<" SESS\>R                  SF9rBg)IzConcrete 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                 "    X:X  a  S$ X:  a  S$ S$ )Nr       )xys     "/usr/lib/python3.13/_pydatetime.py_cmpr      s    1.A.B.    c                 @    U R                   R                  nUS:X  a  gU$ )N_pydatetimer   )	__class__
__module__)selfmodule_names     r   _get_class_moduler      s"    ..++Km#r   r   i'  i۹7 )r         r      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%   1   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(   5   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_monthr0   :   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_monthr4   A   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*   r2   day must be in 1..%d)r0   r(   r4   r$   r/   daydims       r   _ymd2ordr:   F   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   r<   r+   )divmod_DI400Y_DI100Y_DI4Yr%   r3   r-   r0   )	nn400r$   n100n4n1leapyearr/   	precedings	            r   _ord2ymdrM   _   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      )r:   r4   _timestruct_time)	r   mdhhmmssdstflagwdaydnums	            r   _build_struct_timern      sC    Q1!Q&Da#a'DaA24wGHHr   c                     SSSSSS.nUS:X  a  U(       a  SOS	nOUS
:X  a  US-  n XT   nUR                  XX#5      $ ! [         a    [        S5      ef = f)Nz{:02d}z{:02d}:{:02d}z{:02d}:{:02d}:{:02d}z{:02d}:{:02d}:{:02d}.{:03d}z{:02d}:{:02d}:{:02d}.{:06d})hoursminutessecondsmillisecondsmicrosecondsautort   rr   rs     zUnknown timespec value)formatKeyError
ValueError)rh   ri   rj   ustimespecspecsfmts          r   _format_timer~      sx    ")55E 6%'>Y	^	#
t*o zz""))  31223s	   = Ac                 D   SnU b  U R                   S:  a  SnU * n OSn[        U [        SS95      u  pE[        U[        SS95      u  pVUSX4X4-  -  nU(       d  UR                  (       a6  US	XR                  4-  -  nUR                  (       a  US
UR                  -  -  nU$ )N r   -+r   rp   rq   z%s%02d%s%02dz%s%02d.%06d)daysrB   r   rt   rr   )offsepssignrh   ri   rj   s          r   _format_offsetr      s    
A
88a<D$CDYQ/0Ia01	^t111S**---AWr..Hr   c                    S nS nS nS n/ nUR                   nS[        U5      pX:  Ga  X   nU	S-  n	US:X  Gas  X:  Gad  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  aI  Uc,  [        U S5      (       a  [	        U R                  5       S	S
9nOS	nSU;  d   eUR                  U5        OUS:X  av  X:  ap  X   nU	S-  n	US:X  aI  Uc,  [        U S5      (       a  [	        U R                  5       SS
9nOS	nSU;  d   eUR                  U5        OU" S5        U" U5        U" U5        OuUS:X  aM  Uc8  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M  S	R                  U5      n[        R                  " Xr5      $ )Nr   r   %fz%06dmicrosecondz	utcoffsetr   r   :Ztznamez%%)appendlengetattrhasattrr   r   r   replacejoinrd   strftime)objectrw   	timetuplefreplacezreplacecolonzreplaceZreplace	newformatpushirF   chch2r   s                 r   _wrap_strftimer      s   HHMH IDc&kq
%Y	Q9uYQ9'#)GF4A1-F $F$$X.3Y'"6;77'5f6F6F6Hb'QH')Hh...$$X.3Yu$iQ#:,4#*6;#?#?4B6CSCSCU[^4_M46M#&m#;;#;%,,]; I H I3Y'#%"6844 &A }+,99S$+?$$X.IHS	Hg %h 	"I>>)//r   c                     U S;   $ )N
0123456789r   )cs    r   _is_ascii_digitr     s    r   c                    [        U 5      nUS:X  a  gUS:  d   eSnSnU S   U:X  aW  U S   U:X  aM  US:  a  [        S5      eUS:  a5  U S   U:X  a,  US:X  a  [        S5      eUS	:  a  [        U S	   5      (       a  gg	gg	U S   U:X  a9  SnXA:  a  [        X   5      (       d  OUS
-  nXA:  a  M  US:  a  U$ US-  S:X  a  ggg)Nrc   r   Wr!   r<      zInvalid ISO string	   
   r   r+   r   )r   ry   r   )dtstr	len_dtstrdate_separatorweek_indicatoridxs        r   "_find_isoformat_datetime_separatorr     s    E
IA~q==NNQx>!8~%1} !5661}q^!;>$%9::r>oeBi&@&@   8~%C/&uz22q /
 Qw
Qw!| r   c                    [        U 5      S;   d   e[        U SS 5      nU S   S:H  nSU-   nXUS-    S:X  am  US-  n[        XUS-    5      nUS-  nSn[        U 5      U:  a-  XUS-    S:H  U:w  a  [        S5      eX2-  n[        XUS-    5      n[        [	        XU5      5      $ [        XUS-    5      nUS-  nXUS-    S:H  U:w  a  [        S5      eX2-  n[        XUS-    5      nXU/$ )	Nrc   r   r   r   r!   r   r   r   r+   z"Inconsistent use of dash separator)r   intry   list_isoweek_to_gregorian)r   r$   has_sepposweeknodaynor/   r8   s           r   _parse_isoformat_dater   O  s4    u:###uQqz?DAh#oG
g+CqS qUsQw'(qu:#'"c)g5 !EFFNC#'*+E)$>??EcAg&'qcAg#%'1ABB%C!G$%S!!r   )i i'  rv   r"   r   c                 .   [        U 5      n/ SQnSn[        SS5       Hm  nX-
  S:  a  [        S5      e[        XUS-    5      X$'   US-  nXUS-    nUS:X  a  US:H  nU(       a  US:  a    O#W(       a  US:w  a  [        SU-  5      eX6-  nMo     X1:  a  X   S	;  a  [        S
5      eUS-  n[	        [        [        XS  5      5      (       d  [        S5      eX-
  nUS:  a  SnOUn[        XX8-    5      US'   US:  a  US==   [        US-
     -  ss'   U$ )N)r   r   r   r   r   r?   r+   zIncomplete time componentr   r   zInvalid time separator: %cz.,zInvalid microsecond componentzNon-digit values in fractionrb   )r   rangery   r   allmapr   _FRACTION_CORRECTION)	tstrlen_str
time_compsr   comp	next_charr   len_remainderto_parses	            r   _parse_hh_mm_ss_ffr   v  s@   $iGJ
CaMQ899tA/
qSUO	193&GDAIyC'9IEFF% ( }9D <==1HCs?DJ788 !?@@#MM!(#, 89JqM!|1!5hqj!AAr   c                    [        U 5      nUS:  a  [        S5      eU R                  S5      S-   =(       d/    U R                  S5      S-   =(       d    U R                  S5      S-   nUS:  a  U S US-
   OU n[        U5      nS nX!:X  a  U S   S:X  a  [        R
                  nOUS:  a  XS  n[        U5      S	;   a  [        S
5      e[        U5      n[        S U 5       5      (       a  [        R
                  nO4XS-
     S:X  a  SOSn[        US   US   US   US   S9n	[	        X-  5      nUR                  U5        U$ )Nr+   zIsoformat time too shortr   r   r   r   r   r   )r   r   r?   zMalformed time zone stringc              3   *   #    U  H	  oS :H  v   M     g7f)r   Nr   ).0r   s     r   	<genexpr>(_parse_isoformat_time.<locals>.<genexpr>  s     (x!Avxs   r?   rp   rq   rr   rt   )	r   ry   findr   r   utcr   r   r   )
r   r   tz_postimestrr   tzitzstrtz_compstzsigntds
             r   _parse_isoformat_timer     s>   $iG{344 iinq LDIIcNQ$6L$))C.1:LF!'!d9F1HoG#G,J
CT"X_ll	!W u:"9::%e,(x(((,,C
+s2RF!hqk#+A;Xa[JB 6;'Ccr   c                    [         U s=::  a
  [        ::  d  O  [        SU  35      eSUs=:  a  S:  dM  O  SnUS:X  a.  [        U SS5      S-  nUS:X  d  US:X  a  [	        U 5      (       a  S	nU(       a  [        S
U 35      eSUs=:  a  S:  d  O  [        SU S35      eUS-
  S-  US-
  -   n[        U 5      nXe-   n[        U5      $ )NzYear is out of range: r   5   Tr   rc   r!   r?   FzInvalid week: r   zInvalid weekday: z (range is [1, 7]))r   r	   ry   r:   r%   _isoweek1mondayrM   )r$   weekr8   out_of_rangefirst_weekday
day_offsetday_1ord_days           r   r   r     s    d%g%1$899t=b=2: %T1a014M"}'9'/~~$~dV455s;Q;,SE1CDEE (a37+J D!E GGr   c                 d    U b-  [        U [        5      (       d  [        S[        U 5      -  5      eg g )Nz4tzinfo.tzname() must return None or string, not '%s')
isinstancestr	TypeErrortype)names    r   _check_tznamer     s:    
4 5 5 #%)$Z0 1 	1 !6r   c                     U S;   d   eUc  g [        U[        5      (       d  [        SU < S[        U5      < S35      e[        S5      * Us=:  a  [        S5      :  d  O  [	        U < SU< S35      eg )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   ry   )r   offsets     r   _check_utc_offsetr      sw    ''''~fi((48$v,H I 	IaL=60IaL0( ) 	) 1r   c                 4   [        U 5      n [        U5      n[        U5      n[        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XU4$ )Nzyear must be in %d..%dr   r*   r2   r6   )_indexr   r	   ry   r0   r7   s       r   _check_date_fieldsr     s    $<D5ME
+Cd%g%1Wg4FFMM1599

%C?s?/#5s;;r   c                 `   [        U 5      n [        U5      n[        U5      n[        U5      n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US	;  a  [        S
U5      eXX#U4$ )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   ry   )hourminutesecondr   folds        r   _check_time_fieldsr     s    $<DF^FF^F%K??0$77"2F;;"2F;;%v%;[II65t<<d22r   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                 z    [        X5      u  p#US-  nUS:  a  X1:  OX1:  nU(       d  X1:X  a  US-  S:X  a  US-  nU$ )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   )rB   )abqrgreater_than_halfs        r   _divide_and_roundr	  .  sK     !<DA FA!"QAEAFq1uz	QHr   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&g")$r   iB  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).
)_days_seconds_microseconds	_hashcodec                 @   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      (       a2  [        X?-   5      n[        US5      u  p#[        US	5      u  pX-  nX-  n	O<[	        U5      n[        US5      u  p#[        US	5      u  pX-  nX-  n	[        X?-   5      n[        U	[        5      (       d   e[        U[        5      (       d   e[        U	5      S::  d   e[        U5      S:  d   e[        US5      u  p*X-  n	[        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[        U5      S:  a  [        SU-  5      e[        R                  U 5      nUUl        U	Ul        U
Ul        SUl        U$ )Nr   rc   <     rv   g     @g        g      ?Q g       @i      .Ag    @A@B i g    GAɚ;z$timedelta # of days is too large: %dr   )r   float_mathmodfr   absrB   roundOverflowErrorr   __new__r  r  r  r  )clsr   rr   rt   rs   rq   rp   weeksrg   r   rz   dayfracdaysecondsfracdaysecondswholesecondsfracusdoubler   s                    r   r  timedelta.__new__X  s    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** !89L$*<$A!G"7G4MDIALA|,L$*<$A!G"7G4MDIALA !89L!S!!!!,,,,,1v&&&< 5((( \73	G$		!S!!!!!S!!a1&6w&666&666"c""qB'8'888'888q6I F JKK~~c"
r   c                    / nU R                   (       a  UR                  SU R                   -  5        U R                  (       a  UR                  SU R                  -  5        U R                  (       a  UR                  SU R                  -  5        U(       d  UR                  S5        [	        U 5      < SU R
                  R                  < SSR                  U5      < S3$ )	Nzdays=%dz
seconds=%dzmicroseconds=%d0.(, ))r  r   r  r  r   r   __qualname__r   )r   argss     r   __repr__timedelta.__repr__  s    ::KK	DJJ./==KKt}}45KK)D,>,>>?KK/5"nn99"iio/ 	/r   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   r   )r  )rF   s    r   plural!timedelta.__str__.<locals>.plural  s    #a&A+-#333r   z
%d day%s, r   )rB   r  r  r  )r   ri   rj   rh   r   r1  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   rr   rt   r   s    r   total_secondstimedelta.total_seconds  s7    U"T\\1U:!!"%*+ 	+r   c                     U R                   $ r   r  r6  s    r   r   timedelta.days       zzr   c                     U R                   $ rr   )r  r6  s    r   rr   timedelta.seconds  s     }}r   c                     U R                   $ rt   )r  r6  s    r   rt   timedelta.microseconds  s     !!!r   c                     [        U[        5      (       aR  [        U R                  UR                  -   U R                  UR                  -   U R                  UR                  -   5      $ [
        $ N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      $ [
        $ rE  rF  rH  s     r   __sub__timedelta.__sub__  rL  r   c                 D    [        U[        5      (       a  U * U-   $ [        $ rE  )r   r   rG  rH  s     r   __rsub__timedelta.__rsub__   s!    eY''55= r   c                 ^    [        U R                  * U R                  * U R                  * 5      $ rE  )r   r  r  r  r6  s    r   __neg__timedelta.__neg__  s.     $**--,,,. 	.r   c                     U $ rE  r   r6  s    r   __pos__timedelta.__pos__  s    r   c                 ,    U R                   S:  a  U * $ U $ Nr   r;  r6  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       nUR                  5       u  p4[        SS[        X#-  U5      5      $ [        $ rZ  )r   r   r   r  r  r  r  _to_microsecondsas_integer_ratior	  rG  r   rI  usecr  r  s        r   __mul__timedelta.__mul__  s    eS!! TZZ%/!]]U2!//%79 9 eU##((*D))+DAQ#4TXq#ABBr   c                 Z    U R                   S-  U R                  -   S-  U R                  -   $ )Nr  r  r  r  r  r6  s    r   r^  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 rZ  )r   r   r   rG  r^  )r   rI  ra  s      r   __floordiv__timedelta.__floordiv__(  sj    %#y!122!!$$&eY''11333eS!!Q4=11 "r   c                    [        U[        [        [        45      (       d  [        $ U R                  5       n[        U[        5      (       a  X!R                  5       -  $ [        U[        5      (       a  [        SS[        X!5      5      $ [        U[        5      (       a+  UR                  5       u  p4[        SS[        XB-  U5      5      $ g rZ  )r   r   r  r   rG  r^  r	  r_  r`  s        r   __truediv__timedelta.__truediv__1  s    %#ui!899!!$$&eY''00222eS!!Q#4T#ABBeU##))+DAQ#4QXq#ABB $r   c                     [        U[        5      (       a.  U R                  5       UR                  5       -  n[        SSU5      $ [        $ rZ  )r   r   r^  rG  )r   rI  r  s      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$ [        $ rZ  )r   r   rB   r^  rG  )r   rI  r  r  s       r   
__divmod__timedelta.__divmod__C  sL    eY''$//10024DAi1a(((r   c                 `    [        U[        5      (       a  U R                  U5      S:H  $ [        $ rZ  r   r   r   rG  rH  s     r   __eq__timedelta.__eq__L  )    eY''99U#q((!!r   c                 `    [        U[        5      (       a  U R                  U5      S:*  $ [        $ rZ  rt  rH  s     r   __le__timedelta.__le__R  rw  r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rt  rH  s     r   __lt__timedelta.__lt__X  )    eY''99U#a''!!r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rt  rH  s     r   __ge__timedelta.__ge__^  rw  r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rt  rH  s     r   __gt__timedelta.__gt__d  r~  r   c                     [        U[        5      (       d   e[        U R                  5       UR                  5       5      $ rE  )r   r   r   	_getstaterH  s     r   r   timedelta._cmpj  s0    %++++DNN$eoo&788r   c                 v    U R                   S:X  a  [        U R                  5       5      U l         U R                   $ )Nr   r  hashr  r6  s    r   __hash__timedelta.__hash__n  s+    >>R!$.."23DN~~r   c                 x    U R                   S:g  =(       d%    U R                  S:g  =(       d    U R                  S:g  $ rZ  re  r6  s    r   __bool__timedelta.__bool__s  s6    

a ("(""a'	)r   c                 H    U R                   U R                  U R                  4$ rE  re  r6  s    r   r  timedelta._getstatez  s    

DMM4+=+=>>r   c                 :    U R                   U R                  5       4$ rE  r   r  r6  s    r   
__reduce__timedelta.__reduce__}       011r   )r  r  r  r  N)r   r   r   r   r   r   r   )'__name__r   r+  __firstlineno____doc__	__slots__r  r-  r3  r7  propertyr   rr   rt   rJ  __radd__rN  rQ  rT  rW  r[  rb  __rmul__r^  rh  rk  rn  rq  ru  ry  r|  r  r  r   r  r  r  r  __static_attributes__r   r   r   r   r   B  s    & BI56:;cJ/
+     " " H
. H$2
C"""""9
)?2r   r   i6er  r   r   r   )r   rp   rq   rr   rt   rB  c                   @   \ rS 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\r\S 5       r\S 5       r\S 5       rS rS rS'S jr\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)(r   i  at  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                    Uc  [        U[        [        45      (       a  [        U5      S:X  ar  S[	        USS 5      s=::  a  S::  aY  O  OV[        U[        5      (       a   UR                  S5      n[        R                  U 5      nUR                  U5        SUl        U$ [        XU5      u  pn[        R                  U 5      nXl        X$l        X4l        SUl        U$ ! [         a    [        S5      ef = f)	z>Constructor.

Arguments:

year, month, day (required, base 1)
r!   r   r+   r?   r*   latin1znFailed to encode latin1 string when unpickling a date object. pickle.load(data, encoding='latin1') is assumed.r   )r   bytesr   r   ordencodeUnicodeEncodeErrorry   r   r  _date__setstater  r   r  r  r  )r  r$   r/   r8   r   s        r   r  date.__new__  s     MteS\**s4yA~T!AY%2%$$$L;;x0D >>#&DOOD!DNK-d3?S~~c"
	! * L$KL LLs    C C5c           	      h    Uc  [        S5      e[        R                  " U5      u	  p#pEpgpn
U " X#U5      $ )z;Construct a date from a POSIX timestamp (like time.time()).z5'NoneType' object cannot be interpreted as an integer)r   rd   	localtime)r  tr   rf   rg   rh   ri   rj   weekdayjdayr   s              r   fromtimestampdate.fromtimestamp  s:     9STT27//!2D/aRWC1|r   c                 N    [         R                  " 5       nU R                  U5      $ )z"Construct a date from time.time().rd   r   r  )r  r  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.
)rM   )r  rF   r   rf   rg   s        r   fromordinaldate.fromordinal  s     1+a1|r   c                     [        U[        5      (       d  [        S5      e[        U5      S;  a  [	        SU< 35      e U " [        U5      6 $ ! [         a    [	        SU< 35      ef = f)z2Construct a date from a string in ISO 8601 format.#fromisoformat: argument must be strr   Invalid isoformat string: )r   r   r   r   ry   r   	Exception)r  date_strings     r   fromisoformatdate.fromisoformat  sx     +s++ABB{:-9+IJJ	K-k:;; 	K9+IJJ	Ks    A A(c                      U " [        XU5      6 $ )ztConstruct a date from the ISO year, week number and weekday.

This is the inverse of the date.isocalendar() function)r   )r  r$   r   r8   s       r   fromisocalendardate.fromisocalendar  s    
 )$c:;;r   c                     S[        U 5      U R                  R                  U R                  U R                  U R
                  4-  $ )zhConvert to formal string, for repr().

>>> d = date(2010, 1, 1)
>>> repr(d)
'datetime.date(2010, 1, 1)'
z%s.%s(%d, %d, %d))r   r   r+  r  r  r  r6  s    r   r-  date.__repr__  s@     #&7&=&*nn&A&A&*jj&*kk&*ii	&1 1 	1r   c                     U R                  5       S-  =(       d    SnS[        U   [        U R                     U R                  U R
                  4-  $ )Return ctime() style string.rc   z%s %s %2d 00:00:00 %04d)	toordinal	_DAYNAMES_MONTHNAMESr  r  r  r   r  s     r   ctime
date.ctime  sK    .."Q&+!(g$IItzz,# # 	#r   c                 6    [        XU R                  5       5      $ )z9
Format using strftime().

Example: "%d/%m/%Y, %H:%M:%S"
)r   r   )r   rw   s     r   r   date.strftime  s     dDNN,<==r   c                     [        U[        5      (       d!  [        S[        U5      R                  -  5      e[        U5      S:w  a  U R                  U5      $ [        U 5      $ Nzmust be str, not %sr   r   r   r   r   r  r   r   r   r}   s     r   
__format__date.__format__  N    #s##1DI4F4FFGG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:
- https://www.w3.org/TR/NOTE-datetime
- https://www.cl.cam.ac.uk/~mgk25/iso-time.html
z%04d-%02d-%02d)r  r  r  r6  s    r   	isoformatdate.isoformat  s"      4::t{{DII"FFFr   c                     U R                   $ )zyear (1-9999))r  r6  s    r   r$   	date.year+  r=  r   c                     U R                   $ )zmonth (1-12))r  r6  s    r   r/   
date.month0  s     {{r   c                     U R                   $ )z
day (1-31))r  r6  s    r   r8   date.day5  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   )rn   r  r  r  r6  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.
)r:   r  r  r  r6  s    r   r  date.toordinalB  s     

DKK;;r   c                     Uc  U R                   nUc  U R                  nUc  U R                  n[        U 5      " XU5      $ )z;Return a new date with new values for the specified fields.)r  r  r  r   )r   r$   r/   r8   s       r   r   date.replaceJ  s=    <::D=KKE;))CDz$s++r   c                     [        U[        5      (       a)  [        U[        5      (       d  U R                  U5      S:H  $ [        $ rZ  r   r   r   r   rG  rH  s     r   ru  date.__eq__X  5    eT"":eX+F+F99U#q((r   c                     [        U[        5      (       a)  [        U[        5      (       d  U R                  U5      S:*  $ [        $ rZ  r  rH  s     r   ry  date.__le__]  r  r   c                     [        U[        5      (       a)  [        U[        5      (       d  U R                  U5      S:  $ [        $ rZ  r  rH  s     r   r|  date.__lt__b  5    eT"":eX+F+F99U#a''r   c                     [        U[        5      (       a)  [        U[        5      (       d  U R                  U5      S:  $ [        $ rZ  r  rH  s     r   r  date.__ge__g  r  r   c                     [        U[        5      (       a)  [        U[        5      (       d  U R                  U5      S:  $ [        $ rZ  r  rH  s     r   r  date.__gt__l  r  r   c                 
   [        U[        5      (       d   e[        U[        5      (       a   eU R                  U R                  U R
                  pCnUR                  UR                  UR
                  pvn[        X#U4XVU45      $ rE  )r   r   r   r  r  r  r   )r   rI  r   rf   rg   y2m2d2s           r   r   	date._cmpq  sk    %&&&&eX....**dkk499a[[%,,

Q1I|,,r   c                 v    U R                   S:X  a  [        U R                  5       5      U l         U R                   $ )Hash.r   r  r6  s    r   r  date.__hash__x  s+    >>R!$.."23DN~~r   c                     [        U[        5      (       aV  U R                  5       UR                  -   nSUs=:  a
  [        ::  a  O  O[        U 5      R                  U5      $ [        S5      e[        $ )zAdd a date to a timedelta.r   result out of range)	r   r   r  r   _MAXORDINALr   r  r  rG  )r   rI  os      r   rJ  date.__add__  sX    eY'' 5::-A1##Dz--a00 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   r   r  rG  )r   rI  days1days2s       r   rN  date.__sub__  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.rb   rc   r  r6  s    r   r  date.weekday  s     1$))r   c                 :    U R                  5       S-  =(       d    S$ )z:Return day of the week, where Monday == 1 ... Sunday == 7.rc   r  r6  s    r   
isoweekdaydate.isoweekday  s     ~~!#(q(r   c                 V   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-   5      $ )ag  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
https://www.phys.uu.nl/~vgent/calendar/isocalendar.htm
(used with permission)
rc   r   r   4   )r  r   r:   r  r  rB   _IsoCalendarDate)r   r$   week1mondayr  r   r8   s         r   isocalendardate.isocalendar  s     zz%d+T[[$))<5.2	!8AID)$/Ku2A6ID#RZQ//	1fc!e44r   c                 x    [        U R                  S5      u  p[        XU R                  U R                  /5      4$ N   )rB   r  r  r  r  )r   yhiylos      r   r  date._getstate  s1    $**c*cTYY7899r   c                 >    Uu  p#U l         U l        US-  U-   U l        g r  )r  r  r  )r   stringr  r  s       r   
__setstatedate.__setstate  s!    +1($+ty3Y_
r   c                 :    U R                   U R                  5       4$ rE  r  r6  s    r   r  date.__reduce__  r  r   )r  r  r  r  )NN)NNN),r  r   r+  r  r  r  r  classmethodr  r  r  r  r  r-  r  r   r  r  r3  r  r$   r/   r8   r   r  r   __replace__ru  ry  r|  r  r  r   r  rJ  r  rN  r  r  r  r  r  r  r  r   r   r   r   r     s?   6 7ID   $ $
   K K < <1$#>	G G      /
<, K




- H*)
5<:%2r   r   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  zwAbstract base class for time zone info classes.

Subclasses must override the tzname(), 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)zIdatetime -> timedelta, positive for east of UTC, negative for west of UTCz)tzinfo subclass must override utcoffset()r   r"  s     r   r   tzinfo.utcoffset  s    !"MNNr   c                     [        S5      e)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   
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   r   r   r   ry   r   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                 v    [        U SS 5      nU(       a  U" 5       nOSnU R                  X R                  5       4$ )N__getinitargs__r   )r   r   __getstate__)r   getinitargsr,  s      r   r  tzinfo.__reduce__  s8    d$5t<=DD&7&7&9::r   N)r  r   r+  r  r  r  r   r   r   r-  r  r  r   r   r   r   r     s*     ILOI:;r   r   c                   d   ^  \ rS rSrU 4S jr\S 5       r\S 5       r\S 5       rS r	S r
SrU =r$ )	IsoCalendarDatei  c                &   > [         TU ]  XX#45      $ rE  )superr  )r  r$   r   r  r   s       r   r  IsoCalendarDate.__new__  s    ws4$9::r   c                     U S   $ rZ  r   r6  s    r   r$   IsoCalendarDate.year      Awr   c                     U S   $ )Nr   r   r6  s    r   r   IsoCalendarDate.week  r;  r   c                     U S   $ Nr+   r   r6  s    r   r  IsoCalendarDate.weekday  r;  r   c                 &    [         [        U 5      44$ rE  )tupler6  s    r   r  IsoCalendarDate.__reduce__  s     d~&&r   c                 X    U R                   R                   SU S    SU S    SU S    S3$ )Nz(year=r   z, week=r   z
, weekday=r+   r*  )r   r  r6  s    r   r-  IsoCalendarDate.__repr__#  s?    >>**+a	a	DG9AG 	Hr   r   )r  r   r+  r  r  r  r$   r   r  r  r-  r  __classcell__)r   s   @r   r5  r5    sU    ;      '
H Hr   r5  c                   :   \ rS rSrSrSrS$SS.S jjr\S 5       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%S jrS rS rS rS&S jr\r\S 5       rS rS rS rS rS r  S'SS.S jjr \ r!S(S jr"S  r#S! r$S" r%S#r&g))r   i,  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                ,   [        U[        [        45      (       a  [        U5      S:X  at  [	        USS 5      S-  S:  a_  [        U[        5      (       a   UR                  S5      n[        R                  U 5      nUR                  X=(       d    S5        S	Ul        U$ [        XX4U5      u  pp4n[        U5        [        R                  U 5      nXl        X'l        X7l        XGl        XWl        S	Ul        Xgl        U$ ! [         a    [        S5      ef = f)
zConstructor.

Arguments:

hour, minute (required)
second, microsecond (default to zero)
tzinfo (default to None)
fold (keyword only, default to zero)
rb   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  ry   r   r  _time__setstater  r   r  rH  rI  rJ  rK  rL  rM  )r  r   r   r   r   r   r   r   s           r   r  time.__new__E  s    teS\**s4yA~Qq	N4"$$$$L;;x0D >>#&DOOD.D1DNK2D&t35/f4&!~~c"
'
+ * L$KL LLs   C= =Dc                     U R                   $ zhour (0-23)rH  r6  s    r   r   	time.hourm  r=  r   c                     U R                   $ zminute (0-59)rI  r6  s    r   r   time.minuter       ||r   c                     U R                   $ zsecond (0-59)rJ  r6  s    r   r   time.secondw  r[  r   c                     U R                   $ zmicrosecond (0-999999)rK  r6  s    r   r   time.microsecond|          r   c                     U R                   $ ztimezone info objectrL  r6  s    r   r   time.tzinfo  r[  r   c                     U R                   $ rE  rM  r6  s    r   r   	time.fold      zzr   c                 ^    [        U[        5      (       a  U R                  USS9S:H  $ [        $ NT)allow_mixedr   r   r   r   rG  rH  s     r   ru  time.__eq__  s-    eT""99U95::!!r   c                 `    [        U[        5      (       a  U R                  U5      S:*  $ [        $ rZ  rp  rH  s     r   ry  time.__le__  )    eT""99U#q((!!r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rp  rH  s     r   r|  time.__lt__  )    eT""99U#a''!!r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rp  rH  s     r   r  time.__ge__  rt  r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rp  rH  s     r   r  time.__gt__  rw  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   r   rL  r   r   rH  rI  rJ  rK  r   r   )
r   rI  ro  mytzottzmyoffotoffbase_comparemyhhmmothhmms
             r   r   	time._cmp  sC   %&&&&||}}<LNN$EOO%E >LT\\4<<**,emmU]]++-. . =EM FGGb4<</%19M2MMr!EMM1E9Q;O4OOV\\4+<+<=]]E,>,>?A 	Ar   c                    U R                   S:X  Ga1  U R                  (       a  U R                  SS9nOU nUR                  5       nU(       d-  [	        UR                  5       S   5      U l         U R                   $ [        [        U R                  U R                  S9U-
  [        SS95      u  p4U[        SS9-  (       a   S5       eU[        SS9-  nSUs=::  a  S	:  a>  O  O;[	        [        X4U R                  U R                  5      5      U l         U R                   $ [	        X4U R                  U R                  45      U l         U R                   $ )
r  r   r   rN  rp   rq   r   r   r   zwhole minuter@   )r  r   r   r   r  r  rB   r   r   r   r   r   r   )r   r  tzoffhrf   s        r   r  time.__hash__  s   >>RyyLLaL(KKME!%akkmA&6!7 ~~ idiiMPUU'a02y33C^C3i**;B;%)$qT[[$BRBR*S%TDN ~~ &*1d>N>N*O%PDN~~r   c                 8    U R                  5       n[        U5      $ )z=Return formatted timezone offset (+xx:xx) or an empty string.)r   r   )r   r   s     r   _tzstrtime._tzstr  s    nnc""r   c                    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[        U 5      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 R                  (       a  USS S:X  d   eUSS S
-   nU$ )%Convert to formal string, for repr().r   z, %d, %dz, %dr   z%s.%s(%d, %d%s)Nr   r*  , tzinfo=%r	, fold=1))	rK  rJ  r   r   r+  rH  rI  rL  rM  r   r   s     r   r-  time.__repr__  s    !dllD,=,=>>A\\Q%AA 1$ 7 $ ; ; $

DLL! = = <<#RS6S= =#255;A::RS6S= =#2$Ar   c                     [        U R                  U R                  U R                  U R                  U5      nU R                  5       nU(       a  X#-  nU$ )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'.
)r~   rH  rI  rJ  rK  r  )r   r{   r   r  s       r   r  time.isoformat  sE     T\\4<<++X7[[]GAr   c                     [        U[        5      (       d  [        S5      eUR                  S5      n U " [	        U5      6 $ ! [
         a    [        SU< 35      ef = f)z>Construct a time from a string in one of the ISO 8601 formats.r  Tr  )r   r   r   removeprefixr   r  ry   )r  time_strings     r   r  time.fromisoformat
  sj     +s++ABB
 "..s3	K-k:;; 	K9+IJJ	Ks   A A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   )rH  rI  rJ  r   )r   rw   r   s      r   r   time.strftime  s;     1aZZt||2	 dI66r   c                     [        U[        5      (       d!  [        S[        U5      R                  -  5      e[        U5      S:w  a  U R                  U5      $ [        U 5      $ r  r  r  s     r   r  time.__format__%  r  r   c                 p    U R                   c  gU R                   R                  S5      n[        SU5        U$ )zUReturn the timezone offset as timedelta, positive east of UTC
(negative west of UTC).Nr   rL  r   r   r   r   s     r   r   time.utcoffset.  4     <<''-+v.r   c                 n    U R                   c  gU R                   R                  S5      n[        U5        U$ zReturn 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rL  r   r   r   r   s     r   r   time.tzname7  2     <<||""4(dr   c                 p    U R                   c  gU R                   R                  S5      n[        SU5        U$ aA  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   rL  r   r   r  s     r   r   time.dstD  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Uc  U R
                  n[        U 5      " XX4XVS9$ )z;Return a new time with new values for the specified fields.TrN  )r   r   r   r   r   rM  r   )r   r   r   r   r   r   r   s          r   r   time.replaceS  sp     <99D>[[F>[[F**KT>[[F<::DDz$VOOr   c                    [        U R                  S5      u  p#[        US5      u  pBU R                  nU R                  (       a  US:  a  US-  n[	        XPR
                  U R                  XBU/5      nU R                  c  U4$ X`R                  4$ Nr  r?      )rB   rK  rH  rM  r  rI  rJ  rL  )r   protocolus2us3us1r  	basestates          r   r  time._getstateh  s    $++S1#s#JJ::(Q,HA1llDLLS* +	<<<||,,r   c                     Ub   [        U[        5      (       d  [        S5      eUu  o0l        U l        pEnUS:  a  SU l        US-
  U l        OSU l        X0l        US-  U-  S-  U-  U l        X l        g )Nbad tzinfo state argrP  r   r  r   r   )	r   _tzinfo_classr   rI  rJ  rM  rH  rK  rL  )r   r  r   r  r  r  r  s          r   r  time.__setstateu  sw    j&G&G2337=4<ss7DJSDJDJJ"ax3.14;r   c                 <    U R                   U R                  U5      4$ rE  r  r   r  s     r   __reduce_ex__time.__reduce_ex__      x 899r   c                 $    U R                  S5      $ r?  r  r6  s    r   r  time.__reduce__      !!!$$r   )rM  r  rH  rK  rI  rJ  rL  r   r   r   r   NFru   )NNNNTr?   )'r  r   r+  r  r  r  r  r  r   r   r   r   r   r   ru  ry  r|  r  r  r   r  r  r-  r  r3  r  r  r   r  r   r   r   r   r  r  rQ  r  r  r  r   r   r   r   r   ,  s0   , _I%UV %P       ! !    """""A8.#
&" GK K	7 HLP%)P" K-:%r   r   c                      \ rS rSrSr\R                  r  S4SS.S jjr\S 5       r	\S 5       r
\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S5S j5       r\S 5       r\S5S j5       r\S 5       r\S6S j5       r\S 5       rS rS rS rS rS rS rS r  S7SS.S jjr\rS rS5S jr S r!S8S 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-S9S+ jr.S, r/\/r0S- r1S. r2S:S/ jr3S0 r4S1 r5S2 r6S3r7g);r   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.
Nr   rN  c	                f   [        U[        [        45      (       a  [        U5      S:X  ap  S[	        USS 5      S-  s=::  a  S::  aT  O  OQ[        U[        5      (       a   [        US5      n[        R                  U 5      n
U
R                  X5        S	U
l
        U
$ [        XU5      u  pn[        XEXgU	5      u  pEpgn	[        U5        [        R                  U 5      n
Xl        X*l        X:l        XJl        XZl        Xjl        Xzl        Xl        S	U
l
        Xl        U
$ ! [
         a    [        S5      ef = f)
Nr   r   r+   r?   rP  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  ry   r   r  _datetime__setstater  r   r   r  r  r  r  rH  rI  rJ  rK  rL  rM  )r  r$   r/   r8   r   r   r   r   r   r   r   s              r   r  datetime.__new__  s!   teS\**s4yBT!AY$**$$$L x0D >>#&DOOD(DNK-d3?S2D&t35/f4&!~~c"
	
'
3 * L$KL LLs    D D0c                     U R                   $ rT  rU  r6  s    r   r   datetime.hour  r=  r   c                     U R                   $ rX  rY  r6  s    r   r   datetime.minute  r[  r   c                     U R                   $ r]  r^  r6  s    r   r   datetime.second  r[  r   c                     U R                   $ ra  rb  r6  s    r   r   datetime.microsecond  rd  r   c                     U R                   $ rf  rg  r6  s    r   r   datetime.tzinfo  r[  r   c                     U R                   $ rE  rj  r6  s    r   r   datetime.fold  rl  r   c           
         [         R                  " U5      u  pA[        US-  5      nUS:  a  US-  nUS-  nOUS:  a
  US-  nUS-  nU(       a  [        R                  O[        R
                  nU" U5      u	  pxpppn[        US5      nU " XxXXXS5      nUc  U(       d  SnUU:  a&  [        R                  R                  S5      (       a  U$ U" UU-
  5      SS	 u  pxppU " XxXXXS5      nUU-
  [        SU5      -
  nUR                  S:  a7  U" UU[        SS5      -  -   5      SS	 u  pxppU " XxXXXS5      nUU:X  a  SUl        U$ Ub  UR                  U5      nU$ )
rConstruct 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  winrb   )r  r  r  rd   gmtimer  minsysplatform
startswithr   r   rM  r-  )r  r  r   r  fracrz   	converterr   rf   rg   rh   ri   rj   r  r  r   resultmax_fold_secondsprobe1transprobe2s                        r   _fromtimestampdatetime._fromtimestamp  s}    **Q-4#:=FA'MB!VFA'MB$'ELLU__	2;A,/aRWCR[Q1""1:c  ) ##(?(?(F(F"+A0@,@"A"1"EA!qbb5FVOi3C&DDEzzA~&/EYq!_4L0L&Mbq&Q#aRQ1""9V##$FL  ^ZZ'Fr   c                 @    [        U5        U R                  XSLU5      $ )r  N)r  r  )r  	timestampr  s      r   r  datetime.fromtimestamp  s#     	"!!)t^R@@r   c                 Z    SSK nUR                  S[        SS9  U R                  USS5      $ )z6Construct a naive UTC datetime from a POSIX timestamp.r   Nzdatetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(t, datetime.UTC).r+   
stacklevelT)warningswarnDeprecationWarningr  )r  r  r  s      r   utcfromtimestampdatetime.utcfromtimestamp  s=     	 J )!" 	 	$ !!!T400r   c                 N    [         R                  " 5       nU R                  X!5      $ )zBConstruct a datetime from time.time() and optional time zone info.r  )r  r  r  s      r   nowdatetime.now  s      JJL  ''r   c                     SSK nUR                  S[        SS9  [        R                  " 5       nU R                  USS5      $ )z*Construct a UTC datetime from time.time().r   Nzdatetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).r+   r  T)r  r  r  rd   r   r  )r  r  r  s      r   utcnowdatetime.utcnow   sG     	 = )!" 	 	$ JJL!!!T400r   c                 ^   [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      eUSL a  UR                  nU " UR
                  UR                  UR                  UR                  UR                  UR                  UR                  X2R                  S9	$ )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 instanceTrN  )r   _date_classr   _time_classr   r$   r/   r8   r   r   r   r   r   )r  r   r   r   s       r   combinedatetime.combine-  s     $,,CDD$,,CDDT>[[F499djj$((99dkk4;;8H8H		+ 	+r   c                 z   [        U[        5      (       d  [        S5      e[        U5      S:  a  [	        SU< 35      e [        U5      nUSU nXS-   S n[        U5      nU(       a   [        U5      nO/ SQnU " XV-   6 $ ! [         a    [	        SU< 35      Sef = f! [         a    [	        SU< 35      Sef = f)zBConstruct a datetime from a string in one of the ISO 8601 formats.r  rc   r  r   r   Nr  )r   r   r   r   ry   r   r   r   )r  r  separator_locationdstrr   date_componentstime_componentss          r   r  datetime.fromisoformat:  s     +s++ABB{a9+IJJ	H!CK!Pq!34D1 467D3D9O
 L"7"=
 1O_688  	H,[O<>CGH	H  L 0@BGKLLs    "B *B BB: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   rn   r$   r/   r8   r   r   r   )r   r   s     r   r   datetime.timetupleY  sY    hhj;CCC!$))TZZ"&))T[[$++"%' 	'r   c                 `  ^
 [        SSS5      m
SnU T
-
  [        SS5      -  nU
4S jnU" U5      U-
  nX$-
  nU" U5      nXb:X  a'  XQ* U4U R                     -   nU" U5      U-
  nXH:X  a  U$ OXe-
  nXH:w  d   eX(-
  nU" U5      n	X:X  a  U$ Xb:X  a  U$ [        [        4U R                     " XW5      $ )zReturn integer POSIX timestamp.  r   r  r   c                 x   > [         R                  " U 5      S S u  pp4pV[        XX4XV5      T-
  [        SS5      -  $ )Nrb   r   r   )rd   r  r   r   )ur   rf   rg   rh   ri   rj   epochs          r   localdatetime._mktime.<locals>.localk  s>    "'//!"4Ra"8A!Q1"1E9i1oMMr   )r   r   r   maxr  )r   r  r  r  r  u1t1u2r  t2r  s             @r   _mktimedatetime._mktimef  s    q!$$E\i1o-	N
 !HqLU2Y7 (*:;DIIFFBb	BAv	  A6M6U2Y7I7I Sz$))$R,,r   c                     U R                   c!  U R                  5       nXR                  S-  -   $ U [        -
  R	                  5       $ )zReturn POSIX timestamp as floatr  )rL  r  r   _EPOCHr7  r  s     r   r  datetime.timestamp  s>    <<A''#---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   )r   r$   r/   r8   r   r   r   rn   )r   r   r   rf   rg   rh   ri   rj   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.)r   r  r  r  r6  s    r   r   datetime.date  s    DJJTYY77r   c                     [        U R                  U R                  U R                  U R                  U R
                  S9$ )z'Return the time part, with tzinfo None.rN  )r   r   r   r   r   r   r6  s    r   r   datetime.time  s.    DIIt{{DKK9I9IPTPYPYZZr   c           	          [        U R                  U R                  U R                  U R                  U R
                  U R                  S9$ )z'Return the time part, with same tzinfo.rN  )r   r   r   r   r   rL  r   r6  s    r   timetzdatetime.timetz  s6    DIIt{{DKK9I9ILLtyy2 	2r   c	                :   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U	c  U R                  n	[        U 5      " XX4XVXxU	S9	$ )z?Return a new datetime with new values for the specified fields.TrN  )
r$   r/   r8   r   r   r   r   r   r   r   )
r   r$   r/   r8   r   r   r   r   r   r   s
             r   r   datetime.replace  s     <99D=JJE;((C<99D>[[F>[[F**KT>[[F<99DDz$s&%D: 	:r   c                    U R                   cT  U R                  5       nU R                  SU R                  -
  S9R                  5       nX!:w  a  X!:  U R                  :X  a  UnO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      $ )Nr   rN  r?  rb   )r   r  r   r   r  r   rd   r  r   	tm_gmtofftm_zoner   )r   tsts2localtmr  gmtoffzones          r   _local_timezonedatetime._local_timezone  s    ;;B,,AdiiK,088:CyH*B-Ia$88B//"%'"1+&""	&1488r   c                    Uc  U R                  5       nO [        U[        5      (       d  [        S5      eU R                  nUc"  U R                  5       nUR	                  U 5      nOBUR	                  U 5      nUc.  U R                  S S9R                  5       nUR	                  U 5      nXL a  U $ X-
  R                  US9nUR                  U5      $ )Nz)tz argument must be an instance of tzinfor   )r.  r   r   r   r   r   r-  )r   r  r}  myoffsetr   s        r   
astimezonedatetime.astimezone  s    :%%'BB''GHH{{<'')D~~d+H~~d+H||4|0@@B>>$/:K ''r'2 zz#r   c                     U R                  5       S-  =(       d    SnS[        U   [        U R                     U R                  U R
                  U R                  U R                  U R                  4-  $ )r  rc   z%s %s %2d %02d:%02d:%02d %04d)	r  r  r  r  r  rH  rI  rJ  r  r  s     r   r  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                  U5      -   nU R                  5       n[        U5      nU(       a  X5-  nU$ )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  r~   rH  rI  rJ  rK  r   r   )r   r   r{   r   r   r  s         r   r  datetime.isoformat  st       4::t{{DIIs"KK$**dllDLL++X77 nnC GA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	 [        U 5      < SU R                  R                  < SSR                  [        [        U5      5      < S3nU R                  b#  USS S:X  d   eUSS SU R                  -  -   S-   nU R                  (       a  USS S:X  d   eUSS S	-   nU$ )
r  r   r   r'  r(  r)  r*  Nr  r  )r  r  r  rH  rI  rJ  rK  r   r   r+  r   r   r   rL  rM  )r   Lr   s      r   r-  datetime.__repr__  s    ZZdiiZZt||T5F5FHR5A:"R5A:",T2>>6699Sa[13 <<#RS6S= =#255;A::RS6S= =#2$Ar   c                      U R                  SS9$ )zConvert to string, for str(). r   )r  r6  s    r   r3  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  r  rw   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$ )zTReturn the timezone offset as timedelta positive east of UTC (negative west of
UTC).Nr   r  r  s     r   r   datetime.utcoffset0  r  r   c                 n    U R                   c  gU R                   R                  U 5      n[        U5        U$ r  r  r  s     r   r   datetime.tzname9  r  r   c                 p    U R                   c  gU R                   R                  U 5      n[        SU5        U$ r  r  r  s     r   r   datetime.dstF  r  r   c                 ^    [        U[        5      (       a  U R                  USS9S:H  $ [        $ rn  r   r   r   rG  rH  s     r   ru  datetime.__eq__W  s-    eX&&99U95::!!r   c                 `    [        U[        5      (       a  U R                  U5      S:*  $ [        $ rZ  rK  rH  s     r   ry  datetime.__le__]  )    eX&&99U#q((!!r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rK  rH  s     r   r|  datetime.__lt__c  )    eX&&99U#a''!!r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rK  rH  s     r   r  datetime.__ge__i  rO  r   c                 `    [        U[        5      (       a  U R                  U5      S:  $ [        $ rZ  rK  rH  s     r   r  datetime.__gt__o  rR  r   c           
      h   [        U[        5      (       d   eU R                  nUR                  nS =pVX4L a  SnOU R                  5       nUR                  5       nU(       a`  XPR	                  U R
                  (       + S9R                  5       :w  a  gXaR	                  UR
                  (       + S9R                  5       :w  a  g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$ )NTrN  r+   z(cannot compare naive and aware datetimesr   r   r   )r   r   rL  r   r   r   r   r  r  r  rH  rI  rJ  rK  r   r   )	r   rI  ro  r}  r~  r  r  r  diffs	            r   r   datetime._cmpu  sZ   %****||}}<LNN$EOO%ELL$))mL<FFHHMM5::~M>HHJJ >LT[[$))T\\4<<**, ellEJJemmU]]++-. . =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
  [        ::  aY  O  OV[        U 5      R                  [        R                  UR                  5      [!        X5UUR"                  U R$                  S95      $ ['        S5      e)zAdd a datetime and a timedelta.r   r  r  r   r1  r  )r   r   rG  r  rH  rI  rJ  rK  rB   rr   r   r  r   r  r   r  r   rt   rL  r  )r   rI  r,  r   remr   r   s          r   rJ  datetime.__add__  s    %++!!$..* $

"&,,"&,,'+'8'8	:
 	5==$/	Ruzz([(:%%d&6&6uzz&B&*4+0+=+=26,,'@A A 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   rG  r  rJ  rI  rH  rK  rL  r   r   )	r   rI  r  r  secs1secs2baser  r  s	            r   rN  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                    U R                   S:X  a  U R                  (       a  U R                  SS9nOU nUR                  5       nUc-  [	        UR                  5       S   5      U l         U R                   $ [        U R                  U R                  U R                  5      nU R                  S-  U R                  S-  -   U R                  -   n[	        [        X4U R                  5      U-
  5      U l         U R                   $ )Nr   r   rN  r  r  )r  r   r   r   r  r  r:   r$   r/   r8   r   r   r   r   r   )r   r  r  r   rr   s        r   r  datetime.__hash__  s    >>RyyLLaL(KKME}!%akkmA&6!7
 ~~  		4::txx@))d*T[[2-==K!%it?O?O&PSX&X!Y~~r   c                 |   [        U R                  S5      u  p#[        U R                  S5      u  pE[        US5      u  pdU R                  nU R                  (       a  US:  a  US-  n[        X#XpR                  U R                  U R                  U R                  XdU/
5      nU R                  c  U4$ XR                  4$ r  )rB   r  rK  r  rM  r  r  rH  rI  rJ  rL  )	r   r  r  r  r  r  r  rf   r  s	            r   r  datetime._getstate  s    $**c*$++S1#s#KK::(Q,HA3Q		::t||T\\S* +	 <<<||,,r   c           
         Ub   [        U[        5      (       d  [        S5      eUu
  p4oPl        U l        U l        U l        pgnUS:  a  SU l        US-
  U l        OSU l        XPl        US-  U-   U l	        US-  U-  S-  U-  U l
        X l        g )Nr  rP  r   r  r   r  r   )r   r  r   r  rH  rI  rJ  rM  r  r  rK  rL  )	r   r  r   r  r  rf   r  r  r  s	            r   r  datetime.__setstate  s    j&G&G2336<	41i	t|Sss7DJc'DKDJK3Y_
"ax3.14;r   c                 <    U R                   U R                  U5      4$ rE  r  r  s     r   r  datetime.__reduce_ex__  r  r   c                 $    U R                  S5      $ r?  r  r6  s    r   r  datetime.__reduce__  r  r   )
r  rM  r  rH  rK  rI  r  rJ  rL  r  )NNr   r   r   r   NrE  )T)NNNNNNNT)r  ru   r  r  )8r  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  r   r"  r   r  r.  r3  r  r  r-  r3  rB  r   r   r   ru  ry  r|  r  r  r   rJ  r  rN  r  r  r  r  r  r  r   r   r   r   r     s   
 IJK&*!45!H       ! !     ) )V A A 	1 	1 ( (
 
1 
1 
+ 
+ 9 9<' -F3:8[2
 =ACG::2 K9"66&' F F
""""""#J3& H$0"-:%r   r   c                 P    Sn[        U SS5      nUS-   S-  nX#-
  nX1:  a  US-  nU$ )Nr?   r   rb   rc   )r:   )r$   THURSDAYfirstdayfirstweekdayr  s        r   r   r   	  sA    Ha#HqLA%L)Kqr   c                       \ rS rSrSr\" 5       r\4S jrS 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                 H   [        U[        5      (       d  [        S5      eX R                  L a  U(       d  U R                  $ S nO [        U[
        5      (       d  [        S5      eU R                  Us=::  a  U R                  ::  d  O  [        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   r   _Omittedr   r   
_minoffset
_maxoffsetry   _create)r  r   r   s      r   r  timezone.__new__	  s    &),,899<<wwDD#&&344~~93>>9 4 5 5 {{6((r   c                     [        S5      e)Nz7type 'datetime.timezone' is not an acceptable base type)r   )r  s    r   __init_subclass__timezone.__init_subclass__!	  s    QRRr   Nc                 H    [         R                  U 5      nXl        X#l        U$ rE  )r   r  rq  rr  )r  r   r   r   s       r   rw  timezone._create$	  s    ~~c"
r   c                 f    U R                   c  U R                  4$ U R                  U R                   4$ )zpickle supportrr  rq  r6  s    r   r0  timezone.__getinitargs__+	  s+    ::LL?"djj))r   c                 j    [        U[        5      (       a  U R                  UR                  :H  $ [        $ rE  )r   r   rq  rG  rH  s     r   ru  timezone.__eq__1	  s(    eX&&<<5==00r   c                 ,    [        U R                  5      $ rE  )r  rq  r6  s    r   r  timezone.__hash__6	  s    DLL!!r   c                 *   X R                   L a  gU R                  c5  [        U 5      < SU R                  R                  < SU R
                  < S3$ [        U 5      < 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   rr  r   r   r+  rq  r6  s    r   r-  timezone.__repr__9	  so     88*::"3D"9"&.."="="&,,0 0 #4D"9"&.."="="&,,

< 	<r   c                 $    U R                  S 5      $ rE  )r   r6  s    r   r3  timezone.__str__M	  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   rq  r   r"  s     r   r   timezone.utcoffsetP	  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   rr  _name_from_offsetrq  r   r"  s     r   r   timezone.tznameV	  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.dst^	  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   ry   rq  r   r"  s     r   r-  timezone.fromutcd	  sL    b(##yy$  "/ 0 0$$ # $ 	$r   r@   r   )rp   rt   c           
      @   U (       d  gU [        S5      :  a  SnU * n OSn[        U [        SS95      u  p#[        U[        SS95      u  pCUR                  nUR                  nU(       a  SU US S	US S	US S
US 3	$ U(       a  SU US S	US S	US 3$ SU US S	US 3$ )Nr
   r   r   r   r   r   r   02dr   r'  06d)r   rB   rr   rt   )r,  r   rp   restrq   rr   rt   s          r   r  timezone._name_from_offsetp	  s    9Q<DFEDUIA$67tYq%9:,,(($c{!GC='#S)+ ,uSk73-qFFTF5+Qwsm44r   r  rE  )r  r   r+  r  r  r   rt  r  rz  r  rw  r0  ru  r  r-  r3  r   r   r   r-  r   rv  ru  staticmethodr  r  r   r   r   r   r   	  s    "I xH"* )S  *
"<(!$$$$ "5JJ5 5r   r   r  r
  r1  r  )r   )Cr  __all__r   rd   mathr  r  operatorr   r   r   r   r   r	   r  r-   r3   dbmr9   r   r%   r(   r0   r4   r:   rC   rD   rE   rM   r  r  rn   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r   r  r  
resolutionr   r  r   rB  r5  r  r  r  r   r   r   rw  r
   r   r  r   r   r   <module>r     s  (   
 $/ 
 FT !"Cc"3JC  B*
!F
 C
 
C
 
A
   !g+/! !! "u*q.    <~?C	I
**&@0F6r!"H 6 -^,^B1
)3"P(|2 |2|	 *%	yB'-/	 a0	 B2 B2H
 1a=b"#:; :;zHe H6 # Z% Z%x
 1a=BF#+k	%t k	%\ 1a b"b"b&9Q/ u5v u5n %%il3 3hl
 R!@ @A	B ?@	$1X\\	2r   