python (3.11.7)

(root)/
lib/
python3.11/
__pycache__/
threading.cpython-311.opt-2.pyc

e	ddlZddlZddlZddlZddlmZddl	m
Z
ddlmZ
mZ	ddlmZn#e$r	ddlmZYnwxYwgdZejZejZejZejZ	ejZdZedn
#e$rd	ZYnwxYwej Z!	ej"Z#n
#e$rdZ#YnwxYwej$Z$[da%da&d
Z'dZ(dZ)d
Z*eZ+dZ"GddZ,e,Z-GddZ.GddZ/Gdde/Z0GddZ1GddZ2Gdde3Z4edj5Z6dZ7e"a8iZ9iZ:e
Z;ea<e=a>dZ?Gd d!Z@	dd"lmAaBmCZDn)#e$r!dd#lEmFZGdd$lmHZHeHd%d&ZCd'ZDd(aBYnwxYwtZId)ZJGd*d+e@ZKGd,d-e@ZLGd.d/e@ZMd0ZNd1ZOd2ZPd3ZQd4ZRd5ZSgZTd	aUd6ZVdd7lmWZWeLaXd8ZYd9ZZ	dd:lm[Z\n#e$r	dd;l]m\Z\YnwxYwd<Z^e_ed=rej`e^>dSdS)?N)	monotonic)WeakSet)islicecount)deque)	get_identactive_count	Conditioncurrent_thread	enumeratemain_threadTIMEOUT_MAXEventLockRLock	SemaphoreBoundedSemaphoreThreadBarrierBrokenBarrierErrorTimerThreadError
setprofilesettracelocal
stack_size
excepthookExceptHookArgsgettrace
getprofileT
get_native_idFc	|adSN
_profile_hookfuncs =/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/threading.pyrr:sMMMc	tSr#r$r)r(r r DsEr)c	|adSr#_trace_hookr&s r(rrHsKKKr)c	tSr#r-r+r)r(rrRs@r)cB	tt|i|St|i|Sr#)_CRLock_PyRLock)argskwargss  r(rrZs4((((D#F###r)cReZdZ	dZdZdZddZeZdZdZ	d	Z
d
ZdZdZ
d
S)_RLockcHt|_d|_d|_dSNr)_allocate_lock_block_owner_countselfs r(__init__z_RLock.__init__qs!$&&r)c
|j}	t|j}n#t$rYnwxYwd|jrdnd|jj|jj||j	tt|fzS)Nz)<%s %s.%s object owner=%r count=%d at %s>lockedunlocked)r;_activenameKeyErrorr:rA	__class__
__module____qualname__r<hexid)r>owners  r(__repr__z_RLock.__repr__vs	EN'EE			D	:**,,<HH*N%N'K4MM
>

	
s
))cT|jd|_d|_dSr8)r:_at_fork_reinitr;r<r=s r(rNz_RLock._at_fork_reinits(##%%%r)Tc	t}|j|kr|xjdz
c_dS|j||}|r||_d|_|SN)rr;r<r:acquire)r>blockingtimeoutmercs     r(rSz_RLock.acquiresf	2[[;"KK1KK1
[
 
 7
3
3
	DKDK	r)c	|jtkrtd|jdz
x|_}|s"d|_|jdSdS)Ncannot release un-acquired lockrR)r;rRuntimeErrorr<r:release)r>rs  r(r[z_RLock.releasesn	;)++%%@AAA"kAo-e	"DKK!!!!!	"	"r)c.|dSr#r[r>tvtbs    r(__exit__z_RLock.__exit__r)cV|j|\|_|_dSr#)r:rSr<r;)r>states  r(_acquire_restorez_RLock._acquire_restores(#( T[[[r)c|jdkrtd|j}d|_|j}d|_|j||fS)NrrY)r<rZr;r:r[)r>rrKs   r(
_release_savez_RLock._release_savesX;!@AAAu~r)c0|jtkSr#)r;rr=s r(	_is_ownedz_RLock._is_owneds{ikk))r)cB|jtkrdS|jSr8)r;rr<r=s r(_recursion_countz_RLock._recursion_counts ;)++%%1{r)NTrO)__name__rGrHr?rLrNrS	__enter__r[rbrfrhrjrlr+r)r(r6r6gs







""""HI""".
)))***
r)r6cfeZdZ	ddZdZdZdZdZdZdZ	d	Z
dd
ZddZdd
Z
dZdZdS)r
Nc>|t}||_|j|_|j|_	|j|_n#t
$rYnwxYw	|j|_n#t
$rYnwxYw	|j|_n#t
$rYnwxYwt|_	dSr#)
r_lockrSr[rhAttributeErrorrfrj_deque_waitersr>locks  r(r?zCondition.__init__s<77D
||	!%!3D			D		$($9D!!			D		!^DNN			D	


s3>
A
AA
A)(A)-A::
BBcj|j|jdSr#)rrrNruclearr=s r(rNzCondition._at_fork_reinits0
""$$$
r)c4|jSr#)rrror=s r(rozCondition.__enter__sz##%%%r)c |jj|Sr#)rrrb)r>r3s  r(rbzCondition.__exit__s"tz"D))r)c>d|jt|jfzS)Nz<Condition(%s, %d)>)rrlenrur=s r(rLzCondition.__repr__s$
C
4F4F'GGGr)c8|jdSr#)rrr[r=s r(rhzCondition._release_save
r)c8|jdSr#)rrrS)r>xs  r(rfzCondition._acquire_restorerr)cp|jdr|jdSdS)NFT)rrrSr[r=s r(rjzCondition._is_owneds::e$$	J   54r)c	|stdt}||j||}d}	||d}n2|dkr|d|}n|d}||||s,	|j|S#t$rYSwxYwS#|||s,	|j|w#t$rYwwxYwwxYw)Nzcannot wait on un-acquired lockFTr)
rjrZr9rSruappendrhrfremove
ValueError)r>rUwaitersaved_stategotits     r(waitzCondition.wait's	,~~	B@AAA!!
V$$$((**	   Q;;"NN499EE"NN511E!!+...
M((0000!D

!!+...
M((0000!D
sC8ADC77
DDE
!D<;E
<
E	E
E		E
c	d}|}|}|sO|,|t|z}n|tz
}|dkrn!|||}|O|Sr8)_timer)r>	predicaterUendtimewaittimeresults      r(wait_forzCondition.wait_forWs			!#?#gg0GG&0H1}}IIhY[[F		!
r)rRc<	|std|j}|rj|dkrf|d}	||dz}n#t$rYnwxYw	||n#t
$rYnwxYw|r|dkbdSdSdSdS)Nz!cannot notify on un-acquired lockrrR)rjrZrur[rr)r>nwaitersrs    r(notifyzCondition.notifyns	~~	DBCCC-	!a%%QZF	
   Q 





v&&&&



	!a%%%%		%%		s#A
A$#A$(A>>
B
BcV	|t|jdSr#)rr}rur=s r(
notify_allzCondition.notify_alls+		
C
&&'''''r)cr	ddl}|dtd|dS)Nrz3notifyAll() is deprecated, use notify_all() instead
stacklevel)warningswarnDeprecationWarningrr>rs  r(	notifyAllzCondition.notifyAllsK	
	

K(Q		8	8	8r)r#rR)rnrGrHr?rNrorbrLrhrfrjrrrrrr+r)r(r
r
s	!!!!0&&&***HHH....`.<(((					r)r
c8eZdZ	d	dZdZd
dZeZd	dZdZdS)rrRc~|dkrtdtt|_||_dS)Nrz$semaphore initial value must be >= 0)rr
r_cond_valuer>values  r(r?zSemaphore.__init__s8199CDDDtvv&&
r)c	h|j}d|jd|jdt|dd|jd	S)N<. at #x: value=>)rFrGrHrJrr>clss  r(rLzSemaphore.__repr__sYn)CN))S%5))2d88I))+)))	*r)TNcZ	|s|tdd}d}|j5|jdkrV|sne|,|t|z}n|tz
}|dkrn7|j||jdkV|xjdzc_d}dddn#1swxYwY|S)Nz.can't specify timeout for non-blocking acquireFrrRT)rrrrr)r>rTrUrWrs     r(rSzSemaphore.acquires	.	OG/MNNN

Z		+""&"'''G"3")EGG"3"a<<!
(((+""q 																sA4B  B$'B$c	|dkrtd|j5|xj|z
c_t|D]}|j	ddddS#1swxYwYdS)NrRn must be one or more)rrrrangerr>ris   r(r[zSemaphore.releases	
q554555
Z	$	$KK1KK1XX
$
$
!!####
$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$s<A((A,/A,c.|dSr#r]r^s    r(rbzSemaphore.__exit__rcr)r)TN)	rnrGrHr?rLrSror[rbr+r)r(rrs{***
++++ZI$$$$r)rc&eZdZ	ddZdZddZdS)rrRcJt||||_dSr#)rr?_initial_valuers  r(r?zBoundedSemaphore.__init__
s&4'''#r)cx|j}d|jd|jdt|dd|jd|jdS)Nrrrrr/r)rFrGrHrJrrrs  r(rLzBoundedSemaphore.__repr__sjn?CN??S%5??2d88I??+??(,(;???	@r)c.	|dkrtd|j5|j|z|jkrtd|xj|z
c_t	|D]}|j	ddddS#1swxYwYdS)NrRrz!Semaphore released too many times)rrrrrrrs   r(r[zBoundedSemaphore.releases	
q554555
Z	$	${Q!444 !DEEEKK1KK1XX
$
$
!!####
$		$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$sAB

BBNr)rnrGrHr?rLr[r+r)r(rrsS $$$$@@@
$$$$$$r)rcBeZdZ	dZdZdZdZdZdZdZ	d
d	Z
dS)rcTtt|_d|_dSNF)r
rr_flagr=s r(r?zEvent.__init__2s tvv&&



r)c	t|j}|jrdnd}d|jd|jdt	|dd|d	S)	Nsetunsetrrrrz: r)rFrrGrHrJ)r>rstatuss   r(rLzEvent.__repr__6sPn*1'R3>RRC$4RR"T((RRRRRRRr)c8|jdSr#)rrNr=s r(rNzEvent._at_fork_reinit;s
""$$$$$r)c	|jSr#)rr=s r(is_setzEvent.is_set?s
Czr)cn	ddl}|dtd|S)Nrz+isSet() is deprecated, use is_set() insteadrr)rrrrrs  r(isSetzEvent.isSetCsC	
	

C(Q		8	8	8{{}}r)c	|j5d|_|jddddS#1swxYwYdSNT)rrrr=s r(rz	Event.setNs	Z	$	$DJJ!!###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$s!7;;cV	|j5d|_ddddS#1swxYwYdSr)rrr=s r(ryzEvent.clearYs|	Z		DJ																		s""Nc	|j5|j}|s|j|}|cdddS#1swxYwYdSr#)rrr)r>rUsignaleds   r(rz
Event.waitcs
	Z		zH
4:??733																			s
%;??r#)rnrGrHr?rLrNrrrryrr+r)r(rr'sSSS
%%%				$	$	$r)rceZdZ	ddZdZddZdZdZdZdZ	d	Z
d
ZdZe
dZe
d
Ze
dZdS)rNc	tt|_||_||_||_d|_d|_dSr8)r
rr_action_timeout_parties_stater<)r>partiesactionrUs    r(r?zBarrier.__init__sC	tvv&&


r)c|j}|jr$d|jd|jdt	|ddSd|jd|jdt	|dd|jd|jdS)	Nrrrrz	: broken>z
: waiters=rr)rFbrokenrGrHrJ	n_waitingrrs  r(rLzBarrier.__repr__sn;	UTs~TT(8TTbhhTTTTT=CN==S%5==2d88I== N==-1\===	>r)c	||j}|j5||j}|xjdz
c_	|dz|jkr|n||||xjdzc_|cdddS#|xjdzc_|wxYw#1swxYwYdSrQ)rr_enterr<r_release_wait_exit)r>rUindexs   r(rzBarrier.waits#	?mG
Z		KKMMMKEKK1KK
19
--MMOOOOJJw'''q 

								q 

										s(,C9B)8$C)&CCCCc|jdvr"|j|jdv"|jdkrtdS)NrOrRr)rrrrr=s r(rzBarrier._entersJkW$$JOOkW$$;??$$?r)c	|jr|d|_|jdS#|xYwrQ)rrrr_breakr=s r(rzBarrier._releasesX		|
