ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5d1                    @   s  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Zd dlZd dl	Z	d dlm
Z ddddddd	d
ddddddgZzd dlZd dlZdZW n0 ek
r   dZd dlZd dlZd dlZY nX d dlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% e&ddddddddddddd d!d"d#d$d%d&g G d'd de'Z(G d(d de(Z)G d)d de(Z*erG d*d dZ+G d+d, d,e,Z-n&e.ed-d.Z/e0ed/rej1Z2nej3Z2erdZ4d0d1 Z5ng Z4d2d1 Z5d3Z6d4Z7d5Z8d6d7 Z9d8d9 Z:dd:d;dZ;d<d Z<dd:d=d
Z=G d>d de>Z?ddddd?d@dZ@dAdB ZAdCd ZBdDd	 ZCdEdF ZDeD ZEG dGd de>ZFdS )H    N)	monotonicPopenPIPESTDOUTcall
check_callgetstatusoutput	getoutputcheck_outputrunCalledProcessErrorDEVNULLSubprocessErrorTimeoutExpiredCompletedProcessTF)CREATE_NEW_CONSOLECREATE_NEW_PROCESS_GROUPSTD_INPUT_HANDLESTD_OUTPUT_HANDLESTD_ERROR_HANDLESW_HIDESTARTF_USESTDHANDLESSTARTF_USESHOWWINDOWABOVE_NORMAL_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSIDLE_PRIORITY_CLASSNORMAL_PRIORITY_CLASSREALTIME_PRIORITY_CLASSCREATE_NO_WINDOWDETACHED_PROCESSCREATE_DEFAULT_ERROR_MODECREATE_BREAKAWAY_FROM_JOBr   r   r   r   r   r   r   r   STARTUPINFOr   r   r   r   r   r   r   r    r!   r"   c                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r'   r'   "/usr/lib64/python3.8/subprocess.pyr   `   s    c                   @   s8   e Zd Zd	ddZdd Zedd Zejdd ZdS )
r   Nc                 C   s   || _ || _|| _|| _d S N)
returncodecmdoutputstderr)selfr*   r+   r,   r-   r'   r'   r(   __init__j   s    zCalledProcessError.__init__c                 C   sh   | j rT| j dk rTzd| jt| j  f W S  tk
rP   d| j| j  f  Y S X nd| j| j f S d S )Nr   zCommand '%s' died with %r.z)Command '%s' died with unknown signal %d.z.Command '%s' returned non-zero exit status %d.)r*   r+   signalZSignals
ValueErrorr.   r'   r'   r(   __str__p   s       zCalledProcessError.__str__c                 C   s   | j S r)   r,   r2   r'   r'   r(   stdout|   s    zCalledProcessError.stdoutc                 C   s
   || _ d S r)   r4   r.   valuer'   r'   r(   r5      s    )NNr$   r%   r&   r/   r3   propertyr5   setterr'   r'   r'   r(   r   c   s   

c                   @   s8   e Zd Zd	ddZdd Zedd Zejdd ZdS )
r   Nc                 C   s   || _ || _|| _|| _d S r)   )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;   r2   r'   r'   r(   r3      s    
zTimeoutExpired.__str__c                 C   s   | j S r)   r4   r2   r'   r'   r(   r5      s    zTimeoutExpired.stdoutc                 C   s
   || _ d S r)   r4   r6   r'   r'   r(   r5      s    )NNr8   r'   r'   r'   r(   r      s   

c                   @   s,   e Zd ZdddddddddZdd ZdS )r#   r   NdwFlags	hStdInput
hStdOutput	hStdErrorwShowWindowlpAttributeListc                C   s0   || _ || _|| _|| _|| _|p(dg i| _d S )Nhandle_listr<   )r.   r=   r>   r?   r@   rA   rB   r'   r'   r(   r/      s    zSTARTUPINFO.__init__c                 C   s@   | j  }d|kr"t|d |d< t| j| j| j| j| j|dS )NrC   r<   )	rB   copylistr#   r=   r>   r?   r@   rA   )r.   Z	attr_listr'   r'   r(   rD      s    
zSTARTUPINFO.copy)r$   r%   r&   r/   rD   r'   r'   r'   r(   r#      s     	c                   @   s2   e Zd ZdZejfddZdd Zdd 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| S tdd S )NTzalready closed)rG   intr1   r2   r'   r'   r(   Detach   s    zHandle.Detachc                 C   s   d| j jt| f S )Nz%s(%d))	__class__r$   rJ   r2   r'   r'   r(   __repr__   s    zHandle.__repr__N)
r$   r%   r&   rG   _winapirH   rI   rK   rM   __del__r'   r'   r'   r(   rF      s
   rF   ZPIPE_BUFi   PollSelectorc                   C   s   d S r)   r'   r'   r'   r'   r(   _cleanup   s    rQ   c               	   C   s\   t d krd S t d d  D ]>} | jtjd}|d k	rzt |  W q tk
rT   Y qX qd S )N
_deadstate)_active_internal_pollsysmaxsizeremover1   )instresr'   r'   r(   rQ      s    c                  C   s*   g } t jj}|dkr&| dd|   | S )Nr   -O)rV   flagsoptimizeappend)argsr7   r'   r'   r(   "_optim_args_from_interpreter_flags  s
    rd   c                  C   sV  ddddddd} t  }|  D ].\}}ttj|}|dkr |d	||   q tjjrd|d
 n$tjjrv|d tjjr|d tj	d d  }tjj
}ttdi }d|k}|dkr|d n|r|d |r|d |D ]}|d|  q|r
|d dD ]B}||kr|| }	|	dkr4|}
nd||	f }
|d|
f q|S )NdBSvbq)debugdont_write_bytecodeno_siteverbosebytes_warningquietr   r^   z-Iz-Ez-s	_xoptionsdev   zerror::BytesWarningzdefault::BytesWarningdefaultz-W)-Xrr   )ZfaulthandlertracemallocZ
importtimeZshowalloccountZshowrefcountutf8Tz%s=%sru   )rd   itemsgetattrrV   r`   rb   isolatedignore_environmentno_user_sitewarnoptionsro   rX   extend)Zflag_opt_maprc   flagoptrh   Zwarnoptsro   Zxoptionsdev_moder7   argr'   r'   r(   _args_from_interpreter_flags  sP    






r   r;   c              
   O   sL   t ||8}z|j| dW W  5 Q R  S    |   Y nX W 5 Q R X d S )Nr   )r   waitkill)r;   	popenargskwargspr'   r'   r(   r   L  s    c                  O   s6   t | |}|r2|d}|d kr(| d }t||dS )Nrc   r   )r   getr   )r   r   retcoder+   r'   r'   r(   r   ]  s    



