HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //usr/local/lib/python3.9/site-packages/billiard/__pycache__/connection.cpython-39.pyc
a

X>h��@s^ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddl	mZddl	mZm
Z
ddlmZddlmZmZddlmZdd	l
mZzdd
lmZWn"ey�ejdkr΂dZYn$0ejdkr�ejZejZejZejZgd�Zeed
�ZdZ dZ!e�"�Z#dZ$dgZ%eed��r@dZ$e%dg7Z%ejdk�rZdZ$e%dg7Z%e!fdd�Z&dd�Z'dd�Z(dd�Z)dd�Z*Gdd�d�Z+Gdd �d �Z,e�r�Gd!d"�d"e,�Z-Gd#d$�d$e,�Z.Gd%d&�d&�Z/d]d'd(�Z0d)d*�Z1ejdk�rd^d-d.�Z2n
d_d/d.�Z2Gd0d1�d1�Z3d2d3�Z4ejdk�rNGd4d5�d5�Z5ej6ej7ffd6d7�Z8d8Z9d9Z:d:Z;d;Z<d<d=�Z=d>d?�Z>Gd@dA�dA�Z?dBdC�Z@dDdE�ZAGdFdG�dGe/�ZBdHdI�ZCejdk�r�dJdK�ZDejEejFhZGd`dLdM�ZHn(eedN��r�dOdP�ZIndQdP�ZIdadRdM�ZHejdk�r>dSdT�ZJdUdV�ZKe
�Le.eJ�dWdX�ZMdYdZ�ZNe
�Le-eM�nd[dT�ZJd\dV�ZKe
�Le.eJ�dS)b�N�)�	reduction)�util)�AuthenticationError�BufferTooShort)�	_billiard)�setblocking�send_offset��	monotonic)�ForkingPickler)�_winapi�win32)�Client�Listener�Pipe�wait�pypy_version_infoi g4@�AF_INET�AF_UNIX�AF_PIPEcCs
t�|S�Nr
)�timeout�r�=/usr/local/lib/python3.9/site-packages/billiard/connection.py�
_init_timeoutEsrcCs
t�|kSrr
)�trrr�_check_timeoutIsrcCsX|dkrdS|dkr&tjdt��d�S|dkrLtjdt��tt�fdd�Std	��d
S)z?
    Return an arbitrary free address for the given family
    r)�	localhostrrz	listener-)�prefix�dirrz\\.\pipe\pyc-%d-%d-�zunrecognized familyN)	�tempfile�mktemprZget_temp_dir�os�getpid�next�
_mmap_counter�
ValueError��familyrrr�arbitrary_addressQs��r+cCsJtjdkr|dkrtd|��tjdkrF|dkrFtt|�sFtd|��dS)zD
    Checks if the family is valid for the current environment.
    rrzFamily %s is not recognized.rN)�sys�platformr(�hasattr�socketr)rrr�_validate_family`s

r0cCsJt|�tkrdSt|�tur*|�d�r*dSt|�tur:dStd|��dS)z]
    Return the types of the address

    This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE'
    rz\\rrzaddress type of %r unrecognizedN)�type�tuple�str�
startswithr()�addressrrr�address_typemsr6c@seZdZdd�ZdS)�_SocketContainercCs
||_dSr��sock)�selfr9rrr�__init__�sz_SocketContainer.__init__N)�__name__�
__module__�__qualname__r;rrrrr7�sr7c@s�eZdZdZd/dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
dd��Ze
dd��Ze
dd��Z
dd�Zdd�Zd0dd�Zdd�Zd1dd�Zd2d d!�Zd"d#�Zd3d%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�ZdS)4�_ConnectionBaseNTcCsZt|t�r|j|_|j��}|��}|dkr4td��|sD|sDtd��||_||_||_	dS)Nrzinvalid handlez6at least one of `readable` and `writable` must be True)
�
isinstancer7r9�_socket�fileno�	__index__r(�_handle�	_readable�	_writable)r:�handle�readable�writablerrrr;�s

