<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]                  @   s  d  d l  Z  e  j d k 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 Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z e rd  d l Z d  d l Z d  d l Z Gd
 d   d  Z n d  d l Z d  d l Z d  d l Z y d  d l Z Wn e k
 rUd  d l Z Yn Xe e d d  Z e e d  re j Z n	 e j Z d d d d d d d d d d d d d	 d g Z e r7d  d l m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& m' Z' e j( d d d d d d  d! d" g  Gd# d$   d$ e)  Z* g  Z+ d% d&   Z, d: Z- d; Z. d< Z/ d* d+   Z0 d, d d- d  Z1 d. d   Z2 d, d d/ d  Z3 Gd0 d   d e4  Z5 d1 d d, d d2 d3 d4 d  Z6 d5 d6   Z7 d7 d   Z8 d8 d   Z9 e4   Z: Gd9 d   d e4  Z; d S)=    Nwin32)	monotonicc               @   s   e  Z d  Z d S)SubprocessErrorN)__name__
__module____qualname__ r   r   //opt/alt/python35/lib64/python3.5/subprocess.pyr   9   s    r   c               @   sU   e  Z d  Z d d d d  Z d d   Z e d d    Z e j d d    Z d S)	CalledProcessErrorNc             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)
returncodecmdoutputstderr)selfr   r   r   r   r   r   r	   __init__C   s    			zCalledProcessError.__init__c             C   s   d |  j  |  j f S)Nz-Command '%s' returned non-zero exit status %d)r   r   )r   r   r   r	   __str__I   s    zCalledProcessError.__str__c             C   s   |  j  S)N)r   )r   r   r   r	   stdoutL   s    zCalledProcessError.stdoutc             C   s   | |  _  d  S)N)r   )r   valuer   r   r	   r   Q   s    )r   r   r   r   r   propertyr   setterr   r   r   r	   r
   <   s   r
   c               @   sU   e  Z d  Z d d d d  Z d d   Z e d d    Z e j d d    Z d S)	TimeoutExpiredNc             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)r   timeoutr   r   )r   r   r   r   r   r   r   r	   r   _   s    			zTimeoutExpired.__init__c             C   s   d |  j  |  j f S)Nz'Command '%s' timed out after %s seconds)r   r   )r   r   r   r	   r   e   s    zTimeoutExpired.__str__c             C   s   |  j  S)N)r   )r   r   r   r	   r   i   s    zTimeoutExpired.stdoutc             C   s   | |  _  d  S)N)r   )r   r   r   r   r	   r   m   s    )r   r   r   r   r   r   r   r   r   r   r   r	   r   X   s   r   c               @   s.   e  Z d  Z d Z d Z d Z d Z d Z d S)STARTUPINFOr   N)r   r   r   dwFlags	hStdInput
hStdOutput	hStdErrorwShowWindowr   r   r   r	   r   x   s
   r   PIPE_BUFi   PollSelectorPopenPIPESTDOUTcall
check_callgetstatusoutput	getoutputcheck_outputrunDEVNULLCompletedProcess)CREATE_NEW_CONSOLECREATE_NEW_PROCESS_GROUPSTD_INPUT_HANDLESTD_OUTPUT_HANDLESTD_ERROR_HANDLESW_HIDESTARTF_USESTDHANDLESSTARTF_USESHOWWINDOWr+   r,   r-   r.   r/   r0   r1   r2   c               @   sL   e  Z d  Z d Z e j d d  Z d d   Z d d   Z e Z	 e Z
 d S)	HandleFc             C   s    |  j  s d |  _  | |   d  S)NT)closed)r   CloseHandler   r   r	   Close   s    		zHandle.Closec             C   s,   |  j  s d |  _  t |   St d   d  S)NTzalready closed)r4   int
