HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/relenv/build/__pycache__/windows.cpython-310.pyc
o

;jX��@sdZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZddlmZmZmZmZmZmZdd	lmZmZmZmZmZmZmZmZe� e!�Z"eeZ#ee$e$fZ%e
j&ekr�ddl'Z'e'j(j)Z)e)�*e)�+d
�d�dPdd�Z,dQdd�Z-dRdd�Z.dSd d!�Z/dTd$d%�Z0dUd&d'�Z1dUd(d)�Z2dUd*d+�Z3dUd,d-�Z4dUd.d/�Z5dUd0d1�Z6dUd2d3�Z7dUd4d5�Z8dUd6d7�Z9dUd8d9�Z:dUd:d;�Z;dVd<d=�Z<dWd@dA�Z=dXdDdE�Z>ej?dFe,dG�Z@e@j?dHe>dIe@jAddJ�dK�dXdLdM�ZBe@j?dNeBdHgdO�dS)Yz
The windows build process.
�)�annotationsN)�MutableMapping)�IO�)�
MODULE_DIR�WIN32�arches�download_url�extract_archive�runcmd�)�Dirs�builds�create_archive�get_dependency_version�install_runtime�
patch_file�update_ensurepip�update_sbom_checksumsi������env�
EnvMapping�dirsr
�return�NonecCsd|d<dS)z�
    Make sure we have the correct environment variables set.

    :param env: The environment dictionary
    :type env: dict
    :param dirs: The working directories
    :type dirs: ``relenv.build.common.Dirs``
    �1ZMSBUILDDISABLENODEREUSEN�)rrrr�H/opt/saltstack/salt/lib/python3.10/site-packages/relenv/build/windows.py�populate_env7s	r�pathlib.Path | NonecCs�|�d�}|r(t�|�}|��r(|jD]}|dddd}|��r'|Sqt�d�}|sGt�tj�dd��d	d
d}|��rGt	|�}|r�z0|ddd
ddddg}t
j|dddd�}|j�
�}|rxt�|�dddd}|��rx|WSWn
t
jy�Ynwtj�dd�tj�dd�g}	gd�}
gd�}|	D]+}|D]&}
|
D]!}t�|�d	|
|dddd}|��r�|Sq�q�q�dS)z9
    Locate vcvarsall.bat using multiple strategies.
    ZMSBUILDZVCZ	AuxiliaryZBuildz
vcvarsall.batzvswhere.exezProgramFiles(x86)zC:\Program Files (x86)zMicrosoft Visual StudioZ	Installerz-latestz	-products�*z	-requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z	-propertyZinstallationPathT)�capture_output�text�checkZProgramFileszC:\Program Files)Z
EnterpriseZProfessionalZ	CommunityZ
BuildTools)Z2022Z2019Z2017N)�get�pathlib�Path�exists�parents�shutil�which�os�environ�str�
subprocess�run�stdout�strip�CalledProcessError)rZmsbuild_path�parent�	candidateZvswhereZvswhere_path�cmd�resultZvs_pathZ
program_filesZeditionsZyearsZpf�yearZeditionrrr�find_vcvarsallCs�


�
�����

�����������
���r8�source�pathlib.Path�oldr-�newcCsHt�d|||�|�dd�}t|dd||�t|dd||�dS)z�
    Overwrite a dependency string for Windows PCBuild.

    :param source: Python's source directory
    :type source: str
    :param old: Regular expression to search for
    :type old: str
    :param new: Replacement text
    :type new: str
    zPatching props in %s: %s -> %s�\z\\�PCbuildzpython.props�get_externals.batN)�log�info�replacer)r9r;r<Znew_escapedrrr�update_props�srC�name�versionc	Cs.|jd}dd�|��D�}||�d|��}|D]{}||kredd�|��D�}t|�dkrd|dj�|�rdt�d|j�||�d|�d	�}t�t	|d�t	|��t�
t	|��t�t	|�t	|��q|j�|�spd
|jvr�t�d|j|j�|��r�t�
t	|��t�t	|�t	|��t|||�qdS)
z6
    Handle nested folders in extracted tarballs.
    �	externalscSs"g|]
}|��r|jdkr|�qS)�zips)�is_dirrD��.0�xrrr�
<listcomp>�s"z%flatten_externals.<locals>.<listcomp>�-cS�g|]}|��r|�qSr�rHrIrrrrL��rrzFlattening nested %s�-tmp�cpython-bin-depszMoving %s to %sN)
r9�iterdir�lenrD�
startswithr@rAr)�mover-�rmtreer'�flatten_externals)	rrDrE�
externals_dirZextracted_dirs�
target_dir�d�subdirs�temp_dirrrrrX�s*
��rXrY�urlcCsj|d}|jddd�t|t|�d�}tt|�t|�d�zt�|�WdSty4t�d�YdSw)z3
    Download external source code dependency.
    rGT�r(�exist_ok)r^�dest)�archive�to_dirzFailed to remove temporary fileN)	�mkdirr	r-r
r+�remove�OSErrorr@�	exception)rYr^Zzips_dirZ
local_filerrr�get_externals_source�s�rhcCs�tdd�}|s	dS|d}|�dd�}|dj|d�}|d	}d
|�d�}|jdd
|��}t|jdd
|���|��sdt|jd|d�|jd��D]}	|	��rc|	j	�
d�rct�t
|	�t
|��qM|ddvr�|jdd}
|
��r�tt
|
���2}t�|�}|dD] }
|
ddkr�||
d<||
d<||
ddd<||
ddd<q�Wd�n1s�wYtt
|
�d��}tj||dd �Wd�dS1s�wYdSdSdS)!z$
    Update the SQLITE library.
    Zsqlite�win32NrE�
sqliteversionZ3500400r^�rE�sha256zcpe:2.3:a:sqlite:sqlite:�:*:*:*:*:*:*:*rFzsqlite-zsqlite-\d+(\.\d+)*�rYr^zsqlite-autoconf�RELENV_PY_MAJOR_VERSION�z3.12z3.13�3.14�Misc�externals.spdx.json�packagesrD�versionInfo�downloadLocation�	checksumsr�
checksumValue�externalRefs�referenceLocator�wr��indent)rr$�formatr9rCr'rhrSrHrDrUr)rVr-�open�json�load�dump)rrZsqlite_inforErjr^rl�ref_locrZr[�	spdx_json�f�data�pkgrrr�
update_sqlite�sF
�
���"��r�cCs.tdd�}|s	dS|d}|dj|d�}|d}d|�d	�}|jd
d|��}t|jdd|���|��sFt|jd
|d
�t|d|�|ddd}|jddd}	|��sm|jj	ddd�t
�t|	�t|��|ddd}
dD]%}|
|}|jdd|}
|��s�|jj	ddd�t
�t|
�t|��qw|ddv�r|jdd}|���rt
t|���2}t�|�}|dD] }|ddkr�||d<||d<||dd d!<||d"d d#<q�Wd�n1s�wYt
t|�d$��}tj||d%d&�Wd�dS1�swYdSdSdS)'z 
    Update the XZ library.
    �xzriNrEr^rkrlzcpe:2.3:a:tukaani:xz:rmrFzxz-zxz-\d+(\.\d+)*rn�src�commonzconfig.hZ
_resourcesTr_Zliblzmar#)z
crc32_table.cz
crc64_table.crorprrrsrtrDrurvrwrrxryrzr{rr|)rr~r9rCr'rhrX�rootr3rdr)�copyr-rr�r�r�)rrZxz_inforEr^rlr�rZZconfig_fileZconfig_file_sourceZ	check_dir�filename�target_fileZsource_filer�r�r�r�rrr�	update_xz�sX
�

���$��r�cCstdd�}|s	dS|d}|dj|d�}|d}|jddd	}|��rKt|d
d|�dd
��d�d�t|dd|�d�d�t|dd|�d�d�t|jdd|d�|jddd|��d}|jdd}g}	dD]+}
t�t||
��D]}|t	j
�|�}|��r�|��t
�|t|��|	�|�qzqot��}
|	D]
}t	�||
|
f�q�|d}|��r�tt|�d��0}|�d�|�d�|�d�|�d�|�d�|�d�|�d �|�d!�Wd�n1s�wYd"d#�|	D�}|���r||d$<t|j|�dS)%z#
    Update the EXPAT library.
    ZexpatriNrEr^rkrlZModulesz
