+
    i[  c                   s`   ^ RI t^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHt  ^ RIHt . R@Ot]P(                  t]P,                  t]P0                  t]P4                  t]P8                  t]P<                  t]P>                  t]P@                  t ]PB                  t!]PD                  t" ]PF                  t#Rt$]PK                  R4        ]PN                  t(]PR                  t* ]PV                  t,]PZ                  t-A ^ RIH.t/ Rs1Rs2R t3R t4R t5R t6R t7R t8]t9R t+ ! R R4      t:]:t; ! R R4      t< ! R R4      t= ! R R	]=4      t> ! R  R4      t? ! R! R4      t@ ! R" R]A4      tB]! ^4      P                  tDR# tE]+! 4       sF/ tG/ tH]
! 4       tI ! R$ R
4      tJ ^ R%IHKsLHMtN \        tSR+ tT ! R, R]J4      tU ! R- R.]J4      tV]/! 4       tW ! R/ R04      tX ! R1 R2]J4      tYR3 tZR4 t[R5 t\R6 t]R7 t^R8 t_. t`RsaR9 tb^ R:IHctc ]V! 4       sdR; tR< teR= tf]g! ]R>4      '       d   ]P                  ! ]fR?7       R# R#   ] d    ^ RIHt  ELi ; i  ]& d    Rt$ ELi ; i  ]& d    Rt( ELi ; i  ]& d    Rt, ELi ; i  ] d    ^ RI0H/t/  ELi ; i  ] d     ^ R&IOHPtQ ^ R'IHRtR ]R! RR(4      tMR) tNR* sL ELi ; i)A    N)	monotonic)WeakSet)count)deque	ConditionEvent	SemaphoreBoundedSemaphoreThreadBarrierBrokenBarrierErrorTimerExceptHookArgsTget_native_idF)_local)localc                 
    V s R # N_profile_hookfunc   &"/usr/lib64/python3.14/threading.py
setprofiler   L   s	     M    c                 H    \        V 4       \        P                  ! V 4       R # r   )r   _sysZ_setprofileallthreadsr   r   r   setprofile_all_threadsr   U   s     tt$r   c                      \         # r   r    r   r   
getprofiler    _   s    r   c                 r   r   _trace_hookr   r   r   settracer#   c   s	     Kr   c                 r   r   )r#   r   Z_settraceallthreadsr   r   r   settrace_all_threadsr$   l   s     TNT"r   c                  r   r   r!   r   r   r   gettracer%   v   s    r   c                  s    V '       g	   V'       d   ^ RI pVP                  R\        ^R7       \        f   \	        V / VB # \        V / VB # )r    NzDPassing arguments to RLock is deprecated and will be removed in 3.15Z
stacklevel)warningswarnDeprecationWarning_CRLock_PyRLock)argskwargsr'   s   *, r   RLockr.   ~   sM     vR 	 	

 (((D#F##r   c                   sj   a  ] tR t^t o R tR tR tRR lt]tR t	R t
R tR tR	 tR
 tR tRtV tR# )_RLockc                s@    \        4       V n        R V n        ^ V n        R # r   )_allocate_lock_block_owner_countselfr   r   __init__Z_RLock.__init__   s    $&r   c                sB   V P                   p \        V,          P                  pR V P	                  4       '       d   RMRV P
                  P                  V P
                  P                  VV P                  \        \        V 4      4      3,          #   \         d     Lxi ; i)z)<%s %s.%s object owner=%r count=%d at %s>lockedZunlocked)r2   _activenameKeyErrorr7   	__class__
__module____qualname__r3   Zhexid)r5   owner   & r   __repr__Z_RLock.__repr__   s    	EN''E ;H:NN%%NN''KK4M>
 
 	
  		s   B BBc                sV    V P                   P                  4        R V n        ^ V n        R # r   )r1   _at_fork_reinitr2   r3   r4   r   r   rB   Z_RLock._at_fork_reinit   s     ##%r   c                s    \        4       pV P                  V8X  d   V ;P                  ^,          un        ^# V P                  P	                  W4      pV'       d   W0n        ^V n        V#    )	get_identr2   r3   r1   acquire)r5   blockingtimeoutZmerc   &&&  r   rF   Z_RLock.acquire   sP    4 [;;"KK1K[[  3KDK	r   c                s    V P                   \        4       8w  d   \        R 4      hV P                  ^,
          ;V n        pV'       g$   RV n         V P                  P                  4        R# R# )cannot release un-acquired lockN)r2   rE   RuntimeErrorr3   r1   release)r5   r   r@   r   rM   Z_RLock.release   sQ      ;;)+%@AA"kkAo-eDKKK! r   c                &    V P                  4        R # r   rM   r5   ZtZvZtb   &&&&r   __exit__Z_RLock.__exit__       r   c                6    V P                   P                  4       # r   )r1   r7   r4   r   r   r7   Z_RLock.locked   s    {{!!##r   c                sX    V P                   P                  4        Vw  V n        V n        R # r   )r1   rF   r3   r2   )r5   Zstate   &&r   _acquire_restoreZ_RLock._acquire_restore   s     #( T[r   c                s    V P                   ^ 8X  d   \        R4      hV P                   p^ V n         V P                  pRV n        V P                  P	                  4        W3# )r    rK   N)r3   rL   r2   r1   rM   )r5   r   r?      &  r   _release_saveZ_RLock._release_save   sR    ;;!@AA~r   c                s0    V P                   \        4       8H  # r   )r2   rE   r4   r   r   	_is_ownedZ_RLock._is_owned	  s    {{ik))r   c                sP    V P                   \        4       8w  d   ^ # V P                  # r    )r2   rE   r3   r4   r   r   _recursion_countZ_RLock._recursion_count  s    ;;)+%{{r   )r1   r3   r2   N)T)__name__r<   r=   __firstlineno__r6   rA   rB   rF   	__enter__rM   rR   r7   rV   rX   rY   r[   __static_attributes____classdictcell____classdict__   @r   r/   r/      sI     


"H I".$)*
 r   r/   c                   s~   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
 tRR ltRR ltRR ltR tR tRtV tR# )r   i  Nc                s   Vf   \        4       pWn        VP                  V n        VP                  V n        VP                  V n        \        VR4      '       d   VP                  V n        \        VR4      '       d   VP                  V n        \        VR4      '       d   VP                  V n        \        4       V n
        R # )NrX   rV   rY   )r.   _lockrF   rM   r7   hasattrrX   rV   rY   _deque_waiters)r5   ZlockrU   r   r6   ZCondition.__init__"  s    <7D
||||kk 4))!%!3!3D4+,,$($9$9D!4%%!^^DNr   c                sn    V P                   P                  4        V P                  P                  4        R # r   )re   rB   rh   clearr4   r   r   rB   ZCondition._at_fork_reinit5  s"    

""$r   c                rT   r   )re   r_   r4   r   r   r_   ZCondition.__enter__9  s    zz##%%r   c                s6    V P                   P                  ! V!  # r   )re   rR   )r5   r,   s   &*r   rR   ZCondition.__exit__<  s    zz""D))r   c                sR    R V P                   \        V P                  4      3,          # )z<Condition(%s, %d)>)re   lenrh   r4   r   r   rA   ZCondition.__repr__?  s    $