�z_ConnectionBase.__init__cCs|jdur|��dSr�rD�_close�r:rrr�__del__�s
z_ConnectionBase.__del__cCs|jdurtd��dS)Nzhandle is closed)rD�OSErrorrLrrr�
_check_closed�s
z_ConnectionBase._check_closedcCs|jstd��dS)Nzconnection is write-only)rErNrLrrr�_check_readable�sz_ConnectionBase._check_readablecCs|jstd��dS)Nzconnection is read-only)rFrNrLrrr�_check_writable�sz_ConnectionBase._check_writablecCs"|jrd|_n|��td��dS)NFzbad message length)rFrE�closerNrLrrr�_bad_message_length�sz#_ConnectionBase._bad_message_lengthcCs
|jduS)z True if the connection is closedN�rDrLrrr�closed�sz_ConnectionBase.closedcCs|jS)z"True if the connection is readable)rErLrrrrH�sz_ConnectionBase.readablecCs|jS)z"True if the connection is writable)rFrLrrrrI�sz_ConnectionBase.writablecCs|��|jS)z+File descriptor or handle of the connection)rOrDrLrrrrB�sz_ConnectionBase.filenocCs*|jdur&z|��Wd|_nd|_0dS)zClose the connectionNrJrLrrrrR�s

z_ConnectionBase.closercCs�|��|��t|�}|jdkr.tt|��}t|�}|dkrFtd��||krVtd��|durh||}n&|dkrztd��n|||kr�td��|�||||��dS)z,Send the bytes data from a bytes-like objectrrzoffset is negativezbuffer length < offsetNzsize is negativezbuffer length < offset + size)rOrQ�
memoryview�itemsize�bytes�lenr(�_send_bytes)r:�buf�offset�size�m�nrrr�
send_bytes�s"


z_ConnectionBase.send_bytescCs$|��|��|�t�|��dS)zSend a (picklable) objectN)rOrQrZr�dumps�r:�objrrr�send�sz_ConnectionBase.sendcCsJ|��|��|dur(|dkr(td��|�|�}|durB|��|��S)z7
        Receive bytes data as a bytes object.
        Nrznegative maxlength)rOrPr(�_recv_bytesrS�getvalue)r:Z	maxlengthr[rrr�
recv_bytes�s
z_ConnectionBase.recv_bytescCs�|��|��t|���}|j}|t|�}|dkr>td��n||krNtd��|��}|��}|||krvt|�	���|�
d�|�||||||��|Wd�S1s�0YdS)zq
        Receive bytes data into a writeable bytes-like object.
        Return the number of bytes read.
        rznegative offsetzoffset too largeN)rOrPrVrWrYr(re�tellrrf�seek�readinto)r:r[r\r^rWZbytesize�resultr]rrr�recv_bytes_into�s$


