Ë
    °ëj8 ã                  óF  — U d dl mZ g d¢Zd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dl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mZmZmZ d d	l m!Z! d d
l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7 e
jp                  dk(  rd dl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? erd dl@mAZAmBZB d dlmCZC d dlDmEZE  ejŒ                  d«      ZGdeHd<   ej’                  ZJdeHd<   e
j–                  j˜                  dk(  ZMdeHd<    eNed«      xr* e
j–                  j˜                  dk(  xr e
jž                  dk  ZPdeHd<   eQeRz  ej¦                  eQ   z  ej¦                  eR   z  eTz  eUz  eVej®                     z  dz  ZXdeHd<   eYeUeUf   ZZdeHd <   d!Z[d"eHd#<   d$Z\d%eHd&<   d'Z]d"eHd(<   d)Z^d%eHd*<   ej¾                  ejÀ                  z   eaed+d «      z   eaed,d «      z  Zbd"eHd-<   ejÆ                   eaed.d «      z   eaed+d «      z  Zdd"eHd/<   d0Zed1eHd2<    efd3d4«      Zgd5eHd6<   d4Zhd"eHd7<   d8Zid"eHd9<    G d:„ d;ejÔ                  «      Zk ek«       Zld<eHd=<    G d>„ d?«      Zm em«       Znd<eHd@<    G dA„ dB«      Zo eo«       Zpd<eHdC<   dDZqdEeHdF<   dGZrdEeHdH<    es«       ZtdIeHdJ<    G dK„ dL«      Zu G dM„ dNe«      Zv G dO„ dPe«      Zw edQ¬R«       G dS„ dT«      «       Zx eu«       Zyd<eHdU<    G dV„ dWej®                  «      Zz edQ¬R«       G dX„ dY«      «       Z{ G dZ„ d[eV«      Z| G d\„ d]e|¬^«      Z}d{d_„Z~	 	 	 	 	 	 	 	 	 	 d|d`„Zd}da„Z€ G db„ dce«      Z�	 	 	 	 	 	 	 	 d~dd„Z‚	 	 	 	 	 	 	 	 dde„Zƒ	 	 	 	 	 	 	 	 d€df„Z„d�dg„Z…d‚dh„Z†dƒdi„Z‡d„dj„Zˆd…dk„Z‰e
jp                  dk(  rd†dl„ZŠd‡dm„Z‹dˆdn„ZŒd‰do„Z�d…dp„ZŽd dqœdŠdr„Z�d‹ds„Z�edŒdt„«       Z‘ed�du„«       Z’dŽdv„Z“d�dw„Z”d�dx„Z• e+en«        e+ep«        e+ey«        e*e}«       eMr e
�j,                  e”«        eNed«      r e�j.                  e“¬y«       d]dzgZ˜y)‘é    )Úannotations)Úcollectionszfilelock._errorzfilelock._identityÚhashlibÚ	itertoolsÚpathlibÚsecretsÚtempfileN)Údeque)ÚcontextmanagerÚsuppress)Ú	dataclassÚfield)Úcount)ÚTYPE_CHECKINGÚClassVarÚFinalÚLiteralÚ
NamedTupleÚ	TypeAliasÚcast)ÚWeakValueDictionary)ÚAcquireReturnProxyÚ_acquire_thread_lockÚ
_canonicalÚ_check_blockingÚ_ensure_current_processÚ_fork_transitionÚ_raise_chained_errorsÚ_register_fork_classÚ_register_fork_objectÚ_register_owned_descriptorÚ%_resolve_lazy_imports_before_shutdownÚ_resolve_read_write_timeoutÚ_secondsÚ_timeout_behaviorÚ_unregister_owned_descriptor)ÚTimeout)Ú	host_nameÚowner_is_staleÚprocess_start_tokenÚwin32)Ú_directory_is_privateÚ_identity_atÚ_identity_of_fdÚ_make_private_directoryÚ_open_non_reparse_fdÚ_pinned)ÚCallableÚ	Generator)ÚSelf)ÚUnusedÚfilelockzFinal[logging.Logger]Ú_LOGGERzFinal[Callable[[], int]]Ú_GETPIDÚpypyzFinal[bool]Ú_IS_PYPYÚregister_at_forkÚcpython)é   é   Ú_NEEDS_CONNECTION_ESCROWr   Ú_ConnectionParameterÚ_DatabaseIdentityiÿ“5wz
Final[int]Ú_MAX_SQLITE_TIMEOUT_MSgš™™™™™¹?zFinal[float]Ú_CANCEL_POLL_INTERVALéF   Ú_UNSAFE_FORK_EXIT_STATUSgš™™™™™©?Ú_MAX_TRANSITION_WAITÚ
O_NOFOLLOWÚ
O_NONBLOCKÚ_DB_OPEN_FLAGSÚO_DIRECTORYÚ_DIRECTORY_FLAGSs   SQLite format 3 zFinal[bytes]Ú_SQLITE_MAGICé   é   zFinal[slice]Ú_FORMAT_VERSIONSÚ_HEADER_SIZEé   Ú_WAL_FORMAT_VERSIONc                  ó   — e Zd ZU dZded<   y)Ú_SQLiteTransitionContextr   ÚintÚdepthN)Ú__name__Ú
__module__Ú__qualname__rV   Ú__annotations__© ó    úa/home/oem/CyberBrain26-unified/dev-env/.venv/lib/python3.12/site-packages/filelock/_read_write.pyrT   rT   `   s   … Ø€Eˆ3„Nr\   rT   r   Ú_SQLITE_TRANSITION_CONTEXTc                  ó(   — e Zd Zdd„Z	 	 dd„Zdd„Zy)Ú_ConnectionEscrowc                óD   — t        j                  «       | _        d | _        y ©N)Ú	threadingÚRLockÚ_lockÚ
_functions©Úselfs    r]   Ú__init__z_ConnectionEscrow.__init__h   s   € Ü—_‘_Ó&ˆŒ
Øtxˆ�r\   c                ó   — t         sy | j                  5  | j                  €Îdd l}|j	                  d |j
                  «      }|j                  |j                  j                  |j                  «      j                  }|j                  |j                  j                  |j                  «      j                  }|�|€d}t        |«      ‚t        d ||«      «      t        d ||«      «      f| _        | j                  cd d d «       S # 1 sw Y   y xY w)Nr   z+CPython reference functions have no addressz$Callable[[sqlite3.Connection], None])r?   re   rf   ÚctypesÚ
PYFUNCTYPEÚ	py_objectr   Ú	pythonapiÚ	Py_IncRefÚc_void_pÚvalueÚ	Py_DecRefÚRuntimeError)rh   rk   Úfunction_typeÚincrement_addressÚdecrement_addressÚmsgs         r]   Ú	functionsz_ConnectionEscrow.functionsl   sé   € õ (ØØ�Z‰Zñ 	#Ø�‰Ð&Ûà &× 1Ñ 1°$¸×8HÑ8HÓ I�Ø$*§K¡K°×0@Ñ0@×0JÑ0JÈFÏOÉOÓ$\×$bÑ$bÐ!Ø$*§K¡K°×0@Ñ0@×0JÑ0JÈFÏOÉOÓ$\×$bÑ$bÐ!Ø$Ð,Ð0AÐ0IØG�CÜ& sÓ+Ð+äÐ?ÁÐO`ÓAaÓbÜÐ?ÁÐO`ÓAaÓbð#�”ð —?‘?÷	#÷ 	#ò 	#ús   ”C&DÄDc                ó6   — t        j                  «       | _        y rb   )rc   rd   re   rg   s    r]   Ú_reset_after_fork_in_childz,_ConnectionEscrow._reset_after_fork_in_child�   s   € Ü—_‘_Ó&ˆ�
r\   N©ÚreturnÚNone)r|   úXtuple[Callable[[sqlite3.Connection], None], Callable[[sqlite3.Connection], None]] | None)rW   rX   rY   ri   rx   rz   r[   r\   r]   r`   r`   g   s   „ óyð#à	aó#ô*'r\   r`   Ú_CONNECTION_ESCROWc                  óF   — e Zd Zdd„Zd	d„Zd
d„Zdd„Zdd„Zedd„«       Z	y)Ú_ForkedDatabaseRegistryc                óŽ   — t        j                  «       | _        t        «       | _        t        «       | _        d| _        d| _        y ©NF)rc   rd   re   ÚsetÚ_pathsÚ_identitiesÚ_sqlite_usedÚ_all_paths_poisonedrg   s    r]   ri   z _ForkedDatabaseRegistry.__init__‰   s3   € Ü—_‘_Ó&ˆŒ
Ü),«ˆŒÜ36³5ˆÔØ!ˆÔØ#(ˆÕ r\   c                óþ   — | j                  |«      }| j                  5  | j                  }|xs$ || j                  v xs |d uxr || j                  v }d d d «       rrdnd|›d�}t        |«      ‚y # 1 sw Y   Œ!xY w)NzOReadWriteLock is unavailable in a PyPy fork child; exec or exit before using itzSQLite database zD was active across fork(); exec or exit before using it in the child)Úidentityre   rˆ   r…   r†   rs   )rh   ÚpathrŠ   Úall_paths_poisonedÚpoisonedrw   s         r]   Úraise_if_poisonedz)_ForkedDatabaseRegistry.raise_if_poisoned�   sž   € Ø—=‘= Ó&ˆØ�Z‰Zñ 	Ø!%×!9Ñ!9Ðà"Òt d¨d¯k©kÐ&9Òt¸hÈdÐ>RÒ>sÐW_Ðcg×csÑcsÐWsð ÷	ñ
 ñ &ñ bà'¨ xÐ/sÐtð ô
 ˜sÓ#Ð#ð ÷	ð 	ús   ž5A3Á3A<c                óv   — | j                   j                  |«       |�| j                  j                  |«       y y rb   )r…   Úaddr†   )rh   r‹   rŠ   s      r]   Úpoison_after_forkz)_ForkedDatabaseRegistry.poison_after_forkŸ   s1   € Ø�‰�‰˜ÔØÐØ×Ñ× Ñ  Õ*ð  r\   c                ób   — t         r| j                  5  d| _        d d d «       y y # 1 sw Y   y xY w©NT)r:   re   r‡   rg   s    r]   Únote_sqlite_usez'_ForkedDatabaseRegistry.note_sqlite_use¤   s3   € ÝØ—‘ñ )Ø$(�Ô!÷)ð )ð ÷)ð )ús   “%¥.c                ó’   — t        j                  «       | _        | j                  xs t        xr | j
                  | _        d| _        y rƒ   )rc   rd   re   rˆ   r:   r‡   rg   s    r]   rz   z2_ForkedDatabaseRegistry._reset_after_fork_in_child©   s6   € Ü—_‘_Ó&ˆŒ
Ø#'×#;Ñ#;Ò#_ÄÒ@^ÈT×M^ÑM^ˆÔ Ø!ˆÕr\   c                ór   — 	 | j                  «       }|j                  |j                  fS # t        $ r Y y w xY wrb   )ÚstatÚOSErrorÚst_devÚst_ino)r‹   Ústat_results     r]   rŠ   z _ForkedDatabaseRegistry.identity®   s?   € ð	ØŸ)™)›+ˆKð ×!Ñ! ;×#5Ñ#5Ð5Ð5øô ò 	Ùð	ús   ‚* ª	6µ6Nr{   )r‹   úpathlib.Pathr|   r}   )r‹   rœ   rŠ   ú_DatabaseIdentity | Noner|   r}   )r‹   rœ   r|   r�   )
rW   rX   rY   ri   rŽ   r‘   r”   rz   ÚstaticmethodrŠ   r[   r\   r]   r�   r�   ˆ   s/   „ ó)ó$ó+ó
)ó
"ð
 ò6ó ñ6r\   r�   Ú_FORKED_DATABASESz
.filelock-z
Final[str]Ú_LINK_PREFIXzlock.dbÚ
_LINK_NAMEzFinal[set[_DatabaseIdentity]]Ú_SWEPT_DATABASESc                  óD   — e Zd Zd	d„Zd
d„Zdd„Zdd„Zd	d„Zdd„Zd	d„Z	y)Ú_ProbeDescriptorsc                ó€   — t        j                  «       | _        i | _        t	        «       | _        t        «       | _        y rb   )rc   ÚLockre   Ú_inodesr
   Ú	_releasesr   Ú_leasesrg   s    r]   ri   z_ProbeDescriptors.__init__Â   s)   € Ü—^‘^Ó%ˆŒ