ValueError)r   r   r   r	   Detach   s    		
zHandle.Detachc             C   s   d |  j  j t |   f S)Nz%s(%d))	__class__r   r7   )r   r   r   r	   __repr__   s    zHandle.__repr__N)r   r   r   r4   _winapir5   r6   r9   r;   __del__r   r   r   r   r	   r3      s   r3   c              C   sf   x_ t  d  d   D]M }  |  j d t j  } | d  k	 r y t  j |   Wq t k
 r] Yq Xq Wd  S)N
_deadstate)_active_internal_pollsysmaxsizeremover8   )instresr   r   r	   _cleanup   s    rF            c              C   s   d d d d d d d d d	 d
 d d d d d d d d i	 }  g  } xM |  j    D]? \ } } t t j |  } | d k rO | j d | |  qO Wx" t j D] } | j d |  q W| S)NdebugdoptimizeOdont_write_bytecodeBno_user_sitesno_siteSignore_environmentEverbosevbytes_warningbquietqr   -z-W)itemsgetattrrA   flagsappendwarnoptions)flag_opt_mapargsflagoptrW   r   r   r	   _args_from_interpreter_flags   s"    rf   r   c             O   sS   t  | |   = } y | j d |   SWn | j   | j     Yn XWd  QRXd  S)Nr   )r    waitkill)r   	popenargskwargspr   r   r	   r#      s    

c              O   sM   t  |  |   } | rI | j d  } | d  k r: |  d } t | |   d S)Nrc   r   )r#   getr
   )ri   rj   retcoder   r   r   r	   r$      s    

c          	   O   sx   d | k r t  d   d | k rV | d d  k rV | j d d  rL d n d | d <t | d t d |  d	 d
 |  j S)Nr   z3stdout argument not allowed, it will be overridden.inputuniversal_newlinesF     r   checkT)r8   rl   r(   r!   r   )r   ri   rj   r   r   r	   r'     s     "c               @   s:   e  Z d  Z d d d d  Z d d   Z d d   Z d S)r*   Nc             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)rc   r   r   r   )r   rc   r   r   r   r   r   r	   r   J  s    			zCompletedProcess.__init__c             C   s   d j  |  j  d j  |  j  g } |  j d  k	 rL | j d j  |  j   |  j d  k	 rt | j d j  |  j   d j  t |   j d j |   S)Nz	args={!r}zreturncode={!r}zstdout={!r}zstderr={!r}z{}({})z, )	formatrc   r   r   r`   r   typer   join)r   rc   r   r   r	   r;   P  s    zCompletedProcess.__repr__c             C   s.   |  j  r* t |  j  |  j |  j |  j   d  S)N)r   r
   rc   r   r   )r   r   r   r	   check_returncodeY  s    	z!CompletedProcess.check_returncode)r   r   r   r   r;   rv   r   r   r   r	   r*   ?  s   	rn   rr   Fc       	      O   s  |  d  k	 r. d | k r$ t  d   t | d <t | |    } y | j |  d | \ } } Wnj t k
 r | j   | j   \ } } t | j | d | d |  Yn | j   | j     Yn X| j   } | r| rt	 | | j d | d |  Wd  QRXt
 | j | | |  S)Nstdinz/stdin and input arguments may not both be used.r   r   r   )r8   r!   r    communicater   rh   rc   rg   pollr
   r*   )	rn   r   rr   ri   rj   processr   r   rm   r   r   r	   r(   `  s*    



c             C   s8  g  } d } x|  D]} g  } | r2 | j  d  d | k pN d | k pN | } | rd | j  d  x | D] } | d k r | j  |  qk | d k r | j  d t |  d  g  } | j  d  qk | r | j |  g  } | j  |  qk W| r| j |  | r | j |  | j  d  q Wd j |  S)	NF 	"\rH   z\"rp   )r`   lenextendru   )seqresult	needquoteargbs_bufcr   r   r	   list2cmdline  s4    r   c             C   s   y( t  |  d d d d d t } d } Wn7 t k
 ra } z | j } | j } WYd  d  } ~ Xn X| d d   d k r | d  d	  } | | f S)