c                 O   sb   d|krt dd|krJ|d d krJ|ds8|dr>d}nd}||d< t|t| dd	|jS )
Nr5   z3stdout argument not allowed, it will be overridden.inputuniversal_newlinestext     T)r5   r;   check)r1   r   r   r   r5   )r;   r   r   emptyr'   r'   r(   r
   p  s    #c                   @   s&   e Zd ZdddZdd Zdd ZdS )	r   Nc                 C   s   || _ || _|| _|| _d S r)   )rc   r*   r5   r-   )r.   rc   r*   r5   r-   r'   r'   r(   r/     s    zCompletedProcess.__init__c                 C   sh   d | jd | jg}| jd k	r4|d | j | jd k	rP|d | j d t| jd|S )Nz	args={!r}zreturncode={!r}zstdout={!r}zstderr={!r}z{}({})z, )	formatrc   r*   r5   rb   r-   typer$   join)r.   rc   r'   r'   r(   rM     s    



zCompletedProcess.__repr__c                 C   s    | j rt| j | j| j| jd S r)   )r*   r   rc   r5   r-   r2   r'   r'   r(   check_returncode  s    z!CompletedProcess.check_returncode)NN)r$   r%   r&   r/   rM   r   r'   r'   r'   r(   r     s   
	)r   capture_outputr;   r   c                 O   s   | d k	r&| dd k	rtdt|d< |r^| dd k	sF| dd k	rNtdt|d< t|d< t||}z|j| |d\}}W n^ tk