Ø>@ˆŒÜ(-«ˆŒÜ“wˆ�r\   c           
     óD  — 	 t        j                  |«      }|j                  |j                  f}| j
                  5  t        j                  |j                  «      r)| j                  j                  |«      x}r|j                  s
	 d d d «       y |j                  t        ||j                  j                  «       t        | j                   «      «      x}«       |j"                  j%                  |j&                  «       d d d «       |S # t        $ r Y y w xY w# 1 sw Y   S xY wrb   )ÚosÚlstatr˜   r™   rš   re   r—   ÚS_ISREGÚst_moder§   ÚgetÚidleÚappendÚ_ProbeÚpopÚnextr©   Úleasesr�   Úlease)rh   ÚdatabaseÚclaimedr›   rŠ   ÚprobesÚadopteds          r]   Úadoptz_ProbeDescriptors.adoptÈ   sî   € ð	Ü!#§¡¨(Ó!3ˆKð &×,Ñ,¨k×.@Ñ.@Ð@ˆØ�Z‰Zñ 	-Ü—<‘< × 3Ñ 3Ô4ÀtÇ|Á|×GWÑGWÐX`ÓGaÐ=a¸VÐ=aÐjp×juÒjuØ÷	-ð 	-ð �N‰N¤f¨X°v·{±{·±Ó7HÌ$ÈtÏ|É|ÓJ\Ó&]Ð]˜7Ô^Ø�M‰M×Ñ˜gŸm™mÔ,÷		-ð
 ˆøô ò 	Ùð	ú÷	-ð
 ˆús$   ‚D »A
DÂA.DÄ	DÄDÄDc           
     óê  — t        j                  |«      }|j                  |j                  f}t	        ||«      }| j
                  5  | j                  j                  |t        «       «      x}j                  j                  ||f«       |j                  t        ||t        | j                  «      «      x}«       |j                  j                  |j                   «       d d d «       |S # 1 sw Y   S xY wrb   )r«   Úfstatr™   rš   r!   re   r§   Ú
setdefaultÚ_InodeProbesÚdescriptorsr±   r²   r´   r©   rµ   r�   r¶   )rh   Úfdr¸   r›   rŠ   Útokenr¹   Úretaineds           r]   Úretainz_ProbeDescriptors.retain×   sÂ   € ÜŸX™X b›\ˆØ%×,Ñ,¨k×.@Ñ.@Ð@ˆÜ1°"°hÓ?ˆØ�Z‰Zñ 	.Ø—|‘|×.Ñ.¨x¼»ÓHÐHˆV×UÑU×\Ñ\Ð^`ÐbgÐ]hÔiØ�N‰N¤v¨h¸¼DÀÇÁÓ<NÓ'OÐO˜8ÔPØ�M‰M×Ñ˜hŸn™nÔ-÷	.ð ˆ÷		.ð ˆús   ÁBC(Ã(C2c                óZ   — | j                   j                  |«       | j                  «        y rb   )r¨   r±   Údrain)rh   Úprobes     r]   Úreleasez_ProbeDescriptors.releaseá   s   € à�‰×Ñ˜eÔ$Ø�
‰
�r\   c                óÂ  — | j                   r´| j                  j                  d¬«      r—	 | j                   rE| j                  | j                   d   «       | j                   j	                  «        | j                   rŒE| j                  j                  «        | j                   r| j                  j                  d¬«      rŒ•y y y y # | j                  j                  «        w xY w)NF©Úblockingr   )r¨   re   ÚacquireÚ_release_lockedÚpopleftrÈ   rg   s    r]   rÆ   z_ProbeDescriptors.drainæ   s£   € Ø�nŠn §¡×!3Ñ!3¸UÐ!3Ô!Cð%à—n’nØ×(Ñ(¨¯©¸Ñ):Ô;Ø—N‘N×*Ñ*Ô,ð —n“nð —
‘
×"Ñ"Ô$ð �nŠn §¡×!3Ñ!3¸UÐ!3Ö!CˆnÐ!Cˆnøð —
‘
×"Ñ"Õ$ús   ªAC ÃCc                óÂ  — | j                   j                  |j                  «      x}€y |j                  |j                  v rV|j                  j                  |j                  «       |j                  r%|j                  j                  |j                  «       |j                  ry |j                  j                  «        |j                  rs|j                  d   \  }}|�t        |«       |j                  j                  «        t        t        «      5  t        j                   |«       d d d «       |j                  rŒs| j                   |j                  = y # 1 sw Y   Œ.xY w)Néÿÿÿÿ)r§   r¯   rŠ   r¶   rµ   Úremover°   r±   rÁ   ÚclearrÀ   r&   r³   r   r˜   r«   Úclose)rh   rÇ   r¹   rÁ   rÂ   s        r]   rÍ   z!_ProbeDescriptors._release_lockedð   s  € Ø—l‘l×&Ñ& u§~¡~Ó6Ð6ˆFÐ?ØØ�;‰;˜&Ÿ-™-Ñ'Ø�M‰M× Ñ  §¡Ô-Ø�}Š}Ø—‘×"Ñ" 5§8¡8Ô,Ø�=Š=Øà�‰×ÑÔà× Ò Ø×*Ñ*¨2Ñ.‰IˆB�ØÐ Ü,¨UÔ3à×Ñ×"Ñ"Ô$äœ'Ó"ñ Ü—‘˜”÷ð × Ó ð �L‰L˜Ÿ™Ñ(÷ð ús   ÄEÅEc                ób   — t        j                  «       | _        i | _        t	        «       | _        y rb   )rc   r¦   re   r§   r
   r¨   rg   s    r]   rz   z,_ProbeDescriptors._reset_after_fork_in_child  s    € ä—^‘^Ó%ˆŒ
ØˆŒÜ›ˆ�r\   Nr{   )r·   Ústrr¸   úlist[_Probe]r|   ú_Probe | None)rÁ   rU   r¸   rÖ   r|   r²   )rÇ   r²   r|   r}   )
rW   rX   rY   ri   r»   rÄ   rÈ   rÆ   rÍ   rz   r[   r\   r]   r¤   r¤   Á   s%   „ óóóóó
%ó)ô.!r\   r¤   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú
_OperationrU   ÚpidÚfloatÚ
start_timeúCallable[[], bool] | NoneÚcancel_checkN©rW   rX   rY   rZ   r[   r\   r]   rÙ   rÙ     s   … Ø	ƒHØÓà+Ô+r\   rÙ   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)r²   rA   rŠ   rU   rÁ   r¶   Nrß   r[   r\   r]   r²   r²     s   … ØÓØƒGà„Jr\   r²   T)Úslotsc                  ób   — e Zd ZU  ee¬«      Zded<    ee¬«      Zded<    ee¬«      Z	ded<   y)	r¿   )Údefault_factoryzset[int]rµ   zlist[tuple[int, int | None]]rÀ   z	list[int]r°   N)
rW   rX   rY   r   r„   rµ   rZ   ÚlistrÀ   r°   r[   r\   r]   r¿   r¿     s0   … á¨SÔ1€FˆHÓ1Ù05ÀdÔ0K€KÐ-ÓKÙ¨DÔ1€Dˆ)Ô1r\   r¿   Ú_PROBE_DESCRIPTORSc                  ó˜   ‡ — e Zd ZU ded<   ded<   ded<   dZded	<   dZd
ed<   	 	 	 	 	 	 dˆ fd„Zdd„Zdd„Zdd„Z		 	 	 	 dd„Z
dd„Zˆ xZS )Ú_ForkSafeConnectionrU   Ú_creator_pidz+Callable[[sqlite3.Connection], None] | NoneÚ_decrement_escrowú_LinkDirectory | NoneÚ_database_directoryNr�   Údatabase_identityr×   Ú_probec                ó`   •— t         ‰| �  | «      }t        «       |_        d |_        d |_        |S rb   )ÚsuperÚ__new__r8   rè   ré   rë   )ÚclsÚ_argsÚ_kwargsÚ
connectionÚ	__class__s       €r]   rð   z_ForkSafeConnection.__new__-  s3   ø€ ô
 ‘W‘_ SÓ)ˆ
Ü")£)ˆ
ÔØ'+ˆ
Ô$Ø)-ˆ
Ô&ØÐr\   c                óN  — t        «       5  t        «       | j                  k7  r
	 d d d «       y t        «       5  t        j
                  j                  | «       	 | j                  x}�d | _        t        |«       | j                  x}�$d x| _	        | _
        t        j                  |«       	 | j                  x}�d | _         || «       d d d «       d d d «       y # | j                  x}�$d x| _	        | _
        t        j                  |«       w w xY w# 1 sw Y   ŒIxY w# 1 sw Y   y xY wrb   )Ú_sqlite_transitionr8   rè   r   Úsqlite3Ú
ConnectionrÓ   rë   Ú_remove_link_directoryrí   rì   rå   rÈ   ré   )rh   Ú	directoryrÇ   Ú	decrements       r]   rÓ   z_ForkSafeConnection.close8  s  € ÜÓ!ñ 	$Ü‹y˜D×-Ñ-Ò-Ø÷	$ð 	$ô "Ó#ñ $Ü×"Ñ"×(Ñ(¨Ô.ð:Ø%)×%=Ñ%=Ð=˜	ÐJØ37˜Ô0Ü.¨yÔ9à!%§¡Ð,˜Ð9Ø?CÐC˜œ dÔ&<Ü*×2Ñ2°5Õ9Ø!%×!7Ñ!7Ð7�IÐDØ-1�DÔ*Ù˜d”O÷$÷	$ð 	$øð "&§¡Ð,˜Ð9Ø?CÐC˜œ dÔ&<Ü*×2Ñ2°5Õ9ð :ú÷$ð $ú÷	$ð 	$ús@   ‹D­
D· DÁ CÁ8ADÃDÃ4DÄDÄD	ÄDÄD$c                ó   — || _         y)zQKeep the private link directory, if there is one, until SQLite no longer uses it.N)rë   )rh   rû   s     r]   Úretain_linkz_ForkSafeConnection.retain_linkJ  s
   € à#,ˆÕ r\   c                óB   — || _         || _        |j                  | _        y)z^Keep the private link and this connection's probe descriptor until SQLite no longer uses them.N)rë   rí   rŠ   rì   )rh   rû   rÇ   s      r]   Úretain_until_closez&_ForkSafeConnection.retain_until_closeN  s   € à#,ˆÔ ØˆŒØ!&§¡ˆÕr\   c                ó2   — |�|\  }} || «       || _         y y rb   )ré   )rh   rx   Ú	incrementrü   s       r]   Úacquire_escrowz"_ForkSafeConnection.acquire_escrowT  s(   € ð
 Ð Ø#,Ñ ˆI�yÙ�dŒOØ%.ˆDÕ"ð !r\   c                ó”   — t        t        j                  t        t        «      5  | j                  «        d d d «       y # 1 sw Y   y xY wrb   )r   rø   ÚErrorrs   r˜   rÓ   rg   s    r]   Ú__del__z_ForkSafeConnection.__del__^  s0   € Ü”g—m‘m¤\´7Ó;ñ 	Ø�J‰JŒL÷	÷ 	ñ 	ús	   ¤>¾A)rò   r@   ró   r@   r|   r4   r{   )rû   rê   r|   r}   )rû   rê   rÇ   r²   r|   r}   )rx   r~   r|   r}   )rW   rX   rY   rZ   rì   rí   rð   rÓ   rþ   r   r  r  Ú__classcell__©rõ   s   @r]   rç   rç   &  sw   ø… ØÓØBÓBØ.Ó.Ø26ÐÐ/Ó6Ø €FˆMÓ ð	à$ð	ð (ð	ð 
õ		ó$ó$-ó0ð/àkð/ð 
ó/÷r\   rç   c                  ó(   — e Zd ZU dZdZded<   dd„Zy)Ú_OwnedConnectionaÀ  
    The connection of one lock, closed when the lock is collected.

    CPython runs ``__del__`` before it clears weak references. A finalizer on the lock itself would close the
    connection while the singleton cache still hands the lock out, and a thread given the lock would nest into a hold
    with no database lock behind it. The lock alone refers to this holder, so the holder is collected once the cache no
    longer finds the lock.
    Nú_ForkSafeConnection | Nonerô   c                ó¨   — | j                   x}�8t        t        j                  t        «      5  |j                  «        d d d «       y y # 1 sw Y   y xY wrb   )rô   r   rø   r  rs   rÓ   ©rh   rô   s     r]   r  z_OwnedConnection.__del__p  sJ   € ØŸ/™/Ð)ˆJÐ6Üœ'Ÿ-™-¬Ó6ñ #Ø× Ñ Ô"÷#ð #ð 7÷#ð #ús   ­AÁAr{   )rW   rX   rY   Ú__doc__rô   rZ   r  r[   r\   r]   r
  r
  c  s   … ñð .2€JÐ*Ó1ô#r\   r
  c                  ót   ‡ — e Zd ZU dZded<   ded<   ded<   ded	<   	 dd
d
dœ	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )Ú_ReadWriteLockMetaa
  
    Resolve singleton instances for ``is_singleton=True`` construction.

    This logic lives here rather than in ReadWriteLock.get_lock so ``ReadWriteLock(path)`` returns cached instances
    without a 2-arg ``super()`` call that type checkers cannot verify.

    z0WeakValueDictionary[pathlib.Path, ReadWriteLock]Ú
_instanceszthreading.RLockÚ_instances_lockrU   Ú_instances_pidzset[pathlib.Path]Ú_instances_under_constructionT©rË   Úis_singletonc          	     ó  •— t        «        t        «        t        |«       t        d|«      }| j                  t        «       k7  r| j                  «        t        «       }|s/t        ‰
| �!  ||||¬«      }t        «       |k7  rd}t        |«      ‚|S t        j                  t        |«      «      }| j                  5  | j                  j                  |«      x}€—|| j                   v rd|›�}t        |«      ‚| j                   }	|	j#                  |«       	 t        ‰
| �!  ||||¬«      }t        «       |k(  r|	j%                  |«       	 t        «       |k7  rd}t        |«      ‚|| j                  |<   t'        |j(                  d¬«      t'        |d¬«      k7  s|j*                  |k7  r-d|j(                  › d|j*                  › d	|› d|› �}t-        |«      ‚|cd d d «       S # t        «       |k(  r|	j%                  |«       w w xY w# 1 sw Y   y xY w)
NÚtimeoutr  z5ReadWriteLock construction cannot continue after forkz2Singleton lock construction is already active for F)Úany_negativez$Singleton lock created with timeout=z, blocking=z, cannot be changed to timeout=)r   r"   r   r$   r  r8   Ú_reset_class_after_forkrï   Ú__call__rs   r   ÚPathr   r  r  r¯   r  r�   Údiscardr%   r  rË   Ú
ValueError)rñ   Ú	lock_filer  rË   r  Úconstruction_pidÚinstancerw   Ú
normalizedÚconstruction_registryrõ   s             €r]   r  z_ReadWriteLockMeta.__call__„  s  ø€ ô 	 Ô!Ü-Ô/ä˜Ô!Ü˜9 gÓ.ˆØ×Ñ¤£Ò*Ø×'Ñ'Ô)Ü"›9ÐÙÜ‘wÑ'¨	°7ÀXÐ\hÐ'ÓiˆHÜ‹yÐ,Ò,ØM�Ü" 3Ó'Ð'ØˆOô —\‘\¤*¨YÓ"7Ó8ˆ
Ø× Ñ ñ 	àŸN™N×.Ñ.¨zÓ:Ð:�ÐCØ ×!BÑ!BÑBØNÈyÈmÐ\�CÜ& sÓ+Ð+Ø(+×(IÑ(IÐ%Ø%×)Ñ)¨*Ô5ðBÜ$™wÑ/°	¸7ÈXÐdpÐ/Óq�Hä“yÐ$4Ò4Ø-×5Ñ5°jÕAÜ“9Ð 0Ò0ØQ�CÜ& sÓ+Ð+Ø-5�—‘˜zÑ*ô " (×"2Ñ"2ÀÔGÜ$ W¸5ÔAòBà×$Ñ$¨Ò0ð ;¸8×;KÑ;KÐ:LÈKÐX`×XiÑXiÐWjð k5Ø5<°I¸[ÈÈ
ðTð ô ! “oÐ%Ø÷9	ñ 	øô “yÐ$4Ò4Ø-×5Ñ5°jÕAð 5ú÷	ð 	ús&   Â9AG>ÄGÄ&B*G>Ç!G;Ç;G>Ç>Hc                ó�   — t        «       | _        t        j                  «       | _        t        «       | _        t        «       | _        y rb   )	r   r  rc   rd   r  r8   r  r„   r  )rñ   s    r]   r  z*_ReadWriteLockMeta._reset_class_after_fork»  s/   € Ü,Ó.ˆŒÜ'Ÿo™oÓ/ˆÔÜ$›YˆÔÜ,/«EˆÕ)r\   ©rÐ   )
r  ústr | os.PathLike[str]r  rÛ   rË   Úboolr  r'  r|   ÚReadWriteLockr{   )rW   rX   rY   r  rZ   r  r  r  r  s   @r]   r  r  v  sp   ø… ñð AÓ@Ø$Ó$ØÓØ#4Ó4ð
 ð5ð
 Ø!ñ5à)ð5ð ð5ð
 ð5ð ð5ð 
