§
    ¿"½j$(  ã                  ó,  — U d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZ dZded<    e ed	d
¦  «        ¦  «         ed¦  «        hz
  Zded<   dZded<   dCd„ZdDd„Zej        dk    �rd dlZd dlmZ  ej        dd¬¦  «        Zded <   ej        gej        _        ej        ej        _        ej         ej        ej         gej!        _        ej        ej!        _        ej         ej"        ej#        ¦  «         ej"        ej#        ¦  «         ej"        ej#        ¦  «         ej"        ej#        ¦  «        gej$        _        ej        ej$        _        d!Z%ded"<   d#Z&ded$<   d%Z'ded&<   d'Z(d(ed)<   dEd*„Z)dFd+„Z*n�dEd,„Z)ej        d-v rd.Z+ded/<   dGd0„Z, e,¦   «         Z-ded1<   dFd2„Z*ndej        d3k    rUd dlZd dl.Z. ej/        dd¬4¦  «        Z0d5ed6<   d7Z1ded8<   d9Z2ded:<   d7Z3ded;<   d<Z4d=ed><    e.j5        e4¦  «        Z6ded?<   dFd@„Z*ndFdA„Z*g dB¢Z7dS )Hé    )ÚannotationsN)ÚEPERMÚESRCH)ÚPath)ÚFinaléý   z
Final[int]Ú_HOST_NAME_LIMITé!   é   ú?zFinal[frozenset[int]]Ú_HOST_NAME_VERBATIMé   Ú_HOST_NAME_DIGEST_LENÚreturnÚstrc                 óš  — d                      d„ t          j        ¦   «                              dd¦  «        D ¦   «         ¦  «        } t	          | ¦  «        t
          k    rlt
          t          z
  dz
  }| d|…         › dt          j        | |d…                              ¦   «         ¦  «         	                    ¦   «         dt          …         › �} | pdS )	aß  
    The hostname recorded alongside an owner, so a marker written on another machine is never probed here.

    Marker formats here hold the field to printable non-space ASCII, while ``socket.gethostname()`` reports whatever
    the kernel stores: a space, a newline that forges an extra marker line, or a byte no codec encodes, which Python
    hands back as a surrogate. A holder that publishes one raw writes a marker it cannot read back, and loses the lock
    to the first peer that ages it out as malformed. ``?`` is illegal in a hostname, so escaping it along with every
    out-of-grammar byte as ``?<hex>`` leaves a real name untouched and still keeps two hosts apart, which
    :func:`owner_is_stale` relies on to refuse to probe a foreign PID.

    An over-long name ends in a digest of the part cut to fit the limit. A bare cut gives every name that shares the
    kept prefix one identity, and :func:`owner_is_stale` would then probe a local PID for another host's holder.
    Ú c              3  óR   K  — | ]"}|t           v rt          |¦  «        nd |d›�V — Œ#dS )r   Ú02xN)r   Úchr)Ú.0Úbytes     úR/home/spazio/kingdom_calls/venv/lib/python3.11/site-packages/filelock/_identity.pyú	<genexpr>zhost_name.<locals>.<genexpr>!   sS   è è € ð ð àð Õ0Ð0Ð0�ˆD‰	Œ	ˆ	°n¸$°n°n°nðð ð ð ð ð ó    zutf-8Úsurrogateescapeé   NÚ-r   )