DKJ!!#####	KKMMMs	;?Acjfd|stjdkrtdS)NcjdkSr8rr=sr(<lambda>zBarrier._wait.<locals>.<lambda>sDK1,<r)r)rrrrrr>rUs` r(rz
Barrier._waitsRz""#<#<#<#<gFF	%KKMMM$$;??$$?r)cv|jdkr+|jdvr$d|_|jdSdSdS)Nrr)r<rrrr=s r(rz
Barrier._exitsK;!{g%%
%%'''''	%%r)c	|j5|jdkr&|jdkrd|_n|jdkrd|_nd|_|jddddS#1swxYwYdS)NrrO)rr<rrr=s r(resetz
Barrier.resets	Z	$	${Q;!##"$DKK[B&&#%DKJ!!###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$sAA((A,/A,cp	|j5|ddddS#1swxYwYdSr#)rrr=s r(abortz
Barrier.aborts	Z		KKMMM																		+//cFd|_|jdSNr)rrrr=s r(rzBarrier._breaks%
r)c	|jSr#)rr=s r(rzBarrier.partiess
H}r)c,	|jdkr|jSdSr8)rr<r=s r(rzBarrier.n_waitings!L;!;qr)c	|jdkSrrr=s r(rzBarrier.brokens>{b  r)NNr#)rnrGrHr?rLrrrrrrrrpropertyrrrr+r)r(rrs
 >>><   


   ((($$$(   XX!!X!!!r)rceZdZdS)rN)rnrGrHr+r)r(rr%sDr)rrRc$|tzSr#)_counter)
name_templates r(_newnamer+s8::%%r)c^	dtD}t|dS)Nc:g|]}||Sr+)rA).0rws  r(
<listcomp>z,_maintain_shutdown_locks.<locals>.<listcomp>Gs%GGG$GGGGr))_shutdown_locksdifference_update)	to_removes r(_maintain_shutdown_locksr=s7HG/GGGI%%i00000r)c6eZdZ	dZ		d dddZdZdZdZd	Zd
Z	dZ
erdZd
Z
dZdZdZd!dZd"dZedZejdZedZeredZdZedZejdZdZdZdZdZdS)#rFNr+)daemonc	|i}|rt|}n3td}|"	|j}|d|dz
}n#t$rYnwxYw||_||_||_||_|||_ntj
|_d|_trd|_
d|_t|_d|_d|_t&j|_t-|_t0|dS)Nz	Thread-%dz ()FT)strrrnrs_target_name_args_kwargs	_daemonicrr_ident_HAVE_THREAD_NATIVE_ID
_native_id_tstate_lockr_started_is_stopped_initialized_sysstderr_stderr_make_invoke_excepthook_invoke_excepthook	_danglingadd)r>grouptargetrDr3r4rtarget_names        r(r?zThread.__init__Xs$	,>F		t99DDK((D!"(/K/////DD%D

#DNN+--4DN!	#"DO 
  {"9";";

ds;
AAc|j|r=|j4|j|jdSdSd|_d|_dSr)rrNrrSr)r>is_alives  r(_reset_internal_lockszThread._reset_internal_lockss{	

%%'''	% ,!11333!))+++++-, $D $Dr)cd}|jrd}||jrd}|jr|dz
}|j
|d|jzz
}d|jjd|jd|d	S)
Ninitialstartedstoppedz daemonz %sr(z, z)>)	rrr!rrrrFrnr)r>rs  r(rLzThread.__repr__s=!!	F

	F>	 iF;"edk))F!%!8!8!8$***fffMMr)c	|jstd|jrtdt5|t
|<dddn#1swxYwY	t
|jdn6#t$r)t5t
|=dddn#1swxYwYwxYw|j	dS)Nzthread.__init__() not calledz threads can only be started oncer+)
rrZrr_active_limbo_lock_limbo_start_new_thread
_bootstrap	Exceptionrr=s r(startzThread.startsc	 	?=>>>=!!	CABBB
	 	 F4L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	dor2222			#
!
!4L
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!		

sBAA"%A"*BB3	B&B3&B*	*B3-B*	.B3ch		|j|j|ji|j|`|`|`dS#|`|`|`wxYwr#)r
rr
r=s r(runz
Thread.runs[		7|'dj9DL999dj$,,,dj$,6666s)1c^	|dS#|jr
tYdSxYwr#)_bootstrap_innerrrr=s r(r,zThread._bootstraps@	!!#####	~
$,s,,c,t|_dSr#)rrr=s r(
_set_identzThread._set_identskkr)c,t|_dSr#)r!rr=s r(_set_native_idzThread._set_native_ids+ooDOOOr)c	t|_|j|jsOt5tt|jddddS#1swxYwYdSdSr#)
_set_sentinelrrSr_shutdown_locks_lockrrrr=s r(_set_tstate_lockzThread._set_tstate_locks	*OO!!###{	7%
7
7(***##D$5666
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7	7	7s.A77A;>A;cj	||tr||jt5|t|j<t|=dddn#1swxYwYtrtjttrtjt	|n#||YnxYw|dS#|wxYwr#)r4r:rr6rrr)rCrr*r.rrr%rr0r_deleter=s r(r2zThread._bootstrap_innersQ	OO!!###%
&##%%%M#
!
!'+$4L
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
+
k***
/
...
.




.''-----LLNNNNNDLLNNNNsIA#D%B	=D	B

DB
ADC*)D*DDD2c|j}|d|_d|_|js0t5t	ddddS#1swxYwYdSdSr)rrrr9rrvs  r(_stopzThread._stops"  {	+%
+
+(***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	+	+sAA	Acp	t5tt=ddddS#1swxYwYdSr#)r)rCrr=s r(r<zThread._delete6s{K
	%	%	$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%rc:	|jstd|jstd|t	urtd||dS|t
|ddS)NThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr)rU)rrZrrr_wait_for_tstate_lockmaxrs  r(joinzThread.join?s	. 	?=>>>}##%%	JHIII>####;<<<?&&(((((
&&s7A&?????r)TrOc"|j}|dS	|||r*||dSdS#|r(||xYwr#)rrSr[r>rA)r>blockrUrws    r(rBzThread._wait_for_tstate_lockes <
F	||E7++




	{{}}