refresh.shz$expected_libexpat_tag="R_\d+(_\d+)*"zexpected_libexpat_tag="R_�.�_�")r;r<z'expected_libexpat_version="\d+(\.\d+)*"zexpected_libexpat_version="zexpected_libexpat_sha256=".*"zexpected_libexpat_sha256="rnzexpat-�lib)z*.hz*.cz
xmlparse.c�az>
/* Relenv: include new entropy sources for expat >= 2.8.0 */
z6#if defined(_WIN32)
#include "random_rand_s.c"
#endif
zC#if defined(HAVE_GETENTROPY)
#include "random_getentropy.c"
#endif
z?#if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM)
z%#include "random_getrandom.c"
#endif
zK#if defined(HAVE_ARC4RANDOM_BUF)
#include "random_arc4random_buf.c"
#endif
zC#if defined(HAVE_ARC4RANDOM)
#include "random_arc4random.c"
#endif
zX#if !defined(_WIN32) && defined(XML_DEV_URANDOM)
#include "random_dev_urandom.c"
#endif
cSsi|]	}d|j��|�qS)zModules/expat/)rD)rJr�rrr�
<dictcomp>nsz update_expat.<locals>.<dictcomp>zModules/expat/refresh.sh)rr~r9r'rrBrh�globr-r+�path�basename�unlinkr)rV�append�time�utimer�writer)rrZ
expat_inforEr^rlZbash_refreshZ
expat_lib_dirZ	expat_dirZ
updated_files�ext�file�target�nowr�Z
xmlparse_cr�Zfiles_to_updaterrr�update_expat1sl
�
�
��






�
r�c+CsDtdd�}|s	dS|d}|dj|d�}|d}d|�d	�}d
|v}|jdd|�d
|d��}t|jdd|�d
|d���t|jdd|�d
|d���|���s�t|jd|d�|jd��D]2}	|	��r�|	jd|��ks||	j�	d|���r�|	|kr�|��r�t
�t|��t
�
t|	�t|��nqedd�|��D�}
t|
�dkr�|
dj�	d�r�t�d�|jd|�d�}t
�
t|
d�t|��t
�t|��t
�
t|�t|��|�s�t�d||d�t||�}|ddd}
tdd�}|d}|jdd|��}t|�d��}|�st�d|�dSd d!d"d#�}|�|dd �}t|�}|�s5t�d$�d%}n|dd&k�r>d'n|d}d(|�d)|��}tj�d*d+�}|��}|
j�d,|dj�d,|��|d*<|d-}|d.}|d/}tt|�d0��N}|�d1�|�|�d2��|�d3�|�d4|�d5��|�d6|
�d7|�d8|�d9|�d:�	�|�d3�|�d;�|�d3�|�d<�|�d3�Wd�n	1�s�wYt�d=�tt|�g|d>�d&dd?d@dA�}|�|d|d�}||}|jdBdBdC�|d-}|d} |dD}!|dE}"|���r�| �dF�D]
}t
�t|�t|���q| �dG�D]
}t
�t|�t|���q&|!�dH�D]
}t
�t|�t|���q9|dEjdBdBdC�t
j t|"�t|dE�dBdI�|dJdK���rut
�|dJdK|dEdK�dLD]}#||#���r�t
�t||#�t|dM��n�qw|�r�|dEd}$|$���s�|�dN�D]}%|%jjdk�r�t
j t|%j�t|$�dBdI�n�q�|dEdK���s�|�dO�D]}&t
�t|&�t|dEdK��|�s�t|jdPdQ|�d
|d�dR��t|jdSdT|�dU��|�	dV��r%dW}'|�s|dd&k�rdX}'t�dY|'�t!|jdZd[d\d]|'�d^��|d_d`v�r�|jdadb}(|(���r�tt|(���4}t"�#|�})|)dcD]"}*|*dddk�ri||*de<||*df<||*dgddh<||*diddj<�qHWd�n	1�svwYtt|(�d0��}t"j$|)|dkdl�Wd�dS1�s�wYdSdSdS)mz%
    Update the OPENSSL library.
    �opensslriNrEr^rkrlzcpe:2.3:a:openssl:openssl:rmrRrFzopenssl-rM�RELENV_HOST_ARCHzopenssl-\d+(\.\d+)*[a-z]*zopenssl-bin-\d+(\.\d+)*[a-z]*rncSrNrrOrIrrrrL�rPz"update_openssl.<locals>.<listcomp>rrzFlattening nested OpenSSLrQz$Building OpenSSL %s (%s) from source�perl�binzperl.exe�nasm�nasm-z**/nasm.exezCould not find nasm.exe in %sz	VC-WIN64AzVC-WIN32zVC-WIN64-ARM��amd64�x86�arm64z,Could not find vcvarsall.bat, build may failZechor��x64zcall "z" �PATH��;�build�sslzrelenv_build_openssl.batr{z
@echo off
�
z+if %errorlevel% neq 0 exit /b %errorlevel%
zcd /d "z"
r�z" Configure z --prefix="z" --openssldir="z" no-unit-test no-tests
znmake
znmake install_sw
z Running OpenSSL build batch file)rr�Zarm32)r�r�r�ZarmTr_r��include�*.dllz*.pdb�*.lib)�
dirs_exist_ok�msz	applink.c)�LICENSEzLICENSE.txtZCOPYINGr�z
**/opensslv.hz**/applink.cz<opensslDir.*>.*</opensslDir>zC<opensslDir Condition="$(opensslDir) == ''">$(ExternalsDir)openssl-z\</opensslDir>z#<opensslOutDir.*>.*</opensslOutDir>z?<opensslOutDir Condition="$(opensslOutDir) == ''">$(opensslDir)z\</opensslOutDir>z3.z-3z-3-x64z'Patching openssl.props DLL suffix to %sr>z
openssl.propsz<_DLLSuffix>.*</_DLLSuffix>z<_DLLSuffix>z
</_DLLSuffix>rorprrrsrtrDrurvrwrxryrzrr|)%rr~r9rCr'rhrSrHrDrUr)rWr-rVrTr@rAr3�update_perl�listr��errorr$r8�warningr+r,r�rr�rrd�copytreerr�r�r�)+rrZopenssl_inforEr^rlr�Z	is_binaryrZr[r\r]Zperl_dirZperl_bin�	nasm_infoZnasm_versionZnasm_dirZnasm_exeZarch_mapr�ZvcvarsZ
vcvars_cmdZvcvars_archZenv_path�	build_env�prefixZ
openssldirZ	build_batr�Zarch_to_archnameZ	arch_nameZout_dir�bin_dirZlib_dirZinc_dirZlicense_fileZinc_openssl_dir�hr��suffixr�r�r�rrr�update_openssltsR
��
*�


�
 

��



�
�


��
����

�
�

���$��r�cC�ztdd�}|s	dS|d}|dj|d�}|d}d|�d	�}|jd
d|��}t|jdd|���|��sFt|jd
|d
�t|d|�|ddvr�|jdd}|��r�tt|���2}	t	�
|	�}
|
dD] }|ddkr�||d<||d<||ddd<||ddd<qgWd�n1s�wYtt|�d��}	t	j|
|	dd�Wd�dS1s�wYdSdSdS)z#
    Update the BZIP2 library.
    �bzip2riNrEr^rkrlzcpe:2.3:a:bzip:bzip2:rmrFzbzip2-zbzip2-\d+(\.\d+)*rnrorprrrsrtrDrurvrwrrxryrzr{rr|�rr~r9rCr'rhrXrr-r�r�r�)rrZ
bzip2_inforEr^rlr�rZr�r�r�r�rrr�update_bzip2N�>

���"��r�cCs�tdd�}|s	dS|d}|dj|d�}|d}d|�d	�}|jd
d|��}t|jdd|���|��sFt|jd
|d
�t|d|�t|�d��}|rx|dj	}	|	dkrxt
�d|	�t|jddd|	�t|jddd|	�
dd��|ddvr�|jdd}
|
��r�tt|
���2}t�|�}|dD] }
|
ddkr�||
d<||
d<||
d dd!<||
d"dd#<q�Wd�n1s�wYtt|
�d$��}tj||d%d&�Wd�dS1s�wYdSdSdS)'z$
    Update the LIBFFI library.
    ZlibffiriNrEr^rkrlz cpe:2.3:a:libffi_project:libffi:rmrFzlibffi-zlibffi-\d+(\.\d+)*rnz**/*.librzlibffi-7.libz"Patching libffi library name to %sr>zlibffi.propsz
libffi-7\.libz
libffi-7\.dll�.lib�.dllrorprrrsrtrDrurvrwrxryrzr{rr|)rr~r9rCr'rhrXr�r�rDr@rArrBrr-r�r�r�)rrZlibffi_inforEr^rlr�rZZ	lib_filesZlib_namer�r�r�r�rrr�
update_libffiqsT


�
���"��r�cCr�)z"
    Update the ZLIB library.
    �zlibriNrEr^rkrlzcpe:2.3:a:gnu:zlib:rmrFzzlib-zzlib-\d+(\.\d+)*rnrorprrrsrtrDrurvrwrrxryrzr{rr|r�)rrZ	zlib_inforEr^rlr�rZr�r�r�r�rrr�update_zlib�r�r�cCr�)a
    Update the zlib-ng library.

    Python 3.14 replaced zlib with zlib-ng for the bundled zlib module on
    Windows. The PCbuild project expects sources in
    ``externals/zlib-ng-<version>/`` (notably ``zlib.h.in`` and
    ``zlib-ng.h.in`` at the top level).
    zzlib-ngriNrEr^rkrlzcpe:2.3:a:zlib-ng:zlib-ng:rmrFzzlib-ng-zzlib-ng-\d+(\.\d+)*rnro�rqrrrsrtrDrurvrwrrxryrzr{rr|r�)rrZzlib_ng_inforEr^rlr�rZr�r�r�r�rrr�update_zlib_ng�s>
	
���"��r�cCr�)z�
    Update the zstd library.

    Python 3.14 added a bundled ``_zstd`` extension whose Windows project
    compiles zstd from source in ``externals/zstd-<version>/``.
    ZzstdriNrEr^rkrlzcpe:2.3:a:facebook:zstandard:rmrFzzstd-zzstd-\d+(\.\d+)*rnror�rrrsrtrDrurvrwrrxryrzr{rr|r�)rrZ	zstd_inforEr^rlr�rZr�r�r�r�rrr�update_zstd�s>

���"��r�cC�tdd�}|s	dS|d}|dj|d�}|jdd|��}t|jd	d|���|��s>t|jd|d
�t|d|�dSdS)z'
    Update the MPDECIMAL library.
    Z	mpdecimalriNrEr^rkrFz
mpdecimal-zmpdecimal-\d+(\.\d+)*rn�rr~r9rCr'rhrX)rrZmpdecimal_inforEr^rZrrr�update_mpdecimal�
�r�cCr�)z"
    Update the NASM library.
    r�riNrEr^rkrFr�znasm-\d+(\.\d+)*rnr�)rrr�rEr^rZrrr�update_nasm%r�r�cCsdtdd�}|s	dS|d}|dj|d�}|jdd|��}|��s0|jd	d	d
�t||d�|S)z"
    Update the Perl library.
    r�riNrEr^rkrFzperl-Tr_rn)rr~r9r'rdrh)rrZ	perl_inforEr^rZrrrr�7s
r��	build_dir�dest_dircCs`|d}|d��r|d}n|d}|��std|�d���|d}tjt|�t|�d�|S)a4
    Copy ``pyconfig.h`` into the onedir's ``Include`` directory.

    Python <= 3.12 ships a checked-in ``PC/pyconfig.h``. Python 3.13+ replaced
    that with ``PC/pyconfig.h.in`` and MSBuild generates the real header into
    the build output directory. This mirrors the logic in CPython's
    ``PC/layout/main.py`` so the onedir's ``Include/`` always ends up with a
    ``pyconfig.h`` next to ``Python.h`` -- without it C extensions cannot
    locate the configuration macros and fail with
    ``fatal error C1083: Cannot open include file: 'pyconfig.h'``.
    ZPCz