C4F'GGGr   c                :    V P                   P                  4        R # r   )re   rM   r4   r   r   rX   ZCondition._release_saveB      

r   c                rk   r   )re   rF   )r5   ZxrU   r   rV   ZCondition._acquire_restoreE  rl   r   c                s    V P                   P                  R 4      '       d   V P                   P                  4        R # R# )FT)re   rF   rM   r4   r   r   rY   ZCondition._is_ownedH  s/     ::e$$JJ r   c                s   V P                  4       '       g   \        R 4      h\        4       pVP                  4        V P                  P                  V4       V P                  4       pRp Vf   VP                  4        RpM+V^ 8  d   VP                  RV4      pMVP                  R4      pTV P                  V4       V'       g    V P                  P                  V4       # #   \         d     # i ; i  T P                  T4       T'       g/    T P                  P                  T4       i   \         d     i i ; ii ; i)zcannot wait on un-acquired lockFT)
rY   rL   r0   rF   rh   appendrX   rV   remove
ValueError)r5   rH   waiterZsaved_stateZgotits   &&   r   waitZCondition.waitQ  s   . ~~@AA!V$((*	 Q;"NN49E"NN51E!!+.MM((0  " 	 !!+.MM((0!  sC   *AC5 C$$C21C25D>D,+D>,D:7D>9D::D>c                s    R pTpV! 4       pV'       gP   Ve2   Vf   \        4       V,           pMV\        4       ,
          pV^ 8:  d    V# V P                  V4       V! 4       pKW  V# r   )_timerq   )r5   Z	predicaterH   endtimeZwaittimeZresults   &&&   r   wait_forZCondition.wait_for  sf     #?#g0G&0H1}  IIh[Fr   c                s6   V P                  4       '       g   \        R 4      hV P                  pV'       dA   V^ 8  d8   V^ ,          p VP                  4        V^,          p VP	                  V4       KF  R# R#   \         d     L%i ; i  \
         d     Ki  i ; i)z!cannot notify on un-acquired lockN)rY   rL   rh   rM   rn   ro   )r5   nZwaitersrp   s   &&  r   notifyZCondition.notify  s     ~~BCC--!a%QZF	  Qv&  g   
   s$   A8 !B	 8BB	BBc                sN    V P                  \        V P                  4      4       R # r   )rv   rj   rh   r4   r   r   
notify_allZCondition.notify_all  s     	C&'r   c                s^    ^ RI pVP                  R\        ^R7       V P                  4        R# )r    Nz3notifyAll() is deprecated, use notify_all() insteadr&   )r'   r(   r)   rw   r5   r'   r@   r   	notifyAllZCondition.notifyAll  s*     	K(Q 	 	8r   )rV   rY   re   rX   rh   rF   r7   rM   r   rC   )r]   r<   r=   r^   r6   rB   r_   rR   rA   rX   rV   rY   rq   rt   rv   rw   ry   r`   ra   rb   rd   r   r   r     sM     !&&*H.`.<(	 	r   c                   sN   a  ] tR tRt o R	R ltR tR
R lt]tR	R ltR t	Rt
V tR# )r   i  c                sf    V^ 8  d   \        R4      h\        \        4       4      V n        Wn        R# )r    z$semaphore initial value must be >= 0N)ro   r   Lock_cond_value)r5   valuerU   r   r6   ZSemaphore.__init__  s(    19CDDtv&
r   c           	     s    V P                   pR VP                   RVP                   R\        V 4      R RV P                   R2	# )<. at #x: value=>)r;   r<   r=   r>   r|   r5   clsr@   r   rA   ZSemaphore.__repr__  sK    nnCNN#1S%5%5$6d2d8B- H++a) 	*r   Nc                s   V'       g   Ve   \        R4      hRpR pV P                  ;_uu_ 4        V P                  ^ 8X  dZ   V'       g   MkVe0   Vf   \        4       V,           pMV\        4       ,
          pV^ 8:  d   M8V P                  P	                  V4       Kj  V ;P                  ^,          un        RpR R R 4       V#   + '       g   i     T# ; i)Nz.can't specify timeout for non-blocking acquireFT)ro   r{   r|   rr   rq   )r5   rG   rH   rI   rs   rJ   r   rF   ZSemaphore.acquire  s    0 G/MNNZZZ++"&"''G"3")EG"3"a<!