�z_ConnectionBase.recv_bytes_intocCs"|��|��|��}t�|�S)zReceive a (picklable) object)rOrPrerZloadbuf)r:r[rrr�recvsz_ConnectionBase.recv�cCs|��|��|�|�S)z/Whether there is any input available to be read)rOrP�_poll�r:rrrr�pollsz_ConnectionBase.pollcCs|SrrrLrrr�	__enter__sz_ConnectionBase.__enter__cCs|��dSr�rR�r:�exc_type�	exc_value�exc_tbrrr�__exit__sz_ConnectionBase.__exit__cCst|��||�Sr)r	rB)r:r[r\rrrr	"sz_ConnectionBase.send_offsetcCst|��|�dSr)rrB)r:�blockingrrrr%sz_ConnectionBase.setblocking)TT)rN)N)r)rn)r<r=r>rDr;rMrOrPrQrS�propertyrUrHrIrBrRr`rdrgrlrmrqrrrxr	rrrrrr?�s2







r?c@sDeZdZdZdZejfdd�Zdd�Zddd	�Z	d
d�Z
dd
�ZdS)�PipeConnectionz�
        Connection class based on a Windows named pipe.
        Overlapped I/O is used, so the handles must have been created
        with FILE_FLAG_OVERLAPPED.
        FcCs||j�dSrrT)r:Z_CloseHandlerrrrK3szPipeConnection._closec	Cs�tj|j|dd�\}}zVz,|tjkrBt�|jgdt�}|tksBJ�Wn|���Yn0W|�	d�\}}n|�	d�\}}0|dks�J�|t
|�ks�J�dS)NT��
overlappedFr)r
Z	WriteFilerD�ERROR_IO_PENDING�WaitForMultipleObjects�event�INFINITE�
WAIT_OBJECT_0�cancel�GetOverlappedResultrY)r:r[�ov�err�waitresZnwrittenrrrrZ6s

�
 zPipeConnection._send_bytesNc	
Cs�|jrd|_t��S|dur dnt|d�}�ztj|j|dd�\}}z�z,|tjkrpt�|j	gdt
�}|tkspJ�Wn|���Yn0W|�
d�\}}|dkr�t��}|�|���|WS|tjkr�|�||�WSnh|�
d�\}}|dk�rt��}|�|���|YWS|tjk�r>|�||�YWS0Wn<t�y~}z"|jtjk�rht�n�WYd}~n
d}~00td��dS)NF�Tr|rz.shouldn't get here; expected KeyboardInterrupt)�_got_empty_message�io�BytesIO�minr
�ReadFilerDr~rr�r�r�r�r��write�	getbufferZERROR_MORE_DATA�_get_more_datarN�winerror�ERROR_BROKEN_PIPE�EOFError�RuntimeError)	r:�maxsizeZbsizer�r�r�Znread�f�errrreFsL�


�

�
 �zPipeConnection._recv_bytescCs.|jst�|j�ddkrdStt|g|��S)NrT)r�r
�
PeekNamedPiperD�boolrrprrrrohs
�zPipeConnection._pollcCs�|��}t��}|�|�t�|j�d}|dks6J�|durVt|�||krV|��tj	|j|dd�\}}|�
d�\}}|dks�J�||ks�J�|�|���|S)NrrTr|)r�r�r�r�r
r�rDrYrSr�r�)r:r�r�r[r��leftr�Zrbytesrrrr�ns
zPipeConnection._get_more_data)N)r<r=r>�__doc__r�r
�CloseHandlerKrZreror�rrrrr{+s
"r{c@s�eZdZdZer,ejfdd�ZejZ	ej
Znej
fdd�ZejZ	ejZe	fdd�Zefdd�Zefd	d
�Zddd
�Zdd�ZdS)�
Connectionzo
    Connection class based on an arbitrary file descriptor (Unix only), or
    a socket handle (Windows).
    cCs||j�dSrrT�r:rKrrrrK�szConnection._closecCs||j�dSrrTr�rrrrK�sc
Cs~t|�}z||j|�}Wn@tttjfyX}z t|dd�tjkrD�WYd}~qd}~00||8}|dkrlqz||d�}qdS)N�errnor)	rYrDrN�IOErrorr/�error�getattrr��EINTR)r:r[r��	remainingr_�excrrr�_send�szConnection._sendc	
Cs�t��}|j}|}|dkr�z|||�}Wn@tttjfyh}z t|dd�tj	krT�WYd}~qd}~00t
|�}|dkr�||kr�t�ntd��|�|�||8}q|S)Nrr�zgot end of file during message)
r�r�rDrNr�r/r�r�r�r�rYr�r�)	r:r]�readr[rGr��chunkr�r_rrr�_recv�s"

zConnection._recvcCsVt|�}t�d|�}|dkr2|�|�|�|�n t||�rD|��}|�||�dS)N�!ii@)rY�struct�packr�r@�tobytes)r:r[rVr_�headerrrrrZ�s

zConnection._send_bytesNcCs:|�d�}t�d|���\}|dur0||kr0dS|�|�S)N�r�)r�r��unpackrf)r:r�r[r]rrrre�s

zConnection._recv_bytescCst|g|�}t|�Sr)rr�)r:r�rrrrro�szConnection._poll)N)r<r=r>r�r
rZclosesocketrKrd�_writerm�_readr$rRr�r�r�r�rVrZrerorrrrr�~s
r�c@sReZdZdZddd�Zdd�Zdd	�Zed
d��Zedd��Z	d
d�Z
dd�ZdS)rz�
    Returns a listener object.

    This is a wrapper for a bound socket which is 'listening' for
    connections, or for a Windows named pipe.
    NrcCsp|p|rt|�pt}|pt|�}t|�|dkr>t||�|_nt|||�|_|durft|t�sft	d��||_
dS)Nr�authkey should be a byte string)r6�default_familyr+r0�PipeListener�	_listener�SocketListenerr@rX�	TypeError�_authkey)r:r5r*�backlog�authkeyrrrr;�s
��zListener.__init__cCs>|jdurtd��|j��}|jr:t||j�t||j�|S)zz
        Accept a connection on the bound socket or named pipe of `self`.

        Returns a `Connection` object.
        Nzlistener is closed)r�rN�acceptr��deliver_challenge�answer_challenge)r:�crrrr��s

zListener.acceptcCs |j}|durd|_|��dS)zA
        Close the bound socket or named pipe of `self`.
        N)r�rR)r:ZlistenerrrrrR�szListener.closecCs|jjSr)r��_addressrLrrr�<lambda>�zListener.<lambda>cCs|jjSr)r��_last_acceptedrLrrrr�r�cCs|SrrrLrrrrrszListener.__enter__cCs|��dSrrsrtrrrrxszListener.__exit__)NNrN)r<r=r>r�r;r�rRrzr5Z
last_acceptedrrrxrrrrr�s
	rcCsh|p
t|�}t|�|dkr&t|�}nt|�}|durHt|t�sHtd��|durdt||�t||�|S)z=
    Returns a connection to the address of a `Listener`
    rNr�)	r6r0�
PipeClient�SocketClientr@rXr�r�r�)r5r*r�r�rrrrs


rcCst|d�r|��St|�S)N�detach)r.r�r7r8rrrr�!s
r�TFc	Cs�|rBt��\}}|�|�|�|�tt|��}tt|��}n@t��\}}|r\t|d�|rjt|d�t|dd�}t|dd�}||fS)�L
        Returns pair of connection objects at either end of a pipe
        rF�rI�rH)r/�
socketpairrr�r�r$�pipe)	�duplex�	rnonblock�	wnonblock�s1�s2�c1�c2Zfd1�fd2rrrr+s

rc
Cs|rJd��|rJd��td�}|rBtj}tjtjB}tt}}ntj}tj}dt}}t�||tjBtj	Btj
tjBtjBd||tj
tj�}t�||dtjtjtjtj�}	t�|	tjdd�tj|dd�}
|
�d�\}}|dks�J�t||d	�}
t|	|d
�}|
|fS)r�z"rnonblock not supported on windowsz"wnonblock not supported on windowsrrrNTr|r�r�)r+r
�PIPE_ACCESS_DUPLEX�GENERIC_READ�
GENERIC_WRITE�BUFSIZEZPIPE_ACCESS_INBOUND�CreateNamedPipe�FILE_FLAG_OVERLAPPED�FILE_FLAG_FIRST_PIPE_INSTANCE�PIPE_TYPE_MESSAGE�PIPE_READMODE_MESSAGE�	PIPE_WAIT�NMPWAIT_WAIT_FOREVER�NULL�
CreateFile�
OPEN_EXISTING�SetNamedPipeHandleState�ConnectNamedPiper�r{)r�r�r�r5Zopenmode�accessZobsizeZibsize�h1�h2r}�_r�r�r�rrrrBsB

�
�
�	�
�c@s*eZdZdZd
dd�Zdd�Zdd�Zd	S)r�zO
    Representation of a socket which is bound to an address and listening
    rcCs�t�tt|��|_zRtjdkr2|j�tjtjd�|j�d�|j�	|�|j�
|�|j��|_Wnt
y�|j���Yn0||_d|_|dkr�tj|tj|fdd�|_nd|_dS)N�posixrTrr��argsZexitpriority)r/r�rAr$�name�
setsockopt�
SOL_SOCKET�SO_REUSEADDRr�bind�listen�getsocknamer�rNrRZ_familyr�r�Finalize�unlink�_unlink)r:r5r*r�rrrr;us(

�
�
zSocketListener.__init__c
Cspz|j��\}|_WqZtttjfyT}z t|dd�tj	kr@�WYd}~qd}~00qZq|�
d�tt|��S)Nr�T)
rAr�r�rNr�r/r�r�r�r�rr�r�)r:�sr�rrrr��s
zSocketListener.acceptcCsJz(|j��W|j}|durFd|_|�n|j}|durDd|_|�0dSr)rArRr�)r:r�rrrrR�s�zSocketListener.closeN)r)r<r=r>r�r;r�rRrrrrr�qs
r�cCs8t|�}t�tt|��}|�d�|�|�tt|��S)zO
    Return a connection object connected to the socket given by `address`
    T)r6r/r�r�connectr�r�)r5r*r�rrrr��s


r�c@s8eZdZdZddd�Zd
dd�Zdd	�Zed
d��ZdS)r�z0
        Representation of a named pipe
        NcCsL||_|jdd�g|_d|_t�d|j�tj|tj|j|jfdd�|_	dS)NT)�firstz listener created with address=%rrr�)
r��_new_handle�
_handle_queuer�r�	sub_debugr�r��_finalize_pipe_listenerrR)r:r5r�rrrr;�s�zPipeListener.__init__Fc
CsHtjtjB}|r|tjO}t�|j|tjtjBtjBtj	t
t
tjtj�Sr)
r
r�r�r�r�r�r�r�r�ZPIPE_UNLIMITED_INSTANCESr�r�r�)r:r��flagsrrrr��s

��zPipeListener._new_handlec
Cs�|j�|���|j�d�}ztj|dd�}Wn2ty`}z|jtjkrL�WYd}~n~d}~00zVzt�	|j
gdt�Wn |��t�
|��Yn0W|�d�\}}|dks�J�n|�d�\}}|dks�J�0t|�S)NrTr|F)r��appendr��popr
r�rNr�Z
ERROR_NO_DATArr�r�r�r�r�r{)r:rGr�r�r�r�rrrr��s(
�

�zPipeListener.acceptcCs$t�d|�|D]}t�|�qdS)Nz closing listener with address=%r)rr�r
r�)�queuer5rGrrrr��sz$PipeListener._finalize_pipe_listener)N)F)	r<r=r>r�r;r�r��staticmethodr�rrrrr��s

