+
    ‘°³jÑA  ã                  ó¾	  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
HtHt ^RIHt ^RIHtHt ]P$                  R8X  Ed…   ^ RIt^ RIt^ R	IHt R
tR]R&   RtR]R&   RtR]R&   ]],          ],          tR]R&   ^tR]R&   ^tR]R&   ^tR]R&   ^€tR]R&   RtR]R&   ^ t R]R&   ^@t!R]R&   Rt"R]R&   ] ]!,          ]",          t#R]R&   ^@t$R]R&   ^€t%R]R&   ^t&R]R&   ^t'R]R &   ^!t(R]R!&   ^ t)R]R"&   R#t*R]R$&   R%t+R]R&&   R't,R]R(&   R)t-R*]R+&   R,t.R*]R-&   ]P^                  ! R.4      t0R/]R0&   ]P^                  ! R1R2R37      t1R/]R4&    ! R5 R6]Pd                  4      t3 ! R7 R8]Pd                  4      t4 ! R9 R:]Pd                  4      t5 ! R; R<]Pd                  4      t6 ! R= R>]Pd                  4      t7]Pp                  ]0Pr                  n:        ]Pv                  ! ]Px                  4      ]Pz                  ]Pv                  ! ]44      ]Pv                  ! ]54      ]Pv                  ! ]P|                  4      ]P~                  ]P~                  ]P~                  ]P~                  ]P€                  ]P~                  .]0Pr                  nA        ]Pp                  ]0P„                  n:        ]P†                  ]Pv                  ! ]34      ]P€                  ]P€                  .]0P„                  nA        R]0Pˆ                  n:        ]Pv                  ! ]34      .]0Pˆ                  nA        ]P~                  ]0PŠ                  n:        ]Pp                  .]0PŠ                  nA        ]Px                  .]1PŒ                  nA        ]PŽ                  ]1PŒ                  n:        ]Px                  ]Pv                  ! ]74      .]1P�                  nA        ]PŽ                  ]1P�                  n:        ]Px                  ]Pz                  ]Pz                  ]Pz                  ]Pz                  ]Pv                  ! ]64      .]1P’                  nA        ]PŽ                  ]1P’                  n:        ]Px                  ]Pz                  ]Pz                  ]Pz                  ]Pv                  ! ]64      .]1P”                  nA        ]PŽ                  ]1P”                  n:        R? R@ ltKRA RB ltL ! RC RD]4      tMRE RF ltNRG RH ltOM ! RI RD]4      tMRD.tPR# )Jé    )ÚannotationsN)Úsuppress)ÚPath)ÚFinalÚcast)ÚBaseFileLock)Úensure_directory_existsÚraise_on_not_writable_fileÚwin32)Úwintypesl        z
Final[int]Ú_GENERIC_READi   @Ú_GENERIC_WRITEi   Ú_SYNCHRONIZEÚ_DESIRED_ACCESSÚ_FILE_SHARE_READ_WRITEÚ_FILE_OPEN_IFÚ_FILE_ATTRIBUTE_READONLYÚ_FILE_ATTRIBUTE_NORMALi   Ú_FILE_ATTRIBUTE_REPARSE_POINTÚ_FILE_SYNCHRONOUS_IO_NONALERTÚ_FILE_NON_DIRECTORY_FILEi    Ú_FILE_OPEN_REPARSE_POINTÚ_CREATE_OPTIONSÚ_OBJ_CASE_INSENSITIVEÚ_OWNER_WRITEÚ_LOCKFILE_FAIL_IMMEDIATELYÚ_LOCKFILE_EXCLUSIVE_LOCKÚ_ERROR_LOCK_VIOLATIONÚ_STATUS_SUCCESSl   "    Ú_STATUS_ACCESS_DENIEDl   C    Ú_STATUS_SHARING_VIOLATIONl   V    Ú_STATUS_DELETE_PENDINGg      à?zFinal[float]Ú_ACCESS_DENIED_GRACEgü©ñÒMb`?Ú_ACCESS_DENIED_RETRYÚntdllzFinal[ctypes.WinDLL]Ú_ntdllÚkernel32T)Úuse_last_errorÚ	_kernel32c                  óh   € ] tR t^=tR]P
                  3R]P
                  3R]P                  33tRtR# )Ú_UNICODE_STRINGÚLengthÚMaximumLengthÚBuffer© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   ÚUSHORTÚLPWSTRÚ_fields_Ú__static_attributes__r/   ó    ÚR/home/luca/screen-checking/.venv/lib/python3.14/site-packages/filelock/_windows.pyr+   r+   =   s-   † à�x—‘Ð'Ø˜hŸo™oÐ.Ø�x—‘Ð'ð