NshellTro   r   r   rG   
r   )r'   r"   r
   r   r   )r   datastatusexr   r   r	   r%     s    
	c             C   s   t  |   d S)NrG   )r%   )r   r   r   r	   r&     s    
c               @   s/  e  Z d  Z d Z d= d d d d d e d d d d d d d d f  d d  Z d d	   Z d
 d   Z d d   Z e	 j
 d d  Z d d   Z d d   Z d d d d  Z d d   Z d d   Z d d   Z e rhd d   Z d d   Z d  d!   Z d e j e j e j d" d#  Z d d d$ d%  Z d& d'   Z d( d)   Z d* d+   Z d, d-   Z e Z  n d. d   Z d/ d!   Z e! j" e! j# e! j$ e! j% e! j& e! j' d0 d1  Z( d e! j) e! j* e+ j, d2 d#  Z d3 d4   Z- d d d5 d%  Z d6 d)   Z d7 d8   Z. d9 d+   Z d: d-   Z d; d<   Z  d S)>r    FrG   Nr   Tc             C   s@  t    t j   |  _ d  |  _ d |  _ | d  k r: d } t | t  sU t d   t	 r | d  k	 rs t
 d   | d  k	 p | d  k	 p | d  k	 } | t k r | r d } q d } q;| r;| r;t
 d   ne | t k r d } | r| rt j d t  d } | d  k	 r#t
 d   | d	 k r;t
 d
   | |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ | |  _ |  j | | |  \ } } } } } } t	 r| d k rt j | j   d	  } | d k rt j | j   d	  } | d k rt j | j   d	  } | d k rdt j | d |  |  _ | rdt j |  j d d d | d k |  _ | d k rt j | d |  |  _ | rt j |  j  |  _ | d k rt j | d |  |  _ | rt j |  j  |  _ d |  _ yD |  j | | | | | |
 | | | |	 | | | | | | | |  Wn
xL t d  |  j |  j |  j f  D]) } y | j    WqWt! k
 rYqWXqWW|  j s4g  } | t" k r| j# |  | t" k r| j# |  | t" k r| j# |  t$ |  d  r| j# |  j%  x4 | D], } y t& j  |  Wqt! k
 r/YqXqW  Yn Xd  S)NFrG   zbufsize must be an integerz0preexec_fn is not supported on Windows platformsTzSclose_fds is not supported on Windows platforms if you redirect stdin/stdout/stderrzpass_fds overriding close_fds.z2startupinfo is only supported on Windows platformsr   z4creationflags is only supported on Windows platformswbwrite_throughline_bufferingrb_devnullr   r   r   r   r   r   r   )'rF   	threadingLock_waitpid_lock_input_communication_started
