a �DOglF�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddlm Z ddl Z z ddl Z Wney�dZ Yn0z ddlZWney�dZYn0gd�ZzddlZddlZdZWn.ey�dZddlZddlZddlZYn`0ddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)e�*gd��Gdd �d e+�Z,Gd d �d e,�Z-Gd d �d e,�Z.e�r�Gdd�d�Z/Gdd�de0�Z1n&e2edd�Z3e4ed��r�ej5Z6nej7Z6e�r�dZ8dd�Z9n gZ8dd�Z9dZ:dZ;dZdd�d d!�Z?d"d#�Z@dd�d$d%�ZAGd&d'�d'eB�ZCddddd(�d)d*�ZDd+d,�ZEd-d.�ZFd/d0�ZGd1d2�ZHeH�ZIGd3d4�d4eB�ZJdS)5�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_JOB)rrrrrrrr� STARTUPINFOrrrrrrrr r!r"c@s eZdZdS)rN)�__name__� __module__� __qualname__�r'r'�"/usr/lib64/python3.9/subprocess.pyri�rc@s8eZdZd dd�Zdd�Zedd��Zejdd��ZdS) r NcCs||_||_||_||_dS�N)� returncode�cmd�output�stderr)�selfr+r,r-r.r'r'r(�__init__sszCalledProcessError.__init__cCsf|jrR|jdkrRzd|jt�|j �fWStyNd|j|j fYS0nd|j|jfSdS)NrzCommand '%s' died with %r.z)Command '%s' died with unknown signal %d.z.Command '%s' returned non-zero exit status %d.)r+r,�signal�Signals� ValueError�r/r'r'r(�__str__ys�  ��zCalledProcessError.__str__cCs|jSr*�r-r4r'r'r(�stdout�szCalledProcessError.stdoutcCs ||_dSr*r6�r/�valuer'r'r(r7�s)NN�r$r%r&r0r5�propertyr7�setterr'r'r'r(r ls    r c@s8eZdZd dd�Zdd�Zedd��Zejdd��ZdS) rNcCs||_||_||_||_dSr*)r,�timeoutr-r.)r/r,r=r-r.r'r'r(r0�szTimeoutExpired.__init__cCsd|j|jfS)Nz'Command '%s' timed out after %s seconds)r,r=r4r'r'r(r5�s �zTimeoutExpired.__str__cCs|jSr*r6r4r'r'r(r7�szTimeoutExpired.stdoutcCs ||_dSr*r6r8r'r'r(r7�s)NNr:r'r'r'r(r�s   rc@s,eZdZddddddd�dd�Zdd�ZdS)r#rN��dwFlags� hStdInput� hStdOutput� hStdError� wShowWindow�lpAttributeListcCs0||_||_||_||_||_|p(dgi|_dS)N� handle_listr>)r/r?r@rArBrCrDr'r'r(r0�s zSTARTUPINFO.__init__cCs@|j��}d|vr"t|d�|d<t|j|j|j|j|j|d�S)NrEr>) rD�copy�listr#r?r@rArBrC)r/Z attr_listr'r'r(rF�s �zSTARTUPINFO.copy)r$r%r&r0rFr'r'r'r(r#�s� r#c@s2eZdZdZejfdd�Zdd�Zdd�ZeZ dS) �HandleFcCs|jsd|_||�dS)NT)�closed)r/� CloseHandler'r'r(�Close�sz Handle.ClosecCs |jsd|_t|�Std��dS)NTzalready closed)rI�intr3r4r'r'r(�Detach�sz Handle.DetachcCsd|jjt|�fS)Nz%s(%d))� __class__r$rLr4r'r'r(�__repr__�szHandle.__repr__N) r$r%r&rI�_winapirJrKrMrO�__del__r'r'r'r(rH�s rH�PIPE_BUFi� PollSelectorcCsdSr*r'r'r'r'r(�_cleanup�srTc CsZtdur dStdd�D]<}|jtjd�}|durzt�|�WqtyRYq0qdS)N�� _deadstate)�_active�_internal_poll�sys�maxsize�remover3)�inst�resr'r'r(rT�s ���������������cCs*g}tjj}|dkr&|�dd|�|S)Nr�-�O)rY�flags�optimize�append)�argsr9r'r'r(�"_optim_args_from_interpreter_flagss rgc CsVddddddd�}t�}|��D].\}}ttj|�}|dkr |�d ||�q tjjrd|�d �n$tjjrv|�d �tjjr�|�d �tj dd�}tjj }ttd i�}d|v}|dkr�|� d�n|r�|� d�|r�|� d�|D]}|�d|�q�|�r |� d�dD]B}||v�r||} | du�r4|} n d|| f} |� d| f��q|S)N�d�B�S�v�b�q)�debug�dont_write_bytecode�no_site�verbose� bytes_warning�quietrraz-Iz-Ez-s� _xoptions�dev�zerror::BytesWarningzdefault::BytesWarning�defaultz-W)�-Xru)� faulthandler� tracemalloc� importtime� showrefcount�utf8� oldparserTz%s=%srx) rg�items�getattrrYrcre�isolated�ignore_environment� no_user_site� warnoptionsrrr[�extend) � flag_opt_maprf�flag�optrk�warnoptsrr�xoptions�dev_moder9�argr'r'r(�_args_from_interpreter_flagssP�             r��r=cOsft|i|���D}z|j|d�WWd�S|���Yn0Wd�n1sX0YdS)Nr�)r�wait�kill)r=� popenargs�kwargs�pr'r'r(rUs rcOs:t|i|��}|r6|�d�}|dur,|d}t||��dS)Nrfr)r�getr )r�r��retcoder,r'r'r(rfs   rcOsbd|vrtd��d|vrJ|ddurJ|�d�s8|�d�r>d}nd}||d<t|t|dd �|��jS) Nr7z3stdout argument not allowed, it will be overridden.�input�universal_newlines�text�r)T)r7r=�check)r3r�r rr7)r=r�r��emptyr'r'r(r ys#�r c@s0eZdZddd�Zdd�Zeej�Zdd�Z dS) rNcCs||_||_||_||_dSr*)rfr+r7r.)r/rfr+r7r.r'r'r(r0�szCompletedProcess.__init__cCshd�|j�d�|j�g}|jdur4|�d�|j��|jdurP|�d�|j��d�t|�jd�|��S)Nz args={!r}zreturncode={!r}z stdout={!r}z stderr={!r}z{}({})z, ) �formatrfr+r7rer.�typer$�join)r/rfr'r'r(rO�s  �  zCompletedProcess.__repr__cCs |jrt|j|j|j|j��dSr*)r+r rfr7r.r4r'r'r(�check_returncode�s�z!CompletedProcess.check_returncode)NN) r$r%r&r0rO� classmethod�types� GenericAlias�__class_getitem__r�r'r'r'r(r�s  r)r��capture_outputr=r�c Os<|dur&|�d�durtd��t|d<|r^|�d�dusF|�d�durNtd��t|d<t|d<t|i|����}z|j||d�\}}Wn`ty�} z4|��tr�|��\| _| _ n|� ��WYd} ~ nd} ~ 0|���Yn0|� �} |�r | �r t | |j ||d��Wd�n1�s"0Yt|j | ||�S)N�stdinz/stdin and input arguments may not both be used.r7r.z@stdout and stderr arguments may not be used with capture_output.r��r-r.)r�r3rr� communicaterr�� _mswindowsr7r.r��pollr rfr) r�r�r=r�r�r��processr7r.�excr�r'r'r(r �s6 �&r cCs�g}d}ttj|�D]�}g}|r*|�d�d|vp>d|vp>| }|rN|�d�|D]b}|dkrj|�|�qR|dkr�|�dt|�d�g}|�d�qR|r�|�|�g}|�|�qR|r�|�|�|r|�|�|�d�qd�|�S) NF� � �"�\�z\"r�)�map�os�fsdecodere�lenr�r�)�seq�result� needquoter��bs_buf�cr'r'r(� list2cmdlines4         r�c Csnzt|ddtd�}d}Wn0tyH}z|j}|j}WYd}~n d}~00|dd�dkrf|dd�}||fS)NT)�shellr�r.rr^� )r rr r-r+)r,�data�exitcode�exr'r'r(r^s rcCs t|�dS�Nrv)r)r,r'r'r(r }s r c Cs�tsttd�sdStjdkr dSzjt�d�}|jdd�}t|�dkrHt�|d }t t t |d�d ���}tjd kr�|d kr�|d kr�WdSWnt tt fy�Yn0dS)N� posix_spawnF�darwinT�CS_GNU_LIBC_VERSIONrv)�maxsplitr�r�.�linux�glibc)r��)r��hasattrr�rY�platform�confstr�splitr�r3�tupler�rL�AttributeError�OSError)�ver�parts�libc�versionr'r'r(�_use_posix_spawn�s      r�c@s�eZdZdZdLdddddddd�dd �Zd d �Zeej�Z e d d ��Z e j dd ��Z dd�Z dd�Zdd�Zejejfdd�Zdd�Zdd�ZdMdd�Zdd�Zdd �ZdNd!d"�ZdOd#d$�Zd%d&�Ze�r0d'd(�Zd)d*�Zd+d,�Z d-d.�Z!de"j#e"j$e"j%fd/d0�Z&d1d2�Z'd3d4�Z(d5d6�Z)d7d8�Z*d9d:�Z+e+Z,n~d;d(�Zdd.�Z!e.j/e.j0e.j1fd?d@�Z2de.j3e.j4e5j6fdAd0�Z&dBdC�Z7dDd2�Z'dEd6�Z)dFdG�Z8dHd8�Z*dId:�Z+dJdK�Z,dS)PrFr^NTrr')�user�group� extra_groups�encoding�errorsr��umaskc(CsFt�t��|_d|_d|_|dur(d}t|t�s:td��t rP|dur�t d��n8|rh|sht � dt �d}| durxt d��|dkr�t d ��||_d|_d|_d|_d|_d|_||_||_|dur�| dur�t| �t|�kr�td ��|�|||�\}}}}}}t �rN|dk�rt�|��d�}|dk�r4t�|��d�}|dk�rNt�|��d�}|�pb|�pb|�pb| |_d |_d|_|j�r�|d k�r�d}d}nd}d} |du�rtt d ��s�t d��nPt|t!��r�t"du�r�t d��t"�#|�j$} n$t|t��r�|} ntd�%t&|����| dk�rt d| ����d}!|du�r�tt d��sBt d��nt|t!��rVt d��g}!|D]b}"t|"t!��r�t"du�r�t d��|!�'t"�#|"�j$�n*t|"t��r�|!�'|"�ntd�%t&|"�����q^|!D]}#|#dk�r�t d|#�����q�d}$|du�rhtt d��s t d��nFt|t!��r6t(du�r(t d��t(�)|�j*}$nt|t��rH|}$ntd��|$dk�rht d|$����z�|dk�r�t+�,|d|�|_|j�r�t+j-|jd|||d�|_|dk�r�t+�,|d|�|_|j�r�t+j-|j||d�|_|dk�rt+�,|d|�|_|j�rt+j-|j||d�|_|�.|||||| | | || |||||||| |!|$||�Wn�t/d|j|j|jf�D](}%z |%�0�Wnt1�y�Yn0�qd|j�s:g}&|t2k�r�|&�'|�|t2k�r�|&�'|�|t2k�r�|&�'|�t|d ��r�|&�'|j3�|&D]F}'z*t �rt|'t4��r|'�5�n t �0|'�Wnt1�y4Yn0�q�Yn0dS)!NFr^zbufsize must be an integerz0preexec_fn is not supported on Windows platformszpass_fds overriding close_fds.Tz2startupinfo is only supported on Windows platformsrz4creationflags is only supported on Windows platformszlCannot disambiguate when both text and universal_newlines are supplied but different. Pass one or the other.g�?rv�setregidz>The 'group' parameter is not supported on the current platformzHThe group parameter cannot be a string on systems without the grp modulez,Group must be a string or an integer, not {}z!Group ID cannot be negative, got � setgroupszEThe 'extra_groups' parameter is not supported on the current platformz#Groups must be a list, not a stringzIItems in extra_groups cannot be strings on systems without the grp modulez9Items in extra_groups must be a string or integer, not {}�setreuidz=The 'user' parameter is not supported on the current platformzGThe user parameter cannot be a string on systems without the pwd modulez#User must be a string or an integerz User ID cannot be negative, got �wb)� write_through�line_bufferingr�r��rb)r�r��_devnull)6rT� threading�Lock� _waitpid_lock�_input�_communication_started� isinstancerL� TypeErrorr�r3�warnings�warn�RuntimeWarningrfr�r7r.�pidr+r�r��boolr� _get_handles�msvcrt�open_osfhandlerM� text_mode�_sigint_wait_secs�_closed_child_pipe_fdsr�r��str�grp�getgrnam�gr_gidr�r�re�pwd�getpwnam�pw_uid�io�open� TextIOWrapper�_execute_child�filter�closer�rr�rHrK)(r/rf�bufsize� executabler�r7r.� preexec_fn� close_fdsr��cwd�envr�� startupinfo� creationflags�restore_signals�start_new_session�pass_fdsr�r�r�r�r�r�r��p2cread�p2cwrite�c2pread�c2pwrite�errread�errwriter��gid�gids� extra_group� gid_check�uid�f�to_close�fdr'r'r(r0�s.     � �          �         �           � � � �             zPopen.__init__cCs@d|jj�d|j�d|j�d�}t|�dkr<|dd�d}|S)N��P�Lz...>)rNr$r+rfr�)r/�obj_reprr'r'r(rO�s ��� zPopen.__repr__cCs|jSr*)r�r4r'r'r(r��szPopen.universal_newlinescCst|�|_dSr*)r�r�)r/r�r'r'r(r��scCs |�||�}|�dd��dd�S)Nz r�� )�decode�replace)r/r�r�r�r'r'r(�_translate_newlines�s zPopen._translate_newlinescCs|Sr*r'r4r'r'r(� __enter__�szPopen.__enter__cCs�|jr|j��|jr |j��z^|jr2|j��W|tkrv|jdkrlz|j|jd�WntyjYn0d|_dS|��nT|tkr�|jdkr�z|j|jd�Wnty�Yn0d|_YdS|��0dS)Nrr�) r7rr.r��KeyboardInterruptr��_waitrr�)r/�exc_typer9� tracebackr'r'r(�__exit__�s2      �   zPopen.__exit__cCsT|js dS|jdur(|d|jt|d�|j|d�|jdurPtdurPt�|�dS)Nzsubprocess %s is still running)�sourcerU)�_child_createdr+r��ResourceWarningrXrWre)r/�_maxsize�_warnr'r'r(rQs  � z Popen.__del__cCs"t|d�st�tjtj�|_|jS)Nr�)r�r�r��devnull�O_RDWRr�r4r'r'r(� _get_devnull$s zPopen._get_devnullc Cs�|rZz|j�|�WnDty&Yn4tyX}z|jtjkrBn�WYd}~n d}~00z|j��WnDtyzYn4ty�}z|jtjkr�n�WYd}~n d}~00dSr*)r��write�BrokenPipeErrorr��errno�EINVALr)r/r�r�r'r'r(� _stdin_write)s"    zPopen._stdin_writec CsV|jr|rtd��|dur�|js�|j|j|jg�d�dkr�d}d}|jrT|�|�n6|jrp|j��}|j��n|jr�|j��}|j��|� �n�|dur�t �|}nd}z�z|� |||�\}}Wndt �y(|dur�t |j|�|��}n|j}d|_z|j|d�Wnt�y Yn0�Yn0Wd|_nd|_0|j |�|�d�}||fS)Nz.Cannot send input after starting communicationr�rr�T)r�r3r�r7r.�countr6�readrr��_time� _communicater%�minr��_remaining_timer&r)r/r�r=r7r.�endtime�sigint_timeout�stsr'r'r(r�BsH �       � zPopen.communicatecCs|��Sr*)rXr4r'r'r(r��sz Popen.pollcCs|dur dS|t�SdSr*)r9)r/r=r'r'r(r<�szPopen._remaining_timecCsL|dur dS|st�|krHt|j||r0d�|�nd|r@d�|�ndd��dS)Nr)r�)r9rrfr�)r/r=� orig_timeout� stdout_seq� stderr_seq�skip_check_and_raiser'r'r(�_check_timeout�s�zPopen._check_timeoutc Cs�|durt�|}z|j|d�WSty�|durJt|j|�|��}n|j}d|_z|j|d�WntyxYn0�Yn0dS)Nr�r)r9r&r%r;r�r<r)r/r=r=r>r'r'r(r��s   � z Popen.waitc Cst|dd�}t����}trX|dkr.|�|j�|dkrB|�|j�|dkr�|�|j�nr|dkr~|dkr~||kr~|�tj|�|dkr�|dkr�||kr�|�tj|�|dkr�|dkr�||kr�|�tj|�|dur�|�tj|�Wd�n1s�0Yd|_dS)Nr�r^T) r�� contextlib� ExitStackr��callbackrKr�rr�) r/r rrrrr� devnull_fd�stackr'r'r(�_close_pipe_fds�s$    ,zPopen._close_pipe_fdsc Cs~|dur|dur|durdSd\}}d\}}d\}} |durtt�tj�}|dur�t�dd�\}} t|�}t�| �nh|tkr�t�dd�\}}t|�t|�}}n<|tkr�t� |� ��}n$t |t �r�t� |�}nt� |� ��}|�|�}|du�r*t�tj�}|du�r�t�dd�\} }t|�}t�| �nn|tk�rXt�dd�\}}t|�t|�}}n@|tk�rrt� |� ��}n&t |t ��r�t� |�}nt� |� ��}|�|�}|du�r�t�tj�} | du�rdt�dd�\} } t| �} t�| �n~|tk�rt�dd�\}} t|�t| �}} nP|tk�r$|} n@|tk�r>t� |� ��} n&t |t ��rVt� |�} nt� |� ��} |�| �} |||||| fS)N)r^r^r^r^r^r^�r^r^r)rPZ GetStdHandlerZ CreatePiperHrJrr r�Z get_osfhandler1r�rL�fileno�_make_inheritablerrr) r/r�r7r.r rrrrr�_r'r'r(r��sp                        �zPopen._get_handlescCs&t�t��|t��ddtj�}t|�S)Nrrv)rPZDuplicateHandleZGetCurrentProcessZDUPLICATE_SAME_ACCESSrH)r/�handle�hr'r'r(rM s  �zPopen._make_inheritablecCstdd�|D��S)NcSs,h|]$}|d@dks$t�|�tjkr|�qS)�)rPZ GetFileTypeZFILE_TYPE_CHAR)�.0rOr'r'r(� 0s  ��z,Popen._filter_handle_list..)rG)r/rEr'r'r(�_filter_handle_list)szPopen._filter_handle_listc!Cs�t|t�r nNt|t�r.| r"td��t|g�}n,t|tj�rR| rFtd��t|g�}nt|�}|durlt�|�}|dur|t�}n|� �}d| ||fv}|r�|j t j O_ | |_ ||_||_|j}t|o�d|vo�|d�}|s�|�r^|�r^|dur�i}|_t|�dg��}|d<|�r0|t| �t|�t|�g7}|�|�|dd�<|�r^|�sZt�dt�d}| �r�|j t jO_ t j|_|�s�tj�d�}|�s�tj�dd �}tj�|d d �}tj�|��s�t d ��tj�|��r�|}n|}d �!||�}|du�rt�|�}t"�#d||||�z@t �$||ddt| �| |||� \}}}} W|�%| | | |||�n|�%| | | |||�0d|_&t'|�|_(||_)t �*|�dS)Nz$bytes args is not allowed on Windows�0path-like args is not allowed when shell is truer^rEz?startupinfo.lpAttributeList['handle_list'] overriding close_fdsFZComSpecZ SystemRootr�ZSystem32zcmd.exez:shell not found: neither %ComSpec% nor %SystemRoot% is setz {} /c "{}"�subprocess.PopenT)+r�r��bytesr�r�r��PathLiker�r#rFr?rPrr@rArBrDr�rGr�rLrTr�r�r�rrrC�environ�pathr��isabs�FileNotFoundErrorr�rY�auditZ CreateProcessrJr+rH�_handler�rJ)!r/rfrrrr rrrr r�r rrrrrZunused_restore_signalsZ unused_gidZ unused_gidsZ unused_uidZ unused_umaskZunused_start_new_sessionZuse_std_handlesZattribute_listZhave_handle_listrEZcomspecZ system_rootZhpZhtr��tidr'r'r(r�6s�      �� � �    ��� zPopen._execute_childcCs,|jdur&||jd�|kr&||j�|_|jS�Nr)r+r^)r/rVZ_WaitForSingleObjectZ_WAIT_OBJECT_0Z_GetExitCodeProcessr'r'r(rX�s  zPopen._internal_pollcCs^|durtj}n t|d�}|jdurXt�|j|�}|tjkrJt|j|��t� |j�|_|jS)Ni�) rPZINFINITErLr+�WaitForSingleObjectr^Z WAIT_TIMEOUTrrf�GetExitCodeProcess)r/r=Ztimeout_millisr�r'r'r(r&�s  �  z Popen._waitcCs|�|���|��dSr*)rer8r)r/Zfh�bufferr'r'r(� _readerthread�szPopen._readerthreadcCs\|jrBt|d�sBg|_tj|j|j|jfd�|_d|j_|j��|j r�t|d�s�g|_ tj|j|j |j fd�|_ d|j _|j ��|j r�|� |�|jdur�|j�|�|��|j��r�t|j|��|j dur�|j �|�|��|j ��r�t|j|��d}d}|j�r|j}|j��|j �r0|j }|j ��|�r>|dnd}|�rP|dnd}||fS)N� _stdout_buff)�targetrfT� _stderr_buffr)r7r�rer��ThreadrdZ stdout_thread�daemon�startr.rgZ stderr_threadr�r6r�r<�is_aliverrfr)r/r�r=r@r7r.r'r'r(r:�sJ ��  ��          zPopen._communicatecCsl|jdurdS|tjkr"|��nF|tjkr>t�|jtj�n*|tjkrZt�|jtj�nt d� |���dS)NzUnsupported signal: {}) r+r1�SIGTERM� terminateZ CTRL_C_EVENTr�r�r�ZCTRL_BREAK_EVENTr3r��r/�sigr'r'r(� send_signal s     zPopen.send_signalcCsV|jdurdSzt�|jd�Wn0tyPt�|j�}|tjkrF�||_Yn0dSr�)r+rPZTerminateProcessr^�PermissionErrorrbZ STILL_ACTIVE)r/�rcr'r'r(rms    zPopen.terminatec Cs,d\}}d\}}d\}} |dur"n@|tkr8t��\}}n*|tkrJ|��}nt|t�rZ|}n|��}|durln@|tkr�t��\}}n*|tkr�|��}nt|t�r�|}n|��}|dur�nf|tkr�t��\}} nP|tkr�|dkr�|} n t j ��} n.|tk�r|��} nt|t��r|} n|��} |||||| fS)NrKr^) rr��piper r1r�rLrLrrY� __stdout__) r/r�r7r.r rrrrrr'r'r(r�0sL        �c Cs�|durtj}i} |rJg} dD]"} tt| d�}|dur| �|�q| | d<g}||| fD]}|dkrX|�tj|f�qX|df|df| dffD]"\}}|dkr�|�tj||f�q�|r�|| d<tj|||fi| ��|_d|_ |� ||||| | �dS) N)�SIGPIPE�SIGXFZ�SIGXFSZ� setsigdefr^rrvr�� file_actionsT) r�rYr�r1re�POSIX_SPAWN_CLOSE�POSIX_SPAWN_DUP2r�r�r+rJ)r/rfrrr r rrrrrr��sigset�signame�signumryr�fd2r'r'r(� _posix_spawnfs8  � �zPopen._posix_spawnc-st|ttf�r|g}n(t|tj�r6| r.td��|g}nt|�}| rlttd�rPdnd}|dg|}�rl�|d<�dur||d�t� d�|||�t �rFtj � ���rF|du�rF|�sF|�sF|du�rF| dks�| d k�rF|dks�|d k�rF|dks�|d k�rF|�sF|du�rF|du�rF|du�rF|dk�rF|� |�||| | | |||� dS�}t��\}}g}|d k�r||�|�t�|�}�qZ|D]}t�|��q��zh�z|du�r�g}|��D]>\}}t�|�}d |v�r�td ��|�|d t�|���q�nd}t����tj � ���r�f} nt�fd d�t�|�D��} t|�}!|!�|�t�|| |tttt|!���||| | | ||||||||||||�|_d|_Wt�|�n t�|�0|� | | | |||�t!�}"t�"|d�}#|"|#7}"|#�r�t#|"�dk�r��q�q�Wt�|�n t�|�0|"�rz6t�$|jd�\}$}%|$|jk�r<|�%|%�ntj&|_'Wnt(�yZYn0z|"�)dd �\}&}'}(|(�*�}(Wn*t�y�d}&d}'d�+t|"��}(Yn0t,t-|&�*d�t.�})t/|)t0��r|'�rt|'d�}*|(dk}+|+�r�d}(|},n|},|*dk�rt�1|*�}(|)|*|(|,��|)|(��dS)NrU�getandroidapilevelz/system/bin/shz/bin/shz-crrVr^r�rQ�=z!illegal environment variable namec3s"|]}tj�t�|���VqdSr*)r�rZr��fsencode)rR�dir�rr'r(� �s�z'Popen._execute_child..TiP��:sSubprocessError�0z#Bad exception data from child: {!r}�ascii��noexecr�)2r�r�rWr�rXr�rGr�rYr]�_USE_POSIX_SPAWNrZ�dirnamer�rsre�duprrr�r3r�� get_exec_path�set�add�_posixsubprocess� fork_exec�sortedr�rLr�r+rJ� bytearrayr8r��waitpid�_handle_exitstatusrZr+�ChildProcessErrorr�r!r�r��builtinsr� issubclassr��strerror)-r/rfrrrr rrrr r�r rrrrrr rrrr�r � unix_shell�orig_executable� errpipe_read� errpipe_write�low_fds_to_close�low_fd�env_list�krk�executable_list� fds_to_keep� errpipe_data�partr�r?�exception_name� hex_errno�err_msg�child_exception_type� errno_num�child_exec_never_called� err_filenamer'r�r(r��s  ��  ����������� � � � � � �        � � �      � �  �    cCs$||�r||� |_n ||�|_dSr*)r+)r/r?�waitstatus_to_exitcode� _WIFSTOPPED� _WSTOPSIGr'r'r(r�1szPopen._handle_exitstatusc Cs�|jdur�|j�d�sdSz�zF|jdur<|jWW|j��S||j|�\}}||jkr`|�|�WnDty�}z,|dur�||_n|j|kr�d|_WYd}~n d}~00W|j��n |j��0|jS)NFr)r+r��acquire�releaser�r�r�r4)r/rV�_waitpid�_WNOHANG�_ECHILDr�r?�er'r'r(rX=s$    �  cCs<zt�|j|�\}}Wnty2|j}d}Yn0||fSr`)r�r�r�r�)r/� wait_flagsr�r?r'r'r(� _try_wait`s   zPopen._try_waitcCsP|jdur|jS|dur�t�|}d}|j�d�r�zX|jdurLW|j��q�|�tj�\}}||jkr~|� |�W|j��q�W|j��n |j��0|� |�}|dkr�t |j |��t |d|d�}t�|�q&nv|jdu�rJ|j�P|jdu�rWd��qJ|�d�\}}||jk�r(|� |�Wd�q�1�s>0Yq�|jS)Ng����Mb@?Frr�g�������?)r+r9r�r�r�r�r��WNOHANGr�r�r<rrfr;�time�sleep)r/r=r=�delayr�r?� remainingr'r'r(r&ms>     �   �     ,c Cs2|jrT|jsTz|j��Wnty,Yn0|sTz|j��WntyRYn0d}d}|js�i|_|jrzg|j|j<|jr�g|j|j<|jr�|j|j}|jr�|j|j}|�|�|j r�t |j �}t ����}|jr�|r�|� |jt j�|j�r|jj�s|� |jt j�|j�r2|jj�s2|� |jt j�|���r�|�|�}|du�rv|dk�rv|j||||dd�td��|�|�} |�||||�| D]�\} } | j|ju�r0||j|jt�} z|jt�| j| �7_Wn*t�y|�| j�| j��Yn*0|jt|j �k�r�|�| j�| j��nP| j|j|jfv�r�t�| jd�} | �sn|�| j�| j��|j| j�| ��q��q2Wd�n1�s�0Y|j |�|�d�|du�r�d�!|�}|du�r�d�!|�}|j"�r*|du�r |�#||jj$|jj%�}|du�r*|�#||jj$|jj%�}||fS)NrT)rCzN_check_timeout(..., skip_check_and_raise=True) failed to raise TimeoutExpired.i�r�r))&r�r��flushr3r�_fileobj2outputr7r.� _save_inputr�� memoryview�_PopenSelector�register� selectors� EVENT_WRITErI� EVENT_READ�get_mapr<rD� RuntimeError�select�fileobj� _input_offset� _PIPE_BUFr�r2r� unregisterr�r8rer�r�r�r#r�r�)r/r�r=r@r7r.� input_view�selectorr=�ready�key�events�chunkr�r'r'r(r:�s�             ��  �     :     � �cCsF|jrB|jdurBd|_||_|durB|jrB|j�|jj|jj�|_dSr`)r�r�r�r��encoder�r�)r/r�r'r'r(r��s �zPopen._save_inputcCs@|��|jdurdSzt�|j|�Wnty:Yn0dSr*)r�r+r�r�r��ProcessLookupErrorrnr'r'r(rps  cCs|�tj�dSr*)rpr1rlr4r'r'r(rm(scCs|�tj�dSr*)rpr1�SIGKILLr4r'r'r(r�-sz Popen.kill)r^NNNNNTFNNNNrTFr')NN)F)N)9r$r%r&r+r0rOr�r�r�r�r;r�r<r#r$r)rYrZr�r�rQr1r6r�r�r<rDr�rJr�r�rMrTr�rPraZ WAIT_OBJECT_0rbrXr&rdr:rprmr�r�r�r�� WIFSTOPPED�WSTOPSIGr�r�r�r4ZECHILDr�r�r'r'r'r(r�s�6�� j    D � H  � 26'&� � # )f  r)Kr�r4r�r�r�r1rYr�r�rErr9r�r�� ImportErrorr��__all__r�rPr��ModuleNotFoundErrorr�r�r�rrrrrrrrrrrrrrrr r!r"r�� Exceptionrr rr#rLrHr�r�r�rSr��SelectSelectorrWrTrrr rgr�rrr �objectrr r�rr r�r�rr'r'r'r(�,s~        P  %      ;3%� EI /