Œr8   r+   c                  óÂ   € ] tR t^DtR]P
                  3R]P                  3R]P                  ! ]	4      3R]P
                  3R]P                  3R]P                  33tRtR# )	Ú_OBJECT_ATTRIBUTESr,   ÚRootDirectoryÚ
ObjectNameÚ
AttributesÚSecurityDescriptorÚSecurityQualityOfServicer/   N)r0   r1   r2   r3   r   ÚULONGÚHANDLEÚctypesÚPOINTERr+   Úc_void_pr6   r7   r/   r8   r9   r;   r;   D   sV   † à�x—~‘~Ð&Ø˜hŸo™oÐ.Ø˜6Ÿ>š>¨/Ó:Ð;Ø˜8Ÿ>™>Ð*Ø! 6§?¡?Ð3Ø'¨¯©Ð9ð
Œr8   r;   c                  óN   € ] tR t^NtR]P
                  3R]P
                  33tRtR# )Ú_IO_STATUS_BLOCKÚStatusÚInformationr/   N)r0   r1   r2   r3   rC   rE   r6   r7   r/   r8   r9   rG   rG   N   s!   † à�v—‘Ð'Ø˜FŸO™OÐ,ð
Œr8   rG   c                  óœ   € ] tR t^TtR]P
                  3R]P
                  3R]P                  3R]P                  3R]P                  33t	Rt
R# )Ú_OVERLAPPEDÚInternalÚInternalHighÚOffsetÚ
OffsetHighÚhEventr/   N)r0   r1   r2   r3   rC   rE   r   ÚDWORDrB   r6   r7   r/   r8   r9   rK   rK   T   sE   † à˜Ÿ™Ð)Ø˜VŸ_™_Ð-Ø�x—~‘~Ð&Ø˜8Ÿ>™>Ð*Ø�x—‘Ð'ð
Œr8   rK   c                  ó  € ] tR t^]tR]P
                  3R]P                  3R]P                  3R]P                  3R]P
                  3R]P
                  3R]P
                  3R]P
                  3R	]P
                  3R
]P
                  33
tRtR# )Ú_BY_HANDLE_FILE_INFORMATIONÚdwFileAttributesÚftCreationTimeÚftLastAccessTimeÚftLastWriteTimeÚdwVolumeSerialNumberÚnFileSizeHighÚnFileSizeLowÚnNumberOfLinksÚnFileIndexHighÚnFileIndexLowr/   N)	r0   r1   r2   r3   r   rQ   ÚFILETIMEr6   r7   r/   r8   r9   rS   rS   ]   s‡   † à §¡Ð0Ø˜x×0Ñ0Ð1Ø ×!2Ñ!2Ð3Ø × 1Ñ 1Ð2Ø# X§^¡^Ð4Ø˜hŸn™nÐ-Ø˜XŸ^™^Ð,Ø˜xŸ~™~Ð.Ø˜xŸ~™~Ð.Ø˜hŸn™nÐ-ð
Œr8   rS   c               ó    € V ^8„  d   QhRRRR/# )é   ÚfdÚintÚreturnÚboolr/   )Úformats   "r9   Ú__annotate__rf   ›   s   € ÷ #ñ # ð #¨ñ #r8   c           
     ó<  € \        4       p\        \        ,          p\        P	                  \
        P                  ! V 4      V^ ^^ \        P                  ! V4      4      '       d   R# \        P                  ! 4       pV\        8X  d   R# \        P                  ! V4      h)r   TF)rK   r   r   r)   Ú
