+
    NV-j  ã                   ó  € ^ RI t ^ 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.t
]P                  R8X  d   ]
R.,          t
 ! R R]4      tM]
R	.,          t
 ! R
 R	]4      t ! R R]4      t]! 4       t]P"                  tR# )é    N)Úprocess)Ú	reduction)ÚutilÚstopÚwin32Ú	DupSocketc                   ó0   a € ] tR t^t o RtR tR tRtV tR# )r   zPicklable wrapper for a socket.c                ó~   a€ VP                  4       oV3R  lp\        P                  VSP                  4      V n        R# )c                 óL   <€ SP                  V4      pV P                  V4       R # ©N)ÚshareÚ
send_bytes)ÚconnÚpidr   Únew_socks   && €Úm/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/multiprocess/resource_sharer.pyÚsendÚ DupSocket.__init__.<locals>.send   s   ø€ Ø Ÿ™ sÓ+�Ø—‘ Ö&ó    N)ÚdupÚ_resource_sharerÚregisterÚcloseÚ_id)ÚselfÚsockr   r   s   && @r   Ú__init__ÚDupSocket.__init__   s-   ø€ Ø—x‘x“zˆHõ'ô (×0Ñ0°°x·~±~ÓFˆDŽHr   c                óÚ   € \         P                  V P                  4      ;_uu_ 4       pVP                  4       p\        P
                  ! V4      uuRRR4       #   + '       g   i     R# ; i)z1Get the socket.  This should only be called once.N)r   Úget_connectionr   Ú
recv_bytesÚsocketÚ	fromshare)r   r   r   s   &  r   ÚdetachÚDupSocket.detach$   sB   € ä!×0Ñ0°·±×:Ô:¸dØŸ™Ó)�Ü×'Ò'¨Ó.÷ ;×:×:Ó:ús   ¨&AÁA*	©r   N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r$   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € Ù-ò	G÷	/ð 	/r   ÚDupFdc                   ó0   a € ] tR t^-t o RtR tR tRtV tR# )r1   z-Wrapper for fd which can be used at any time.c                ó€   a€ \         P                  ! V4      oV3R  lpV3R lp\        P                  W#4      V n        R# )c                 ó8   <€ \         P                  ! V SV4       R # r   )r   Úsend_handle)r   r   Únew_fds   &&€r   r   ÚDupFd.__init__.<locals>.send1   s   ø€ Ü×%Ò% d¨F°CÖ8r   c                  ó4   <€ \         P                  ! S 4       R # r   )Úosr   )r6   s   €r   r   ÚDupFd.__init__.<locals>.close3   s   ø€ Ü—’˜Ö r   N)r9   r   r   r   r   )r   Úfdr   r   r6   s   &&  @r   r   ÚDupFd.__init__/   s,   ø€ Ü—V’V˜B“ZˆFõ9õ!ä'×0Ñ0°Ó=ˆDŽHr   c                óº   € \         P                  V P                  4      ;_uu_ 4       p\        P                  ! V4      uuRRR4       #   + '       g   i     R# ; i)z-Get the fd.  This should only be called once.N)r   r    r   r   Úrecv_handle)r   r   s   & r   r$   ÚDupFd.detach7   s6   € ä!×0Ñ0°·±×:Ô:¸dÜ ×,Ò,¨TÓ2÷ ;×:×:Ó:ús   ¨A	Á	A	r&   Nr'   r/   s   @r   r1   r1   -   s   ø‡ € Ù;ò	>÷	3ð 	3r   c                   ó\   a € ] tR t^=t o RtR tR t]R 4       tRR lt	R t
R tR	 tR
tV tR# )Ú_ResourceSharerz.Manager for resources using background thread.c                óÊ   € ^ V n         / V n        \        P                  ! 4       V n        RV n        RV n        RV n        \        P                  ! V \        P                  4       R# )r   N)Ú_keyÚ_cacheÚ	threadingÚLockÚ_lockÚ	_listenerÚ_addressÚ_threadr   Úregister_after_forkrA   Ú
_afterfork)r   s   &r   r   Ú_ResourceSharer.__init__?   sI   € ØˆŒ	ØˆŒÜ—^’^Ó%ˆŒ
ØˆŒØˆŒØˆŒÜ× Ò  ¤×'AÑ'AÖBr   c                ó:  € V P                   ;_uu_ 4        V P                  f   V P                  4        V ;P                  ^,          un        W3V P                  V P                  &   V P                  V P                  3uuRRR4       #   + '       g   i     R# ; i)z+Register resource, returning an identifier.N)rG   rI   Ú_startrC   rD   )r   r   r   s   &&&r   r   Ú_ResourceSharer.registerH   s[   € à�Z�Z‹ZØ�}‰}Ò$Ø—‘”Ø�IŠI˜�N�IØ&* ]ˆD�K‰K˜Ÿ	™	Ñ"Ø—M‘M 4§9¡9Ð-÷ �Z�Z‹Zús   •A)B	Â	B	c                ó´   € ^RI Hp V w  r#V! V\        P                  ! 4       P                  R7      pVP                  V\        P                  ! 4       34       V# )z<Return connection from which to receive identified resource.©ÚClient©Úauthkey)Ú
connectionrS   r   Úcurrent_processrU   r   r9   Úgetpid)ÚidentrS   ÚaddressÚkeyÚcs   &    r   r    Ú_ResourceSharer.get_connectionQ   sE   € õ 	'Ø‰ˆÙ�7¤G×$;Ò$;Ó$=×$EÑ$EÔFˆØ	�‰�”R—Y’Y“[Ð!Ô"Øˆr   Nc                óÄ  € ^RI Hp V P                  ;_uu_ 4        V P                  Ee   V! V P                  \        P
                  ! 4       P                  R7      pVP                  R4       VP                  4        V P                  P                  V4       V P                  P                  4       '       d   \        P                  ! R4       V P                  P                  4        RV n	        RV n        RV n        V P                  P!                  4        F  w  pw  rVV! 4        K  	  V P                  P#                  4        RRR4       R#   + '       g   i     R# ; i)z:Stop the background thread and clear registered resources.rR   NrT   z._ResourceSharer thread did not stop when asked)rV   rS   rG   rI   r   rW   rU   r   r   rJ   ÚjoinÚis_aliver   Úsub_warningrH   rD   ÚitemsÚclear)r   ÚtimeoutrS   r\   r[   r   r   s   &&     r   r   Ú_ResourceSharer.stopZ   së   € å&Ø�Z�Z‹ZØ�}‰}Ó(Ù˜4Ÿ=™=Ü#*×#:Ò#:Ó#<×#DÑ#DôF�à—‘�t”Ø—‘”	Ø—‘×!Ñ! 'Ô*Ø—<‘<×(Ñ(×*Ò*Ü×$Ò$ð &;ô <à—‘×$Ñ$Ô&Ø#�”Ø $�”Ø!%�”Ø*.¯+©+×*;Ñ*;Ö*=Ñ&�C™˜$Ù–Gñ +>à—‘×!Ñ!Ô#÷! �Z�ZŠZús   ›BEÂ8BEÅE	c                óB  € V P                   P                  4        F  w  pw  r#V! 4        K  	  V P                   P                  4        V P                  P	                  4        V P
                  e   V P
                  P                  4        R V n        R V n        R V n        R # r   )	rD   rb   rc   rG   Ú_at_fork_reinitrH   r   rI   rJ   )r   r[   r   r   s   &   r   rL   Ú_ResourceSharer._afterforko   st   € Ø"&§+¡+×"3Ñ"3Ö"5ÑˆC‘�$ÙŽGñ #6à�‰×ÑÔØ�
‰
×"Ñ"Ô$Ø�>‰>Ò%Ø�N‰N× Ñ Ô"ØˆŒØˆŒØˆŽr   c                ór  € ^RI Hp V P                  e   Q R4       h\        P                  ! R4       V! \
        P                  ! 4       P                  ^€R7      V n        V P                  P                  V n	        \        P                  ! V P                  R7      pRVn        VP                  4        W n        R# )é   )ÚListenerNzAlready have Listenerz0starting listener and thread for sending handles)rU   Úbacklog)ÚtargetT)rV   rk   rH   r   Údebugr   rW   rU   rZ   rI   rE   ÚThreadÚ_serveÚdaemonÚstartrJ   )r   rk   Úts   &  r   rO   Ú_ResourceSharer._startz   s€   € Ý(Ø�~‰~Ò%Ð>Ð'>Ó>Ð%Ü�
Š
ÐEÔFÙ!¬'×*AÒ*AÓ*C×*KÑ*KÐUXÔYˆŒØŸ™×.Ñ.ˆŒÜ×Ò D§K¡KÔ0ˆØˆŒØ	�‰Œ	ØŽr   c                óx  € \        \        R 4      '       d9   \        P                  ! \        P                  \        P                  ! 4       4         V P
                  P                  4       ;_uu_ 4       pVP                  4       pVf    RRR4       R# Vw  r4V P                  P                  V4      w  rV V! W4       V! 4         RRR4       K€    T! 4        i ; i  + '       g   i     K�  ; i   \        P                  ! 4       '       g+   \        P                  ! \        P                  ! 4       !    Kç   Kê  ; i)Úpthread_sigmaskN)ÚhasattrÚsignalrv   Ú	SIG_BLOCKÚvalid_signalsrH   ÚacceptÚrecvrD   Úpopr   Ú
is_exitingÚsysÚ
excepthookÚexc_info)r   r   Úmsgr[   Údestination_pidr   r   s   &      r   rp   Ú_ResourceSharer._serve…   sÞ   € Ü”6Ð,×-Ò-Ü×"Ò"¤6×#3Ñ#3´V×5IÒ5IÓ5KÔLØð4Ø—^‘^×*Ñ*×,Ô,°ØŸ)™)›+�CØ’{Ø÷ -Ñ,ð ,/Ñ(�CØ"&§+¡+§/¡/°#Ó"6‘K�Dð Ù˜TÔ3á�÷ -Ñ,øñ �ú÷ -×,Ð,ûð4Ü—’×(Ò(Ü—N’N¤C§L¢L£NÕ3ò )úsO   Á"C/ Á3CÂ	C/ Â!CÂ5CÂ=CÃC/ Ã	CÃCÃC,	Ã&C/ Ã,C/ Ã/AD9)rI   rD   rC   rH   rG   rJ   r   )r(   r)   r*   r+   r,   r   r   Ústaticmethodr    r   rL   rO   rp   r-   r.   r/   s   @r   rA   rA   =   s@   ø‡ € Ù8òCò.ð ñó ðô$ò*	ò	÷4ð 4r   rA   )r9   rx   r"   r   rE   Ú r   Úcontextr   r   Ú__all__ÚplatformÚobjectr   r1   rA   r   r   © r   r   Ú<module>rŒ      s‹   ðó 
Û Û Û 
Û å Ý Ý àˆ(€ð ‡<�<�7ÔØ�ˆ}Õ€Gô/�Fõ /ð  �ˆyÕ€Gô3�ô 3ô Y4�fô Y4ñx #Ó$Ð Ø×Ñ‚r   