s>A?Bc	|jSr#)rr=s r(rDzThread.names	zr)c.t||_dSr#)r	r)r>rDs  r(rDzThread.namesYY


r)c	|jSr#)rr=s r(identzThread.idents	{r)c	|jSr#)rr=s r(	native_idzThread.native_ids
?"r)c	|js|jsdS|d|jSr)rrrrBr=s r(r!zThread.is_alivesN		4=#7#7#9#9	5""5)))###r)c	|jSr#)rr=s r(rz
Thread.daemons		~r)c|jstd|jrtd||_dS)NrAz)cannot set daemon status of active thread)rrZrrr)r>daemonics  r(rz
Thread.daemonsM 	?=>>>=!!	LJKKK!r)cT	ddl}|dtd|jS)Nrz:isDaemon() is deprecated, get the daemon attribute insteadrrrrrrrs  r(isDaemonzThread.isDaemons=	
	

R(Q		8	8	8{r)cX	ddl}|dtd||_dS)Nrz;setDaemon() is deprecated, set the daemon attribute insteadrrrR)r>rPrs   r(	setDaemonzThread.setDaemons@	
	

S(Q		8	8	8r)cT	ddl}|dtd|jS)Nrz7getName() is deprecated, get the name attribute insteadrrrrrrDrs  r(getNamezThread.getNames=	
	

O(Q		8	8	8yr)cX	ddl}|dtd||_dS)Nrz7setName() is deprecated, set the name attribute insteadrrrW)r>rDrs   r(setNamezThread.setNames@	
	

O(Q		8	8	8			r))NNNr+Nr#rm)rnrGrHrr?r"rLr.r0r,r4rr6r:r2r>r<rDrBrrDsetterrJrLr!rrSrUrXrZr+r)r(rrMs L59!%81588888t%%%"NNN4777"(""".	.	.	.777.+++6%%%$@$@$@$@L6X
[[		X	
#		#	#
	#$$$X]""]"														r)r)_excepthook_ExceptHookArgs)print_exception)
namedtuplerz'exc_type exc_value exc_traceback threadct|Sr#)r])r3s r(rrs
%%r)c|	|jtkrdSttj
tj}n|j|jj}|dSndS|j
|jj}nt}td|d|dt|j|j
|j||dS)NzException in thread :Tfileflush)rd)
exc_type
SystemExitrrthreadrrDrprint_print_exception	exc_value
exc_tracebackre)r3rrDs   r(rr	s	=J&&F 7[FF
[
$[(F~
F;";#DD;;D
,T,,,	'	'	'	'8J$	&	&	&	&r)cttjtdtdtjttfd}|S)Nzthreading.excepthook is Nonezsys.excepthook is NonecJ	t}|}tg
|}||ne#t$rX}d|_~jj}n|j}d|djj}n	}|
Yd}~nd}~wwxYwd}dS#d}wxYw)NTz"Exception in threading.excepthook:rc)rrr-__suppress_context__rr)rhhookr3excrsys_excepthooklocal_print	local_sysold_excepthookold_sys_excepthooksys_exc_infos      r(invoke_excepthookz2_make_invoke_excepthook.<locals>.invoke_excepthook<s	D|%!";LLNN";F";<<DDJJJJ	,	,	,'+C$$)9)E")K<#4
1
1
1
1$)=)I!*!5!3NLLNN+++++++#	,(DDD4DKKKKs,15B
BAB
BBBB")rrrZexc_infori)rxrsrtrurvrws @@@@@r(rr,s
 N9:::!3444=LKI@r)c$eZdZ	ddZdZdZdS)rNct|||_||_||ng|_||ni|_t
