§
    ŸQ¾f†G  ã                   óR  — d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZmZmZmZ 	 ddlZn# e$ r	 ddlmZ Y nw xY wddlmZmZmZmZ ddlmZmZ dd	l m!Z! dd
l"m#Z#m$Z$m%Z%m&Z& g d¢Z'dZ(e)Z*e)Z+e)Z,eee)ge)f                  Z-e G d„ d¦  «        ¦   «         Z.e G d„ d¦  «        ¦   «         Z/de)de)de)de)de)f
d„Z0dee)ej1        f         de2fd„Z3de)de,fd„Z4de)de,fd„Z5de)de,fd„Z6de)de,fd„Z7de)de,fd„Z8de)de,fd„Z9de)de,fd „Z:de)de,fd!„Z;de)defd"„Z<d#e)d$e*d%e*d&e)d'ee         dee/e.f         fd(„Z=d)ej>        d*efd+„Z?dej@        jA        fd*ed,eej>                 d-eeBejC        f         deej                 fd.„ZDdej@        jA        fd*ed,eej>                 d-eeBejC        f         deej                 fd/„ZE	 d6d*ed0eej                 de*fd1„ZF	 d6d*ed0eej                 fd2„ZG	 d6d*ed0eej                 fd3„ZHd,ej>        de)fd4„ZId6d,eej>                 de)fd5„ZJdS )7zÏMoon phase, rise and set times

Right ascension, declination and distance of moon calcaulation
from

LOW-PRECISION FORMULAE FOR PLANETARY POSITIONS
http://articles.adsabs.harvard.edu/pdf/1979ApJS...41..391V
é    N)Ú	dataclassÚfieldÚreplace)	ÚasinÚatan2ÚcosÚdegreesÚfabsÚpiÚradiansÚsinÚsqrt)ÚCallableÚListÚOptionalÚUnion)Úzoneinfo)ÚAstralBodyPositionÚObserverÚnowÚtoday)Ú	juliandayÚjulianday_2000)Úlmst)Ú	Table4RowÚtable4_uÚtable4_vÚtable4_w)ÚmoonriseÚmoonsetÚphasegÚ@§tÚà?c                   ó2   — e Zd ZU  ee¬¦  «        Zeed<   dS )Ú	NoTransit©Údefault_factoryÚparallaxN)Ú__name__Ú
__module__Ú__qualname__r   Úfloatr&   Ú__annotations__© ó    úJ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/astral/moon.pyr#   r#   $   s/   € € € € € € à�e¨EÐ2Ñ2Ô2€HˆeÐ2Ð2Ñ2Ð2Ð2r-   r#   c                   ó”   — e Zd ZU eed<    eej        ¬¦  «        Zej        ed<    ee	¬¦  «        Z
e	ed<    ee	¬¦  «        Ze	ed<   dS )ÚTransitEventÚeventr$   ÚwhenÚazimuthÚdistanceN)r'   r(   r)   Ústrr+   r   ÚdatetimeÚtimer2   r*   r3   r4   r,   r-   r.   r0   r0   )   sv   € € € € € € à€J€J�JØ˜%°´Ð>Ñ>Ô>€Dˆ(Œ-Ð>Ð>Ñ>Ø�U¨5Ð1Ñ1Ô1€GˆUÐ1Ð1Ñ1Ø�e¨EÐ2Ñ2Ô2€HˆeÐ2Ð2Ñ2Ð2Ð2r-   r0   Úf0Úf1Úf2ÚpÚreturnc                 óN   — || z
  }||z
  |z
  }| |d|z  |d|z  dz
  z  z   z  z   }|S )z3-point interpolationé   é   r,   )r8   r9   r:   r;   ÚaÚbÚfs          r.   ÚinterpolaterC   1   sA   € à