(q   	 Z 	s   C 
A,C  C	c                s    V^8  d   \        R4      hV P                  ;_uu_ 4        V ;P                  V,          un        V P                  P                  V4       RRR4       R#   + '       g   i     R# ; i)rD   n must be one or moreN)ro   r{   r|   rv   r5   ru   rU   r   rM   ZSemaphore.release  sL     q5455ZZZKK1KJJa  ZZZs   5A&&A7	c                rN   r   rO   rP   rQ   r   rR   ZSemaphore.__exit__  rS   r   )r{   r|   rC   TN)r]   r<   r=   r^   r6   rA   rF   r_   rM   rR   r`   ra   rb   rd   r   r   r     s+     *
+Z I! r   c                   sF   a a ] tR tRt oRV 3R lltR tRR ltRtVtV ;t	# )r   i"  c                s2   < \         SV `  V4       Wn        R # r   )Zsuperr6   _initial_value)r5   r}   r;   s   &&r   r6   ZBoundedSemaphore.__init__3  s    #r   c                s    V P                   pR VP                   RVP                   R\        V 4      R RV P                   RV P
                   R2# )r~   r   r   r   r   /r   )r;   r<   r=   r>   r|   r   r   r@   r   rA   ZBoundedSemaphore.__repr__7  sY    nnCNN#1S%5%5$6d2d8B- H++a(;(;'<A? 	@r   c                sN   V^8  d   \        R4      hV P                  ;_uu_ 4        V P                  V,           V P                  8  d   \        R4      hV ;P                  V,          un        V P                  P	                  V4       RRR4       R#   + '       g   i     R# ; i)rD   r   z!Semaphore released too many timesN)ro   r{   r|   r   rv   r   rU   r   rM   ZBoundedSemaphore.release<  sn     q5455ZZZ{{Q!4!44 !DEEKK1KJJa 	 ZZZs   A"BB$	)r   rC   )