isinstancer7   	TypeError
_mswindowsr8   _PLATFORM_DEFAULT_CLOSE_FDSwarningswarnRuntimeWarningrc   rw   r   r   pidr   ro   _get_handlesmsvcrtopen_osfhandler9   ioopenTextIOWrapper_closed_child_pipe_fds_execute_childfiltercloseOSErrorr!   r`   hasattrr   os)r   rc   bufsize
executablerw   r   r   
preexec_fn	close_fdsr   cwdenvro   startupinfocreationflagsrestore_signalsstart_new_sessionpass_fdsany_stdio_setp2creadp2cwritec2preadc2pwriteerrreaderrwritefto_closefdr   r   r	   r   3  s    											'			(			zPopen.__init__c             C   s+   | j  |  } | j d d  j d d  S)Nz
r   )decodereplace)r   r   encodingr   r   r	   _translate_newlines  s    zPopen._translate_newlinesc             C   s   |  S)Nr   )r   r   r   r	   	__enter__  s    zPopen.__enter__c          
   C   sX   |  j  r |  j  j   |  j r, |  j j   z |  j rE |  j j   Wd  |  j   Xd  S)N)r   r   r   rw   rg   )r   rt   r   	tracebackr   r   r	   __exit__  s    			zPopen.__exit__c             C   sI   |  j  s d  S|  j d |  |  j d  k rE t d  k	 rE t j |   d  S)Nr>   )_child_createdr@   r   r?   r`   )r   _maxsizer   r   r	   r=     s
    	zPopen.__del__c             C   s1   t  |  d  s* t j t j t j  |  _ |  j S)Nr   )r   r   r   devnullO_RDWRr   )r   r   r   r	   _get_devnull  s    zPopen._get_devnullc             C   s   | rk y |  j  j |  WnN t k
 r. Yn= t k
 rj } z | j t j k rU n   WYd  d  } ~ Xn Xy |  j  j   WnN t k
 r Yn= t k
 r } z | j t j k r n   WYd  d  } ~ Xn Xd  S)N)rw   writeBrokenPipeErrorr   errnoEINVALr   )r   rn   excr   r   r	   _stdin_write  s"    zPopen._stdin_writec             C   sJ  |  j  r | r t d   | d  k r |  j  r |  j |  j |  j g j d   d k r d  } d  } |  j r} |  j |  nM |  j r |  j j   } |  j j   n% |  j r |  j j   } |  j j   |  j	   ni | d  k	 r t
   | } n d  } z |  j | | |  \ } } Wd  d |  _  X|  j	 d |  j |   } | | f S)Nz.Cannot send input after starting communicationrH   Tr   )r   r8   rw   r   r   countr   readr   rg   _time_communicate_remaining_time)r   rn   r   r   r   endtimestsr   r   r	   rx     s.    '			
zPopen.communicatec             C   s
   |  j    S)N)r@   )r   r   r   r	   ry   ,  s    z
Popen.pollc             C   s   | d  k r d  S| t    Sd  S)N)r   )r   r   r   r   r	   r   2  s    zPopen._remaining_timec             C   s5   | d  k r d  St    | k r1 t |  j |   d  S)N)r   r   rc   )r   r   orig_timeoutr   r   r	   _check_timeout:  s    zPopen._check_timeoutc             C   s  | d  k r( | d  k r( | d  k r( d	 Sd \ } } d \ } } d \ } }	 | d  k r t  j t  j  } | d  k rDt  j d  d  \ } }
 t |  } t  j |
  n | t k r t  j d  d  \ } } t |  t |  } } nZ | t k rt j	 |  j
    } n6 t | t  r/t j	 |  } n t j	 | j    } |  j |  } | d  k rt  j t  j  } | d  k rKt  j d  d  \ }
 } t |  } t  j |
  n | t k rt  j d  d  \ } } t |  t |  } } nZ | t k rt j	 |  j
    } n6 t | t  r6t j	 |  } n t j	 | j    } |  j |  } | d  k rt  j t  j  }	 |	 d  k rgt  j d  d  \ }
 }	 t |	  }	 t  j |
  n | t k rt  j d  d  \ } }	 t |  t |	  } }	 no | t k r| }	 nZ | t k r1t j	 |  j
    }	 n6 t | t  rRt j	 |  }	 n t j	 | j    }	 |  j |	  }	 | | | | | |	 f S)NrG   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<   ZGetStdHandler-   Z