|_dSr#)rr?intervalfunctionr3r4rfinished)r>r|r}r3r4s     r(r?zTimer.__init__jsQ 
 
 ,DD"	 & 2ff


r)c:	|jdSr#)r~rr=s r(cancelzTimer.cancelrs7
r)c|j|j|js|j|ji|j|jdSr#)r~rr|rr}r3r4rr=s r(r0z	Timer.runvse
4=)))}##%%	5DM494444
r)r)rnrGrHr?rr0r+r)r(rrasK    r)rceZdZdZdS)_MainThreadcVt|dd||j|tr|t5|t|j
<ddddS#1swxYwYdS)N
MainThreadFrDr)rr?r:rrr4rr6r)rCrr=s r(r?z_MainThread.__init__s<>>>
!	"!!!
	(	(#'GDK 	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(sBB"%B"N)rnrGrHr?r+r)r(rrs#(((((r)rc(eZdZdZdZdZddZdS)_DummyThreadcHt|tdd|j|tr|t5|t|j
<ddddS#1swxYwYdS)NzDummy-%dTr)rr?rrrr4rr6r)rCrr=s r(r?z_DummyThread.__init__s8J#7#7EEE
!	"!!!
	(	(#'GDK 	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(s:BBBcdSr#r+r=s r(r>z_DummyThread._stopsr)cdSrr+r=s r(r!z_DummyThread.is_alivestr)NcdSr#r+rs  r(rDz_DummyThread.joinsr)r#)rnrGrHr?r>r!rDr+r)r(rrsU(((


333333r)rct		ttS#t$rtcYSwxYwr#)rCrrErr+r)r(rrsFy{{##~~s77cb	ddl}|dtdtS)Nrz;currentThread() is deprecated, use current_thread() insteadrr)rrrrrs r(
currentThreadrsA
OOOMMO$444r)c	t5ttttzcdddS#1swxYwYdSr#)r)r}rCr*r+r)r(r	r	s
**7||c&kk)******************s)?AAcb	ddl}|dtdtS)Nrz7activeCount() is deprecated, use active_count() insteadrr)rrrr	rs r(activeCountrs?
OOOMMK$444>>r)cttttzSr#)listrCvaluesr*r+r)r(
_enumeraters/  !!D$9$999r)c	t5ttttzcdddS#1swxYwYdSr#)r)rrCrr*r+r)r(rrs
>>GNN$$%%V]]__(=(==>>>>>>>>>>>>>>>>>>sA
A##A'*A'c	trtdtj|g|Ri|}t|dS)Nz$can't register atexit after shutdown)_SHUTTING_DOWNrZ	functoolspartial_threading_atexitsr)r'argr4calls    r(_register_atexitrs[CABBBT2C222622Dd#####r))rc	tjrdSdattD]}|
tjt
kr:tj}|t	n		t5tt}t
dddn#1swxYwY|sdS|D]*}||+~r)_main_threadrrreversedrrJrrr[r>r9rrryrS)atexit_calltlocklocksrws    r(	_shutdownrsJN  233