r]   r<   r=   r^   r6   rA   rM   r`   ra   Z__classcell__)r;   rc   s   @@r   r   r   "  s     "$@
! !r   c                   sT   a  ] tR tRt o R tR tR tR tR tR t	R t
RR
 ltRtV tR	# )r   iO  c                sD    \        \        4       4      V n        R V n        R# FN)r   rz   r{   _flagr4   r   r   r6   ZEvent.__init__Z  s    tv&

r   c           	     s    V P                   pV P                  '       d   R MRpRVP                   RVP                   R\	        V 4      R RV R2	# )setZunsetr~   r   r   r   z: r   )r;   r   r<   r=   r>   )r5   r   statusrW   r   rA   ZEvent.__repr__^  sN    nn***'3>>"!C$4$4#5T"T(2bPQRRr   c                rk   r   )r{   rB   r4   r   r   rB   ZEvent._at_fork_reinitc  s    

""$r   c                    V P                   # r   )r   r4   r   r   is_setZEvent.is_setg  s    zzr   c                sZ    ^ RI pVP                  R\        ^R7       V P                  4       # )r    Nz+isSet() is deprecated, use is_set() insteadr&   )r'   r(   r)   r   rx   r@   r   isSetZEvent.isSetk  s,     	C(Q 	 	8{{}r   c                s    V P                   ;_uu_ 4        R V n        V P                   P                  4        RRR4       R#   + '       g   i     R# ; ir   )r{   r   rw   r4   r   r   r   Z	Event.setv  s0     ZZZDJJJ!!# ZZZs   "AA	c                sv    V P                   ;_uu_ 4        R V n        RRR4       R#   + '       g   i     R# ; ir   r{   r   r4   r   r   ri   ZEvent.clear  s      ZZZDJ ZZZs   '8	Nc                s    V P                   ;_uu_ 4        V P                  pV'       g   V P                   P                  V4      pVuuR R R 4       #   + '       g   i     R # ; ir   )r{   r   rq   )r5   rH   Zsignaled   && r   rq   Z
Event.wait  s:      ZZZzzH::??73	 ZZZs   1AA"	r   r   )r]   r<   r=   r^   r6   rA   rB   r   r   r   ri   rq   r`   ra   rb   rd   r   r   r   O  s3     S
%		$ r   c                   s   a  ] tR tRt o RR ltR tRR ltR tR tR t	R	 t
R
 tR tR t]R 4       t]R 4       t]R 4       tRtV tR# )r
   i  Nc                s    V^8  d   \        R4      h\        \        4       4      V n        W n        W0n        Wn        ^ V n        ^ V n        R# )rD   zparties must be >= 1N)	ro   r   rz   r{   _action_timeout_parties_stater3   )r5   partiesZactionrH   rQ   r   r6   ZBarrier.__init__  sB     Q;344tv&
r   c                s   V P                   pV P                  '       d+   R VP                   RVP                   R\	        V 4      R R2# R VP                   RVP                   R\	        V 4      R RV P
                   RV P                   R2# )r~   r   r   r   z	: broken>z