õ5÷n2r\   r  c                  ó  ‡ — e Zd ZU dZ e«       Zded<    ej                  «       Z	 e
«       Z e«       Zded<   d2ˆ fd„Ze	 d3ddœ	 	 	 	 	 	 	 d4d	„«       Z	 d3ddd
œ	 	 	 	 	 	 	 	 	 d5d„Zd6ddœd7d„Zd6ddœd7d„Zed6ddœd8d„«       Zed6ddœd8d„«       Zddœd9d„Zd2d„Z	 	 	 	 	 	 	 	 	 	 	 	 d:d„Zd;d„Zd<d„Zddœd=d„Zd>d„Zd;d„Zd;d„Zd2d„Z e!d?d„«       Z"e"jF                  d@d„«       Z"d2d „Z$e!d>d!„«       Z%d2d"„Z&ddd#œ	 	 	 	 	 	 	 	 	 	 	 dAd$„Z'ddd#œ	 	 	 	 	 	 	 	 	 	 	 dAd%„Z(	 	 	 	 	 	 	 	 	 	 	 	 dBd&„Z)dCd'„Z*	 	 	 	 	 	 	 	 	 	 dDd(„Z+e,	 	 	 	 	 	 	 	 	 	 	 	 dEd)„«       Z-dFd*„Z.dGd+„Z/d2d,„Z0d>d-„Z1dHd.„Z2	 	 	 	 	 	 	 	 dId/„Z3dJd0„Z4dKd1„Z5ˆ xZ6S )Lr(  a  
    Cross-process read-write lock backed by SQLite.

    Allows concurrent shared readers or a single exclusive writer. The lock is reentrant within the same mode (multiple
    ``acquire_read`` calls nest, as do multiple ``acquire_write`` calls from the same thread), but upgrading from read
    to write or downgrading from write to read raises :class:`RuntimeError`. Write locks are pinned to the thread that
    acquired them, and each thread sharing a read lock can release only the levels it acquired.

    An instance coordinates processes, not threads: a thread asking for the opposite mode of another thread's hold
    raises :class:`RuntimeError` instead of waiting. Threads that must wait for each other each need their own
    instance (``is_singleton=False``).

    By default, ``is_singleton=True``: calling ``ReadWriteLock(path)`` with the same resolved path returns the same
    instance. A ``.db`` extension is a convention rather than a requirement; the filesystem must be one the active
    SQLite VFS supports. Give the lock a file of its own: a WAL-mode database, or one with a schema larger than a lock
    needs, raises :class:`ValueError`. A database directory that other accounts can write must also be writable by
    this one and support hard links; the protection against other accounts ends once one of them can replace the
    database directory or a directory above it.

    :param lock_file: path to the SQLite database file used as the lock
    :param timeout: maximum wait time in seconds; ``-1`` waits up to SQLite's busy-timeout cap of about 23 days
    :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately when the lock is unavailable
    :param is_singleton: if ``True``, reuse existing instances for the same resolved path

    .. versionadded:: 3.21.0

    z:ClassVar[WeakValueDictionary[pathlib.Path, ReadWriteLock]]r  zClassVar[set[pathlib.Path]]r  c                óÄ   •— t         ‰| �  «        t        «       | _        t	        j
                  «       | _        t        «       | _        t        «       | _
        t        | «       y rb   )rï   Ú__init_subclass__r   r  rc   rd   r  r8   r  r„   r  r   )rñ   rõ   s    €r]   r+  zReadWriteLock.__init_subclass__ä  sC   ø€ Ü‰Ñ!Ô#Ü,Ó.ˆŒÜ'Ÿo™oÓ/ˆÔÜ$›YˆÔÜ,/«EˆÔ)Ü˜SÕ!r\   TrÊ   c               ó   —  | |||¬«      S )a'  
        Return the singleton :class:`ReadWriteLock` for *lock_file*.

        :param lock_file: path to the SQLite database file used as the lock
        :param timeout: maximum wait time in seconds; ``-1`` waits up to SQLite's busy-timeout cap of about 23 days
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately when the lock is unavailable

        :returns: the singleton lock instance

        :raises ValueError: if an instance already exists for this path with different *timeout* or *blocking* values

        rÊ   r[   )rñ   r  r  rË   s       r]   Úget_lockzReadWriteLock.get_lockì  s   € ñ  �9˜g°Ô9Ð9r\   r  c               óÜ  — t        j                  |«      | _        t        j                  t        |«      «      | _        t        j                  | j                  «       || _	        || _
        t        j                  «       | _        t        j                  «       | _        d| _        d | _        d | _        i | _        t'        «       | _        t+        «       | _        d| _        d | _        d| _        t5        «       | _        d| _        t;        | «       t=        «       5  t?        «       5  | jA                  d¬«      }|jC                  «        d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr   TFg      @©Úsqlite_timeout)"r«   Úfspathr  r   r  r   Ú_canonical_pathrŸ   rŽ   r  rË   rc   r¦   Ú_transaction_lockÚ_internal_lockÚ_lock_levelÚ_current_modeÚ_write_thread_idÚ_read_depthsr„   Ú_acquisition_thread_idsr
  Ú_owned_connectionÚ _connection_transaction_releasedÚ_connection_identityÚ_closedr8   rè   Ú_fork_invalidatedr    r   r÷   Ú_open_connectionrÓ   )rh   r  r  rË   r  Úvalidation_connections         r]   ri   zReadWriteLock.__init__þ  s&  € ô Ÿ™ 9Ó-ˆŒÜ&Ÿ|™|¬J°yÓ,AÓBˆÔÜ×+Ñ+¨D×,@Ñ,@ÔAØˆŒØ ˆŒÜ!*§¡Ó!1ˆÔÜ'Ÿn™nÓ.ˆÔØˆÔØ>BˆÔØ,0ˆÔØ,.ˆÔÜ14³ˆÔ$Ü!1Ó!3ˆÔØ04ˆÔ-Ø>BˆÔ!ØˆŒÜ#›IˆÔØ!&ˆÔÜ˜dÔ#ÜÓñ 	*Ô!3Ó!5ñ 	*Ø$(×$9Ñ$9ÈÐ$9Ó$MÐ!Ø!×'Ñ'Ô)÷	*÷ 	*÷ 	*ñ 	*ú÷ 	*ð 	*ús$   ÄE"Ä"#EÅE"ÅE	ÅE"Å"E+Nc               ól   — | j                  d|€| j                  n||€| j                  ¬«      S |¬«      S )aÿ  
        Acquire a shared read lock.

        If this instance already holds a read lock, the lock level is incremented (reentrant). Attempting to acquire a
        read lock while holding a write lock raises :class:`RuntimeError` (downgrade not allowed).

        :param timeout: seconds to wait; ``None`` uses the instance setting; ``-1`` waits up to SQLite's
            busy-timeout cap of about 23 days
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` on contention;
            ``None`` uses the instance setting

        :returns: a proxy that can be used as a context manager to release the lock

        :raises RuntimeError: if a write lock is already held on this instance
        :raises Timeout: if the lock cannot be acquired within *timeout* seconds
        :raises TypeError: if *timeout* is a :class:`bool` or not a real number, or *blocking* is not a :class:`bool`
        :raises ValueError: if a blocking call gets a ``nan`` *timeout* or a negative one other than ``-1``

        ÚreadrÊ   ©Ú_acquirer  rË   ©rh   r  rË   s      r]   Úacquire_readzReadWriteLock.acquire_read  sK   € ð( �}‰}ØØ#˜OˆD�LŠL°Ø&.Ð&6�T—]‘]ð ó 
ð 	
ð =Eð ó 
ð 	
r\   c               ól   — | j                  d|€| j                  n||€| j                  ¬«      S |¬«      S )a¾  
        Acquire an exclusive write lock.

        If this instance already holds a write lock from the same thread, the lock level is incremented (reentrant).
        Attempting to acquire a write lock while holding a read lock raises :class:`RuntimeError` (upgrade not allowed).
        Write locks are pinned to the acquiring thread: a different thread trying to re-enter also raises
        :class:`RuntimeError`.

        :param timeout: seconds to wait; ``None`` uses the instance setting; ``-1`` waits up to SQLite's
            busy-timeout cap of about 23 days
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` on contention;
            ``None`` uses the instance setting

        :returns: a proxy that can be used as a context manager to release the lock

        :raises RuntimeError: if a read lock is already held, or a write lock is held by a different thread
        :raises Timeout: if the lock cannot be acquired within *timeout* seconds
        :raises TypeError: if *timeout* is a :class:`bool` or not a real number, or *blocking* is not a :class:`bool`
        :raises ValueError: if a blocking call gets a ``nan`` *timeout* or a negative one other than ``-1``

        ÚwriterÊ   rC  rE  s      r]   Úacquire_writezReadWriteLock.acquire_write7  sK   € ð, �}‰}ØØ#˜OˆD�LŠL°Ø&.Ð&6�T—]‘]ð ó 