Y[[(()
	

	

!	$	$))E!!###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	E		DLLNNNLLNNNNs.CCCc	tSr#)rr+r)r(r
r
=s
r))_local)rc	tai}	tt}n#t$rt}YnwxYw|atata
t5tt}|t|D]_}||ur0|dt}||_|||<6|d|`t"tt|ddddS#1swxYwYdS)NTF)rr)rCrrErrr9r9rrrupdaterr"rr>r*ry)
new_activecurrentthreadsrhrJs     r(_after_forkrNsJ )++&   --	 L*++eeO	!!jll##y!!!
	
	F  ,,T222! %
$*
5!!,,U333

z"""-!!!!!!!!!!!!!!!!!!s"-AA0C$E!!E%(E%register_at_fork)after_in_child)aos_ossysr_threadrtimerr_weakrefsetr	itertoolsr_islicerr<_collectionsrrtImportErrorcollections__all__start_new_threadr+
allocate_lockr9r8rr!rrrserrorrrr1rr%r.rr rrrr6r2r
rrrrrZr__next__rrr)rCr*rr9rrrrr\rr]r	tracebackr^rjr___excepthook__rrrrrrr	rrrrrrrrrr
rr_threading_localrhasattrrr+r)r(<module>rslA######88888888,,,,,,,,,,,++++++++,EEE,&%
	#)M!NN?#######"#mmGGGGG!

$$${{{{{{{{zwwwwwwwwtUUUUUUUUp+$+$+$+$+$y+$+$+$\OOOOOOOOz^!^!^!^!^!^!^!^!B								
6!99&&&UWW
	GII	
&~''#%%111 jjjjjjjjZ
+<<<<<<<<<(((======&&&&&& j133O&&&(X000jF<
(
(
(
(
(&
(
(
(*3333363332


			***			:::	>	>	>$$$"{}}222p'''''''''''&&&&&&&&'2!2!2!j73"##5C44444455sT.<< A??B	B	BB&%B&5E>>#F$#F$HH H