LockFileExÚmsvcrtÚget_osfhandlerC   ÚbyrefÚget_last_errorr   ÚWinError)ra   Ú
overlappedÚflagsÚerrs   &   r9   Ú_lock_fd_nonblockingrq   ›   sr   € ô !“]ˆ
Ü(Ô+EÕEˆÜ×Ñ¤× 4Ò 4°RÓ 8¸%ÀÀAÀqÌ&Ï,Ê,ÐWaÓJb×cÒcÙÜ×#Ò#Ó%ˆØÔ'Ô'Ùä�oŠo˜cÓ"Ð"r8   c               ó    € V ^8„  d   QhRRRR/# )r`   ra   rb   rc   ÚNoner/   )re   s   "r9   rf   rf   ©   s   € ÷ ;ñ ;�sð ;˜tñ ;r8   c           	     óú   € \        4       p\        P                  \        P                  ! V 4      ^ ^^ \
        P                  ! V4      4      '       g*   \
        P                  ! \
        P                  ! 4       4      hR# )r   N)	rK   r)   ÚUnlockFileExri   rj   rC   rk   rm   rl   )ra   rn   s   & r9   Ú
_unlock_fdrv   ©   sU   € Ü “]ˆ
ä×%Ñ%¤f×&:Ò&:¸2Ó&>ÀÀ1ÀaÌÏÊÐV`ÓIa×bÒbÜ—/’/¤&×"7Ò"7Ó"9Ó:Ð:ñ cr8   c                  ó2   € ] tR t^¯tRtR R ltR R ltRtR# )ÚWindowsFileLockaQ  
Uses ``LockFileEx`` to hard lock a byte range of the lock file on Windows systems.

Lock file cleanup: Windows attempts to delete the lock file after release, but deletion is
not guaranteed in multi-threaded scenarios where another thread holds an open handle. The lock
file may persist on disk, which does not affect lock correctness.
c               ó   € V ^8„  d   QhRR/# ©r`   rc   rs   r/   )re   s   "r9   rf   ÚWindowsFileLock.__annotate__¸   s   € ÷ 	ñ 	˜dñ 	r8   c                	ó„  € \        V P                  4       \        V P                  4       \        V P                  V P	                  4       4      pVf   R #  \        V4      pV'       d   V P                  V4       T'       g   \        P                  ! T4       R # R #   \         d    \        P                  ! T4       h i ; i©N)
r
   Ú	lock_filer	   Ú_open_non_reparse_fdÚ
_open_moderq   Ú_mark_descriptor_ownedÚBaseExceptionÚosÚclose)Úselfra   Úlockeds   &  r9   Ú_acquireÚWindowsFileLock._acquire¸   s�   € Ü& t§~¡~Ô6Ü# D§N¡NÔ3ô & d§n¡n°d·o±oÓ6GÓHˆBØŠzÙðÜ-¨bÓ1�ßØ×/Ñ/°Ô3÷ Ü—’˜–ñ øô !ô Ü—’˜”Øðús   Á$B Â#B?c               ó   € V ^8„  d   QhRR/# rz   r/   )re   s   "r9   rf   r{   Ë   s   € ÷ 
	2ñ 
	2˜dñ 
	2r8   c                	óx  € \        R V P                  P                  4      p\        V4       V P	                  4        V P                  VRR7       V P                  '       gF   \        \        4      ;_uu_ 4        \        V P                  4      P                  4        RRR4       R# R#   + '       g   i     R# ; i)rb   F)Údefault_suppressesN)r   Ú_contextÚlock_file_fdrv   Ú_mark_descriptor_releasedÚ_close_released_fdÚ_preserve_lock_filer   ÚOSErrorr   r~   Úunlink)r…   ra   s   & r9   Ú_releaseÚWindowsFileLock._releaseË   sƒ   € Ü�e˜TŸ]™]×7Ñ7Ó8ˆBô �rŒNØ×*Ñ*Ô,Ø×#Ñ# B¸5Ð#ÔAØ×+×+Ð+Üœg×&Õ&Ü˜Ÿ™Ó(×/Ñ/Ô1÷ 'Ñ&ñ ,ß&×&Ð&ús   Á8$B(Â(B9	r/   N©r0   r1   r2   r3   Ú__doc__r‡   r“   r7   r/   r8   r9   rx   rx   ¯   s   † ñ	õ	÷&
	2ñ 
	2r8   rx   c               ó$   € V ^8„  d   QhRRRRRR/# )r`   ÚpathÚstrÚmoderb   rc   z