ÚjoinÚsocketÚgethostnameÚencodeÚlenr	   r   ÚhashlibÚsha256Ú	hexdigest)ÚnameÚkeeps     r   Ú	host_namer)      sÌ   € ð �7Š7ð ð åÔ&Ñ(Ô(×/Ò/°Ð9JÑKÔKðñ ô ñ ô €Dõ ˆ4�y„yÕ#Ò#Ð#ÝÕ"7Ñ7¸!Ñ;ˆØ�u˜�u”+ÐjÐj¥¤¨t°D°E°E¬{×/AÒ/AÑ/CÔ/CÑ DÔ D× NÒ NÑ PÔ PÐQgÕRgÐQgÔ hÐjÐjˆàˆ;�3Ðr   ÚpidÚintÚhostnameÚstart_tokenú
int | NoneÚboolc                ó†   — |t          ¦   «         k    rdS t          | ¦  «        sdS |€dS t          | ¦  «        }|duo||k    S )a‚  
    Whether the recorded owner is provably gone, so reclaiming its marker cannot detach a live holder.

    Fail closed: return ``True`` only when this process can prove the exact recorded owner is dead. A marker from
    another host cannot be probed; a live PID whose start token still matches, or whose token cannot be read, is the
    holder or is indistinguishable from it; a live PID whose start token differs is a recycled PID, so the process that
    wrote the marker is gone. PostgreSQL, Qt ``QLockFile`` and Mercurial all break a stale lock only on proof of death
    and treat an unreadable or foreign owner as still holding.
    FTN)r)   Úprocess_aliveÚprocess_start_token)r*   r,   r-   Úcurrents       r   Úowner_is_staler4   ,   sZ   € ð •9‘;”;ÒÐØˆuÝ˜ÑÔð ØˆtØÐØˆuÝ! #Ñ&Ô&€GØ˜$ÐÐ9 7¨kÒ#9Ð9r   Úwin32)ÚwintypesÚkernel32T)Úuse_last_errorzFinal[ctypes.WinDLL]Ú	_KERNEL32i   Ú_WIN_SYNCHRONIZEi   Ú&_WIN_PROCESS_QUERY_LIMITED_INFORMATIONéW   Ú_WIN_ERROR_INVALID_PARAMETERFzFinal[bool]Ú_WIN_INHERIT_HANDLEc                óÂ   — t                                t          t          | ¦  «        }|rt                                |¦  «         dS t          j        ¦   «         t          k    S )zSWhether a process with this PID exists, treating an access denial as proof it does.T)r9   ÚOpenProcessr:   r>   ÚCloseHandleÚctypesÚget_last_errorr=   )r*   Úhandles     r   r1   r1   W   sQ   € å×&Ò&Õ'7Õ9LÈcÑRÔRˆØð 	Ý×!Ò! &Ñ)Ô)Ð)Ø�4ÝÔ$Ñ&Ô&Õ*FÒFÐFr   c           	     ó4  — t                                t          t          | ¦  «        }|sdS d„ t	          d¦  «        D ¦   «         \  }}}}	 t                                |t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        ¦  «        s	 t                                |¦  «         dS 	 t                                |¦  «         n# t                                |¦  «         w xY w|j	        dz  |j
        z  S )zXThe process creation FILETIME as a 100ns tick count, or ``None`` when it cannot be read.Nc              3  ó<   K  — | ]}t          j        ¦   «         V — Œd S )N)r6   ÚFILETIME)r   Ú_s     r   r   z&process_start_token.<locals>.<genexpr>d   s+   è è € Ð6]Ð6]ÈqµxÔ7HÑ7JÔ7JÐ6]Ð6]Ð6]Ð6]Ð6]Ð6]r   é   é    )r9   r@   r;   r>   ÚrangeÚGetProcessTimesrB   ÚbyrefrA   ÚdwHighDateTimeÚdwLowDateTime)r*   rD   ÚcreationÚ	exit_timeÚkernel_timeÚ	user_times         r   r2   r2   _   s  € å×&Ò&Õ'MÕObÐdgÑhÔhˆØð 	Ø�4Ø6]Ð6]ÕTYÐZ[ÑT\ÔT\Ð6]Ñ6]Ô6]Ñ3ˆ�)˜[¨)ð
	*Ý×,Ò,ØÝ”˜XÑ&Ô&Ý”˜YÑ'Ô'Ý”˜[Ñ)Ô)Ý”˜YÑ'Ô'ñô ð ð å×!Ò! &Ñ)Ô)Ð)Ð)Ð)ðõ ×!Ò! &Ñ)Ô)Ð)Ð)ø�I×!Ò! &Ñ)Ô)Ð)Ð)øøøØÔ'¨2Ñ-°Ô1GÑGÐGs   Á