ð 	
ð =Eð ó 
ð 	
r\   c             #  ó†   K  — | j                  ||¬«       	 d–— | j                  «        y# | j                  «        w xY w­w)a}  
        Context manager that acquires and releases a shared read lock.

        Falls back to instance defaults for *timeout* and *blocking* when ``None``.

        :param timeout: maximum wait time in seconds, or ``None`` to use the instance default
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

        rÊ   N)rF  rÈ   rE  s      r]   Ú	read_lockzReadWriteLock.read_lockS  s5   è ø€ ð 	×Ñ˜'¨HÐÔ5ð	Ûà�L‰L�NøˆD�L‰L�Nüó   ‚A—, ›A¬>¾Ac             #  ó†   K  — | j                  ||¬«       	 d–— | j                  «        y# | j                  «        w xY w­w)a‚  
        Context manager that acquires and releases an exclusive write lock.

        Falls back to instance defaults for *timeout* and *blocking* when ``None``.

        :param timeout: maximum wait time in seconds, or ``None`` to use the instance default
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

        rÊ   N)rI  rÈ   rE  s      r]   Ú
write_lockzReadWriteLock.write_lockd  s5   è ø€ ð 	×Ñ˜7¨XÐÔ6ð	Ûà�L‰L�NøˆD�L‰L�NürL  F)Úforcec               óÊ   — t        «       5  t        «        | j                  r
	 ddd«       y| j                  d«       | j	                  |d¬«       ddd«       y# 1 sw Y   yxY w)aÎ  
        Release one level of the current lock.

        When the lock level reaches zero the underlying SQLite transaction is rolled back, releasing the database lock.

        :param force: if ``True``, release the lock completely regardless of the current lock level

        :raises RuntimeError: if no lock is currently held and *force* is ``False``, or if the calling thread holds
            no level of the current lock and *force* is ``False``

        NrÈ   F©rO  rÓ   ©r   r   Ú
_inheritedÚ_raise_if_acquiringÚ_release)rh   rO  s     r]   rÈ   zReadWriteLock.releaseu  sY   € ô Óñ 	4Ü#Ô%Ø�ŠØ÷	4ð 	4ð ×$Ñ$ YÔ/Ø�M‰M ¨UˆMÔ3÷	4÷ 	4ñ 	4úó   ‹A¬$AÁA"c                óÊ   — t        «       5  t        «        | j                  r
	 ddd«       y| j                  d«       | j	                  dd¬«       ddd«       y# 1 sw Y   yxY w)a  
        Release the lock (if held) and close the underlying SQLite connection.

        After calling this method, the lock instance is no longer usable. Unlike :meth:`release`, it ends every
        thread's hold on this instance, whichever thread calls it.

        NrÓ   TrQ  rR  rg   s    r]   rÓ   zReadWriteLock.closeˆ  sY   € ô Óñ 	2Ü#Ô%Ø�ŠØ÷	2ð 	2ð ×$Ñ$ WÔ-Ø�M‰M ¨DˆMÔ1÷	2÷ 	2ñ 	2úrV  c               ó.   — | j                  |||||¬«      S )N©rË   ÚholderrÞ   )rD  )rh   rZ  Úmoder  rË   rÞ   s         r]   Ú_acquire_level_ofzReadWriteLock._acquire_level_of—  s   € ð �}‰}˜T 7°XÀfÐ[gˆ}ÓhÐhr\   c                ó    — t        «       5  t        «        | j                  d«       | j                  dd|¬«       d d d «       y # 1 sw Y   y xY w)NrÈ   F)rO  rÓ   Ú	thread_id)r   r   rT  rU  ©rh   r^  s     r]   Ú_release_level_ofzReadWriteLock._release_level_of¤  sG   € ÜÓñ 	IÜ#Ô%Ø×$Ñ$ YÔ/Ø�M‰M ¨U¸iˆMÔH÷	I÷ 	Iñ 	Iús   ‹0AÁAc                ó”   — || j                   k7  r|| j                  vry	 | j                  «        S # t        j                  $ r Y yw xY wrƒ   )r7  r8  Ú_transaction_endedrø   ÚProgrammingErrorr_  s     r]   Ú_holds_level_ofzReadWriteLock._holds_level_ofª  sQ   € ð ˜×-Ñ-Ò-°)À4×CTÑCTÑ2TØð	Ø×.Ñ.Ó0Ð0Ð0øÜ×'Ñ'ò 	áð	ús    1 ±AÁA)r^  c               ó¸  — |€t        j                  «       n|}| j                  5  | j                  5  |s| j	                  |«       | j
                  dk(  rR|r'| j                  €|rd| _        	 d d d «       d d d «       y |s'd| j                  › dt        | «      › d�}t        |«      ‚|s2| j
                  dkD  r#| j                  |«       	 d d d «       d d d «       y 	 | j                  «        | j                  «        |rd| _        d d d «       d d d «       y # t        $ r" | j                  «       r| j                  «        ‚ w xY w# 1 sw Y   Œ@xY w# 1 sw Y   y xY w)Nr   TzCannot release a lock on ú (lock id: z) that is not heldé   )rc   Ú	get_identr3  r4  Ú_raise_if_not_holderr5  Ú_conr=  r  Úidrs   Ú_leave_one_levelÚ_finish_connectionÚBaseExceptionrb  Ú_clear_lock_state)rh   rO  rÓ   r^  rw   s        r]   rU  zReadWriteLock._release¶  sW  € Ø-6Ð->”I×'Ñ'Ô)ÀIˆ	Ø×#Ñ#ñ 	$ T×%8Ñ%8ñ 	$ÙØ×)Ñ)¨)Ô4Ø×Ñ 1Ò$Ù˜TŸY™YÐ.ÙØ'+˜œØ÷	$÷ 	$ð 	$ñ Ø5°d·n±nÐ5EÀ[ÔQSÐTXÓQYÐPZÐZlÐm�CÜ& sÓ+Ð+Ù˜T×-Ñ-°Ò1Ø×%Ñ% iÔ0Ø÷	$÷ 	$ð 	$ðØ×'Ñ'Ô)ð ×"Ñ"Ô$ÙØ#�”÷1	$÷ 	$ð 	$øô  !ò ð ×*Ñ*Ô,Ø×*Ñ*Ô,Øðú÷!	$ð 	$ú÷ 	$ð 	$úsM   ¥E²;EÁ-EÁ>AEÃ
EÃDÃ,EÄEÄ+EÅEÅE	Å	EÅEc                óR   — | j                   s| j                  x}€y|j                   S r“   )r;  rj  Úin_transactionr  s     r]   rb  z ReadWriteLock._transaction_endedÒ  s+   € Ø×0Ò0À4Ç9Á9Ð5L°ZÐ4UØà×,Ñ,Ð,Ð,r\   c                ó<  — | j                   dk(  rE|| j                  k7  r6d| j                  › dt        | «      › d|› d| j                  › �}t	        |«      ‚| j                   dk(  r9|| j
                  vr*d| j                  › dt        | «      › d|› d�}t	        |«      ‚y y )	NrH  zCannot release write lock on rf  ú) from thread ú while it is held by thread rB  zCannot release read lock on z, which does not hold it)r6  r7  r  rk  rs   r8  )rh   r^  rw   s      r]   ri  z"ReadWriteLock._raise_if_not_holderØ  sÆ   € ð ×Ñ Ò(¨Y¸$×:OÑ:OÒ-Oà/°·±Ð/?¸{Ì2ÈdË8È*ð UØ(˜kÐ)EÀd×F[ÑF[ÐE\ð^ð ô ˜sÓ#Ð#à×Ñ Ò'¨I¸T×=NÑ=NÑ,Nà.¨t¯~©~Ð.>¸kÌ"ÈTË(Èð TØ(˜kÐ)AðCð ô ˜sÓ#Ð#ð -OÐ'r\   c                ó®   — | xj                   dz  c_         | j                  dk(  r1| j                  j                  |«      dz
  x}r|| j                  |<   y y y )Nrg  rB  )r5  r6  r8  r³   )rh   r^  rV   s      r]   rl  zReadWriteLock._leave_one_levelé  s[   € Ø×Ò˜AÑÕØ×Ñ Ò'°d×6GÑ6G×6KÑ6KÈIÓ6VÐYZÑ6ZÐ-Z¨UÐ-ZØ+0ˆD×Ñ˜iÒ(ð .[Ð'r\   c                ó<   — d| _         d | _        d | _        i | _        y ©Nr   )r5  r6  r7  r8  rg   s    r]   ro  zReadWriteLock._clear_lock_stateî  s"   € ØˆÔØ!ˆÔØ $ˆÔØˆÕr\   c                ó.   — | j                   j                  S rb   ©r:  rô   rg   s    r]   rj  zReadWriteLock._conô  s   € à×%Ñ%×0Ñ0Ð0r\   c                ó&   — || j                   _        y rb   ry  r  s     r]   rj  zReadWriteLock._conø  s   € à,6ˆ×ÑÕ)r\   c                óJ  — | j                   �*t        j                  | j                  | j                  «       d | _         d| _        d | _        t        j                  «       | _        t        j                  «       | _	        | j                  «        t        «       | _        d| _        y r“   )rj  rŸ   r‘   r2  r<  r;  rc   r¦   r3  r4  ro  r„   r9  r>  rg   s    r]   rz   z(ReadWriteLock._reset_after_fork_in_childü  s{   € Ø�9‰9Ð Ü×/Ñ/°×0DÑ0DÀd×F_ÑF_Ô`ØˆŒ	Ø04ˆÔ-Ø$(ˆÔ!Ü!*§¡Ó!1ˆÔÜ'Ÿn™nÓ.ˆÔØ×ÑÔ Ü'*£uˆÔ$Ø!%ˆÕr\   c                óL   — | j                   xs t        «       | j                  k7  S rb   )r>  r8   rè   rg   s    r]   rS  zReadWriteLock._inherited  s    € à×%Ñ%ÒG¬«°d×6GÑ6GÑ)GÐGr\   c                ó¬   — t        «        | j                  rd| j                  › d�}t        |«      ‚| j                  rd}t        j                  |«      ‚y )NúReadWriteLock on ú4 was invalidated by fork(); construct a new instancez$Cannot operate on a closed database.)r   rS  r  rs   r=  rø   rc  )rh   rw   s     r]   Ú_raise_if_unusablez ReadWriteLock._raise_if_unusable  sP   € ÜÔ!Ø�?Š?Ø% d§n¡nÐ%5Ð5iÐjˆCÜ˜sÓ#Ð#Ø�<Š<Ø8ˆCÜ×*Ñ*¨3Ó/Ð/ð r\   )rZ  rÞ   c               óœ  — t        ||¬«      }t        j                  «       }|}	 | xs@ d|cxk  xr	 t        k  nc xs* t	        t
        d«       xs t        j                  «       dk(  }	 | j                  ||r|nt        |||¬«      S # t        $ r |s	|� |«       r‚ Y nw xY w|dk7  r$t        |t        j                  «       |z
  z
  d«      }Œ©)NrÊ   r   r;   rg  rY  rÐ   )r#   ÚtimeÚ	monotonicrF   Úhasattrr«   rc   Úactive_countÚ_attempt_acquirer'   Úmax)	rh   r[  r  rË   rZ  rÞ   rÜ   Ú	remainingÚfinals	            r]   rD  zReadWriteLock._acquire  së   € ô .¨gÀÔIˆÜ ŸN™NÓ,ˆ
Øˆ	Øð �ò 1Ø˜	Ö9Ô%9Ô9ò1äœrÐ#5Ó6Ð6ò1ô ×)Ñ)Ó+¨qÑ0ð	 ð
Ø×,Ñ,ØÙ!&‘IÔ,@Ø%Ø!Ø!-ð -ó ð øô ò Ù˜\Ð5¹,¼.Øùðúð ˜"Š}Ü ¬4¯>©>Ó+;¸jÑ+HÑ IÈ1ÓM�	ð1 s   Á+B	 Â	B!Â B!c               óþ  — t        «       5  | j                  «        t        «       }t        j                  «       }|€|n|}| j
                  5  | j                  «       r$| j                  ||«      cd d d «       cd d d «       S || j                  v rd| j                  › d�}t        |«      ‚| j                  j                  |«       d d d «       	 t        j                  «       }	| j                  |||¬«       	 | j                  «        | j                  ||||t!        ||	|«      ¬«      | j"                  j%                  «        | j
                  5  | j                  j'                  |«       d d d «       cd d d «       S # 1 sw Y   Œ·xY w# 1 sw Y   ŒxY w# | j"                  j%                  «        w xY w# | j
                  5  | j                  j'                  |«       d d d «       w # 1 sw Y   w xY wxY w# 1 sw Y   y xY w)Nz Cannot acquire ReadWriteLock on ú+ while acquisition is active in this thread)rË   r  rÞ   ©rË   Ú	operation)r   r€  r8   rc   rh  r4  Ú_holds_levelÚ_validate_reentrantr9  r  rs   r�   r‚  Úperf_counterÚ_acquire_transaction_lockÚ_do_acquire_innerrÙ   r3  rÈ   r  )