int | Noner/   )re   s   "r9   rf   rf   ×   s!   € ÷ ?ñ ? 3ð ?¨cð ?°jñ ?r8   c                óª  € \         P                  ! RV R\        P                  \        P                  ,          4       V\
        ,          '       * p\        WR7      w  r4V\        8X  dp   \        P                  ! 4       \        ,           pV\        8X  dE   \        P                  ! 4       V8  d+   \        P                  ! \        4       \        WR7      w  r4KO  V\        8w  dX   V\        \        09   d   R# \         P#                  V4      p\%        R\&        P(                  ! V4      P+                  4       W4      h\-        4       p\.        P1                  V\&        P2                  ! V4      4      '       gA   \&        P4                  ! 4       p\.        P7                  V4       \&        P8                  ! V4      hVP:                  \<        ,          '       d&   \.        P7                  V4       RV  2p	\%        V	4      h \>        P@                  ! V\        P                  \        PB                  ,          4      #   \D         d    \.        P7                  T4       h i ; i)a
  
Open *path* for locking while refusing reparse points, bound to the handle actually locked.

The file is opened through ``NtCreateFile`` with ``FILE_OPEN_REPARSE_POINT`` so a symlink or junction planted
at the path is not followed, and the reparse decision is read from *that* handle via
``GetFileInformationByHandle`` rather than from a prior pathname query. Reading the held handle closes the
check-then-open race: an attacker cannot swap the path between validation and use because both act on the same
handle. Share mode omits delete so a peer cannot unlink or rename the file out from under a live holder,
matching ``os.open``'s ``_SH_DENYNO``.

``NtCreateFile`` is used instead of ``CreateFileW`` because its return value carries the raw ``NTSTATUS``.
Windows collapses a transient delete-pending name and a permanent access denial into the same Win32
``ERROR_ACCESS_DENIED``; the status keeps them apart, so a real denial fails fast instead of spinning until the
caller's timeout (#604).

The reparse option only guards the final path component; Windows still follows reparse points in intermediate
directories. This assumes the lock file sits in a lock directory untrusted users cannot modify. A path with
attacker-controlled parent directories would need component-by-component handle validation.

:param path: the lock file path.
:param mode: the permission mode; as ``os.open`` does on Windows, a cleared owner-write bit creates the file
    read-only. The attribute only takes effect when the file is created, not when an existing one is opened.

:returns: a file descriptor owning the opened handle, or ``None`` on a sharing violation or a delete-pending
    name the caller should treat as contention and retry.

:raises OSError: if the path resolves to a reparse point, or the open fails for any other reason, raised with
    the Win32 error the status maps to. An access denial is raised only once it outlasts a short grace, since
    a peer unlinking the file as it releases can make the open answer ``STATUS_ACCESS_DENIED`` for a moment.

ÚopenN)Ú	read_onlyz1Lock file is a reparse point (symlink/junction): )#ÚsysÚauditrƒ   ÚO_RDWRÚO_CREATr   Ú_nt_openr    ÚtimeÚ	monotonicr#   Úsleepr$   r   r!   r"   r&   ÚRtlNtStatusToDosErrorr‘   rC   ÚFormatErrorÚstriprS   r)   ÚGetFileInformationByHandlerk   rl   ÚCloseHandlerm   rT   r   ri   Úopen_osfhandleÚO_NOINHERITr‚   )
r˜   rš   r�   ÚhandleÚstatusÚdeadlineÚwinerrorÚinforp   Úmsgs
   &&        r9   r   r   ×   s¡  € ôB 	�	Š	�&˜$ ¤b§i¡i´"·*±*Õ&<Ô=Øœ|Õ+Ô+ˆ	Ü! $Ô<‰ˆØÔ*Ô*Ü—~’~Ó'Ô*>Õ>ˆHØÔ1Ô1´d·n²nÓ6FÈÔ6QÜ—