CreatePiper3   r5   r!   r)   r   Zget_osfhandler   r   r7   fileno_make_inheritabler.   r/   r"   )r   rw   r   r   r   r   r   r   r   r   _r   r   r	   r   F  sn    $	zPopen._get_handlesc             C   s7   t  j t  j   | t  j   d d t  j  } t |  S)Nr   rG   )r<   ZDuplicateHandleZGetCurrentProcessZDUPLICATE_SAME_ACCESSr3   )r   handlehr   r   r	   r     s
    zPopen._make_inheritablec             C   s  t  | t  s t |  } | d  k r0 t   } d | | | f k rr | j t j O_ | | _ | | _ | | _	 |
 r | j t j
 O_ t j | _ t j j d d  } d j | |  } z> t j | | d  d  t |  |	 | | | 	 \ } } } } Wd  | d k r| j   | d	 k r*| j   | d
 k r@| j   t |  d  r_t j |  j  Xd |  _ t |  |  _ | |  _ t j |  d  S)NrG   ZCOMSPECzcmd.exez
{} /c "{}"r   Tr   r   r   r   )r   strr   r   r   r<   r1   r   r   r   r2   r0   r   r   environrl   rs   ZCreateProcessr7   r6   r   r   r   r   r3   _handler   r5   )r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zunused_restore_signalsZunused_start_new_sessionZcomspecZhpZhtr   tidr   r   r	   r     sD    				



		zPopen._execute_childc             C   s@   |  j  d  k r9 | |  j d  | k r9 | |  j  |  _  |  j  S)Nr   )r   r   )r   r>   Z_WaitForSingleObjectZ_WAIT_OBJECT_0Z_GetExitCodeProcessr   r   r	   r@     s    zPopen._internal_pollc             C   s   | d  k	 r |  j  |  } | d  k r3 t j } n t | d  } |  j d  k r t j |  j |  } | t j k r t |  j	 |   t j
 |  j  |  _ |  j S)Ni  )r   r<   ZINFINITEr7   r   WaitForSingleObjectr   ZWAIT_TIMEOUTr   rc   GetExitCodeProcess)r   r   r   Ztimeout_millisr   r   r   r	   rg     s    	z
Popen.waitc             C   s!   | j  | j    | j   d  S)N)r`   r   r   )r   Zfhbufferr   r   r	   _readerthread  s    zPopen._readerthreadc             C   s  |  j  re t |  d  re g  |  _ t j d |  j d |  j  |  j f  |  _ d |  j _ |  j j   |  j	 r t |  d  r g  |  _
 t j d |  j d |  j	 |  j
 f  |  _ d |  j _ |  j j   |  j r |  j |  |  j  d  k	 r)|  j j |  j |   |  j j   r)t |  j |   |  j	 d  k	 rr|  j j |  j |   |  j j   rrt |  j |   d  } d  } |  j  r|  j } |  j  j   |  j	 r|  j
 } |  j	 j   | d  k	 r| d } | d  k	 r| d } | | f S)N_stdout_bufftargetrc   T_stderr_buffr   )r   r   r   r   Threadr   Zstdout_threaddaemonstartr   r   Zstderr_threadrw   r   ru   r   is_aliver   rc   r   )r   rn   r   r   r   r   r   r   r	   r     sF    							

zPopen._communicatec             C   s   |  j  d  k	 r d  S| t j k r/ |  j   ne | t j k rW t j |  j t j  n= | t j k r t j |  j t j  n t	 d j
 |    d  S)NzUnsupported signal: {})r   signalSIGTERM	terminateZCTRL_C_EVENTr   rh   r   ZCTRL_BREAK_EVENTr8   rs   )r   sigr   r   r	   send_signal0  s    zPopen.send_signalc             C   sp   |  j  d  k	 r d  Sy t j |  j d  Wn? t k
 rk t j |  j  } | t j k r^   | |  _  Yn Xd  S)NrG   )r   r<   ZTerminateProcessr   PermissionErrorr   ZSTILL_ACTIVE)r   rcr   r   r	   r   >  s    zPopen.terminatec       
      C   s  d \ } } d \ } } d
 \ } }	 | d  k r3 n` | t  k rT t j   \ } } n? | t k ro |  j   } n$ t | t  r | } n | j   } | d  k r n` | t  k r t j   \ } } n? | t k r |  j   } n$ t | t  r | } n | j   } | d  k rn | t  k r2t j   \ } }	 nr | t k re| d k rS| }	 qt	 j
 j   }	 n? | t k r|  j   }	 n$ t | t  r| }	 n | j   }	 | | | | | |	 f S)NrG   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   )r!   r   piper)   r   r   r7   r   r"   rA   
__stdout__)
r   rw   r   r   r   r   r   r   r   r   r   r   r	   r   S  sJ    				c       &   "      s  t  | t t f  r! | g } n t |  } |
 rS d d g | }   rS   | d <  d  k ri | d     } t j   \ } } g  } x, | d k  r | j |  t j |  } q Wx | D] } t j |  q WzqzO| d  k	 rQg  } xh | j	   D]Q \ } } t j
 |  } d | k r,t d   | j | d t j
 |   q Wn d  } t j
      t j j    r  f } n( t   f d d   t j |  D  } t |  } | j |  t j | | | t t t t |    | | | | | | | | | | | | |  |  _ d	 |  _ Wd  t j |  Xt |  d
 d   } | d k rz| d k rz| | k rzt j |  | d k r| d k r| | k rt j |  | d k r| d k r| | k rt j |  | d  k	 rt j |  d	 |  _ t   } x: t j | d  } | | 7} | s?t |  d k r
Pq
WWd  t j |  X| ry t j |  j d  Wn t k
 rYn Xy | j  d d  \ }  }! }" Wn. t k
 rd }  d }! d t! |  }" Yn Xt t" |  j# d  t$  }# |" j# d d  }" t% |# t&  r|! rt |! d  }$ |" d k }% |% rAd }" |$ d k rt j' |$  }" |$ t( j) k r|% r|" d t! |  7}" n |" d t! |  7}" |# |$ |"   |# |"   d  S)Nz/bin/shz-cr   rI      =z!illegal environment variable namec             3   s-   |  ]# } t  j j t  j |     Vq d  S)N)r   pathru   fsencode).0dir)r   r   r	   	<genexpr>  s   z'Popen._execute_child.<locals>.<genexpr>Tr   rG   iP     :rH   s   SubprocessError   0s   Bad exception data from child: asciierrorssurrogatepass   noexecrp   z: r   r   r   r   r   r   )*r   r   byteslistr   r   r`   dupr   r]   r   r8   r   dirnametupleget_exec_pathsetadd_posixsubprocess	fork_execsortedmapr7   r   r   r^   r   	bytearrayr   r   waitpidChildProcessErrorsplitreprbuiltinsr   r   