r�c
Cs�t�}z6t�|d�t�|tjtjBdtjtjtjtj�}Wq|t	yt}z |j
|vs^t|�r`�WYd}~qd}~00q|q�t�|tj
dd�t|�S)zU
        Return a connection object connected to the pipe given by `address`
        ��rN)rr
Z
WaitNamedPiper�r�r�r�r�r�rNr�rr�r�r{)r5�_ignorer�hr�rrrr��s"
�
�r��s#CHALLENGE#s	#WELCOME#s	#FAILURE#cCstddl}t|t�sJ�t�t�}|�t|�|�||d��	�}|�
d�}||kr^|�t�n|�t�t
d��dS)Nr�md5�zdigest received was wrong)�hmacr@rXr$�urandom�MESSAGE_LENGTHr`�	CHALLENGE�new�digestrg�WELCOME�FAILUREr��
connectionr�r�messager
�responserrrr�s


r�cCs�ddl}t|t�sJ�|�d�}|dtt��tks@Jd|��|tt�d�}|�||d���}|�|�|�d�}|t	kr�t
d��dS)Nrrzmessage = %rrzdigest sent was rejected)rr@rXrgrYrrr
r`rrrrrrr�s
 

r�c@s$eZdZdd�Zdd�Zdd�ZdS)�ConnectionWrappercCs6||_||_||_dD]}t||�}t|||�qdS)N)rBrRrqrgr`)�_conn�_dumps�_loadsr��setattr)r:�connra�loads�attrrcrrrr;2s
zConnectionWrapper.__init__cCs|�|�}|j�|�dSr)rrr`)r:rcr�rrrrd:s
zConnectionWrapper.sendcCs|j��}|�|�Sr)rrgr)r:r�rrrrm>s
zConnectionWrapper.recvN)r<r=r>r;rdrmrrrrr0srcCst�|fdddd�}|�d�S)Nr�utf-8)�	xmlrpclibra�encode)rc�orrr�
_xml_dumpsCsr cCst�|�d��\\}}|S)Nr)rr�decode)r�rc�methodrrr�
_xml_loadsHsr#c@seZdZdd�ZdS)�XmlListenercCs"ddlmat�|�}t|tt�S�Nr)�
xmlrpc.client�clientrrr�rr r#rbrrrr�Os
zXmlListener.acceptN)r<r=r>r�rrrrr$Msr$cOs"ddlmatt|i|��tt�Sr%)r&r'rrrr r#)r��kwdsrrr�	XmlClientVsr)cCs�t|�}g}|r�t�|d|�}|tkr*q�n\t|krFtt|�krTnn
|t8}n2t|krptt|�kr~nn
|t8}ntd��|�||�||dd�}d}q|S)NFzShould not get hererr)	�listr
r�WAIT_TIMEOUTr�rY�WAIT_ABANDONED_0r�r�)Zhandlesr�L�ready�resrrr�_exhaustive_waitas 
 
r0c
s�|durt}n|dkrd}nt|dd�}t|�}i�g}t��t�}�zn|D]�}zt|d�}Wnty�|�|��<YqP0zt�|�dd�\}}Wn4t	y�}z|j
}|tvr��WYd}~n
d}~00|tjkr�|�
|�|�|j<qP��|�d}qPt���|�}W|D]}|���q|D]�}z|�d�\}	}Wn8t	�yv}z|j
}|tv�rb�WYd}~n
d}~00|tjk�r(�|j}��|�|dk�r(t|d��r(d|_�q(n�|D]}|���q�|D]�}z|�d�\}	}Wn8t	�y }z|j
}|tv�r�WYd}~n
d}~00|tjk�r҈|j}��|�|dk�r�t|d��r�d|_�q�0���fdd	�|D���fd
d�|D�S)��
        Wait till an object in object_list is ready/readable.

        Returns list of those objects in object_list which are ready/readable.
        Nrrg�?rBTr�c3s|]}�|VqdSrr)�.0r)�waithandle_to_objrr�	<genexpr>�r�zwait.<locals>.<genexpr>csg|]}|�vr|�qSrr)r2�p)�
ready_objectsrr�
<listcomp>�r�zwait.<locals>.<listcomp>)r��intr*�setr��AttributeErrorrCr
r�rNr��
_ready_errorsr~r�r��addr0�keysr�r�ZERROR_OPERATION_ABORTEDr.r��update)
�object_listrZov_listZ
ready_handlesrrBr�r�r�r�r)r6r3rrwsx






�



rrqcCs�|durt|d�}i}t��}|D]2}|�|tj�t|d�rN|||��<q$|||<q$g}|�|�D],\}}|tj@r�td|��|�	||�qf|S)NrrBzinvalid file descriptor %i)
r8�selectrq�register�POLLINr.rB�POLLNVALr(r�)�fdsrZfd_mapZpollster�fdZlsr�rrrro�s


rocCst�|gg|�dSr%)r@)rDrrrrro�sc
Cs�|dur$|dkrt|d�St�|}zt||�WStttjfyj}z|jtjkrV�WYd}~n
d}~00|dur$|t�}q$dS)r1Nr)rorrNr�r/r�r�r�)r?r�deadliner�rrrr�s

cCsf|��}t�|tjtj��8}ddlm}|�|�}t||j	|j
ffWd�S1sX0YdS)Nr)�resource_sharer)rBr/�fromfdr�SOCK_STREAMr!rGZ	DupSocket�rebuild_connectionrHrI)rrGr�rG�dsrrr�reduce_connection�s

rLcCs|��}tt|�||�Sr)r�r�)rKrHrIr9rrrrJ�srJcCsB|jrtjnd|jrtjndB}t�|��|�}t||j|jffSr%)	rHr
ZFILE_GENERIC_READrIZFILE_GENERIC_WRITErZ	DupHandlerB�rebuild_pipe_connection)rr��dhrrr�reduce_pipe_connection�s
�rOcCstt|�||�Sr)r{r�)rNrHrIrrrrM�srMcCs t�|���}t||j|jffSr)rZDupFdrBrJrHrI)r�dfrrrrLscCstt|�||�Sr)r�r�)rPrHrIrrrrJs)NN)TFF)TFF)N)N)Or�r�r$r,r/r@r�r"�	itertoolsr!rrrrZ_extr�compatrr	�timerrr
�ImportErrorr-r�r,r+r��__all__r.Zis_pypyr�ZCONNECTION_TIMEOUT�countr'r�Zfamiliesrrr+r0r6r7r?r{r�rrr�rr�r�r�ZERROR_SEM_TIMEOUTZERROR_PIPE_BUSYr�r
rrrr�r�rr r#r$r)r0r�ZERROR_NETNAME_DELETEDr;rrorLrJrArOrMrrrr�<module>
s�






#SV8

/28�		G