rh   r[  r  rË   rZ  rÞ   Úoperation_pidr^  rw   rÜ   s
             r]   r†  zReadWriteLock._attempt_acquire;  sã  € ô Óñ 	DØ×#Ñ#Ô%Ü#›IˆMÜ!×+Ñ+Ó-ˆIØ"( .‘Y°fˆFØ×$Ñ$ñ <Ø×$Ñ$Ô&Ø×3Ñ3°D¸&ÓA÷<ð <÷	Dñ 	Dð  × <Ñ <Ñ<Ø<¸T¿^¹^Ð<LÐLwÐx�CÜ& sÓ+Ð+Ø×,Ñ,×0Ñ0°Ô;÷<ðDÜ!×.Ñ.Ó0�
Ø×.Ñ.¸È'Ð`lÐ.Ômð
5Ø×+Ñ+Ô-Ø×1Ñ1ØØØØ!)Ü",¨]¸JÈÓ"Uð 2ó ð ×*Ñ*×2Ñ2Ô4à×(Ñ(ñ DØ×0Ñ0×8Ñ8¸ÔC÷D÷7	Dñ 	D÷
<ð <ú÷,Dð Dûð ×*Ñ*×2Ñ2Õ4ûà×(Ñ(ñ DØ×0Ñ0×8Ñ8¸ÔC÷D÷ Dñ Dý÷7	Dð 	Dús‘   ‹AG3Á"E;Á.	G3ÂAE;ÃG3Ã(F2Ã70FÄ'F2ÅG3ÅFÅ)G3Å;F	Æ G3ÆFÆG3ÆF/Æ/F2Æ2G0Æ?G$	Ç	G0Ç$G-Ç)G0Ç0G3Ç3G<c               óH  — |\  }}}| j                   5  | j                  «       r| j                  ||«      cd d d «       S 	 d d d «       | j                  �| j	                  «        	 | j                  ||||¬«       | j                  ||||¬«       | j                  |«       | j                   5  | j                  |«       || _        d| _        |dk(  r|| _        n	|di| _        d d d «       t+        | ¬«      S # 1 sw Y   Œ·xY w# t        $ rŠ}	t        |	t        j                  «      r#dt        |	«      v rt        | j                  «      }
n|	}
	 | j	                  «        n,# t        j                  $ r}t!        |
|«       Y d }~nd }~ww xY w|
|	ur|
d ‚‚ d }	~	ww xY w# 1 sw Y   Œ·xY w)N)rË   r“  rÜ   rŒ  údatabase is lockedrg  rH  ©Úlock)r4  rŽ  r�  rj  rm  Ú_open_for_acquisitionÚ_configure_and_beginÚ_raise_if_process_changedrn  Ú
isinstancerø   ÚOperationalErrorrÕ   r'   r  r  r   r6  r5  r7  r8  r   )rh   r[  r  rZ  rË   r�  r“  rÜ   Ú_ÚerrorÚacquisition_errorÚcleanup_errors               r]   r’  zReadWriteLock._do_acquire_innerb  s°  € ð (1Ñ$ˆ�z 1à× Ñ ñ 	>Ø× Ñ Ô"Ø×/Ñ/°°fÓ=÷	>ñ 	>Ø"÷	>ð �9‰9Ð Ø×#Ñ#Ô%ð	Ø×&Ñ&ØØ!Ø+Ø%ð	 'ô ð ×%Ñ% d¨G¸hÐR[Ð%Ô\Ø×*Ñ*¨=Ô9ð × Ñ ñ 	0Ø×*Ñ*¨=Ô9Ø!%ˆDÔØ ˆDÔØ�wŠØ(.�Õ%à%+¨Q K�Ô!÷	0ô " tÔ,Ð,÷G	>ð 	>ûô ò 	ä˜%¤×!9Ñ!9Ô:Ð?SÔWZÐ[`ÓWaÑ?aÜ$+¨D¯N©NÓ$;Ñ!à$)Ð!ðHØ×'Ñ'Õ)øÜ—=‘=ò HÜ%Ð&7¸×GÑGûðHúà ¨Ñ-Ø'¨TÐ1Øûð	ú÷	0ð 	0úsY   “"C6Á%;D Â,6FÃ6C?Ä	FÄ?FÅEÅFÅFÅ/F Å;FÆ FÆFÆFÆF!c               ó:  — t        «       5  t        ||t        j                  «       |z
  ¬«      dz  }| j	                  |¬«      }|dt
        j                  | j                  «      c| _        | _	        | _
        | j                  |«       d d d «       y # 1 sw Y   y xY w)N©rË   Úalready_waitedéè  r/  F)r÷   Útimeout_for_sqliter‚  r�  r?  rŸ   rŠ   r2  rj  r;  r<  rš  )rh   r  rË   r“  rÜ   r0  rô   s          r]   r˜  z#ReadWriteLock._open_for_acquisition’  sž   € ÜÓ!ñ 	:ä"ØØ%Ü#'×#4Ñ#4Ó#6¸Ñ#Côð
 ñð ð ×.Ñ.¸nÐ.ÓMˆJàØÜ!×*Ñ*¨4×+?Ñ+?Ó@ð XˆDŒI�tÔ<¸dÔ>Wð
 ×*Ñ*¨=Ô9÷	:÷ 	:ñ 	:ús   ‹A=BÂBc          	     óò  — t        «       5  t        d| j                  «      }| j                  |«       t	        || j
                  «      5  | j                  |j                  «       | j                  |d|||¬«       | j                  |j                  «       |dk(  rdnd}|dk(  r|dz  }| j                  |||||¬«       d d d «       | j                  |«       d d d «       y # 1 sw Y   Œ#xY w# 1 sw Y   y xY w)	Nrç   zPRAGMA journal_mode=MEMORY;rŒ  rH  zBEGIN EXCLUSIVE TRANSACTION;zBEGIN TRANSACTION;rB  z( SELECT name FROM sqlite_master LIMIT 1;)	r÷   r   rj  Ú_raise_if_database_replacedÚ_bounded_schemar  rš  rÚ   Ú_execute_waiting)rh   r[  r  rË   r�  rô   Ú
statementss          r]   r™  z"ReadWriteLock._configure_and_begin¤  s  € ô  Ó!ñ 	9ÜÐ3°T·Y±YÓ?ˆJð ×,Ñ,¨ZÔ8Ü  ¨T¯^©^Ó<ñ oØ×.Ñ.¨y¯}©}Ô=ð
 ×%Ñ%ØÐ =¸wÐQYÐenð &ô ð ×.Ñ.¨y¯}©}Ô=Ø?CÀwºÑ;ÐTh�
Ø˜6’>ð Ð"LÑL�JØ×%Ñ% j°*¸gÐPXÐdmÐ%Ôn÷!oð" ×,Ñ,¨ZÔ8÷-	9ð 	9÷
oð oú÷	9ð 	9ús$   ‹>C-Á	A6C!Â?C-Ã!C*	Ã&C-Ã-C6c               ó¦  — t        t        dz  «      }	 t        ||t        j                  «       |j
                  z
  ¬«      }||kD  r|j                  nd }	 | j                  d|€|n|› d|› �«      j                  «        y # t        j                  $ r=}|�dt        |«      vs |«       r‚ | j                  r| j                  «        Y d }~nd }~ww xY wŒ¿)Nr¤  r¢  zPRAGMA busy_timeout=z; r•  )rU   rC   r¥  r‚  r�  rÜ   rÞ   ÚexecutescriptrÓ   rø   rœ  rÕ   rq  Úrollback)	rô   rª  r  rË   r�  Úslice_msÚbusy_msrÞ   rž  s	            r]   r©  zReadWriteLock._execute_waitingÄ  sÜ   € ô Ô,¨tÑ3Ó4ˆØÜ(Ø (¼4×;LÑ;LÓ;NÐQZ×QeÑQeÑ;eôˆGð 6=¸xÒ5G˜9×1Ò1ÈTˆLðØ×(Ñ(Ø*°lÐ6J©7ÐPXÐ*YÐY[Ð\fÐ[gÐhóç‘%”'ð øô ×+Ñ+ò *ØÐ'Ð+?ÄsÈ5ÃzÑ+QÑUaÔUcØà×,Ò,Ø×'Ñ'Ô)ÿøð*úð s   Á)A? Á?CÂ3C
Ã
Cc                óî   — |j                   x}€y 	 | j                  j                  d¬«      }|�|j                  |j
                  f|k7  rd| j                  ›d�}t        |«      ‚y # t        $ r d }Y ŒFw xY w)NF©Úfollow_symlinksúlock database z< was unlinked or replaced while acquiring; leave it in place)rì   r2  r—   ÚFileNotFoundErrorr™   rš   r  r˜   )rh   rô   rŠ   Úcurrentrw   s        r]   r§  z)ReadWriteLock._raise_if_database_replacedÝ  s‰   € à"×4Ñ4Ð4ˆHÐ=Øð	Ø×*Ñ*×/Ñ/ÀÐ/ÓFˆGð ˆ?˜wŸ~™~¨w¯~©~Ð>À(ÒJØ" 4§>¡>Ð"4Ð4pÐqˆCÜ˜#“,Ðð Køô !ò 	ØŠGð	ús   ‘A& Á&A4Á3A4c               ó0  — t        «       5  t        «       }t        j                  «       }t        «       |k7  rd}t	        |«      ‚	 t        t        j                  | j                  «      t        |¬«      }|�|j                  |«       t        «       |k7  rJt        j                  | j                  t        j!                  | j                  «      «       d}t	        |«      ‚|cd d d «       S # t        $ r t        | j                  «      d ‚w xY w# 1 sw Y   y xY w)Nz9SQLite connection construction cannot continue after fork)Úfactoryr  )r÷   r8   r   rx   rs   Ú_connectr«   r1  r2  rç   ÚBlockingIOErrorr'   r  r  rŸ   r‘   rŠ   )rh   r0  Úcreator_pidrx   rw   rô   s         r]   r?  zReadWriteLock._open_connectionê  sû   € ÜÓ!ñ 	Ü!›)ˆKÜ*×4Ñ4Ó6ˆIÜ‹y˜KÒ'ØQ�Ü" 3Ó'Ð'ð8Ü%Ü—I‘I˜d×2Ñ2Ó3Ü/Ø*ô�
ð Ð$Ø×)Ñ)¨)Ô4Ü‹y˜KÒ'Ü!×3Ñ3Ø×(Ñ(Ü%×.Ñ.¨t×/CÑ/CÓDôð R�Ü" 3Ó'Ð'Ø÷/	ñ 	øô #ò 8Ü˜dŸn™nÓ-°4Ð7ð8ú÷	ð 	ús$   ‹9DÁ/C)Á4A+DÃ) D	Ä	DÄDc                óü  — t        «       5  | j                  x}€
	 d d d «       y d }| j                  s,|j                  r	 |j	                  «        d| _        nd| _        	 |j                  «        d | _        d| _        d | _	        |�|‚	 d d d «       y # t
        j                  $ r }|j                  r‚ d| _        |}Y d }~Œbd }~ww xY w# t
        j                  $ r}|�t        ||«       ‚ d }~ww xY w# 1 sw Y   y xY wr“   )
r÷   rj  r;  rq  r­  rø   r  rÓ   r   r<  )rh   rô   Úrollback_errorrž  Úclose_errors        r]   rm  z ReadWriteLock._finish_connection  s  € ÜÓ!ñ 	%Ø"Ÿi™iÐ'�
Ð0Ø÷	%ð 	%ð 48ˆNØ×8Ò8Ø×,Ò,ðEØ"×+Ñ+Ô-ð AE˜Õ=à<@�DÔ9ðØ× Ñ Ô"ð
 ˆDŒIØ48ˆDÔ1Ø(,ˆDÔ%ØÐ)Ø$Ð$ð *÷5	%ð 	%øô #Ÿ=™=ò /Ø%×4Ò4Ø!Ø@D˜Ô=Ø).�ûð	/ûô —=‘=ò Ø!Ð-Ü)¨.¸+ÔFØûðú÷'	%ð 	%ús]   ‹C2¤C2¿BÁC2ÁCÁ/C2ÂCÂ%C Â;C2Ã CÃC2ÃC/ÃC*Ã*C/Ã/C2Ã2C;c                ó~   — | j                   dkD  r | j                  «       r| j                  «        | j                   dkD  S rw  )r5  rb  ro  rg   s    r]   rŽ  zReadWriteLock._holds_level"  s8   € à×Ñ˜aÒ D×$;Ñ$;Ô$=Ø×"Ñ"Ô$Ø×Ñ !Ñ#Ð#r\   c                ó.  — | j                   |k7  rk|dk(  rdnd}|| j                  k(  s|| j                  v r|dk(  rdnd}d|› d|› d�}nd|› d	�}d