issubclassr   strerrorr   ENOENT)&r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   orig_executableerrpipe_readerrpipe_writelow_fds_to_closelow_fdenv_listkrW   executable_listfds_to_keep
devnull_fderrpipe_datapartexception_name	hex_errnoerr_msgchild_exception_type	errno_numchild_exec_never_calledr   )r   r	   r     s    	

%$$$		
		c             C   sl   | |  r | |  |  _  nI | |  r= | |  |  _  n+ | |  r\ | |  |  _  n t d   d  S)NzUnknown child exit status!)r   r   )r   r   _WIFSIGNALED	_WTERMSIG
_WIFEXITED_WEXITSTATUS_WIFSTOPPED	_WSTOPSIGr   r   r	   _handle_exitstatus  s    zPopen._handle_exitstatusc             C   s   |  j  d  k r |  j j d  s% d  Sz yN |  j  d  k	 rA |  j  S| |  j |  \ } } | |  j k ru |  j |  WnU t k
 r } z5 | d  k	 r | |  _  n | j | k r d |  _  WYd  d  } ~ Xn XWd  |  j j   X|  j  S)NFr   )r   r   acquirer   r5  r   r   release)r   r>   _waitpid_WNOHANG_ECHILDr   r   er   r   r	   r@     s     	 c             C   sM   y t  j |  j |  \ } } Wn! t k
 rB |  j } d } Yn X| | f S)Nr   )r   r  r   r  )r   