ˆR‰€AØ
ˆR‰�!‰€AØ
ˆQ�!�a‘%˜!˜q 1™u q™y™/Ñ)Ñ*Ñ*€AØ€Hr-   Úvalue1c                 ó‚   — t          | t          j        ¦  «        r|                      ¦   «         } | dk     rdS | dk    rdS dS )z1Test whether value1 and value2 have the same signr   éÿÿÿÿr?   )Ú
isinstancer6   Ú	timedeltaÚtotal_seconds)rD   s    r.   ÚsgnrJ   9   sI   € å�&�(Ô,Ñ-Ô-ð (Ø×%Ò%Ñ'Ô'ˆà�‚z€zØˆrØ	�!ŠˆØˆqàˆqr-   Újd2000c                 ó:   — dd| z  z   }|t          |¦  «        z
  }|S )Ng¿Ö¥Fègã?g9†*a½¢?©Úint)rK   Ú_mean_longitudes     r.   Úmoon_mean_longituderP   F   s)   € Ø °Ñ!7Ñ7€OØ%­¨OÑ(<Ô(<Ñ<€OØÐr-   c                 ó:   — dd| z  z   }|t          |¦  «        z
  }|S )Ng³•—üOþ×?g12½šÑ”¢?rM   )rK   Ú_mean_anomolys     r.   Úmoon_mean_anomolyrS   L   s)   € Ø˜}¨vÑ5Ñ5€MØ!¥C¨Ñ$6Ô$6Ñ6€MØÐr-   c                 ó:   — dd| z  z   }|t          |¦  «        z
  }|S )Ng%ìjò”Ð?gH]$Ñ¨Ð¢?rM   )rK   Ú_argument_of_latitudes     r.   Úmoon_argument_of_latituderV   R   ó,   € Ø$ }°vÑ'=Ñ=ÐØ1µCÐ8MÑ4NÔ4NÑNÐØ Ð r-   c                 ó:   — dd| z  z   }|t          |¦  «        z
  }|S )Ng9€~ß¿yê?gò=/,„V¡?rM   )rK   Ú_mean_elongation_from_suns     r.   Úmoon_mean_elongation_from_sunrZ   X   s4   € Ø (¨=¸6Ñ+AÑ AÐØ 9½CØ!ñ=ô =ñ !Ðð %Ð$r-   c                 óD   — t          | ¦  «        t          | ¦  «        z
  }|S ©N)rP   rV   )rK   Ú_longitude_lunar_ascending_nodes     r.   Úlongitude_lunar_ascending_noder^   `   s-   € Ý&9Øñ'ô 'å! &Ñ)Ô)ñ'*Ð#ð +Ð*r-   c                 ó:   — dd| z  z   }|t          |¦  «        z
  }|S )Ng†V'g(îè?gl„DÞÏmf?rM   )rK   Ú_sun_mean_longitudes     r.   Úsun_mean_longitudera   g   s,   € Ø" ]°VÑ%;Ñ;ÐØ-µÐ4GÑ0HÔ0HÑHÐØÐr-   c                 ó:   — dd| z  z   }|t          |¦  «        z
  }|S )Ng^ÕY-°Çï?géÍà£‰mf?rM   )rK   Ú_sun_mean_anomolys     r.   Úsun_mean_anomolyrd   m   s,   € Ø  =°6Ñ#9Ñ9ÐØ)­CÐ0AÑ,BÔ,BÑBÐØÐr-   c                 ó:   — dd| z  z   }|t          |¦  «        z
  }|S )Ngf0F$
-à?g|;–§:r?rM   )rK   Ú_venus_mean_longitudes     r.   Úvenus_mean_longituderg   s   rW   r-   c                 ó¤  ‡	‡
— t          | ¦  «        t          | ¦  «        t          | ¦  «        t          | ¦  «        t	          | ¦  «        dt          | ¦  «        t          | ¦  «        dddt          | ¦  «        gŠ
| dz  dz   Š	dt          t                   dt          fˆ	ˆ
fd„} |t          ¦  «        } |t          ¦  «        } |t          ¦  «        }|t          |||z  z
  ¦  «        z  }t          |¦  «        ‰
d         pddz  t           z  z   }|t          |¦  «        z  }t          |¦  «        }d	t          |¦  «        z  }t#          |||¦  «        S )
zKCalculate right ascension, declination and geocentric distance for the moonNé­Ž  r?   Útabler<   c                 ó  •— d}| D ]�}d}|j                              ¦   «         D ]*\  }}|dk    r‰
|dz
           }|r||z  }||z  }Œ#t          ‚Œ+|j        r‰	nd}||j        |z  |                     |dz  t          z  ¦  «        z  z  }Œ‚|S )Nç        r   r?   r>   )Úargument_multiplersÚitemsÚ
ValueErrorÚtÚcoefficientÚsincosr   )rj   ÚresultÚrowÚrevolutionsÚ
arg_numberÚ
multiplierÚ	arg_valueÚvalueÚt_multiplerÚTÚargument_valuess            €€r.   Ú_calc_valuez"moon_position.<locals>._calc_value�   sÆ   ø€ ØˆØð 	Wð 	WˆCØ!$ˆKØ*-Ô*A×*GÒ*GÑ*IÔ*Ið )ð )Ñ&�
˜JØ ’?�?Ø /°
¸Q±Ô ?�IØ ð )Ø )¨JÑ 6˜Ø# uÑ,˜˜å(Ð(ð #ð  #œuÐ+˜!˜!¨!ˆKØ�c”o¨Ñ3°c·j²jÀÈqÁÕSUÑAUÑ6VÔ6VÑVÑVˆFˆFàˆr-   r   r>   gxî=\r4N@)rP   rS   rV   rZ   r^   ra   rd   rg   r   r   r*   r   r   r   r   r   r   r   )rK   r}   ÚvÚuÚwÚsÚright_ascensionÚdeclinationr4   r{   r|   s            @@r.   Úmoon_positionr„   y   s]  øø€ õ 	˜FÑ#Ô#Ý˜&Ñ!Ô!Ý! &Ñ)Ô)Ý% fÑ-Ô-Ý& vÑ.Ô.ØÝ˜6Ñ"Ô"Ý˜Ñ Ô ØØØÝ˜VÑ$Ô$ð1€Oð 	�‰˜Ñ€Að�4¥	œ?ð ­uð ð ð ð ð ð ð ð$ 	ˆ•HÑÔ€AØˆ•HÑÔ€AØˆ•HÑÔ€Aà	�D��Q˜‘U‘‰OŒOÑ€AÝ˜1‘g”g °Ô!3Ð!8°q¸AÑ =ÅÑ BÑB€Oà	�D�‰GŒG‰€AÝ�q‘'”'€Kà�$˜q™'œ'Ñ!€Hå˜o¨{¸HÑEÔEÐEr-   Úhourr   Úlatituder4   Úwindowc                 ó
  — t          |¦  «        }g d¢}t          d¦  «        }|d         j        |d         j        k     r#|d         j        dt          z  z   |d         _        ||d         j        z
  | |z  z   |d<   ||d         j        z
  | |z  z   |z   |d<   |d         |d         z   dz  |d<   |d         j        |d         j        z   dz  |d         _        t	          t          |¦  «        ¦  «        }t          t          |¦  «        ¦  «        }	t          t          dt          z   d|z  z
  ¦  «        ¦  «        }
| dk    r_|t	          |d         j        ¦  «        z  |	t          |d         j        ¦  «        z  t          |d         ¦  «        z  z   |
z
  |d         _        |t	          |d         j        ¦  «        z  |	t          |d         j        ¦  «        z  t          |d         ¦  «        z  z   |
z
  |d         _        t          |d         j        ¦  «        t          |d         j        ¦  «        k    rt          |d         j        ¦  «        S |t	          |d         j        ¦  «        z  |	t          |d         j        ¦  «        z  t          |d         ¦  «        z  z   |
z
  |d         _        d|d         j        z  d|d         j        z  z
  d|d         j        z  z   }d|d         j        z  d	|d         j        z  z
  |d         j        z
  }||z  d|z  |d         j        z  z
  }|dk     rt          |d         j        ¦  «        S t          |¦  «        }| |z   d|z  z  }|dk    s|dk     r| |z
  d|z  z  }| |z   d
z   }t          |¦  «        }t          ||z
  dz  ¦  «        }t	          |d         j        ¦  «        }t          |d         j        ¦  «        }|d         ||d         |d         z
  z  z   }t	          |¦  «        }t          |¦  «        }|	|z  ||z  |z  z
  }| |z  }t          t          ||¦  «        ¦  «        }|dk     r|dz  }|dk    r|dz  }t          j        ||d¦  «        }|d         j        dk     r.|d         j        dk    rt!          d|||d         j        ¦  «        S |d         j        dk    r.|d         j        dk     rt!          d|||d         j        ¦  «        S t          |d         j        ¦  «        S )a3  Check if the moon transits the horizon within the window.

    Args:
        hour: Hour of the day
        lmst: Local mean sidereal time in degrees
        latitude: Observer latitude
        distance: Distance to the moon
        window: Sliding window of moon positions that covers a part of the day
    )rl   rl   rl   g£Ýó.@r>   r   r?   éZ   gHáz®×D@é   é   g�?é<   éh  ÚriseÚset)r   r‚   r   rƒ   r   r   ÚMOON_APPARENT_RADIUSr4   rJ   r#   r   rN   r	   r   r6   r7   r0   )r…   r   r†   r4   r‡   ÚmstÚ
hour_angleÚk1ÚslÚclÚzr@   rA   ÚdiscriminantÚer7   ÚhÚmÚsdÚcdÚhour_angle_crossingÚshÚchÚxÚyÚazÚ
event_times                              r.   Úmoon_transit_eventr¤   ®   sü  € õ  �$‰-Œ-€CØ ��€Jå	Ð7Ñ	8Ô	8€Bàˆa„yÔ  6¨!¤9Ô#<Ò<Ð<Ø$*¨1¤IÔ$=ÀÅBÁÑ$FˆˆqŒ	Ô!à˜& œ)Ô3Ñ3°t¸b±yÑA€Jˆq�MØ˜& œ)Ô3Ñ3°t¸b±yÑAÀBÑF€Jˆq�MØ ”] Z°¤]Ñ2°aÑ7€Jˆq�Mà# AœYÔ2°V¸A´YÔ5JÑJÈaÑO€Fˆ1„IÔå	�W�XÑÔÑ	Ô	€BÝ	�W�XÑÔÑ	Ô	€Bõ 	�G�BÕ-Ñ-°¸(Ñ1BÑCÑDÔDÑEÔE€Aàˆq‚y€yà•�V˜A”YÔ*Ñ+Ô+Ñ+Ø•3�v˜a”yÔ,Ñ-Ô-Ñ-µ°J¸q´MÑ0BÔ0BÑBñCàñð 	ˆqŒ	Ôð 	�S�˜”Ô&Ñ'Ô'Ñ'Ø
�s�6˜!”9Ô(Ñ)Ô)Ñ
)­C°
¸1´Ñ,>Ô,>Ñ
>ñ	?à
ñ	ð ˆ1„IÔõ ˆ6�!Œ9ÔÑÔ¥# f¨Q¤iÔ&8Ñ"9Ô"9Ò9Ð9Ý˜ œÔ+Ñ,Ô,Ð,ð 	�S�˜”Ô&Ñ'Ô'Ñ'Ø
�s�6˜!”9Ô(Ñ)Ô)Ñ
)­C°
¸1´Ñ,>Ô,>Ñ
>ñ	?à
ñ	ð ˆ1„IÔð 	
ˆF�1ŒIÔÑ  V¨A¤YÔ%7Ñ!7Ñ7¸!¸fÀQ¼iÔ>PÑ:PÑP€AØ	ˆF�1ŒIÔÑ  V¨A¤YÔ%7Ñ!7Ñ7¸&À¼)Ô:LÑL€AØ�q‘5˜1˜q™5 6¨!¤9Ô#5Ñ5Ñ5€Là�aÒÐÝ˜ œÔ+Ñ,Ô,Ð,å˜Ñ%Ô%€LØ
ˆˆlÑ	˜q 1™uÑ%€AØˆ1‚u€u��A’�ØˆR�,Ñ 1 q¡5Ñ)ˆà�!‰8�gÑ€DåˆD‰	Œ	€AÝˆT�A‰X˜‰OÑÔ€Aå	ˆV�AŒYÔ"Ñ	#Ô	#€BÝ	ˆV�AŒYÔ"Ñ	#Ô	#€Bà$ Qœ-¨!¨z¸!¬}¸zÈ!¼}Ñ/LÑ*MÑMÐÝ	Ð Ñ	!Ô	!€BÝ	Ð Ñ	!Ô	!€Bà
ˆR‰�"�r‘'˜B‘,Ñ€AØ	ˆˆb‰€Aå	•�q˜!‘”Ñ	Ô	€BØ	ˆA‚v€vØ
ˆc‰	ˆØ	ˆC‚x€xØ
ˆc‰	ˆå”˜q ! QÑ'Ô'€JØˆa„yÔ˜AÒÐ &¨¤)Ô"4°qÒ"8Ð"8Ý˜F J°°F¸1´IÔ4FÑGÔGÐGàˆa„yÔ˜AÒÐ &¨¤)Ô"4°qÒ"8Ð"8Ý˜E :¨r°6¸!´9Ô3EÑFÔFÐFå�V˜A”YÔ'Ñ(Ô(Ð(r-   ÚonÚobserverc           
      óp	  — t          | ¦  «        }t          | |j        ¦  «        }g }t          d¦  «        D ],}t	          ||dz  z   ¦  «        }|                     |¦  «         Œ-t          dd¦  «        D ]D}||         j        ||dz
           j        k    r#||         j        dt          z  z   ||         _        ŒEt          |d         ¦  «        t          ¦   «         t          ¦   «         g}d}d}	t          d¦  «        D �]·}
|
dz   dz  }t          |d         j        |d         j        |d         j        |¦  «        |d         _        t          |d         j        |d         j        |d         j        |¦  «        |d         _        t          |
||j        |d         j        |¦  «        }t          |t           ¦  «        r|j        |d         _        �nœt%          j        | j        | j        | j        |
ddt$          j        j        ¬¦  «        }|j        d	k    �r'|j        }t%          j        | j        | j        | j        |j        |j        dt$          j        j        ¬¦  «        }|€|}�n||z
                       ¦   «         }||z
                       ¦   «         }|	�|	|z
                       ¦   «         }nd}t;          |¦  «        t;          |¦  «        k    ot=          |¦  «        t=          |¦  «        k    }|t;          |¦  «        t;          |¦  «        k    o#|	duot;          |¦  «        t;          |¦  «        k    z  }|r|}�n0|j        d
k    �r$|j        }t%          j        | j        | j        | j        |j        |j        dt$          j        j        ¬¦  «        }|	€|}	nÕ|	|z
                       ¦   «         }||z
                       ¦   «         }|�||z
                       ¦   «         }nd}t;          |¦  «        t;          |¦  «        k    ot=          |¦  «        t=          |¦  «        k    }|t;          |¦  «        t;          |¦  «        k    o#|duot;          |¦  «        t;          |¦  «        k    z  }|r|}	|d         j        |d         _        |d         j        |d         _        |d         j        |d         _        �Œ¹||	fS )zCalculate rise and set timesr‹   g      à?r?   r>   r   Né   )ÚtzinforŽ   r�   )r   r   Ú	longitudeÚranger„   Úappendr‚   r   r   r   rC   rƒ   r¤   r†   r4   rG   r#   r&   r6   ÚyearÚmonthÚdayÚtimezoneÚutcr1   r2   r…   ÚminuterI   rJ   r
   )r¥   r¦   rK   Út0rš   ÚintervalÚposÚmoon_position_windowÚ	rise_timeÚset_timer…   ÚphÚtransit_infoÚ
query_timer£   r1   Úrq_diffÚeq_diffÚsq_diffÚupdate_rise_timeÚupdate_set_times                        r.   ÚrisesetrÁ     sè  € õ
 ˜BÑÔ€FÝ	Ø
ØÔñ
ô 
€Bð
 #%€AÝ˜!‘H”Hð ð ˆÝ˜F h°¡nÑ5Ñ6Ô6ˆØ	�Š�‰Œˆˆå˜!˜Q‘K”Kð Oð OˆØˆXŒ;Ô&¨!¨H°q©L¬/Ô*IÒIÐIØ*+¨H¬+Ô*EÈÍBÉÑ*NˆAˆhŒKÔ'øõ 	��!”‰ŒÝÑÔÝÑÔð6Ðð €IØ€Hõ �b‘	”	ð ZLñ ZLˆØ�Q‰h˜"‰_ˆÝ2=ØˆaŒDÔ ØˆaŒDÔ ØˆaŒDÔ Øñ	3
ô 3
Ð˜QÔÔ/õ /:ØˆaŒDÔØˆaŒDÔØˆaŒDÔØñ	/
ô /
Ð˜QÔÔ+õ *Ø�"�hÔ'¨¨1¬¬Ð8Lñ
ô 
ˆõ �l¥IÑ.Ô.ð B	)Ø/;Ô/DÐ  Ô#Ô,Ñ,å!Ô*Ø”˜œ 2¤6¨4°°A½hÔ>OÔ>Sðñ ô ˆJð Ô! VÒ+Ñ+Ø)Ô.�
Ý Ô)Ø”GØ”HØ”FØ”OØÔ%ØÝ#Ô,Ô0ðñ ô �ð Ð$Ø %�I‘Ià(¨:Ñ5×DÒDÑFÔF�GØ$ zÑ1×@Ò@ÑBÔB�GØÐ+Ø#+¨jÑ#8×"GÒ"GÑ"IÔ"I˜˜à"#˜å'*¨7¡|¤|µs¸7±|´|Ò'Cð (&ÍØñIô Iå˜W™œòI&Ð$ð %­¨G©¬½¸G¹¼Ò(Dð )Ø ¨Ð,ÐMµ°W±´ÅÀWÁÄÒ1MñÐ$ð (ð *Ø$)˜	ùØÔ# uÒ,Ñ,Ø)Ô.�
Ý Ô)Ø”GØ”HØ”FØ”OØÔ%ØÝ#Ô,Ô0ðñ ô �ð Ð#Ø$�H�Hà'¨*Ñ4×CÒCÑEÔE�GØ$ zÑ1×@Ò@ÑBÔB�GØ Ð,Ø#,¨zÑ#9×"HÒ"HÑ"JÔ"J˜˜à"#˜å&)¨'¡l¤lµc¸'±l´lÒ&Bð '&ÅtØñHô Hå˜W™œòH&�Oð $¥s¨7¡|¤|µs¸7±|´|Ò'Cð (Ø!¨Ð-ÐNµ#°g±,´,Å#ÀgÁ,Ä,Ò2Nñ�Oð 'ð )Ø#(˜à2FØô3
ä
ð 	˜QÔÔ/ð /CÀ1Ô.EÔ.QÐ˜QÔÔ+Ø+?ÀÔ+BÔ+KÐ˜QÔÔ(Ñ(à�hÐÐr-   Údater©   c                 óš  — t          |t          ¦  «        rt          j        |¦  «        }|€t	          |¦  «        }n.t          |t
          j        ¦  «        r|                     ¦   «         }t          || ¦  «        }|d         r¼|d                              |¦  «        }|                     ¦   «         }||k    r…||k    rt          j	        d¬¦  «        }nt          j	        d¬¦  «        }||z   }t          || ¦  «        }|d         r7|d                              |¦  «        }|                     ¦   «         }||k    rd}|S t          d¦  «        ‚)aK  Calculate the moon rise time

    Args:
        observer: Observer to calculate moonrise for
        date:     Date to calculate for. Default is today's date in the
                  timezone `tzinfo`.
        tzinfo:   Timezone to return times in. Default is UTC.

    Returns:
        Date and time at which moonrise occurs.
    Nr   rF   ©Údaysr?   z/Moon never rises on this date, at this location©rG   r5   r   ÚZoneInfor   r6   rÂ   rÁ   Ú
astimezonerH   ro   )r¦   rÂ   r©   ÚinforŽ   ÚrdÚdeltaÚnew_dates           r.   r   r   �  s>  € õ  �&�#ÑÔð +ÝÔ" 6Ñ*Ô*ˆà€|Ý�V‰}Œ}ˆˆÝ	�D�(Ô+Ñ	,Ô	,ð Ø�yŠy‰{Œ{ˆå�4˜Ñ"Ô"€DØˆA„wð LØ�AŒw×!Ò! &Ñ)Ô)ˆØ�YŠY‰[Œ[ˆØ�Š:ˆ:Ø�DŠyˆyÝ Ô*°Ð3Ñ3Ô3��å Ô*°Ð2Ñ2Ô2�Ø˜e‘|ˆHÝ˜8 XÑ.Ô.ˆDØ�AŒwð  Ø˜A”w×)Ò)¨&Ñ1Ô1�Ø—Y’Y‘[”[�Ø˜’:�:Ø�DØˆåÐJÑKÔKÐKr-   c                 óš  — t          |t          ¦  «        rt          j        |¦  «        }|€t	          |¦  «        }n.t          |t
          j        ¦  «        r|                     ¦   «         }t          || ¦  «        }|d         r¼|d                              |¦  «        }|                     ¦   «         }||k    r…||k    rt          j	        d¬¦  «        }nt          j	        d¬¦  «        }||z   }t          || ¦  «        }|d         r7|d                              |¦  «        }|                     ¦   «         }||k    rd}|S t          d¦  «        ‚)aH  Calculate the moon set time

    Args:
        observer: Observer to calculate moonset for
        date:     Date to calculate for. Default is today's date in the
                  timezone `tzinfo`.
        tzinfo:   Timezone to return times in. Default is UTC.

    Returns:
        Date and time at which moonset occurs.
    Nr?   rF   rÄ   z.Moon never sets on this date, at this locationrÆ   )r¦   rÂ   r©   rÉ   r�   r›   rË   rÌ   s           r.   r    r    ½  s>  € õ  �&�#ÑÔð +ÝÔ" 6Ñ*Ô*ˆà€|Ý�V‰}Œ}ˆˆÝ	�D�(Ô+Ñ	,Ô	,ð Ø�yŠy‰{Œ{ˆå�4˜Ñ"Ô"€DØˆA„wð KØ�1Œg× Ò  Ñ(Ô(ˆØ�XŠX‰ZŒZˆØ�Š:ˆ:Ø�DŠyˆyÝ Ô*°Ð3Ñ3Ô3��å Ô*°Ð2Ñ2Ô2�Ø˜e‘|ˆHÝ˜8 XÑ.Ô.ˆDØ�AŒwð Ø˜1”g×(Ò(¨Ñ0Ô0�Ø—X’X‘Z”Z�Ø˜’:�:Ø�CØˆ
åÐIÑJÔJÐJr-   Úatc                 ó4  — |€t          ¦   «         }t          |¦  «        }t          |¦  «        }t          t	          || j        ¦  «        ¦  «        }||j        z
  }t          |¦  «        }t          |¦  «        }t          |j	        ¦  «        }t          |j	        ¦  «        }	t          t          | j
        ¦  «        ¦  «        }
t          t          | j
        ¦  «        ¦  «        }| |	z  |
z  ||z  z   }| |	z  }t          t          ||¦  «        ¦  «        dz  }|S )Nr�   )r   r   r„   r   r   rª   r‚   r   r   rƒ   r†   r	   r   )r¦   rÎ   rK   ÚpositionÚlst0Ú	houranglerž   rŸ   r›   rœ   r”   r•   r    r¡   r3   s                  r.   r3   r3   ê  sû   € ð 
€zÝ‰UŒUˆå˜BÑÔ€FÝ˜VÑ$Ô$€HÝ�D  XÔ%7Ñ8Ô8Ñ9Ô9€DØ Ô 8Ñ8€Iå	ˆY‰Œ€BÝ	ˆY‰Œ€BÝ	ˆXÔ!Ñ	"Ô	"€BÝ	ˆXÔ!Ñ	"Ô	"€BÝ	�W�XÔ&Ñ'Ô'Ñ	(Ô	(€BÝ	�W�XÔ&Ñ'Ô'Ñ	(Ô	(€Bà	ˆˆb‰�2‰˜˜R™Ñ€AØ	ˆˆb‰€AÝ•e˜A˜q‘k”kÑ"Ô" SÑ(€GØ€Nr-   c                 óz  — |€t          ¦   «         }t          |¦  «        }t          |¦  «        }t          t	          || j        ¦  «        ¦  «        }||j        z
  }t          |¦  «        }t          |¦  «        }t          |j	        ¦  «        }t          |j	        ¦  «        }	t          t          | j
        ¦  «        ¦  «        }
t          t          | j
        ¦  «        ¦  «        }| |	z  |
z  ||z  z   }| |	z  }||	z  |z  ||
z  z   }t          ||z  ||z  z   ¦  «        }t          t          ||¦  «        ¦  «        }|S r\   )r   r   r„   r   r   rª   r‚   r   r   rƒ   r†   r   r	   r   )r¦   rÎ   rK   rÐ   rÑ   rÒ   rž   rŸ   r›   rœ   r”   r•   r    r¡   r–   ÚrÚ	elevations                    r.   rÕ   rÕ     s&  € ð 
€zÝ‰UŒUˆå˜BÑÔ€FÝ˜VÑ$Ô$€HÝ�D  XÔ%7Ñ8Ô8Ñ9Ô9€DØ Ô 8Ñ8€Iå	ˆY‰Œ€BÝ	ˆY‰Œ€BÝ	ˆXÔ!Ñ	"Ô	"€BÝ	ˆXÔ!Ñ	"Ô	"€BÝ	�W�XÔ&Ñ'Ô'Ñ	(Ô	(€BÝ	�W�XÔ&Ñ'Ô'Ñ	(Ô	(€Bà	ˆˆb‰�2‰˜˜R™Ñ€AØ	ˆˆb‰€Aà
ˆR‰�"‰�r˜B‘wÑ€AÝˆQ�‰U�Q˜‘U‰]ÑÔ€AÝ�˜a ™œÑ$Ô$€IàÐr-   c                 ó(   — dt          | |¦  «        z
  S )Nr‰   )rÕ   )r¦   rÎ   s     r.   Úzenithr×      s   € ð •	˜( BÑ'Ô'Ñ'Ð'r-   c                 ó„  — t          | ¦  «        }t          |dz
  d¦  «        dz  }||z   dz
  dz  }t          |d¦  «        }t          |d¦  «        }dd|z  z   d	|z  z
  |d
z  z   }t          |dz  ¦  «        }dd|z  z   }t          |dz  ¦  «        }dd|z  z   d|z  z   |dz  z   }t          |dz  ¦  «        }t          |¦  «        dt	          |¦  «        z  z   }	|	dt	          |¦  «        z  z  }	|	dt	          d|z  |z
  ¦  «        z  z  }	|	dt	          d|z  ¦  «        z  z  }	|	dz  }	t          |	¦  «        }	|	dz   dz  dz  }
|
S )NiDY$ r>   l    pPçg   €,´BAri   r‹   gš™™™™�r@gV-rL-Ag¢—Q,·´Z?iLT g     €v@g®GázXv@gà¾œá“á@g…ëQ¸Þ`@gh"lx; Ag-Îæm‚?iC g)\�Âõ(@gÍÌÌÌÌÌ @gR¸…ëQô?g…ëQ¸å?g¸…ëQ¸@r�   é   )r   Úpowr   r	   r   rN   )rÂ   ÚjdÚdtrp   Út2Út3Údrš   Úm1ÚelongÚmoons              r.   Ú_phase_asfloatrã   '  sd  € Ý	�4‰Œ€BÝ	ˆb�7‰l˜QÑ	Ô	Ð#3Ñ	4€BØ	ˆb‰�9Ñ	 Ñ%€AÝ	ˆQ�‰Œ€BÝ	ˆQ�‰Œ€Bà�+ ‘/Ñ" i°"¡nÑ5¸¸f¹ÑE€AÝ��E‘	ÑÔ€Aà�*˜q‘.Ñ!€AÝ��E‘	ÑÔ€Aà	�; ‘?Ñ	# y°2¡~Ñ	6¸"¸u¹*Ñ	E€BÝ	��e‘Ñ	Ô	€Bå�A‰JŒJ˜¥ B¡¤™Ñ'€EØ	ˆT•C˜‘F”F‰]Ñ€EØ	ˆT•C˜˜A™ ™
‘O”OÑ#Ñ#€EØ	ˆT•C˜˜A™‘J”JÑÑ€EØ�E‰M€EÝ�‰JŒJ€EØ�T‰\˜SÑ  BÑ&€DØ€Kr-   c                 óZ   — | €t          ¦   «         } t          | ¦  «        }|dk    r|dz  }|S )aá  Calculates the phase of the moon on the specified date.

    Args:
        date: The date to calculate the phase for. Dates are always in the UTC timezone.
              If not specified then today's date is used.

    Returns:
        A number designating the phase.

        ============  ==============
        0 .. 6.99     New moon
        7 .. 13.99    First quarter
        14 .. 20.99   Full moon
        21 .. 27.99   Last quarter
        ============  ==============
    Ng      <@)r   rã   )rÂ   râ   s     r.   r!   r!   A  s6   € ð$ €|Ý‰wŒwˆå˜$ÑÔ€DØˆt‚|€|Ø�‰ˆØ€Kr-   r\   )KÚ__doc__r6   Údataclassesr   r   r   Úmathr   r   r   r	   r
   r   r   r   r   Útypingr   r   r   r   r   ÚImportErrorÚ	backportsÚastralr   r   r   r   Úastral.julianr   r   Úastral.siderealr   Úastral.table4r   r   r   r   Ú__all__r�   r*   ÚDegreesÚRadiansÚRevolutionsÚArgumentFuncr#   r0   rC   rH   rN   rJ   rP   rS   rV   rZ   r^   ra   rd   rg   r„   r¤   rÂ   rÁ   r°   r±   r5   r©   r   r    r3   rÕ   r×   rã   r!   r,   r-   r.   ú<module>rô      s  ððð ð €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ð#Ø€O€O€O€OøØð #ð #ð #Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ð#øøøð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø  Ð  Ð  Ð  Ð  Ð  Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà
*Ð
*Ð
*€ð .Ð à
€Ø
€Ø€Ø˜ % ¨% Ô0Ô1€ð ð3ð 3ð 3ð 3ð 3ñ 3ô 3ñ „ð3ð ð3ð 3ð 3ð 3ð 3ñ 3ô 3ñ „ð3ð�Eð ˜uð ¨%ð °Eð ¸eð ð ð ð ð
��e˜XÔ/Ð/Ô0ð 
°Sð 
ð 
ð 
ð 
ð ð ¨+ð ð ð ð ð˜eð ¨ð ð ð ð ð! eð !°ð !ð !ð !ð !ð%¨%ð %°Kð %ð %ð %ð %ð+¨5ð +°[ð +ð +ð +ð +ð˜uð ¨ð ð ð ð ð˜Uð  {ð ð ð ð ð! ð !¨;ð !ð !ð !ð !ð2F˜%ð 2FÐ$6ð 2Fð 2Fð 2Fð 2Fðjb)Ø
ðb)à
ðb)ð ðb)ð ð	b)ð
 Ð#Ô$ðb)ð ˆ<˜Ð"Ô#ðb)ð b)ð b)ð b)ðJzØŒðzàðzð zð zð zð~ %)Ø*2Ô*;Ô*?ð*Lð *LØð*Là
�8”=Ô
!ð*Lð �#�x”Ð&Ô'ð*Lð ˆhÔÔ ð	*Lð *Lð *Lð *Lð^ %)Ø*2Ô*;Ô*?ð*Kð *KØð*Kà
�8”=Ô
!ð*Kð �#�x”Ð&Ô'ð*Kð ˆhÔÔ ð	*Kð *Kð *Kð *Kð^ '+ðð Øðà�Ô"Ô#ðð ðð ð ð ð6 '+ðð Øðà�Ô"Ô#ðð ð ð ð> '+ð(ð (Øð(à�Ô"Ô#ð(ð (ð (ð (ð˜œð ¨5ð ð ð ð ð4ð �˜œÔ'ð °5ð ð ð ð ð ð s   ´9 ¹AÁA