: waiters=r   r   )r;   brokenr<   r=   r>   	n_waitingr   r   r@   r   rA   ZBarrier.__repr__  s    nn;;;s~~&a(8(8'9bhr])TTCNN#1S%5%5$6d2d8B- H NN+1T\\N!= 	>r   c                s   Vf   V P                   pV P                  ;_uu_ 4        V P                  4        V P                  pV ;P                  ^,          un         V^,           V P                  8X  d   V P                  4        MV P                  V4       VV ;P                  ^,          un        V P                  4        uuR R R 4       #   T ;P                  ^,          un        T P                  4        i ; i  + '       g   i     R # ; ir   )r   r{   _enterr3   r   _release_wait_exit)r5   rH   Zindexr   r   rq   ZBarrier.wait  s     ?mmGZZZKKMKKEKK1K19-MMO JJw'q 

 Z q 

 ZZs#   6C9;C)C9+C66C99D
	c                s    V P                   R9   d   V P                  P                  4        K-  V P                   ^ 8  d   \        hR# )rD   Nr\   rD   )r   r{   rq   r   r4   r   r   r   ZBarrier._enter  s2    kkW$JJOO;;?$$ r   c                s     V P                   '       d   V P                  4        ^V n        V P                  P                  4        R#    T P	                  4        h ; i)rD   N)r   r   r{   rw   _breakr4   r   r   r   ZBarrier._release  sC    		|||DKJJ!!#	KKMs   A 1A Ac                s   a  S P                   P                  V 3R  lV4      '       g   S P                  4        \        hS P                  ^ 8  d   \        hR# )c                  s"   < S P                   ^ 8g  # rZ   r   r4   s   r   <lambda>ZBarrier._wait.<locals>.<lambda>  s    DKK1,<r   N)r{   rt   r   r   r   r5   rH   s   f&r   r   ZBarrier._wait  s@    zz""#<gFFKKM$$;;?$$ r   c                s    V P                   ^ 8X  d7   V P                  R9   d$   ^ V n        V P                  P                  4        R# R# R# )r    Nr   )r3   r   r{   rw   r4   r   r   r   ZBarrier._exit  s;    ;;!{{g%

%%' & r   c                s0   V P                   ;_uu_ 4        V P                  ^ 8  d3   V P                  ^ 8X  d	   RV n        M V P                  R8X  d   RV n        M^ V n        V P                   P                  4        RRR4       R#   + '       g   i     R# ; i)r    Nr\   )r{   r3   r   rw   r4   r   r   resetZBarrier.reset  sd     ZZZ{{Q;;!#"$DK[[B& #%DKJJ!!# ZZZs   A%BB	c                s    V P                   ;_uu_ 4        V P                  4        R R R 4       R #   + '       g   i     R # ; ir   )r{   r   r4   r   r   abortZBarrier.abort,  s"     ZZZKKM ZZZs	   0A	c                sH    RV n         V P                  P                  4        R# )   Nr   )r   r{   rw   r4   r   r   r   ZBarrier._break6  s     

r   c                r   r   )r   r4   r   r   r   ZBarrier.parties<  s     }}r   c                s@    V P                   ^ 8X  d   V P                  # ^ # rZ   )r   r3   r4   r   r   r   ZBarrier.n_waitingA  s    
 ;;!;;r   c                s     V P                   R8H  # )r   r   r   r4   r   r   r   ZBarrier.brokenJ  s     {{b  r   )r   r{   r3   r   r   r   NNr   )r]   r<   r=   r^   r6   rA   rq   r   r   r   r   r   r   r   propertyr   r   r   r`   ra   rb   rd   r   r
   r
     ss     $>< 
 ($(      ! !r   c                   s    ] tR tRtRtR# )r   iP  r   N)r]   r<   r=   r^   r`   r   r   r   r   r   P  s    r   c                 s$    V \        4       ,          # r   )_counter)Zname_templater   r   _newnamer   V  s    8:%%r   c                   sJ  a  ] tR tRt o RtRRRRR/R lltRR ltR tR	 tR
 t	R t
R t]'       d   R tR tR tR tRR lt]R 4       t]P(                  R 4       t]R 4       t]'       d	   ]R 4       tR t]R 4       t]P(                  R 4       tR tR tR tR tRtV tR# ) r	   ie  FNdaemoncontextc               sh   Vf   / pV'       d   \        V4      pM)\        R4      pVe    VP                  pVRV R2,          pW n        W0n        W@n        WPn        Ve+   V'       d   \        4       '       g   \        R4      hW`n
        M\        4       P                  V n
        Wpn        R V n        \        '       d   R V n        \#        4       V n        \'        4       V n        RV n        \,        P.                  V n        \3        4       V n        \6        P9                  V 4       R #   \         d     Li ; i)Nz	Thread-%dz (Z)z4daemon threads are disabled in this (sub)interpreterT)strr   r]   AttributeError_target_name_args_kwargs_daemon_threads_allowedrL   	_daemoniccurrent_threadr   _context_ident_HAVE_THREAD_NATIVE_ID
_native_id_ThreadHandle_os_thread_handler   _started_initializedr   stderr_stderr_make_invoke_excepthook_invoke_excepthook	_danglingZadd)	r5   ZgroupZtargetr9   r,   r-   r   r   Ztarget_names	   &&&&&&$$ r   r6   ZThread.__init__p  s    @ >Ft9DK(D!"(//KbQ//D 

577"#YZZ#N+-44DN!!"DO!. {{"9";d1 & s   D# #D10D1c                s    V P                   P                  4        Ve'   Wn        \        '       d   V P	                  4        R # R # R # r   )r   rB   r   r   _set_native_idr5   	new_identrU   r   _after_forkZThread._after_fork  s9    %%' #K%%##% &
 r   c                sn   R pV P                   P                  4       '       d   RpV P                  P                  4       '       d   RpV P                  '       d
   VR,          pV P
                  e   VRV P
                  ,          ,          pRV P                  P                  : RV P                  : RV: R2# )	ZinitialZstartedZstoppedz daemonz %sr~   Z(z, z)>)	r   r   r   is_doner   r   r;   r]   r   )r5   r   r@   r   rA   ZThread.__repr__  s    ==!!F!!))++F>>>iF;;"edkk))F!%!8!8$**fMMr   c                s   V P                   '       g   \        R 4      hV P                  P                  4       '       d   \        R4      h\        ;_uu_ 4        V \
        V &   RRR4       V P                  fV   \        P                  P                  '       d   \        P                  ! 4       V n        M\        P                  ! 4       V n         \        V P                  V P                  V P                   R7       T P                  P%                  4        R#   + '       g   i     L; i  \"         d4    \        ;_uu_ 4        \
        T  RRR4       h   + '       g   i     h ; ii ; i)zthread.__init__() not calledz threads can only be started onceN)Zhandler   )r   rL   r   r   _active_limbo_lock_limbor   r   ZflagsZthread_inherit_context_contextvarsZcopy_contextZContext_start_joinable_thread
_bootstrapr   r   	Exceptionrq   r4   r   r   startZThread.start  s        =>>==!!ABBF4L   == zz000 , 9 9 ; !- 4 4 6	"4??4;Q;Q*.++7 	)     	##4L $ $#	s0   
D,D( D%	(E&E		E&E"	E&c                s     V P                   e'   V P                   ! V P                  / V P                  B  V = V =V =R #   T = T =T =i ; ir   )r   r   r   r4   r   r   runZ
Thread.run  sG    	7||'djj9DLL9 dj$,dj$,s	   4> Ac                sn     V P                  4        R #    T P                  '       d   \        f    R # h ; ir   )_bootstrap_innerr   r   r4   r   r   r   ZThread._bootstrap  s-    	!!#	~~~$,s    44c                $    \        4       V n        R # r   )rE   r   r4   r   r   
_set_identZThread._set_ident  s    kr   c                r   r   )r   r   r4   r   r   r   ZThread._set_native_id  s    +oDOr   c                s    \         e   V P                  '       g   R #  \        V P                  4       R #   \         d     R # i ; ir   )	_set_namer   ZOSErrorr4   r   r   _set_os_nameZThread._set_os_name!  s6    DJJJ	djj! 		s   5 AAc                s    V P                  4        \        '       d   V P                  4        V P                  4        V P                  P                  4        \        ;_uu_ 4        V \        V P                  &   \        V  R R R 4       \        '       d   \        P                  ! \        4       \        '       d   \        P                  ! \        4        V P                  P!                  V P                   4       T P%                  4        R #   + '       g   i     L; i   T P#                  T 4        L:; i  T P%                  4        i ; ir   )r   r   r   r   r   r   r   r8   r   r   r"   r   r#   r   r   r   r   r   _deleter4   r   r   r   ZThread._bootstrap_inner)  s    	OO%%##%MM##'+$4L $ {k*}..!!$((+ LLN $#.''-LLNsG   D8 AD8 &DD8 %D8 ;D8 %D  D	D8  D53D8 8E
c                sz    \         ;_uu_ 4        \        \        4        R R R 4       R #   + '       g   i     R # ; ir   )r   r8   rE   r4   r   r   r   ZThread._delete@  s!    	$  s   ):	c                s   V P                   '       g   \        R 4      hV P                  P                  4       '       g   \        R4      hV \	        4       J d   \        R4      hVe   \        V^ 4      pV P                  P                  V4       R# )Thread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadN)r   rL   r   r   r   Zmaxr   joinr   rU   r   r   ZThread.joinI  sy    0    =>>}}##%%HII>##;<< '1oG##G,r   c                r   r   )r   r4   r   r   r9   Thread.nameo  s     zzr   c                s|    \        V4      V n        \        4       V P                  8X  d   V P	                  4        R # R # r   )r   r   rE   r   r   )r5   r9   rU   r   r9   r   z  s.     Y
;$++% &r   c                r   r   )r   r4   r   r   identZThread.ident  s     {{r   c                r   r   )r   r4   r   r   	native_idZThread.native_id  s     ??"r   c                s    V P                   P                  4       ;'       d     V P                  P                  4       '       * # r   )r   r   r   r   r4   r   r   is_aliveZThread.is_alive  s1     }}##%NNd.D.D.L.L.N*NNr   c                r   r   )r   r4   r   r   r   Thread.daemon  s     ~~r   c                s    V P                   '       g   \        R 4      hV'       d   \        4       '       g   \        R4      hV P                  P	                  4       '       d   \        R4      hWn        R# )r   z/daemon threads are disabled in this interpreterz)cannot set daemon status of active threadN)r   rL   r   r   r   r   )r5   daemonicrU   r   r   r     sV       =>>355PQQ==!!JKK!r   c                R    ^ RI pVP                  R\        ^R7       V P                  # )r    Nz:isDaemon() is deprecated, get the daemon attribute insteadr&   r'   r(   r)   r   rx   r@   r   isDaemonZThread.isDaemon  s*     	R(Q 	 	8{{r   c                J    ^ RI pVP                  R\        ^R7       Wn        R# )r    Nz;setDaemon() is deprecated, set the daemon attribute insteadr&   r   )r5   r   r'   r   r   	setDaemonZThread.setDaemon  s%     	S(Q 	 	8r   c                r   )r    Nz7getName() is deprecated, get the name attribute insteadr&   r'   r(   r)   r9   rx   r@   r   getNameZThread.getName  s*     	O(Q 	 	8yyr   c                r   )r    Nz7setName() is deprecated, set the name attribute insteadr&   r   )r5   r9   r'   r   r   setNameZThread.setName  s%     	O(Q 	 	8	r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   )NNNr   Nr   )r]   r<   r=   r^   r   r6   r   rA   r   r   r   r   r   r   r   r   r   r   r   r9   Zsetterr   r   r   r   r   r   r   r   r`   ra   rb   rd   r   r	   r	   e  s     LB15B?CBHN$L7"(" 	..%$-L   
[[    	 	 		# 
	#	O   ]]" "				 	r   )_excepthook_ExceptHookArgs)print_exception)
namedtuplez'exc_type exc_value exc_traceback threadc                 s    \        V !  # r   )r   )r,   r   r   r   r     s    %%r   c                s   V P                   \        8X  d   R # \        e$   \        P                  e   \        P                  pM-V P                  e   V P                  P
                  pVf   R # MR # V P                  e   V P                  P                  pM
\        4       p\        RV R2VRR7       \        V P                   V P                  V P                  VR7       VP                  4        R # )NzException in thread Z:Tfileflush)r   )Zexc_typeZ
SystemExitr   r   threadr   r9   rE   print_print_exceptionZ	exc_valueZexc_tracebackr   )r,   r   r9   s   "  r   
excepthookr     s     ==J& 7[[F[[$[[((F~   ;;";;##D;D$TF!,	'8J8J$	&r   c                  s   aaaaa \         o\        P                   oSf   \        R4      hSf   \        R4      h\        P                  o\        o\        oVVVVV3R lp V # )Nzthreading.excepthook is Nonezsys.excepthook is Nonec                 sp  <  \         pVf   Sp\        . S
! 4       OV N4      pV! V4       R pR #   \         du   pRTn        ?Se   SP                  e   SP                  pMT P
                  pS! RTRR7       Se   SP                   e   SP                   pMS	pT! S
! 4       !    R p?L~R p?ii ; i  R pi ; i)NTz"Exception in threading.excepthook:r   )r   r   r   Z__suppress_context__r   r   )r   Zhookr,   Zexcr   Zsys_excepthooklocal_print	local_sysold_excepthookold_sys_excepthooksys_exc_infos   &     r   invoke_excepthookZ2_make_invoke_excepthook.<locals>.invoke_excepthook,  s    	D|%!";LN";F";<DJ* D)  	,'+C$$)9)9)E"))<#41 $)=)=)I!*!5!5!3LN+#	,( Ds'   (/ B.A*B)$B1 )B..B1 1B5)r   r   rL   Zexc_infor   )r   r   r   r   r   r   s    @@@@@r   r   r     s^    
  N9::!344==LKI @ r   c                   s6   a  ] tR tRt o RR ltR tR tRtV tR# )r   iQ  Nc                s    \         P                  V 4       Wn        W n        Ve   TM. V n        Ve   TM/ V n        \        4       V n        R # r   )r	   r6   intervalfunctionr,   r-   r   finished)r5   r   r   r,   r-   s   &&&&&r   r6   ZTimer.__init__Z  s=       ,D"	 & 2fr   c                rk   r   )r   r   r4   r   r   cancelZTimer.cancelb  s    r   c                s   V P                   P                  V P                  4       V P                   P                  4       '       g'   V P                  ! V P
                  / V P                  B  V P                   P                  4        R # r   )r   rq   r   r   r   r,   r-   r   r4   r   r   r   Z	Timer.runf  sT    4==)}}##%%MM49944r   )r,   r   r   r   r-   r   )	r]   r<   r=   r^   r6   r   r   r`   ra   rb   rd   r   r   r   Q  s       r   c                   s&   a  ] tR tRt o R tRtV tR# )_MainThreadio  c                sp   \         P                  V R RR7       V P                  P                  4        \	        4       V n        \        V P
                  4      V n        \        '       d   V P                  4        \        ;_uu_ 4        V \        V P
                  &   RRR4       R#   + '       g   i     R# ; i)
MainThreadFr9   r   N)r	   r6   r   r   _get_main_thread_identr   _make_thread_handler   r   r   r   r8   r4   r   r   r6   Z_MainThread.__init__q  st    <>,.!4T[[!A!!!#'GDKK   s   B$$B5	)r   r   N)r]   r<   r=   r^   r6   r`   ra   rb   rd   r   r   r   o  s     ( (r   r   c                   s4   a  ] tR tRt o R t]]3R ltRtV t	R# )_DeleteDummyThreadOnDeli  c                sJ    Wn         VP                  V n        V \        n        R # r   )_dummy_threadr   _tident_thread_local_infoZ_track_dummy_thread_ref)r5   Zdummy_threadrU   r   r6   Z _DeleteDummyThreadOnDel.__init__  s     )#)) 6:2r   c                s    T;_uu_ 4        VP                  V P                  4      V P                  J d   VP                  V P                  R 4       R R R 4       R #   + '       g   i     R # ; ir   )Zgetr  r  Zpop)r5   r   r8   s   &&&r   __del__Z_DeleteDummyThreadOnDel.__del__  sD    {{4<<(D,>,>>DLL$/  s   AAA,	)r  r  N)
r]   r<   r=   r^   r6   r   r8   r  r`   ra   rb   rd   r   r  r    s     
	: *<W 0 0r   r  c                   s@   a  ] tR tRt o R tR tRR ltRR ltRtV t	R# )	_DummyThreadi  c                s   \         P                  V \        R 4      \        4       R7       V P                  P                  4        V P                  4        \        V P                  4      V n	        \        '       d   V P                  4        \        ;_uu_ 4        V \        V P                  &   RRR4       \        V 4       R#   + '       g   i     L; i)zDummy-%dr   N)r	   r6   r   r   r   r   r   r   r   r   r   r   r   r8   r  r4   r   r   r6   Z_DummyThread.__init__  s    8J#768 	 	:!4T[[!A!!!#'GDKK   %  s   CC	c                s    V P                   P                  4       '       g#   V P                  P                  4       '       d   R # \	        R4      h)Tzthread is not alive)r   r   r   r   rL   r4   r   r   r   Z_DummyThread.is_alive  s8    %%--//DMM4H4H4J4J011r   Nc                s    \        R 4      h)zcannot join a dummy thread)rL   r   rU   r   r   Z_DummyThread.join  s    788r   c                sl    Ve   \         V n        RV n        RV n        \        P                  WR7       R # )Nr   Fr   )r   r;   r   r   r	   r   r   rU   r   r   Z_DummyThread._after_fork  s.     (DN%DJ"DN45r   )r;   r   r   r   r   )
r]   r<   r=   r^   r6   r   r   r   r`   ra   rb   rd   r   r  r    s     
&2
96 6r   r  c                  sd     \         \        4       ,          #   \         d    \        4       u # i ; ir   )r8   rE   r:   r  r   r   r   r   r     s+    y{## ~s    //c                  N    ^ RI p V P                  R\        ^R7       \        4       # )r    Nz;currentThread() is deprecated, use current_thread() insteadr&   )r'   r(   r)   r   r'       r   currentThreadr    s)     MMO$  4r   c                  s    \         ;_uu_ 4        \        \        4      \        \        4      ,           uuR R R 4       #   + '       g   i     R # ; ir   )r   rj   r8   r   r   r   r   active_countr    s)     
	7|c&k) 
			s	   #=A	c                  r  )r    Nz7activeCount() is deprecated, use active_count() insteadr&   )r'   r(   r)   r  r	  r
  r   activeCountr    s(     MMK$  4>r   c                  s    \        \        P                  4       4      \        \        P                  4       4      ,           # r   )listr8   valuesr   r   r   r   
_enumerater    s$     !D$999r   c                  s    \         ;_uu_ 4        \        \        P                  4       4      \        \        P                  4       4      ,           uuR R R 4       #   + '       g   i     R # ; ir   )r   r  r8   r  r   r   r   r   	enumerater    s8     
	GNN$%V]]_(== 
			s   ?AA*	c                 sp   a aa \         '       d   \        R 4      h\        P                  VV V3R l4       R# )z$can't register atexit after shutdownc                  s   < S! S / SB # r   r   )argr   r-   s   r   r   Z"_register_atexit.<locals>.<lambda>  s    dC&:6&:r   N)_SHUTTING_DOWNrL   _threading_atexitsrm   )r   r  r-   s   fjlr   _register_atexitr    s%     ~ABB:;r   )
stack_sizec                  s    \         P                  P                  4       '       d   \        4       '       d   R # Rs\        \        4       F
  p V ! 4        K  	  \        4       '       d   \         P                  P                  4        \        4        R # )NT)	_main_threadr   r   _is_main_interpreterr  Zreversedr  Z	_set_done_thread_shutdown)Zatexit_callr
  r   	_shutdownr    sh     %%--//4H4J4J N   23 4 &&002 r   c                  r   r   )r  r   r   r   main_threadr  2  s
     r   c                  s$   \        4       s/ p  \        \        4       ,          pVs\        ;_uu_ 4        \        \        4       4      pVP                  \        4       V F:  pW1J d#   \        4       pVP                  VR 7       W0V&   K*  VP                  4        K<  	  \        P                  4        \        P                  4        \        P                  V 4       RRR4       R#   \         d    \        4       p Li ; i  + '       g   i     R# ; i)r  N)r.   r   r8   rE   r:   r   r  r   r  Zupdater   r   r   ri   )Z
new_activeZcurrentZthreadsr   r   s        r   r   r   <  s      J )+& L		 jl#y!F  !""U"3$*5! ""$  	z"' 
	    -	  
		s   C# B&C>#C;:C;>D	register_at_fork)Zafter_in_child)rE   r  r   r   r  r  TIMEOUT_MAXr   rz   r.   r   r   r	   r
   r   r   ThreadErrorr   r#   r   r  r   r   r%   r    r   r$   )iZosZ_osZsysr   Z_threadr   Ztimer   rr   Z_weakrefsetr   Z	itertoolsr   r3   Z_collectionsr   rg   ZImportErrorZcollectionsZ__all__Zstart_joinable_threadr   Zdaemon_threads_allowedr   Zallocate_lockr0   ZLockTypeZ	_LockTyper  r  r   r   rE   r   r  r   r   rm   r   Zset_namer   Zerrorr  r.   r*   r  r   r   Z_threading_localr   r"   r   r   r    r#   r$   r%   rz   r/   r+   r   r   r   r   r
   rL   r   Z__next__r   r   r   r8   r   r   r	   r   r   r   r   Z	tracebackr   r   r   Z__excepthook__r   r   r   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   rf   r  r   r   r   <module>r     s;       #  %,,< !66 !88 &&	$$ 11 %%	 77 33 #))M!NN?#  I mmmmG !!
'' %# $( B r rjT Tn*!y *!ZP P|`! `!F	 	
 !9& W 
	I	
B BJ+<\ 0jF <
(& 
( W 0 0:66 6@
	
*	:	>  <   }6*!Z 3"##4 $y2  ,++,H  #"#  I
  G  '&&'R%  (=& 13O&(sk   H/ 'I I  I# :I3 J /I ?I 	II	I I #	I0/I03JJ"J-,J-