’
Ô/Ô0Ü!)¨$Ô!D‘�™Ø”_Ô$ØÔ3Ô5KÐLÔLÙÜ×3Ñ3°FÓ;ˆHÜ˜$¤× 2Ò 2°8Ó <× BÑ BÓ DÀdÓUÐUä*Ó,ˆä×3Ñ3°F¼F¿LºLÈÓ<N×OÒOÜ×'Ò'Ó)ˆCÜ×!Ñ! &Ô)Ü—/’/ #Ó&Ð&Ø× Ñ Ô#@×@Ô@Ü×!Ñ! &Ô)ØEÀdÀVÐLˆCÜ˜#“,Ðð	ä×(Ò(¨´·±¼R¿^¹^Õ1KÓLÐLøÜô 	Ü×!Ñ! &Ô)Øð	ús   Ç69H0 È0"Ic               ó$   € V ^8„  d   QhRRRRRR/# )r`   r˜   r™   r�   rd   rc   ztuple[int, int]r/   )re   s   "r9   rf   rf     s!   € ÷ ')ñ ')�sð ')¨$ð ')°?ñ ')r8   c               ó|  € \        4       p\        P                  V \        P                  ! V4      RR4      R,          pV\
        8w  d   ^ V3#  \        4       p\        P                  ! \        4      Vn        \        P                  ! V4      Vn
        \        Vn        \        P                  ! 4       p\        4       p\        P!                  \        P                  ! V4      \"        \        P                  ! V4      \        P                  ! V4      RV'       d   \$        M\&        \(        \*        \,        R^ 4      R,          p\        P/                  \        P                  ! V4      4       V\
        8w  d   ^ V3# VP0                  ;'       g    ^ V3#   \        P/                  \        P                  ! T4      4       i ; i)as  
Open *path* through ``NtCreateFile`` and return ``(handle, status)``.