r }	 z,|  tr| \|	_|	_	n|
   W 5 d }	~	X Y n   |   Y nX | }
|r|
rt|
|j||dW 5 Q R X t|j|
||S )Nstdinz/stdin and input arguments may not both be used.r5   r-   z@stdout and stderr arguments may not be used with capture_output.r   r,   r-   )r   r1   r   r   communicater   r   
_mswindowsr5   r-   r   pollr   rc   r   )r   r   r;   r   r   r   Zprocessr5   r-   excr   r'   r'   r(   r     s8     c                 C   s   g }d}t tj| D ]}g }|r*|d d|kp>d|kp>| }|rN|d |D ]b}|dkrj|| qR|dkr|dt| d  g }|d qR|r|| g }|| qR|r|| |r|| |d qd|S )	NF 	"\   z\"r   )maposfsdecoderb   lenr~   r   )seqresultZ	needquoter   Zbs_bufcr'   r'   r(   list2cmdline	  s4    




r   c              
   C   sl   zt | ddtd}d}W n. tk
rF } z|j}|j}W 5 d }~X Y nX |dd  dkrd|d d }||fS )NT)shellr   r-   r   r[   
)r
   r   r   r,   r*   )r+   dataZexitcodeZexr'   r'   r(   r   R  s    c                 C   s   t | d S Nrs   )r   )r+   r'   r'   r(   r	   q  s    
c               
   C   s   t sttdsdS tjdkr dS zjtd} | jdd}t|dkrHt|d	 }t	t