A&C) Ã)Dc                ó²   — 	 t          j        | d¦  «         n?# t          $ r2}|j        t          k    rY d}~dS |j        t
          k    rY d}~dS ‚ d}~ww xY wdS )z_Whether a process with this PID exists, treating an access denial (``EPERM``) as proof it does.r   NFT)ÚosÚkillÚOSErrorÚerrnor   r   )r*   Úerrors     r   r1   r1   t   su   € ð	ÝŒG�C˜‰OŒOˆOˆOøÝð 	ð 	ð 	ØŒ{�eÒ#Ð#Ø�u�u�u�u�uØŒ{�eÒ#Ð#Ø�t�t�t�t�tØøøøøð	øøøð ˆts   ‚ ˜
A¢A¸AÁAÁA>   ÚlinuxÚandroidé   Ú_STARTTIME_INDEXc                 óæ   — 	 t          d¦  «                             d¬¦  «        } t          |                      ¦   «                              dd¦  «        d¦  «        S # t
          t          f$ r Y dS w xY w)Nz/proc/sys/kernel/random/boot_idÚascii)Úencodingr   r   é   r   )r   Ú	read_textr+   ÚstripÚreplacerW   Ú
ValueError)Úboot_ids    r   Ú_read_boot_idrg   ‡   sv   € ðÝÐ@ÑAÔA×KÒKÐU\ÐKÑ]Ô]�Ý˜7Ÿ=š=™?œ?×2Ò2°3¸Ñ;Ô;¸RÑ@Ô@Ð@øÝ�ZÐ(ð ð ð Ø�q�qðøøøs   ‚AA ÁA0Á/A0Ú_BOOT_IDc                ó~  — 	 t          d| › d�¦  «                             ¦   «         }n# t          $ r Y dS w xY w||                     d¦  «        dz   d…                              ¦   «         }t          |¦  «        t          k    rdS 	 t          |t                   ¦  «        }n# t          $ r Y dS w xY wt          dz  |z  S )zeThe ``/proc/<pid>/stat`` ``starttime`` folded with the boot id, or ``None`` when the process is gone.z/proc/z/statNó   )r   é@   )
r   Ú
read_bytesrW   ÚrfindÚsplitr#   r]   r+   re   rh   )r*   ÚdataÚfieldsÚ	starttimes       r   r2   r2   •   sá   € ðÝÐ/ SÐ/Ð/Ð/Ñ0Ô0×;Ò;Ñ=Ô=��øÝð ð ð Ø�t�tðøøøð ˜$Ÿ*š* TÑ*Ô*¨QÑ.Ð0Ð0Ô1×7Ò7Ñ9Ô9ˆFÝ�6‰{Œ{Õ.Ò.Ð.Ø�tðÝ Õ'7Ô 8Ñ9Ô9�	�	øÝð ð ð Ø�t�tðøøøå ‘N iÑ/Ð/s   ‚%( ¨
6µ6ÂB! Â!
B/Â.B/Údarwin)Ú	use_errnozFinal[ctypes.CDLL]Ú_LIBCr   Ú	_CTL_KERNé   Ú
_KERN_PROCÚ_KERN_PROC_PIDz<qiz
Final[str]Ú_TIMEVAL_AT_ZEROÚ_TIMEVAL_SIZEc                ó  — t          j        dz  t          t          t          | ¦  «        }t          j        d¦  «        }t                               |ddt          j        |¦  «        dd¦  «        dk    rdS t          j	        |j
        z  ¦   «         }t                               |d|t          j        |¦  «        dd¦  «        dk    s|j
        t          k     rdS t          j        t          |j        d¦  «        \  }}|dz  |z   S )zcThe process start time in microseconds from ``sysctl(KERN_PROC_PID)``, or ``None`` when it is gone.rI   r   Ni@B )rB   Úc_intru   rw   rx   Úc_size_trt   ÚsysctlrM   Úc_charÚvaluerz   ÚstructÚunpack_fromry   Úraw)r*   ÚmibÚlengthÚbufferÚsecondsÚmicrosecondss         r   r2   r2   ²   sÝ   € å”< !Ñ#¥Yµ