``RtlDosPathNameToNtPathName_U_WithStatus`` translates the Win32 path to the NT namespace, handling relative,
drive, UNC and extended-length path forms as Win32 itself would, and allocates a buffer that
``RtlFreeUnicodeString`` releases. The handle is ``0`` unless the status is ``STATUS_SUCCESS``.
Nl   ÿÿ )r+   r&   Ú'RtlDosPathNameToNtPathName_U_WithStatusrC   rk   r   r;   Úsizeofr,   Úpointerr=   r   r>   r   rB   rG   ÚNtCreateFiler   r   r   r   r   r   ÚRtlFreeUnicodeStringÚvalue)r˜   r�   Únt_namer®   Ú
attributesr­   Ú	io_statuss   &$     r9   r¢   r¢     sN  € ô "Ó#ˆÜ×?Ñ?ÀÄfÇlÂlÐSZÓF[Ð]aÐcgÓhÐkuÕuˆØ”_Ô$Ø�f�9Ðð	?Ü+Ó-ˆJÜ &§¢Ô.@Ó AˆJÔÜ$*§N¢N°7Ó$;ˆJÔ!Ü$9ˆJÔ!Ü—_’_Ó&ˆFÜ(Ó*ˆIä×#Ñ#Ü—L’L Ó(Ü#Ü—L’L Ó,Ü—L’L Ó+Øß09Õ,Ô?UÜ*Ü!Ü#ØØóð õð ô" ×'Ñ'¬¯ª°WÓ(=Ô>Ø”_Ô$Ø�f�9ÐØ�|‰|× Ð ˜q &Ð(Ð(øô ×'Ñ'¬¯ª°WÓ(=Õ>ús   ÁC2F Æ+F;c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	rx   iC  zRUses ``LockFileEx`` to hard lock a byte range of the lock file on Windows systems.c               ó   € V ^8„  d   QhRR/# rz   r/   )re   s   "r9   rf   r{   F  ó   € ÷ 	&ñ 	&˜dñ 	&r8   c                	ó   € \         hr}   ©ÚNotImplementedError©r…   s   &r9   r‡   rˆ   F  ó   € Ü%Ð%r8   c               ó   € V ^8„  d   QhRR/# rz   r/   )re   s   "r9   rf   r{   I  rÀ   r8   c                	ó   € \         hr}   rÂ   rÄ   s   &r9   r“   r”   I  rÅ   r8   r/   Nr•   r/   r8   r9   rx   rx   C  s   † Ù`õ	&÷	&ñ 	&r8   )QÚ__conditional_annotations__Ú
__future__r   rƒ   rž   r£   Ú
contextlibr   Úpathlibr   Útypingr   r   Ú_apir   Ú_utilr	   r
   ÚplatformrC   ri   r   r   Ú__annotations__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   ÚWinDLLr&   r)   Ú	Structurer+   r;   rG   rK   rS   ÚLONGr¸   ÚrestyperD   rB   rQ   Ú
c_longlongrA   rE   Úargtypesrµ   ÚLPCWSTRr¹   r¦   rª   ÚBOOLr©   rh   ru   rq   rv   rx   r   r¢   Ú__all__)rÈ   s   @r9   Ú<module>rÚ      s>  øðß "Ð "ã 	Û 
Û Ý Ý ß å ß Fà‡<�<�7ÕÛÛÝà *€M�:Ó*Ø!+€N�JÓ+Ø)€L�*Ó)Ø"/°.Õ"@À<Õ"O€O�ZÓOàð ˜Jó ð !"€M�:Ó!Ø+5Ð˜jÓ5Ø)3Ð˜JÓ3Ø0:Ð! :Ó:ð 1;Ð! :Ó:Ø+5Ð˜jÓ5Ø+5Ð˜jÓ5Ø"?ÐBZÕ"ZÐ]uÕ"u€O�ZÓuØ(2Ð˜:Ó2Ø$€L�*Ó$ð .8Ð 
Ó7Ø+5Ð˜jÓ5Ø(*Ð˜:Ó*ð
 #-€O�ZÓ,Ø(2Ð˜:Ó2Ø,6Ð˜zÓ6Ø)3Ð˜JÓ3ð *-Ð˜,Ó,Ø).Ð˜,Ó.à#)§=¢=°Ó#9€FÐ Ó9Ø&,§m¢m°JÈtÔ&T€IÐ#ÓTô
˜&×*Ñ*ô 
ô
˜V×-Ñ-ô 
ô
˜6×+Ñ+ô 
ô
�f×&Ñ&ô 
ô
 f×&6Ñ&6ô 
ð #+§-¡-€F×ÑÔà�Š�x—‘Ó'Ø�‰Ø�ŠÐ)Ó*Ø�ŠÐ'Ó(Ø�Š�v×(Ñ(Ó)Ø�‰Ø�‰Ø�‰Ø�‰Ø�‰Ø�‰ð$€F×ÑÔ ð >F¿]¹]€F×2Ñ2Ô:à×ÑØ�Š�Ó'Ø�‰Ø�‰ð	?€F×2Ñ2Ô;ð +/€F×ÑÔ'Ø,2¯NªN¸?Ó,KÐ+L€F×ÑÔ(Ø+3¯>©>€F× Ñ Ô(Ø-5¯]©]¨O€F× Ñ Ô)à&.§o¡oÐ%6€I×ÑÔ"Ø$,§M¡M€I×ÑÔ!Ø5=·_±_ÀfÇnÂnÐUpÓFqÐ4r€I×(Ñ(Ô1Ø3;·=±=€I×(Ñ(Ô0à�‰Ø�‰Ø�‰Ø�‰Ø�‰Ø�Š�{Ó#ð%€I×ÑÔ!ð $,§=¡=€I×ÑÔ à�‰Ø�‰Ø�‰Ø�‰Ø�Š�{Ó#ð'€I×ÑÔ#ð &.§]¡]€I×ÑÔ"õ#õ;ô&2˜,ô &2õP?öB')ôV&˜,ô &ð ð‚r8   