t|d d
}tjdkr|dkr|dkrW dS W n tttfk
r   Y nX dS )Nposix_spawnFdarwinTCS_GNU_LIBC_VERSIONrs   )maxsplitr   r   .ZlinuxZglibc)r      )r   hasattrr   rV   platformconfstrsplitr   r1   tupler   rJ   AttributeErrorOSError)ZverpartsZlibcversionr'   r'   r(   _use_posix_spawn~  s     


r   c                   @   s  e Zd ZdZdJdddddd	Zed
d Zejdd Zdd Zdd Z	dd Z
ejejfddZdd Zdd ZdKddZdd Zdd ZdLdd ZdMd!d"Zd#d$ Zerd%d& Zd'd( Zd)d* Zd+d, Zdejejej fd-d.Z!d/d0 Z"d1d2 Z#d3d4 Z$d5d6 Z%d7d8 Z&e&Z'nd9d& Zd:d; Z(d<d, Ze)j*e)j+e)j,e)j-e)j.e)j/fd=d>Z0de)j1e)j2e3j4fd?d.Z!d@dA Z5dBd0 Z"dCd4 Z$dDdE Z6dFd6 Z%dGd8 Z&dHdI Z'dS )Nr   Fr[   NTr   r'   )encodingerrorsr   c                C   sl  t   t | _d | _d| _|d kr(d}t|ts:tdt	rP|d k	rt
dn8|rh|shtdt d}|d k	rxt
d|dkrt
d	|| _d | _d | _d | _d | _d | _|| _|| _|d k	r|d k	rt|t|krtd
| |||\}}}}}}t	rN|dkrt| d}|dkr4t| d}|dkrNt| d}|pb|pb|pb|| _d| _d| _| jr|dkrd}d}nd}z|dkrt |d|| _| jrtj!| jd|||d| _|dkrt |d|| _| jrtj!| j||d| _|dkr:t |d|| _| jr:tj!| j||d| _| "||||||
||||	|||||||| W n   t#d | j| j| jfD ]*}z|$  W n t%k
r   Y nX q| js`g }|t&kr|'| |t&kr|'| |t&kr|'| t(| dr|'| j) |D ]H}z*t	r8t|t*r8|+  n
t,$| W n t%k
rZ   Y nX q Y nX d S )NFr[   zbufsize must be an integerz0preexec_fn is not supported on Windows platformszpass_fds overriding close_fds.Tz2startupinfo is only supported on Windows platformsr   z4creationflags is only supported on Windows platformszlCannot disambiguate when both text and universal_newlines are supplied but different. Pass one or the other.g      ?rs   wb)write_throughline_bufferingr   r   rb)r   r   _devnull)-rQ   	threadingZLock_waitpid_lock_input_communication_started
isinstancerJ   	TypeErrorr   r1   warningswarnRuntimeWarningrc   r   r5   r-   pidr*   r   r   boolr   _get_handlesmsvcrtZopen_osfhandlerK   	text_mode_sigint_wait_secs_closed_child_pipe_fdsioopenTextIOWrapper_execute_childfiltercloser   r   rb   r   r   rF   rI   r   )r.   rc   bufsize
executabler   r5   r-   
preexec_fn	close_fdsr   cwdenvr   startupinfocreationflagsrestore_signalsstart_new_sessionpass_fdsr   r   r   p2creadp2cwritec2preadc2pwriteerrreaderrwriter   fZto_closefdr'   r'   r(   r/     s    


  





 
 
         








zPopen.__init__c                 C   s   | j S r)   )r   r2   r'   r'   r(   r   ~  s    zPopen.universal_newlinesc                 C   s   t || _d S r)   )r   r   )r.   r   r'   r'   r(   r     s    c                 C   s    | ||}|ddddS )Nz
r   )decodereplace)r.   r   r   r   r'   r'   r(   _translate_newlines  s    zPopen._translate_newlinesc                 C   s   | S r)   r'   r2   r'   r'   r(   	__enter__  s    zPopen.__enter__c                 C   s   | j r| j   | jr | j  d z| jr4| j  W 5 |tkr| jdkrrz| j| jd W n tk
rp   Y nX d| _  d S |   X  d S )Nr   r   )	r5   r   r-   KeyboardInterruptr   _waitr   r   r   )r.   exc_typer7   	tracebackr'   r'   r(   __exit__  s     


zPopen.__exit__c                 C   sT   | j s
d S | jd kr(|d| j t| d | j|d | jd krPtd k	rPt|  d S )Nzsubprocess %s is still running)sourcerR   )_child_createdr*   r   ResourceWarningrU   rT   rb   )r.   Z_maxsizeZ_warnr'   r'   r(   rO     s    

 zPopen.__del__c                 C   s"   t | dsttjtj| _| jS )Nr   )r   r   r   devnullO_RDWRr   r2   r'   r'   r(   _get_devnull  s    
zPopen._get_devnullc              
   C   s   |rZz| j | W nD tk
r(   Y n2 tk
rX } z|jtjkrFn W 5 d }~X Y nX z| j   W nD tk
r|   Y n2 tk
r } z|jtjkrn W 5 d }~X Y nX d S r)   )r   writeBrokenPipeErrorr   errnoZEINVALr   )r.   r   r   r'   r'   r(   _stdin_write  s"    zPopen._stdin_writec                 C   sT  | j r|rtd|d kr| j s| j| j| jgd dkrd }d }| jrT| | n6| jrp| j }| j  n| jr| j }| j  | 	  n|d k	rt
 | }nd }zz| |||\}}W nh tk
r,   |d k	rt| j| |}n| j}d| _z| j|d W n tk
r$   Y nX  Y nX W 5 d| _ X | j	| |d}||fS )Nz.Cannot send input after starting communicationr   Tr   r   )r   r1   r   r5   r-   countr  readr   r   _time_communicater   minr   _remaining_timer   r   )r.   r   r;   r5   r-   endtimesigint_timeoutstsr'   r'   r(   r     sH    




zPopen.communicatec                 C   s   |   S r)   )rU   r2   r'   r'   r(   r     s    z
Popen.pollc                 C   s   |d krd S |t   S d S r)   )r  )r.   r	  r'   r'   r(   r  "  s    zPopen._remaining_timec                 C   sL   |d krd S |st  |krHt| j||r0d|nd |r@d|nd dd S )Nr   r   )r  r   rc   r   )r.   r	  orig_timeoutZ
stdout_seqZ
stderr_seqskip_check_and_raiser'   r'   r(   _check_timeout*  s     zPopen._check_timeoutc                 C   s   |d k	rt  | }z| j|dW S  tk
r   |d k	rLt| j| |}n| j}d| _z| j|d W n tk
r|   Y nX  Y nX d S )Nr   r   )r  r   r   r  r   r  r   )r.   r;   r	  r
  r'   r'   r(   r   6  s     
z
Popen.waitc           	   	   C   s   t | dd }t }trX|dkr.||j |dkrB||j |dkr||j nr|dkr~|dkr~||kr~|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| W 5 Q R X d| _d S )Nr   r[   T)	ry   
contextlib	ExitStackr   callbackrI   r   r   r   )	r.   r   r   r   r   r   r   Z
devnull_fdstackr'   r'   r(   _close_pipe_fdsM  s$    
zPopen._close_pipe_fdsc                 C   s~  |d kr|d kr|d krdS d\}}d\}}d\}}	|d krtt t j}|d krt d d\}}
t|}t |
 nh|tkrt d d\}}t|t| }}n<|tkrt	| 
 }n$t|trt	|}nt	| }| |}|d kr*t t j}|d krt d d\}
}t|}t |
 nn|tkrXt d d\}}t|t| }}n@|tkrrt	| 
 }n&t|trt	|}nt	| }| |}|d krt t j}	|	d krdt d d\}
}	t|	}	t |
 n~|tkrt d d\}}	t|t|	 }}	nP|tkr$|}	n@|tkr>t	| 
 }	n&t|trVt	|}	nt	| }	| |	}	||||||	fS )N)r[   r[   r[   r[   r[   r[   r[   r[   r   )rN   ZGetStdHandler   Z
CreatePiperF   rH   r   r   r   Zget_osfhandler   r   rJ   fileno_make_inheritabler   r   r   )r.   r   r5   r-   r   r   r   r   r   r   _r'   r'   r(   r   n  st    












  zPopen._get_handlesc                 C   s&   t t  |t  ddt j}t|S )Nr   rs   )rN   ZDuplicateHandleZGetCurrentProcessZDUPLICATE_SAME_ACCESSrF   )r.   handlehr'   r'   r(   r    s       zPopen._make_inheritablec                 C   s   t dd |D S )Nc                 S   s,   h | ]$}|d @ d ks$t |t jkr|qS )   )rN   ZGetFileTypeZFILE_TYPE_CHAR).0r  r'   r'   r(   	<setcomp>  s    z,Popen._filter_handle_list.<locals>.<setcomp>)rE   )r.   rC   r'   r'   r(   _filter_handle_list  s    zPopen._filter_handle_listc                 C   sz  t |trnNt |tr.|
r"tdt|g}n,t |tjrR|
rFtdt|g}nt|}|d k	rlt|}|d kr|t }n|	 }d|||fk}|r| j
tjO  _
||_||_||_|j}t|od|ko|d }|s|r^|r^|d kri  }|_t|dg  }|d< |r0|t|t|t|g7 }| ||d d < |r^|sZtdt d}|
r| j
tjO  _
tj|_|stjd}|stjdd	}tj|d
d}tj|st dtj|r|}n|}d!||}|d k	r t|}t"#d|||| z,t%||d d t| |	|||	\}}}}W 5 | $|||||| X d| _&t'|| _(|| _)t*| d S )Nz$bytes args is not allowed on Windows0path-like args is not allowed when shell is truer[   rC   z?startupinfo.lpAttributeList['handle_list'] overriding close_fdsFZComSpecZ
SystemRootr   ZSystem32zcmd.exez:shell not found: neither %ComSpec% nor %SystemRoot% is setz
{} /c "{}"subprocess.PopenT)+r   strbytesr   r   r   PathLiker   r#   rD   r=   rN   r   r>   r?   r@   rB   r   rE   r   rJ   r  r   r   r   r   r   rA   environpathr   isabsFileNotFoundErrorr   rV   auditr  ZCreateProcessr   rF   _handler   rH   )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use_std_handlesZattribute_listZhave_handle_listrC   ZcomspecZsystem_rootZhpZhtr   tidr'   r'   r(   r     s    






   
zPopen._execute_childc                 C   s,   | j d kr&|| jd|kr&|| j| _ | j S Nr   )r*   r(  )r.   rS   Z_WaitForSingleObjectZ_WAIT_OBJECT_0Z_GetExitCodeProcessr'   r'   r(   rU   H  s    
zPopen._internal_pollc                 C   s^   |d krt j}nt|d }| jd krXt | j|}|t jkrJt| j|t 	| j| _| jS )Ni  )
rN   ZINFINITErJ   r*   WaitForSingleObjectr(  ZWAIT_TIMEOUTr   rc   GetExitCodeProcess)r.   r;   Ztimeout_millisr   r'   r'   r(   r   Y  s    

zPopen._waitc                 C   s   | |  |  d S r)   )rb   r  r   )r.   Zfhbufferr'   r'   r(   _readerthreadi  s    zPopen._readerthreadc                 C   s\  | j rBt| dsBg | _tj| j| j | jfd| _d| j_| j  | j	rt| dsg | _
tj| j| j	| j
fd| _d| j_| j  | jr| | | j d k	r| j| | | j rt| j|| j	d k	r| j| | | j rt| j|d }d }| j r| j}| j   | j	r0| j
}| j	  |r>|d nd }|rP|d nd }||fS )N_stdout_buff)targetrc   T_stderr_buffr   )r5   r   r/  r   ZThreadr.  Zstdout_threadZdaemonstartr-   r1  Zstderr_threadr   r  r   r  Zis_aliver   rc   r   )r.   r   r	  r  r5   r-   r'   r'   r(   r  n  sJ    










zPopen._communicatec                 C   sl   | j d k	rd S |tjkr"|   nF|tjkr>t| jtj n*|tjkrZt| jtj nt	d
|d S )NzUnsupported signal: {})r*   r0   SIGTERM	terminateZCTRL_C_EVENTr   r   r   ZCTRL_BREAK_EVENTr1   r   r.   Zsigr'   r'   r(   send_signal  s    




zPopen.send_signalc                 C   sX   | j d k	rd S zt| jd W n2 tk
rR   t| j}|tjkrH || _ Y nX d S r   )r*   rN   ZTerminateProcessr(  PermissionErrorr,  ZSTILL_ACTIVE)r.   Zrcr'   r'   r(   r4    s    

zPopen.terminatec           
      C   s,  d\}}d\}}d\}}	|d kr"n@|t kr8t \}}n*|tkrJ|  }nt|trZ|}n| }|d krln@|t krt \}}n*|tkr|  }nt|tr|}n| }|d krnf|t krt \}}	nP|tkr|dkr|}	n
t	j
 }	n.|tkr|  }	nt|tr|}	n| }	||||||	fS )Nr  r[   )r   r   piper   r   r   rJ   r  r   rV   
__stdout__)
r.   r   r5   r-   r   r   r   r   r   r   r'   r'   r(   r     sP    





  c                 C   s   |d krt j}i }|rJg }dD ]"}tt|d }|d k	r|| q||d< g }|||	fD ]}|dkrX|t j|f qX|df|df|
dffD ]"\}}|dkr|t j||f q|r||d< t j|||f|| _d| _	| 
|||||	|
 d S )	N)SIGPIPEZSIGXFZSIGXFSZZ	setsigdefr[   r   rs   r   file_actionsT)r   r#  ry   r0   rb   POSIX_SPAWN_CLOSEPOSIX_SPAWN_DUP2r   r   r   r  )r.   rc   r   r   r   r   r   r   r   r   r   r   ZsigsetZsignameZsignumr<  r   Zfd2r'   r'   r(   _posix_spawn  s<      zPopen._posix_spawnc           )         s  t |ttfr|g}n(t |tjr6|
r.td|g}nt|}|
rlttdrPdnd}|dg| } rl |d<  d kr||d  t	d ||| t
rtj r|d kr|s|s|d kr|dks|d	kr|dks|d	kr|dks|d	kr|s| | ||||||||
 d S  }t \}}g }|d
k rT|| t|}q2|D ]}t| qXzJz|d k	rg }| D ]>\}}t|}d|krtd||d t|  qnd }t  tj r f}nt fddt|D }t|}|| t|||tttt||||||||||||||| _d| _W 5 t| X |  |||||| t! }t"|d}||7 }|rt#|dkrqqW 5 t| X |rz6t$| jd\} }!| | jkr| %|! ntj&| _'W n t(k
r   Y nX z|)dd	\}"}#}$|$* }$W n, tk
rb   d}"d}#d+t|}$Y nX t,t-|"*dt.}%t/|%t0r|#rt|#d}&|$dk}'|'rd}$|}(n|}(|&dkrt1|&}$|%|&|$|(|%|$d S )Nr  Zgetandroidapilevelz/system/bin/shz/bin/shz-cr   r  r[   r   r     =z!illegal environment variable namec                 3   s"   | ]}t jt | V  qd S r)   )r   r$  r   fsencode)r  dirr   r'   r(   	<genexpr>r  s   z'Popen._execute_child.<locals>.<genexpr>TiP     :s   SubprocessError   0z#Bad exception data from child: {!r}ascii   Znoexecr   )2r   r   r!  r   r"  r   rE   r   rV   r'  _USE_POSIX_SPAWNr$  dirnamer?  r8  rb   dupr   rx   rA  r1   r   get_exec_pathsetadd_posixsubprocessZ	fork_execsortedr   rJ   r   r   r  	bytearrayr  r   waitpid_handle_exitstatusrW   r*   ChildProcessErrorr   r   r   ry   builtinsr   
issubclassr   strerror))r.   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z
unix_shellZorig_executableZerrpipe_readZerrpipe_writeZlow_fds_to_closeZlow_fdZenv_listkrh   Zexecutable_listZfds_to_keepZerrpipe_datapartr   r  Zexception_nameZ	hex_errnoerr_msgZchild_exception_typeZ	errno_numZchild_exec_never_calledZerr_filenamer'   rC  r(   r      s"   	
	
   






          
  

 


c                 C   sL   ||r|| | _ n2||r*||| _ n||r@|| | _ ntdd S )NzUnknown child exit status!)r*   r   )r.   r  Z_WIFSIGNALEDZ	_WTERMSIGZ
_WIFEXITEDZ_WEXITSTATUSZ_WIFSTOPPEDZ	_WSTOPSIGr'   r'   r(   rS    s    zPopen._handle_exitstatusc              
   C   s   | j d kr| jdsd S zz>| j d k	r4| j W W pS || j|\}}|| jkrX| | W nB tk
r } z$|d k	r||| _ n|j|krd| _ W 5 d }~X Y nX W 5 | j  X | j S )NFr   )r*   r   acquirereleaser   rS  r   r  )r.   rS   Z_waitpidZ_WNOHANGZ_ECHILDr   r  er'   r'   r(   rU     s     	



c                 C   s>   zt | j|\}}W n tk
r4   | j}d}Y nX ||fS r*  )r   rR  r   rT  )r.   Z
wait_flagsr   r  r'   r'   r(   	_try_wait  s    
zPopen._try_waitc              	   C   s  | j d k	r| j S |d k	rt | }d}| jdr~z>| j d k	rDW 0q| tj\}}|| jkrn| 	| W qW 5 | j  X | 
|}|dkrt| j|t|d |d}t| q&n\| j d kr| jB | j d k	rW 5 Q R  q| d\}}|| jkr
| 	| W 5 Q R X q| j S )NgMb@?Fr   r   g?)r*   r  r   r[  r\  r^  r   WNOHANGr   rS  r  r   rc   r  timesleep)r.   r;   r	  Zdelayr   r  Z	remainingr'   r'   r(   r     s6    







c              
   C   s"  | j rX| jsXz| j   W n tk
r.   Y nX |sXz| j   W n tk
rV   Y nX d }d }| jsi | _| jr~g | j| j< | jrg | j| j< | jr| j| j }| jr| j| j }| | | j	rt
| j	}t }| j r|r|| j tj | jr| jjs|| jtj | jr6| jjs6|| jtj | r| |}|d k	rz|dk rz| j||||dd td||}	| |||| |	D ]\}
}|
j| j kr6|| j| jt  }z|  jt|
j|7  _W n, tk
r
   ||
j |
j  Y n*X | jt| j	kr||
j |
j  nP|
j| j| jfkrt|
jd}|st||
j |
j  | j|
j | qq6W 5 Q R X | j | |d |d k	rd!|}|d k	rd!|}| j"r|d k	r| #|| jj$| jj%}|d k	r| #|| jj$| jj%}||fS )Nr   T)r  zN_check_timeout(..., skip_check_and_raise=True) failed to raise TimeoutExpired.i   r   r   )&r   r   flushr   r   Z_fileobj2outputr5   r-   _save_inputr   
memoryview_PopenSelectorregister	selectorsZEVENT_WRITErG   Z
EVENT_READZget_mapr  r  RuntimeErrorselectZfileobj_input_offset	_PIPE_BUFr   r   r   Z
unregisterr   r  rb   r   r   r   r   r   r   )r.   r   r	  r  r5   r-   Z
input_viewZselectorr;   ZreadykeyZeventschunkr   r'   r'   r(   r  '  s    





 

$





c                 C   sF   | j rB| jd krBd| _|| _|d k	rB| jrB| j| j j| j j| _d S r*  )r   r   rj  r   encoder   r   )r.   r   r'   r'   r(   rc    s    zPopen._save_inputc                 C   s   | j d krt| j| d S r)   )r*   r   r   r   r5  r'   r'   r(   r6    s    
c                 C   s   |  tj d S r)   )r6  r0   r3  r2   r'   r'   r(   r4    s    c                 C   s   |  tj d S r)   )r6  r0   SIGKILLr2   r'   r'   r(   r     s    z
Popen.kill)r[   NNNNNTFNNNNr   TFr'   )NN)F)N)7r$   r%   r&   r   r/   r9   r   r:   r   r   r   rV   rW   r   r   rO   r   r  r   r   r  r  r   r  r   r   r  r  r   rN   r+  ZWAIT_OBJECT_0r,  rU   r   r.  r  r6  r4  r   r?  r   WIFSIGNALEDWTERMSIG	WIFEXITEDWEXITSTATUS
WIFSTOPPEDWSTOPSIGrS  rR  r_  r  ZECHILDr^  rc  r'   r'   r'   r(   r     s   .                          


D	 

H	|
26'   
 
#)f)GrU  r  r   r   r`  r0   rV   r   r   r  r   r  __all__r   rN   r   ModuleNotFoundErrorrO  ri  rg  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r~   	Exceptionr   r   r   r#   rJ   rF   ry   rk  r   rP   re  ZSelectSelectorrT   rQ   r   r   r   rd   r   r   r   r
   objectr   r   r   r   r	   r   rI  r   r'   r'   r'   r(   <module>,   s         P
        %	

;3"   EI/