wait_flagsr   r   r   r   r	   	_try_waitB  s    	zPopen._try_waitc             C   s  |  j  d  k	 r |  j  S| d  k	 s. | d  k	 re | d  k rJ t   | } n | d  k re |  j |  } | d  k	 r=d } x+|  j j d  r zI |  j  d  k	 r P|  j t j  \ } } | |  j k r |  j	 |  PWd  |  j j
   X|  j |  } | d k rt |  j |   t | d | d  } t j |  qz Wnh xe |  j  d  k r|  j F |  j  d  k	 riP|  j d  \ } } | |  j k r|  j	 |  Wd  QRXq@W|  j  S)NgMb@?Fr   rH   g?)r   r   r   r   r6  r=  r   WNOHANGr   r5  r7  r   rc   mintimesleep)r   r   r   delayr   r   	remainingr   r   r	   rg   O  s@    
c          #   C   s  |  j  re |  j re y |  j  j   Wn t k
 r8 Yn X| se y |  j  j   Wn t k
 rd Yn Xd  } d  } |  j s i  |  _ |  j r g  |  j |  j <|  j r g  |  j |  j <|  j r |  j |  j } |  j r |  j |  j } |  j |  |  j	 rt
 |  j	  } t   } |  j  r=| r=| j |  j  t j  |  j r\| j |  j t j  |  j r{| j |  j t j  x| j   r|  j |  } | d  k	 r| d k  rt |  j |   | j |  }	 |  j | |  x6|	 D].\ }
 } |
 j |  j  k r| |  j |  j t  } y" |  j t j |
 j |  7_ Wn/ t k
 rt| j |
 j  |
 j j   YqX|  j t |  j	  k r| j |
 j  |
 j j   q|
 j |  j |  j f k rt j |
 j d  } | s | j |
 j  |
 j j   |  j |
 j j |  qWq~WWd  QRX|  j  d |  j |   | d  k	 rZd j! |  } | d  k	 rud j! |  } |  j" r| d  k	 r|  j# | |  j j$  } | d  k	 r|  j# | |  j j$  } | | f S)Nr   i   r   rq   )%rw   r   flushr   r   _fileobj2outputr   r   _save_inputr   
memoryview_PopenSelectorregister	selectorsEVENT_WRITE
EVENT_READget_mapr   r   rc   selectr   fileobj_input_offset	_PIPE_BUFr   r   r   
unregisterr   r   r`   rg   ru   ro   r   r   )r   rn   r   r   r   r   
input_viewselectorr   readykeyeventschunkr   r   r   r	   r     s    										"&			c             C   s^   |  j  rZ |  j d  k rZ d |  _ | |  _ |  j rZ | d  k	 rZ |  j j |  j  j  |  _ d  S)Nr   )rw   r   rP  ro   encoder   )r   rn   r   r   r	   rF    s
    		zPopen._save_inputc             C   s&   |  j  d  k r" t j |  j |  d  S)N)r   r   rh   r   )r   r   r   r   r	   r     s    c             C   s   |  j  t j  d  S)N)r   r   r   )r   r   r   r	   r     s    c             C   s   |  j  t j  d  S)N)r   r   SIGKILL)r   r   r   r	   rh     s    z
Popen.killr   )/r   r   r   r   r   r   r   r   r   rA   rB   r=   r   r   rx   ry   r   r   r   r   r   r   r<   r   ZWAIT_OBJECT_0r   r@   rg   r   r   r   r   rh   r   WIFSIGNALEDWTERMSIG	WIFEXITEDWEXITSTATUS
WIFSTOPPEDWSTOPSIGr5  r  r>  r   ECHILDr=  rF  r   r   r   r	   r      s^   )	
1H	=4	6	"1_r   )<rA   platformr   r   r   r@  r   r  r   r   r   r   	Exceptionr   r
   r   r   r   r<   r   r  rN  rJ  ImportErrordummy_threadingr^   rQ  r   r   rH  SelectSelector__all__r+   r,   r-   r.   r/   r0   r1   r2   r   r7   r3   r?   rF   r!   r"   r)   rf   r#   r$   r'   objectr*   r(   r   r%   r&   r   r    r   r   r   r	   <module>,   sl   	:,!2I	