pyconfig.h.inz
pyconfig.hzExpected pyconfig.h at zT but CPython build did not produce it. Check that the MSBuild step ran successfully.�r��dst)�is_file�RuntimeErrorr)r�r-)r9r�r�Zpc_dirZpyconfig_srcrarrr�copy_pyconfig_hIs

�r��logfp�IO[str]c
Cs�|jd}|jddd�t||d�t||d�t||d�t||d�t||d�t||d�t||d�t	||d�t
||d�t||d�t||d�t
||d�|jdd}|��rjt�d�t|dd	�|jd
dd}|��r�tt|�d
��
}|�d�Wd�n1s�wY|jdd}|��r�tt|�d
��
}|�d�Wd�n1s�wYdddd�}|d}	||	}
t|jdd�dd|
dg}t�d�t||||d�t�d�|	dkr�|jd|	}n|jd|
}|jd}
|
jddd�d d!d"d#d$d%|d&�d'd(��d)�d*d+d,g	}|D]}tjt||�t|
|�d-��q|jd.jddd�t�t|d/��D]}tj|t|jd.�d-��qDt�t|d0��D]}tj|t|jd.�d-��q]tjt|jd1�t|jd1�dd2�t|j||jd1�tjt|jd3�t|jd3�dd2�tjt|jd3d4�dd5�|jd6jddd�tjt|d7�t|jd6d7�d-�d%|d&�d'd(��d8�}tjt||�t|jd6|�d-�dS)9z+
    Run the commands to build Python.
    rFTr_)rrr>z