|› d| j                  › dt	        | «      › d|› �}t        |«      ‚|dk(  rE|| j                  k7  r6d| j                  › dt	        | «      › d|› d| j                  › �}t        |«      ‚|dk(  r,| j                  j                  |d«      dz   | j                  |<   | xj                  dz  c_        t        | ¬«      S )NrB  rH  Ú	downgradeÚupgradezalready holding a z lock (z not allowed)zanother thread holds a z‚ lock on this instance, which coordinates processes rather than threads; give each thread its own instance with is_singleton=FalsezCannot acquire z	 lock on rf  z): zCannot acquire write lock on rs  rt  r   rg  r–  )	r6  r7  r8  r  rk  rs   r¯   r5  r   )rh   r[  ÚcurÚoppositeÚ	directionÚreasonrw   s          r]   r�  z!ReadWriteLock._validate_reentrant(  sQ  € Ø×Ñ Ò%Ø"&¨&¢.‘w°fˆHØ�d×+Ñ+Ò+¨s°d×6GÑ6GÑ/GØ+/°6ª>™K¸y�	Ø-¨h¨Z°w¸y¸kÈÐW‘ð .¨h¨Zð 8^ð ^ð ð $ D 6¨°4·>±>Ð2BÀ+ÌbÐQUËhÈZÐWZÐ[aÐZbÐcˆCÜ˜sÓ#Ð#Ø�7Š?˜s d×&;Ñ&;Ò;à/°·±Ð/?¸{Ì2ÈdË8È*ð UØ"˜eÐ#?À×@UÑ@UÐ?VðXð ô ˜sÓ#Ð#Ø�6Š>Ø%)×%6Ñ%6×%:Ñ%:¸3ÀÓ%BÀQÑ%FˆD×Ñ˜cÑ"Ø×Ò˜AÑÕÜ! tÔ,Ð,r\   c               ól   — t        | j                  ||t        |¬«      st        | j                  «      d ‚y )N)rË   r  Úpoll_intervalrÞ   )r   r3  rC   r'   r  )rh   rË   r  rÞ   s       r]   r‘  z'ReadWriteLock._acquire_transaction_lock@  s9   € ô $Ø×"Ñ"ØØÜ/Ø%õ
ô ˜$Ÿ.™.Ó)¨tÐ3ð
r\   c                óÆ   — | j                   5  t        j                  «       | j                  v }d d d «       rd|› d| j                  › d�}t        |«      ‚y # 1 sw Y   Œ*xY w)NzCannot z ReadWriteLock on r‹  )r4  rc   rh  r9  r  rs   )rh   r�  Úactive_in_current_threadrw   s       r]   rT  z!ReadWriteLock._raise_if_acquiringL  sl   € Ø× Ñ ñ 	]Ü'0×':Ñ':Ó'<À×@\Ñ@\Ð'\Ð$÷	]á#Ø˜I˜;Ð&8¸¿¹Ð8HÐHsÐtˆCÜ˜sÓ#Ð#ð $÷	]ð 	]ús   �!AÁA c                ól   — t        «       |k7  s| j                  rd| j                  › d�}t        |«      ‚y )Nr~  r  )r8   rS  r  rs   )rh   r“  rw   s      r]   rš  z'ReadWriteLock._raise_if_process_changedS  s6   € Ü‹9˜Ò%¨¯ªØ% d§n¡nÐ%5Ð5iÐjˆCÜ˜sÓ#Ð#ð *9r\   r{   r%  )r  r&  r  rÛ   rË   r'  r|   r(  )
r  r&  r  rÛ   rË   r'  r  r'  r|   r}   rb   )r  úfloat | NonerË   úbool | Noner|   r   )r  rË  rË   rÌ  r|   úGenerator[None])rO  r'  r|   r}   )rZ  rU   r[  úLiteral['read', 'write']r  rÛ   rË   r'  rÞ   zCallable[[], bool]r|   r   )r^  rU   r|   r}   )r^  rU   r|   r'  )rO  r'  rÓ   r'  r^  ú
int | Noner|   r}   )r|   r'  )r|   r  )rô   r  r|   r}   )r[  rÎ  r  rÛ   rË   r'  rZ  rÏ  rÞ   rÝ   r|   r   )r[  rÎ  r  rÛ   rZ  rU   rË   r'  r�  rÙ   r|   r   )
r  rÛ   rË   r'  r“  rU   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}   )r0  rÛ   r|   rç   )r[  rÎ  rÂ  rU   r|   r   )rË   r'  r  rÛ   rÞ   rÝ   r|   r}   )r�  z&Literal['acquire', 'close', 'release']r|   r}   )r“  rU   r|   r}   )7rW   rX   rY   r  r   r  rZ   rc   rd   r  r8   r  r„   r  r+  Úclassmethodr-  ri   rF  rI  r   rK  rN  rÈ   rÓ   r\  r`  rd  rU  rb  ri  rl  ro  Úpropertyrj  Úsetterrz   rS  r€  rD  r†  r’  r˜  r™  rž   r©  r§  r?  rm  rŽ  r�  r‘  rT  rš  r  r  s   @r]   r(  r(  Â  s‹  ø… ññ8 NaÓMb€JÐJÓbØ%�i—o‘oÓ'€OÙ“Y€NÙADÃÐ!Ð#>ÓFõ"ð àACð:ØY]ñ:Ø.ð:Ø9>ð:ØRVð:à	ò:ó ð:ð( ð*ð
 Ø!ñ*à)ð*ð ð*ð
 ð*ð ð*ð 
ó*ð>
ÐTXõ 
ð4
ÐUYõ 
ð8 ðÐQUô ó ðð  ðÐRVô ó ðð  (-õ 4ó&2ðiàðið 'ðið ð	ið ðið )ðið 
óióIó
ð MQõ $ó8-ó$ó"1ó
ð ò1ó ð1ð 
‡[�[ò7ó ð7ó
&ð òHó ðHó0ð "Ø26ñ$Nà&ð$Nð ð$Nð
 ð$Nð ð$Nð 0ð$Nð 
ó$NðX "Ø26ñ%Dà&ð%Dð ð%Dð
 ð%Dð ð%Dð 0ð%Dð 
ó%DðN.-à&ð.-ð ð.-ð ð	.-ð ð.-ð ð.-ð 
ó.-ó`:ð$9à&ð9ð ð9ð
 ð9ð ð9ð 
ó9ð@ ðØ'ðØ58ðØCHðØW[ðØhrðà	òó ðó0óó4%ó<$ó-ð0
4Øð
4Ø*/ð
4Ø?Xð
4à	ó
4ó$÷$r\   r(  )Ú	metaclassc               óœ  — t         j                  «        t        j                  dk(  rÐt	        | |¬«      }d }	 t        || «       | }t        t        j                  t        j                  | «      j                  «      «      s4t        | t        |«      «      }t        j                  |j                  «      }	 t        j                   |d|d|¬«      }|j'                  |«       |t        j(                  |«       S t+        | ||t        j,                  «       ¬«      S # t"        $ r |�t%        |«       ‚ w xY w# t        j(                  |«       w xY w)Nr+   ©Úoplock_waitFr   ©Úcheck_same_threadr·  Úcached_statementsr  )r·  r  Úowner)rŸ   r”   ÚsysÚplatformÚ_open_lock_databaseÚ_raise_if_walr,   r«   r1  r   r  ÚparentÚ_link_beside_on_windowsr.   r·   rø   Úconnectrn  rú   rþ   rÓ   Ú_connect_through_descriptorÚgeteuid)r·   r·  r  rÁ   ÚlinkÚtargetrô   s          r]   r¸  r¸  Y  s  € Ü×%Ñ%Ô'ô ‡|�|�wÒÜ'¨¸gÔFˆØ&*ˆð	Ü˜"˜hÔ'ØˆFÜ(¬¯©´7·<±<ÀÓ3I×3PÑ3PÓ)QÔRÜ.¨x¼ÈÓ9LÓM�ÜŸ™ 4§=¡=Ó1�ðÜ$Ÿ_™_Ø¨e¸WÐXYÐcjô�
ð ×"Ñ" 4Ô(Øä�H‰H�R�LÜ&Ø˜'¨7¼"¿*¹*»,ôð øô !ò ØÐ#Ü*¨4Ô0Øðûô �H‰H�R�Lús$   ¸A=D4 Â6D ÃD4 ÄD1Ä1D4 Ä4Ec               ó®  — g }d }	 t         j                  | |«      x}€t         j                  t        | «      |«      }|\  }}}	t         j	                  «        t        || «       | }
t        t        j                  | «      j                  |«      s,t        | ||«      }t        j                  |j                  «      }
t        j                  |
d|d|¬«      }|j!                  ||«       |j#                  «        ||D ]  }t         j%                  |«       Œ |r|�t'        |«       S S S # |D ]  }t         j%                  |«       Œ |r|�t'        |«       w w w xY w)NFr   r×  )rå   r»   rÄ   rÝ  rÆ   rÞ  Ú_names_are_privater   r  rß  Ú_link_besider«   r1  r·   rø   rá  r   rÒ   rÈ   rú   )r·   r·  r  rÚ  r¸   rä  rÇ   rŠ   rÁ   r�  rå  rô   Úunowneds                r]   râ  râ  x  sI  € ð
 $&€GØ"&€Dð)Ü'×-Ñ-¨h¸Ó@Ð@ˆEÐIÜ&×-Ñ-Ô.AÀ(Ó.KÈWÓUˆEØ‰ˆ�"�aä× Ñ Ô"Ü�b˜(Ô#Øˆô "¤'§,¡,¨xÓ"8×"?Ñ"?ÀÔGÜ ¨(°EÓ:ˆDÜ—Y‘Y˜tŸ}™}Ó-ˆFÜ—_‘_Ø e°WÐPQÐ[bô
ˆ
ð 	×%Ñ% d¨EÔ2Ø�‰ŒØàò 	0ˆGÜ×&Ñ& wÕ/ð	0á�tÐ'ä" 4Õ(ð (ˆ7øð ò 	0ˆGÜ×&Ñ& wÕ/ð	0á�tÐ'ä" 4Õ(ð (ˆ7ús   †C1D% Ä%/Ec                ó®   — t        j                  | «      }|j                  |dhv xr/ |j                  t        j
                  t        j                  z  z   S rw  )r«   r¬   Úst_uidr®   r—   ÚS_IWGRPÚS_IWOTH)rû   rÚ  Ústatuss      r]   rç  rç  ›  sD   € Ü—H‘H˜YÓ'€Fà�=‰=˜U A˜JÐ&Ò]¨v¯~©~ÄÇÁÔPT×P\ÑP\ÑA\Ñ/]Ð+]Ð]r\   c                  ó>   — e Zd ZU ded<   ded<   ded<   ed	d„«       Zy)
Ú_LinkDirectoryrœ   r‹   rA   rŠ   rÕ   Únamec                óB   — | j                   | j                  z  t        z  S rb   )r‹   rñ  r¡   rg   s    r]   r·   z_LinkDirectory.database¨  s   € à�y‰y˜4Ÿ9™9Ñ$¤zÑ1Ð1r\   N)r|   rœ   )rW   rX   rY   rZ   rÑ  r·   r[   r\   r]   rð  rð  ¡  s'   … Ø
ÓØÓð ƒIàò2ó ñ2r\   rð  c                ó$  — t        j                  | «      j                  }t        |||«       t        j                  t	        j
                  t        «       |¬«      «      }t        j                  |t        «      }	 t        j                  |«      }|j                  dz  }|j                  |k7  s|r9t        j                  |«      r$dt        j                  |«      ›d�}t        |«      ‚|rsdt        j                  |«      ›dt        j                  |«      ›d�}	 t        j                   |d«       t        j                  |«      j                  dz  rt        |«      ‚t%        ||j&                  |j(                  ft+        j,                  d«      «      }
	 t        j.                  |