½NÈCÑPÔPˆCÝ”_ QÑ'Ô'ˆFõ �|Š|˜C  D­&¬,°vÑ*>Ô*>ÀÀaÑHÔHÈAÒMÐMØ�tÝ”m f¤lÑ2Ñ5Ô5ˆFÝ�|Š|˜C  F­F¬L¸Ñ,@Ô,@À$ÈÑJÔJÈaÒOÐOÐSYÔS_ÕboÒSoÐSoØ�tÝ$*Ô$6Õ7GÈÌÐUVÑ$WÔ$WÑ!ˆG�\Ø˜YÑ&¨Ñ5Ð5r   c                ó   — ~ dS )z_No proven start-time source, so the owner carries no token and liveness rests on the PID alone.N© )r*   s    r   r2   r2   Â   s
   € àØ�4r   )r)   r4   r1   r2   )r   r   )r*   r+   r,   r   r-   r.   r   r/   )r*   r+   r   r/   )r*   r+   r   r.   )r   r+   )8Ú
__future__r   r$   rU   r    ÚsysrX   r   r   Úpathlibr   Útypingr   r	   Ú__annotations__Ú	frozensetrK   Úordr   r   r)   r4   ÚplatformrB   r6   ÚWinDLLr9   ÚHANDLErA   ÚargtypesÚBOOLÚrestypeÚDWORDr@   ÚPOINTERrG   rL   r:   r;   r=   r>   r1   r2   r]   rg   rh   r�   ÚCDLLrt   ru   rw   rx   ry   Úcalcsizerz   Ú__all__rŠ   r   r   ú<module>r�      sÝ  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð  #Ð Ð "Ð "Ð "Ñ "à-6¨Y°u°u¸TÀ4Ñ7HÔ7HÑ-IÔ-IÈSÈSÐQTÉXÌXÈJÑ-VÐ Ð VÐ VÐ VÑ Và$%Ð Ð %Ð %Ð %Ñ %ðð ð ð ð2:ð :ð :ð :ð( „<�7ÒÑØ€M€M€MØÐÐÐÐÐà&3 f¤m°JÈtÐ&TÑ&TÔ&T€IÐTÐTÐTÑTØ&.¤oÐ%6€IÔÔ"Ø$,¤M€IÔÔ!Ø&.¤n°h´mÀXÄ^Ð%T€IÔÔ"Ø$,¤O€IÔÔ!àŒØˆŒ�xÔ(Ñ)Ô)ØˆŒ�xÔ(Ñ)Ô)ØˆŒ�xÔ(Ñ)Ô)ØˆŒ�xÔ(Ñ)Ô)ð*€IÔÔ&ð )1¬€IÔÔ%à#+ÐÐ+Ð+Ð+Ñ+Ø9?Ð*Ð?Ð?Ð?Ñ?Ø/1Ð Ð1Ð1Ð1Ñ1Ø',ÐÐ,Ð,Ð,Ñ,ðGð Gð Gð GðHð Hð Hð Hð Hð*
ð 
ð 
ð 
ð „|Ð+Ð+Ð+ð
 (*ÐÐ)Ð)Ð)Ñ)ð
	ð 
	ð 
	ð 
	ð  -˜}™œˆÐ.Ð.Ð.Ñ.ð	0ð 	0ð 	0ð 	0ð 	0ð  
Œ˜Ò	!Ð	!ØˆˆˆØˆˆˆà$/ F¤K°ÀÐ$EÑ$EÔ$EˆÐEÐEÐEÑEØ !ˆ	Ð!Ð!Ð!Ñ!Ø!#ˆ
Ð#Ð#Ð#Ñ#Ø%&ˆÐ&Ð&Ð&Ñ&ð (-ÐÐ,Ð,Ð,Ñ,Ø$3 F¤OÐ4DÑ$EÔ$EˆÐEÐEÐEÑEð	6ð 	6ð 	6ð 	6ð 	6ð 	ð 	ð 	ð 	ðð ð €€€r   