regen.targetsz.Patching regen.targets to skip SBOM generationz*Command="py -3\.\d+ .*generate_sbom\.py.*"zCommand="echo skipping sbom"ZToolsr�zgenerate_sbom.pyr{z6import sys
if __name__ == '__main__':
    sys.exit(0)
Nr?z@echo off
echo skipping fetch
r�rir�r�r�z	build.batz-ez-pz--no-tkinterz
Start PCbuild�r�stderrr0zPCbuild finishedr��Scriptszpy.exezpyw.exe�
python.exezpythonw.exezpython3.dll�pythonror�r�r�zvcruntime140.dllzvenvlauncher.exezvenvwlauncher.exer�ZDLLs�*.pydr�ZInclude)r�r�r��Lib�
site-packages)r`Zlibszpython3.libr�) r9rdr�r�r�r�r�r�r�r�r�r�r�r�r'r@rArrr-r�rr�rBr)rVr�r�r�r+�makedirsr�)rrr�rYZ
regen_targetsZsbom_scriptr�Z
batch_fileZarch_to_plat�arch�platr5r�r�Zbinaries�binaryr�Zpylibrrr�build_pythonfs�

����


�"�$
�(r�ri)rr�zChttps://www.python.org/ftp/python/{version}/Python-{version}.tar.xz)r^rEZchecksum)�
build_func�downloadcs|jdd}t|�t|jd�|jdd�tt��ddg|��d�d��fdd
�}|d�tjd��r?|tj�n|d�t�	|j�D]\}}}|D]}|�
d�rat�t�
|�|�qPqIgd�}	|j�d�}
tj|
dd��}t||j|	��Wd�dS1s�wYdS)zF
    Finalize sitecustomize, relenv runtime, and pip for Windows.
    r�r�r�r��-mZ	ensurepipr�r��str | os.PathLike[str]rrcs4tj��}t��dddt|�g}t||��d�dS)Nr�Zpip�installr�)r+r,r�r-r)r�rr5�r�r�rr�runpip�s
zfinalize.<locals>.runpipZwheelz.git�relenvz.pyc)z*.exez*.pyr�r�r�z*.whlz
/Include/*z/Lib/site-packages/*z.tar.xzzw:xz)�modeN)r�r�rr)r�rrrr-rr3r'r+�walk�endswithrer%r&�tarfilerr)rrr��sitepackagesr�r�r��filesr�Zglobsrb�fprr�r�finalize�s*
��
"�r�zrelenv-finalize)r�Zwait_on)rrrr
rr)rrrr)r9r:r;r-r<r-rr)rr
rDr-rEr-rr)rYr:r^r-rr)rr
rrrr)rr
rrrr:)r9r:r�r:r�r:rr:)rrrr
r�r�rr)C�__doc__�
__future__rr�r��loggingr+r%r)r.�sysr�r��collections.abcr�typingrr�rrrr	r
rr
rrrrrrr�	getLogger�__name__r@ZARCHESr-r�platform�ctypesZwindllZkernel32ZSetConsoleModeZGetStdHandlerr8rCrXrhr�r�r�r�r�r�r�r�r�r�r�r�r�r��addr�rEr�rrrr�<module>sl (




O

%

'
3
C
[
#
3
#
'
%



i��
*