j0                  d|¬	«       t        j2                  | |
j4                  d
¬«       |
j4                  j7                  d
¬«      }	 t        j<                  |«       |j&                  |j(                  f|k7  rt;        |
«       d| ›�}t        |«      ‚|
S # t"        $ r}	t        |«      |	‚d }	~	ww xY w# t8        $ r t;        |
«       ‚ w xY w# t        j<                  |«       w xY w)N)ÚprefixÚdiré?   úlink directory ú was replaced while openingzZ stays open to other accounts through an inherited ACL that chmod 0700 cannot close; make z writable by its owner onlyiÀ  é   ©Údir_fdFr±  ú%lock database changed while opening: )r   r  rß  Ú_sweep_links_of_the_deadr	   ÚmkdtempÚ_link_prefixr«   ÚopenrK   r½   r®   rë  Úlistdirr1  r˜   ÚfchmodÚPermissionErrorrð  r™   rš   r   Ú	token_hexÚmkdirrñ  rä  r·   r—   rn  rú   rÓ   )r·   rŠ   rÚ  rß  r‹   rÁ   ÚmadeÚlooserw   Úexcrä  Úlinkeds               r]   rè  rè  ­  s  € ô —L‘L Ó*×1Ñ1€FÜ˜V X¨uÔ5Ü—,‘,œx×/Ñ/´|³~È6ÔRÓS€DÜ—‘˜Ô.Ó/€BðÜ—h‘h˜r“lˆà—|‘| eÑ+ˆØ�;‰;˜%Ò¡E¬b¯j©j¸¬nØ#¤B§I¡I¨d£OÐ#6Ð6QÐRˆCÜ˜#“,Ðñ à!¤"§)¡)¨D£/Ð!4ð 57Ü79·y±yÀÓ7HÐ6KÐKfðhð ð,Ü—	‘	˜"˜eÔ$ô �x‰x˜‹|×#Ñ# eÒ+Ü˜c“lÐ"Ü$ T¨D¯K©K¸¿¹Ð+EÄw×GXÑGXÐYZÓG[Ó\ˆð	Ü�H‰H�T—Y‘Y ¨bÕ1Ü�G‰G�H˜dŸm™m¸UÕCØ ŸM™M×.Ñ.¸uÐ.ÓE‰Fô
 	�‰�ŒØ�‰�v—}‘}Ð%¨Ò1Ü˜tÔ$Ø5°h°\ÐBˆÜ�c‹lÐØ€Køô% #ò ,Ü˜c“l¨Ð+ûð,ûô ò 	Ü" 4Ô(Øð	ûô 	�‰��úsE   Á:BI8 ÄI Ä0A#I8 ÆA I É	IÉIÉIÉI8 ÉI5É5I8 É8Jc                óÈ  — |t         v ry t         j                  |«       	 t        j                  | «      5 }|D �cg c]?  }|j                  j                  t        «      r|j                  d¬«      r|j                  ‘ŒA }}d d d «       D ]*  }t        t        «      5  t        | |z  ||«       d d d «       Œ, y c c}w # 1 sw Y   Œ>xY w# t        $ r Y y w xY w# 1 sw Y   ŒWxY w)NFr±  )r¢   r�   r«   Úscandirrñ  Ú
startswithr    Úis_dirr˜   r   Ú_remove_dead_links)rß  rŠ   rÚ  ÚentriesÚentryÚnamesrñ  s          r]   rý  rý  Ú  sä   € ð
 Ô#Ñ#ØÜ×Ñ˜Ô"ðÜ�Z‰Z˜Óð 	 7ð %öàØ—:‘:×(Ñ(¬Ô6¸5¿<¹<ÐX]¸<Ô;^ð —
“
ðˆEð ÷	ð ò ?ˆä”gÓñ 	?Ü˜v¨™}¨h¸Ô>÷	?ð 	?ñ?ùò÷	ð 	ûô ò Ùðú÷	?ð 	?úsF    C	 µB=ºAB8Á>B=Â C	 ÂCÂ8B=Â=CÃC	 Ã		CÃCÃC!	c                óð  — t         j                  dk(  rt        | |«       y t        j                  | t
        «      }	 t        j                  |«      j                  |k7  st        | j                  «      s	 t        j                  |«       y t        j                  |«      5 }|D �cg c]  }|j                  ‘Œ }}d d d «       D ]†  }|t        k(  rt        ||«       Œ	 t        j                  |t
        |¬«      }	 t        ||«       t        j                  |«       t        t        «      5  t        j                   ||¬«       d d d «       Œˆ 	 t        j                  |«       t        t        «      5  | j!                  «        d d d «       y c c}w # 1 sw Y   ŒØxY w# t        $ r Y Œäw xY w# t        j                  |«       w xY w# 1 sw Y   �ŒxY w# t        j                  |«       w xY w# 1 sw Y   y xY w)Nr+   rú  )rÛ  rÜ  Ú_remove_dead_links_on_windowsr«   r   rK   r½   rë  Ú_owner_is_gonerñ  rÓ   r  r¡   Ú_unlink_link_tor˜   r   Úrmdir)r‹   rŠ   rÚ  rÁ   r  r  r  Únesteds           r]   r  r  ñ  s—  € ô ‡|�|�wÒÜ% d¨HÔ5Øô —‘˜Ô.Ó/€Bðô �8‰8�B‹<×Ñ %Ò'¬~¸d¿i¹iÔ/HØô& 	�‰��ô% �Z‰Z˜‹^ð 	=˜wØ4;Ö<¨5˜EŸJ›JÐ<ˆEÐ<÷	=àò 	+ˆEàœ
Ò"Ü ¨"Ô-ØðÜŸ™ Ô(8ÀÔD�ð!Ü ¨&Ô1ä—‘˜Ô Üœ'Ó"ñ +Ü—‘˜ rÕ*÷+ð +ñ	+ô  	�‰�ŒÜ	”'Ó	ñ Ø�
‰
Œ÷ð ùò% =÷	=ð 	=ûô ò Ùðûô
 —‘˜Õ ú÷+ñ +ûô 	�‰��ú÷ð ús•   ¼7G Â
G ÂFÂ$FÂ7FÂ9#G ÃFÃ:F+Ä$G Ä*GÅ
G Å1G,ÆFÆFÆG Æ	F(Æ%G Æ'F(Æ(G Æ+GÇG ÇG	Ç
G ÇG)Ç,G5c                óÊ   — 	 t        j                  t        |d¬«      }|j                  |j
                  f| k(  rt        j                  t        |¬«       y y # t        $ r Y y w xY w)NF)rû  r²  rú  )r«   r—   r¡   r˜   r™   rš   Úunlink)rŠ   rû  r	  s      r]   r  r    sW   € ðÜŸ™¤
°6È5ÔQˆð 	�‰�v—}‘}Ð%¨Ò1Ü
�	‰	”* VÖ,ð 2øô ò Ùðús   ‚A Á	A"Á!A"c                ó†  — | j                  t        «      j                  d«        rš dk(  r•\  }}} |j                  «       r€|j	                  «       rp|r |j                  «       r^|j	                  «       rNdt        |«      x}cxk  rdk  sy yt        «       }|t        |«      k(  xr t        |||rt        |«      nd «      S  	 y)Nú-é   rg  iÿÿÿF)	Úremoveprefixr    ÚsplitÚisasciiÚisdigitrU   r(   Ú_host_digestr)   )rñ  rÚ   ÚstartÚdigestÚ	owner_pidÚhosts         r]   r  r    sª   € Ø
×
Ñ
œLÓ
)×
/Ñ
/°Ó
4ß$Ó$ !Ø�K‰KŒM˜cŸk™kœm±U¸u¿}¹}¼ÐSX×S`ÑS`ÔSbà¤c¨#£hÐ.˜Ô<°9Ò<Øð =ØÜ#›+ˆDØœ\¨$Ó/Ñ/Òr´NÀ9ÈdÑbgÔTWÐX]ÔT^ÐmqÓ4rÐrð %ð Ør\   c            	     óŒ   — t        t        j                  «       x} «      }t        › | › d|€dn|› dt	        t        «       «      › d�S )Nr  Ú )r*   r«   Úgetpidr    r!  r(   )rÚ   r"  s     r]   rÿ  rÿ  ,  sF   € ä&¬b¯i©i«kÐ'9 sÓ:€EÜˆ^˜C˜5 ¨¨¡"¸5Ð!AÀÄ<ÔPYÓP[ÓC\ÐB]Ð]^Ð_Ð_r\   c                ój   — t        j                  | j                  «       «      j                  «       d d S )Né   )r   Úsha256ÚencodeÚ	hexdigest)r%  s    r]   r!  r!  2  s'   € ä�>‰>˜$Ÿ+™+›-Ó(×2Ñ2Ó4°S°bÐ9Ð9r\   c                ó`  — t         j                  dk(  rt        | «       y 	 t        j                  | j
                  t        «      }	 t        j                  |«      }|j                  |j                  f| j                  k7  r	 t        j                  |«       y dD ]F  }t        t        «      5  t        j                  | j                   › dt"        › |› �|¬«       d d d «       ŒH t        t        «      5  t        j$                  | j                   |¬«       d d d «       t        j                  |«       t        t        «      5  | j
                  j%                  «        d d d «       y # t        $ r Y y w xY w# 1 sw Y   ŒâxY w# 1 sw Y   ŒlxY w# t        j                  |«       w xY w# 1 sw Y   y xY w)Nr+   ©r'  z-journalz-walz-shmú/rú  )rÛ  rÜ  Ú!_remove_link_directory_on_windowsr«   r   r‹   rK   r˜   r½   r™   rš   rŠ   rÓ   r   r´  r  rñ  r¡   r  )rä  rÁ   ÚopenedÚsuffixs       r]   rú   rú   7  s[  € Ü
‡|�|�wÒÜ)¨$Ô/ØðÜ—G‘G˜DŸI™IÔ'7Ó8ˆð
ÜŸ™ ›ˆØ�M‰M˜6Ÿ=™=Ð)¨T¯]©]Ò:Øô 	�‰��ð 7ò 	JˆFÜÔ+Ó,ñ JÜ—	‘	˜TŸY™Y˜K q¬¨°V°HÐ=ÀbÕI÷Jð Jð	Jô Ô'Ó(ñ 	+Ü�H‰H�T—Y‘Y rÕ*÷	+ô 	�‰�Œä	”'Ó	ñ Ø�	‰	�‰Ô÷ð øô ò Ùðú÷Jð Jú÷	+ð 	+ûô 	�‰��ú÷ð ús_   ¡$E# Á:F
 ÂF
 Â+-E2ÃF
 Ã1"E>ÄF
 Ä?F$Å#	E/Å.E/Å2E;	Å7F
 Å>FÆF
 Æ
F!Æ$F-c                óà  — t        j                  | «      j                  }t        ||d«       |t	        «       › t        j                  d«      › �z  }t        t        j                  |«      «       d }	 t        t        j                  |«      «      5 }t        ||t        j                  d«      «      }t        || |«       d d d «       |S # 1 sw Y   |S xY w# t        $ r |�t        |«       ‚ w xY w)Nr   rù  )r   r  rß  rý  rÿ  r   r  r/   r«   r1  r1   rð  Ú_fill_link_directoryrn  rú   )r·   rŠ   rß  r‹   rä  Údirectory_identitys         r]   rà  rà  S  s×   € ÜŸ™ XÓ.×5Ñ5ˆä  ¨°1Ô5Ø¤,£.Ð!1´'×2CÑ2CÀAÓ2FÐ1GÐHÑHˆÜ¤§	¡	¨$£Ô0Ø&*ˆð	äœŸ™ 4›Ó)ð ?Ð-?Ü% dÐ,>Ä×@QÑ@QÐRSÓ@TÓU�Ü$ T¨8°XÔ>÷?ð ˆ÷?ð ˆûô	 ò 	ØÐÜ& tÔ,Øð	ús*   Á2C Â.CÂ>C ÃCÃC ÃC ÃC-c                óÐ  — t        t        j                  | j                  «      «      s.dt        j                  | j                  «      ›d�}t	        |«      ‚t        t        j                  | j                  | j                  z  «      «       t        j                  || j                  «       t        t        j                  | j                  «      «      |k7  rd|›�}t	        |«      ‚y )Nr÷  rø  rü  )
r,   r«   r1  r‹   r˜   r/   rñ  rä  r·   r-   )rä  r·   rŠ   rw   s       r]   r5  r5  e  s£   € Ü$¤R§Y¡Y¨t¯y©yÓ%9Ô:Ø#¤B§I¡I¨d¯i©iÓ$8Ð#;Ð;VÐWˆCÜ˜#“,ÐÜ¤§	¡	¨$¯)©)°d·i±iÑ*?Ó @ÔAÜ
�‰�˜$Ÿ-™-Ô(äœŸ	™	 $§-¡-Ó0Ó1°XÒ=Ø9¸(¸ÐFˆCÜ˜#“,Ðð >r\   c                ó   — t        t        j                  | «      «      5  t        t        j                  | «      «      rt	        | j
                  «      s
	 d d d «       y t        j                  | «      5 }|D �cg c]!  }t        j                  |j                  «      ‘Œ# }}d d d «       D ]=  }t        ||t        z  «       t        t        «      5  |j                  «        d d d «       Œ? 	 d d d «       t        t        «      5  | j                  «        d d d «       y c c}w # 1 sw Y   Œ‚xY w# 1 sw Y   ŒŒxY w# 1 sw Y   ŒOxY w# 1 sw Y   y xY wrb   )r1   r«   r1  r,   r  rñ  r  r   r  r‹   Ú_unlink_link_to_on_windowsr¡   r   r˜   r  )r‹   rŠ   r  r  r  rû   s         r]   r  r  p  s  € Ü”R—Y‘Y˜t“_Ó%ñ 	&Ü(¬¯©°4«Ô9ÄÐPT×PYÑPYÔAZØ÷	&ð 	&ô —‘˜DÓ!ð P WØGNÖ O¸e¤§¡¨e¯j©jÕ!9Ð O�Ð O÷Pà#ò &�	Ü*¨8°YÄÑ5KÔLÜœgÓ&ñ &Ø—O‘OÔ%÷&ð &ñ&÷	&ô ”gÓñ 	Ø�J‰JŒL÷	ð 	ùò !P÷Pð Pú÷&ð &ú÷	&ð 	&ú÷	ð 	ús_   Ÿ5D8ÁD8Á2D Á7&DÂD Â/D8ÃD,Ã
D8ÄEÄD Ä D)	Ä%D8Ä,D5Ä1D8Ä8EÅEc                ó®   — t        t        «      5  t        t        j                  |«      «      | k(  r|j                  «        d d d «       y # 1 sw Y   y xY wrb   )r   r˜   r-   r«   r1  r  )rŠ   r‹   s     r]   r9  r9  }  s=   € Ü”gÓñ 	ÜœBŸI™I d›OÓ,°Ò8Ø—‘”÷	÷ 	ñ 	ús   �2AÁAc           	     óª  — t        t        «      5  t        t        j                  | j
                  «      «      5 }|| j                  k7  r	 d d d «       d d d «       y dD ]K  }t        t        «      5  t        j                  | j                  › |› �«      j                  «        d d d «       ŒM t        t        «      5  t        j                  | j                  j                  «      j                  «        d d d «       d d d «       | j
                  j                  «        d d d «       y # 1 sw Y   ŒÑxY w# 1 sw Y   Œ@xY w# 1 sw Y   ŒDxY w# 1 sw Y   y xY w)Nr/  )r   r˜   r1   r«   r1  r‹   rŠ   r´  r   r  r·   r  rß  r  )rä  r6  r3  s      r]   r1  r1  ‚  s  € ä”gÓñ 		ÜœŸ™ 4§9¡9Ó-Ó.ð ?Ð2DØ%¨¯©Ò6Ø÷?÷		ð 		ð ?ò J�FÜ!Ô"3Ó4ñ JÜŸ™¨¯© °v°hÐ%?Ó@×GÑGÔI÷Jð JðJô Ô/Ó0ñ ?Ü—L‘L §¡×!5Ñ!5Ó6×<Ñ<Ô>÷?÷?ð �I‰I�O‰OÔ÷		ð 		÷
Jð Jú÷?ð ?ú÷?ð ?ú÷		ð 		ús^   �)E	¹D=Á
E	ÁD=Á/2D%	Â!D=Â:8D1Ã2D=Ã:"E	Ä%D.Ä*D=Ä1D:Ä6D=Ä=E	ÅE	Å	ErÕ  c               óV  — t         j                  dk(  r#t        | d|¬«      x}€d| ›d�}t        |«      ‚|S t	        j
                  | t        d«      }t        j                  t	        j                  |«      j                  «      s%t	        j                  |«       d| ›�}t        |«      ‚|S )Nr+   i€  rÕ  r³  z, is held without sharing or pending deletionz&refusing a non-regular lock database: )rÛ  rÜ  r0   r  r«   r   rI   r—   r­   r½   r®   rÓ   r˜   )r·   rÖ  rÁ   rw   s       r]   rÝ  rÝ  �  s“   € Ü
‡|�|�wÒä& x°ÀKÔPÐPˆBÐYØ" 8 ,Ð.ZÐ[ˆCÜ! #Ó&Ð&Øˆ	Ü	�‰�œ>¨5Ó	1€BÜ�<‰<œŸ™ ›×,Ñ,Ô-Ü
�‰�ŒØ6°x°lÐCˆÜ�c‹lÐØ€Ir\   c                óú   — t        t        d«      rt        j                  | t        d«      nt        j                  | t        «      }|j                  t        «      r!t        |t           v rd|›d�}t        |«      ‚y y )NÚpreadr   z#refusing a WAL-mode lock database: ú&; give ReadWriteLock a file of its own)
r„  r«   r>  rP   rB  r  rL   rR   rO   r  )rÁ   r·   Úheaderrw   s       r]   rÞ  rÞ  Ÿ  sl   € ô 6=¼RÀÔ5I”B—H‘H˜R¤¨qÔ1ÌrÏwÉwÐWYÔ[gÓOh€FØ×ÑœÔ'Ô,?À6ÔJZÑC[Ñ,[Ø3°H°<Ð?eÐfˆÜ˜‹oÐð -\Ð'r\   c              #  óž  ‡‡K  — t        «       ŠdŠ| j                  t        j                  d«       | j	                  ˆˆfd„d«       	 d –— 	 | j	                  d d«       y # t        j
                  $ r@}t        |t        j                  «      st        ‰«      ‰kD  rd|›d�}t        |«      |‚‚ d }~ww xY w# | j	                  d d«       w xY w­w)Né
   i   c                 ó    •— t        ‰ «      ‰k\  S rb   )r´   )ÚcallsÚ	max_callss   €€r]   ú<lambda>z!_bounded_schema.<locals>.<lambda>°  s   ø€ ¬D°«K¸9Ñ,D€ r\   r¤  z<refusing a lock database whose schema is too large to load: r?  r   )
r   Úsetlimitrø   ÚSQLITE_LIMIT_LENGTHÚset_progress_handlerÚDatabaseErrorr›  Ú	DataErrorr´   r  )rô   r·   rž  rw   rD  rE  s       @@r]   r¨  r¨  ©  sÃ   ùè ø€ ô “7€EØ€IØ×Ñœ×3Ñ3°TÔ:Ø×#Ñ#Ô$DÀdÔKð1Üð 	×'Ñ'¨¨aÕ0øô × Ñ ò ä�eœW×.Ñ.Ô/´4¸³;ÀÒ3JàNÈxÈlð [7ð 7ð ô ˜S“/ uÐ,Øûðûð 	×'Ñ'¨¨aÕ0üs6   „ACÁA  ÁCÁ B3Á3;B.Â.B3Â3B6 Â6C
Ã
Cc               #  ó¶   K  — t         xj                  dz  c_        	 d –— t         xj                  dz  c_        y # t         xj                  dz  c_        w xY w­w)Nrg  )r^   rV   r[   r\   r]   r÷   r÷   À  sB   è ø€ ä×$Ò$¨Ñ)Õ$ð.Ûä"×(Ò(¨AÑ-Ö(øÔ"×(Ò(¨AÑ-Ö(üs   ‚A�; ¡A»AÁAc                 óX   — t         j                  rt        j                  t        «       y y rb   )r^   rV   r«   Ú_exitrE   r[   r\   r]   Ú_abort_forked_sqlite_transitionrO  É  s   € Ü!×'Ò'Ü
�‰Ô)Õ*ð (r\   c                ó8   — | dk(  rt         j                  «        y y )Nzsqlite3.connect)rŸ   r”   )Úeventrò   s     r]   Ú_track_sqlite_userR  Î  s   € ØÐ!Ò!Ü×)Ñ)Õ+ð "r\   c               óì   — |du ry| dk(  rt         S | dk  rd}t        |«      ‚t        | dkD  rt        | |z
  d«      n| dz  «      }|t         kD  s|dk  r!t        j                  d| t         «       t         S |S )NFr   rÐ   z+timeout must be a non-negative number or -1r¤  z7timeout %s is too large for SQLite, using %s ms instead)rB   r  rU   r‡  r7   Úwarning)r  rË   r£  rw   Ú
timeout_mss        r]   r¥  r¥  Ó  s‚   € Ø�5ÑØà�"‚}Ü%Ð%à�‚{Ø;ˆÜ˜‹oÐä¸'ÀAº+”c˜' NÑ2°AÔ6È7ÐVZÑZÓ[€JØÔ*Ò*¨j¸1ªnÜ�‰ÐQÐSZÔ\rÔsÜ%Ð%ØÐr\   )Úafter_in_childr¥  )r·   rÕ   r·  útype[_ForkSafeConnection]r  rÛ   r|   rç   )
r·   rÕ   r·  rW  r  rÛ   rÚ  rU   r|   rç   )rû   rœ   rÚ  rU   r|   r'  )r·   rÕ   rŠ   rA   rÚ  rU   r|   rð  )rß  rœ   rŠ   rA   rÚ  rU   r|   r}   )r‹   rœ   rŠ   rA   rÚ  rU   r|   r}   )rŠ   rA   rû  rU   r|   r}   )rñ  rÕ   r|   r'  )r|   rÕ   )r%  rÕ   r|   rÕ   )rä  rð  r|   r}   )r·   rÕ   rŠ   rA   r|   rð  )rä  rð  r·   rÕ   rŠ   rA   r|   r}   )r‹   rœ   rŠ   rA   r|   r}   )rŠ   rA   r‹   rœ   r|   r}   )r·   rÕ   rÖ  rÛ   r|   rU   )rÁ   rU   r·   rÕ   r|   r}   )rô   zsqlite3.Connectionr·   rÕ   r|   rÍ  )r|   rÍ  r{   )rQ  rÕ   rò   r5   r|   r}   )r  rÛ   rË   r'  r£  rÛ   r|   rU   )™Ú
__future__r   Ú__lazy_modules__r   Úloggingr«   r   r   rø   r—   rÛ  r	   rc   r‚  r   r
   Ú
contextlibr   r   Údataclassesr   r   r   r   Útypingr   r   r   r   r   r   r   Úweakrefr   Úfilelock._apir   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   Úfilelock._errorr'   Úfilelock._identityr(   r)   r*   rÜ  Úfilelock._windowsr,   r-   r.   r/   r0   r1   Úcollections.abcr2   r3   r4   Ú	_typeshedr5   Ú	getLoggerr7   rZ   r(  r8   Úimplementationrñ  r:   r„  Úversion_infor?   rÕ   ÚbytesÚPathLikerÛ   rU   Útyperù   r@   ÚtuplerA   rB   rC   rE   rF   ÚO_RDWRÚO_CREATÚgetattrrI   ÚO_RDONLYrK   rL   ÚslicerO   rP   rR   ÚlocalrT   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à  r5  r  r9  r1  rÝ  rÞ  r¨  r÷   rO  rR  r¥  Úaddaudithookr;   Ú__all__r[   r\   r]   ú<module>rt     sû  ðÞ "ò	Ð ó Û Û 	Û Û Û Û Û 
Û Û Û Ý ß /ß (Ý ß W× WÑ WÝ '÷÷ ÷ ÷ ñ õ" $ß MÑ Mà‡<�<�7Ò÷÷ ñ ß3Ýå à!2 ×!2Ñ!2°:Ó!>€Ð	Ó >Ø$&§I¡I€Ð	!Ó -Ø×*Ñ*×/Ñ/°6Ñ9€ˆ+Ó 9áˆBÐ"Ó#Òk¨×(:Ñ(:×(?Ñ(?À9Ñ(LÒkÐQT×QaÑQaÐdkÑQkð ˜+ó ð ˆ%�K�"—+‘+˜cÑ"Ñ" R§[¡[°Ñ%7Ñ7¸%Ñ?À#ÑEÈÈW×M_ÑM_ÑH`Ñ`ÐcgÑgð �ió ð  % S¨# X™Ð �9Ó .ð &7Ð ˜
Ó 6à&)Ð �|Ó )Ø')Ð ˜*Ó )à%)Ð �lÓ )àŸY™Y¨¯©Ñ3±g¸bÀ,ÐPQÓ6RÑRÑU\Ð]_ÐamÐopÓUqÑq€�
Ó qØ!Ÿ{™{©W°R¸ÈÓ-JÑJÉWÐUWÐYeÐghÓMiÑiÐ �*Ó ià4€ˆ|Ó 4Ù!& r¨2£Ð �,Ó .Ø€ˆjÓ Ø"#Ð �ZÓ #ô˜yŸ™ô ñ %=Ó$>Ð ˜EÓ >÷'ñ 'ñ< .Ó/Ð �EÓ /÷,6ñ ,6ñ^ 3Ó4Ð �5Ó 4à'€ˆjÓ 'Ø"€
ˆJÓ "Ù25³%Ð Ð/Ó 7÷J!ñ J!ôZ,�ô ,ôˆZô ñ �Ô÷2ð 2ó ð2ñ .Ó/Ð �EÓ /ô:˜'×,Ñ,ô :ñz �Ô÷#ð #ó ð#ô$I2˜ô I2ôXT
$Ð0õ T
$ónð> )Øð )Ø8ð )ØCHð )ØQTð )àó )óF^ô	2�Zô 	2ð*Øð*Ø.ð*Ø7:ð*àó*ðZ?Øð?Ø$5ð?Ø>Að?à	ó?ð."Ø
ð"Ø"3ð"Ø<?ð"à	ó"óJ-ó
ó`ó:ó
ð4 ‡<�<�7Òóó$	óóó
ð @Aõ óð ò1ó ð1ð, ò.ó ð.ó+ó
,ó
ñ$ Ð(Ô )Ù Ð'Ô (Ù Ð(Ô )Ù �]Ô #ÙØ€C×ÒÐ&Ô'Ù
ˆ2Ð!Ô"Ø€B×ÒÐ'FÕGð Øð�r\   