ROOTPLOIT
Server: LiteSpeed
System: Linux server71.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User: niphet (1079)
PHP: 5.3.29
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.opt-1.pyc
3

vh@sdZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZej
dkrpddl	mZejZnGd	d
d
ZeZeejjfZyddlmZWnek
rYnXdd
Zd ddZddZddZd!ddZGdddZGdddZGdddZGdddZ dS)"a@
Improved support for Microsoft Visual C++ compilers.

Known supported compilers:
--------------------------
Microsoft Visual C++ 9.0:
    Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64)
    Microsoft Windows SDK 6.1 (x86, x64, ia64)
    Microsoft Windows SDK 7.0 (x86, x64, ia64)

Microsoft Visual C++ 10.0:
    Microsoft Windows SDK 7.1 (x86, x64, ia64)

Microsoft Visual C++ 14.0:
    Microsoft Visual C++ Build Tools 2015 (x86, x64, arm)
    Microsoft Visual Studio 2017 (x86, x64, arm, arm64)
    Microsoft Visual Studio Build Tools 2017 (x86, x64, arm, arm64)
N)
LegacyVersion)filterfalse)
get_unpatchedWindows)winregc@seZdZdZdZdZdZdS)rN)__name__
__module____qualname__
HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_CLASSES_ROOTrr/usr/lib/python3.6/msvc.pyr(sr)RegcCsd}|d|f}ytj|d}WnJtk
rjy|d|f}tj|d}Wntk
rdd}YnXYnX|rtjjjj|d}tjj|r|Stt|S)a+
    Patched "distutils.msvc9compiler.find_vcvarsall" to use the standalone
    compiler build for Python (VCForPython). Fall back to original behavior
    when the standalone compiler is not available.

    Redirect the path of "vcvarsall.bat".

    Known supported compilers
    -------------------------
    Microsoft Visual C++ 9.0:
        Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64)

    Parameters
    ----------
    version: float
        Required Microsoft Visual C++ version.

    Return
    ------
    vcvarsall.bat path: str
    z-Software\%sMicrosoft\DevDiv\VCForPython\%0.1f
installdirzWow6432Node\Nz
vcvarsall.bat)	rZ	get_valueKeyErrorospathjoinisfilermsvc9_find_vcvarsall)versionZVC_BASEkey
productdir	vcvarsallrrrr?srx86cOsytt}|||f||Stjjk
r2Yntk
rDYnXyt||jStjjk
r}zt|||WYdd}~XnXdS)a
    Patched "distutils.msvc9compiler.query_vcvarsall" for support extra
    compilers.

    Set environment without use of "vcvarsall.bat".

    Known supported compilers
    -------------------------
    Microsoft Visual C++ 9.0:
        Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64)
        Microsoft Windows SDK 6.1 (x86, x64, ia64)
        Microsoft Windows SDK 7.0 (x86, x64, ia64)

    Microsoft Visual C++ 10.0:
        Microsoft Windows SDK 7.1 (x86, x64, ia64)

    Parameters
    ----------
    ver: float
        Required Microsoft Visual C++ version.
    arch: str
        Target architecture.

    Return
    ------
    environment: dict
    N)	rmsvc9_query_vcvarsall	distutilserrorsDistutilsPlatformError
ValueErrorEnvironmentInfo
return_env_augment_exception)verarchargskwargsZorigexcrrrrjsrcCsnytt|Stjjk
r$YnXyt|ddjStjjk
rh}zt|dWYdd}~XnXdS)a'
    Patched "distutils._msvccompiler._get_vc_env" for support extra
    compilers.

    Set environment without use of "vcvarsall.bat".

    Known supported compilers
    -------------------------
    Microsoft Visual C++ 14.0:
        Microsoft Visual C++ Build Tools 2015 (x86, x64, arm)
        Microsoft Visual Studio 2017 (x86, x64, arm, arm64)
        Microsoft Visual Studio Build Tools 2017 (x86, x64, arm, arm64)

    Parameters
    ----------
    plat_spec: str
        Target architecture.

    Return
    ------
    environment: dict
    g,@)
vc_min_verN)rmsvc14_get_vc_envr r!r"r$r%r&)Z	plat_specr+rrrr-s
r-cOsBdtjkr4ddl}t|jtdkr4|jjj||Stt	||S)z
    Patched "distutils._msvccompiler.gen_lib_options" for fix
    compatibility between "numpy.distutils" and "distutils._msvccompiler"
    (for Numpy < 1.11.2)
    znumpy.distutilsrNz1.11.2)
sysmodulesZnumpyr__version__r Z	ccompilerZgen_lib_optionsrmsvc14_gen_lib_options)r)r*Znprrrr1s

r1rcCs|jd}d|jks"d|jkrd}|jft}d}|dkrr|jjddkrh|d	7}||d
7}q|d7}n.|dkr|d
7}||d7}n|dkr|d7}|f|_dS)zl
    Add details to the exception message to help guide the user
    as to what action will resolve it.
    rrzvisual cz0Microsoft Visual C++ {version:0.1f} is required.z-www.microsoft.com/download/details.aspx?id=%dg"@Zia64rz* Get it with "Microsoft Windows SDK 7.0": iBz% Get it from http://aka.ms/vcpython27g$@z* Get it with "Microsoft Windows SDK 7.1": iW g,@zj Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-toolsN)r)lowerformatlocalsfind)r+rr(messageZtmplZ
msdownloadrrrr&s 

r&c@sbeZdZdZejddjZddZe	ddZ
dd	Zd
dZdd
dZ
dddZdddZdS)PlatformInfoz
    Current and Target Architectures informations.

    Parameters
    ----------
    arch: str
        Target architecture.
    Zprocessor_architecturercCs|jjdd|_dS)Nx64amd64)r3replacer()selfr(rrr__init__szPlatformInfo.__init__cCs|j|jjdddS)N_r)r(r6)r<rrr
target_cpuszPlatformInfo.target_cpucCs
|jdkS)Nr)r?)r<rrr
target_is_x86szPlatformInfo.target_is_x86cCs
|jdkS)Nr)current_cpu)r<rrrcurrent_is_x86szPlatformInfo.current_is_x86FcCs.|jdkr|rdS|jdkr$|r$dSd|jS)uk
        Current platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '†' if architecture is x86.
        x64: bool
            return 'd' and not 'md64' if architecture is amd64.

        Return
        ------
        subfolder: str
            '	arget', or '' (see hidex86 parameter)
        rrr:z\x64z\%s)rA)r<hidex86r9rrrcurrent_dir	szPlatformInfo.current_dircCs.|jdkr|rdS|jdkr$|r$dSd|jS)ar
        Target platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '\x86' if architecture is x86.
        x64: bool
            return '\x64' and not '\amd64' if architecture is amd64.

        Return
        ------
        subfolder: str
            '\current', or '' (see hidex86 parameter)
        rrr:z\x64z\%s)r?)r<rCr9rrr
target_dirszPlatformInfo.target_dircCs0|rdn|j}|j|krdS|jjdd|S)ao
        Cross platform specific subfolder.

        Parameters
        ----------
        forcex86: bool
            Use 'x86' as current architecture even if current acritecture is
            not x86.

        Return
        ------
        subfolder: str
            '' if target architecture is current architecture,
            '\current_target' if not.
        rr\z\%s_)rAr?rEr;)r<forcex86Zcurrentrrr	cross_dir5szPlatformInfo.cross_dirN)FF)FF)F)rr	r
__doc__safe_envgetr3rAr=propertyr?r@rBrDrErHrrrrr8s

r8c@seZdZdZejejejejfZ	ddZ
eddZeddZ
edd	Zed
dZedd
ZeddZeddZeddZeddZdddZddZdS)RegistryInfoz
    Microsoft Visual Studio related registry informations.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    cCs
||_dS)N)pi)r<Z
platform_inforrrr=ZszRegistryInfo.__init__cCsdS)z<
        Microsoft Visual Studio root registry key.
        ZVisualStudior)r<rrrvisualstudio]szRegistryInfo.visualstudiocCstjj|jdS)z;
        Microsoft Visual Studio SxS registry key.
        ZSxS)rrrrO)r<rrrsxsdszRegistryInfo.sxscCstjj|jdS)z8
        Microsoft Visual C++ VC7 registry key.
        ZVC7)rrrrP)r<rrrvckszRegistryInfo.vccCstjj|jdS)z;
        Microsoft Visual Studio VS7 registry key.
        ZVS7)rrrrP)r<rrrvsrszRegistryInfo.vscCsdS)z?
        Microsoft Visual C++ for Python registry key.
        zDevDiv\VCForPythonr)r<rrr
vc_for_pythonyszRegistryInfo.vc_for_pythoncCsdS)z-
        Microsoft SDK registry key.
        zMicrosoft SDKsr)r<rrr
microsoft_sdkszRegistryInfo.microsoft_sdkcCstjj|jdS)z>
        Microsoft Windows/Platform SDK registry key.
        r)rrrrT)r<rrrwindows_sdkszRegistryInfo.windows_sdkcCstjj|jdS)z<
        Microsoft .NET Framework SDK registry key.
        ZNETFXSDK)rrrrT)r<rrr	netfx_sdkszRegistryInfo.netfx_sdkcCsdS)z<
        Microsoft Windows Kits Roots registry key.
        zWindows Kits\Installed Rootsr)r<rrrwindows_kits_rootsszRegistryInfo.windows_kits_rootsFcCs(|jjs|rdnd}tjjd|d|S)a

        Return key in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        x86: str
            Force x86 software registry.

        Return
        ------
        str: value
        rZWow6432NodeZSoftwareZ	Microsoft)rNrBrrr)r<rrZnode64rrr	microsoftszRegistryInfo.microsoftcCstj}tj}|j}x|jD]}y||||d|}WnZttfk
r|jjsy||||dd|}Wqttfk
rwYqXnwYnXytj	||dSttfk
rYqXqWdS)a
        Look for values in registry in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        name: str
            Value name to find.

        Return
        ------
        str: value
        rTN)
rKEY_READOpenKeyrXHKEYSOSErrorIOErrorrNrBZQueryValueEx)r<rnamerYZopenkeymshkeybkeyrrrlookups"

zRegistryInfo.lookupN)F)rr	r
rIrrrr
rr[r=rLrOrPrQrRrSrTrUrVrWrXrbrrrrrMLs"
rMc@s$eZdZdZejddZejddZejdeZd3ddZ	d	d
Z
ddZed
dZ
eddZddZddZeddZeddZeddZeddZeddZedd Zed!d"Zed#d$Zed%d&Zed'd(Zed)d*Zed+d,Zed-d.Zd/d0Zd4d1d2ZdS)5
SystemInfoz
    Microsoft Windows and Visual Studio related system inormations.

    Parameters
    ----------
    registry_info: RegistryInfo
        "RegistryInfo" instance.
    vc_ver: float
        Required Microsoft Visual C++ version.
    WinDirrProgramFileszProgramFiles(x86)NcCs"||_|jj|_|p|j|_dS)N)rirN_find_latest_available_vc_vervc_ver)r<Z
registry_inforhrrrr=s
zSystemInfo.__init__cCs6y|jdStk
r0d}tjj|YnXdS)Nrz%No Microsoft Visual C++ version foundr2)find_available_vc_vers
IndexErrorr r!r")r<errrrrrgs
z(SystemInfo._find_latest_available_vc_vercCs6|jj}|jj|jj|jjf}g}x|jjD]}x|D]}ytj|||dtj}Wnt	t
fk
rpw8YnXtj|\}}}	xPt|D]D}
y*t
tj||
d}||kr|j|Wqtk
rYqXqWxPt|D]D}
y(t
tj||
}||kr|j|Wqtk
r YqXqWq8Wq.Wt|S)zC
        Find all available Microsoft Visual C++ versions.
        r)rfrXrQrSrRr[rrZrYr\r]ZQueryInfoKeyrangefloatZ	EnumValueappendr#ZEnumKeysorted)r<r_ZvckeysZvc_versr`rraZsubkeysvaluesr>ir'rrrris2


z!SystemInfo.find_available_vc_verscCs6d|j}tjj|j|}|jj|jjd|jp4|S)z4
        Microsoft Visual Studio directory.
        zMicrosoft Visual Studio %0.1fz%0.1f)rhrrrProgramFilesx86rfrbrR)r<r^defaultrrrVSInstallDir
s
zSystemInfo.VSInstallDircCs|j|jp|j}tjj|jjd|j}|jj	|d}|rNtjj|dn|}|jj	|jj
d|jpl|}tjj|sd}tj
j||S)z1
        Microsoft Visual C++ directory.
        z%0.1frZVCz(Microsoft Visual C++ directory not found)rt	_guess_vc_guess_vc_legacyrrrrfrSrhrbrQisdirr r!r")r<guess_vcZreg_pathZ	python_vcZ
default_vcrmsgrrrVCInstallDirszSystemInfo.VCInstallDirc
Cs^|jdkrdSd}tjj|j|}ytj|d}tjj||Stttfk
rXYnXdS)z*
        Locate Visual C for 2017
        g,@Nz
VC\Tools\MSVCrr2)	rhrrrrtlistdirr\r]rj)r<rsrxZvc_exact_verrrrru0s
zSystemInfo._guess_vccCsd|j}tjj|j|S)z<
        Locate Visual C for versions prior to 2017
        z Microsoft Visual Studio %0.1f\VC)rhrrrrr)r<rsrrrrv@s
zSystemInfo._guess_vc_legacycCsJ|jdkrdS|jdkrdS|jdkr*dS|jdkr8dS|jdkrFdSdS)zN
        Microsoft Windows SDK versions for specified MSVC++ version.
        g"@7.06.16.0ag$@7.17.0ag&@8.08.0ag(@8.18.1ag,@10.0N)r|r}r~)rr)rr)rr)rr)rh)r<rrrWindowsSdkVersionGs




zSystemInfo.WindowsSdkVersioncCs|jtjj|jdS)z4
        Microsoft Windows SDK last version
        lib)_use_last_dir_namerrr
WindowsSdkDir)r<rrrWindowsSdkLastVersionWs
z SystemInfo.WindowsSdkLastVersioncCsTd}x8|jD].}tjj|jjd|}|jj|d}|rPqW|sRtjj|rtjj|jjd|j	}|jj|d}|rtjj|d}|stjj|rxH|jD]>}|d|j
d}d	|}tjj|j|}tjj|r|}qW|stjj|r:x:|jD]0}d
|}tjj|j|}tjj|r|}qW|sPtjj|jd}|S)z2
        Microsoft Windows SDK directory.
        rzv%sinstallationfolderz%0.1frZWinSDKN.zMicrosoft SDKs\Windows Kits\%szMicrosoft SDKs\Windows\v%sZPlatformSDK)
rrrrrfrUrbrwrSrhrfindrerz)r<sdkdirr'locrZinstall_baseZintverdrrrr_s6
zSystemInfo.WindowsSdkDirc	Cs|jdkrd}d}n&d}|jdkr&dnd}|jjd|d}d	||jd
df}g}|jdkrx(|jD]}|tjj|jj	||g7}qdWx,|j
D]"}|tjj|jjd
||g7}qWx |D]}|jj|d}|rPqW|S)z=
        Microsoft Windows SDK executable directory.
        g&@#r(g(@TF)r9rCzWinSDK-NetFx%dTools%srF-g,@zv%sAr)
rhrNrDr;NetFxSdkVersionrrrrfrVrrUrb)	r<Znetfxverr(rCZfxZregpathsr'rZexecpathrrrWindowsSDKExecutablePaths$

"
z#SystemInfo.WindowsSDKExecutablePathcCs.d|j}tjj|jj|}|jj|dp,dS)z0
        Microsoft Visual F# directory.
        z%0.1f\Setup\F#rr)rhrrrrfrOrb)r<rrrrFSharpInstallDirs
zSystemInfo.FSharpInstallDircCsF|jdkrd}nf}x(|D] }|jj|jjd|}|rPqW|pDdS)z8
        Microsoft Universal CRT SDK directory.
        g,@1081z
kitsroot%sr)rr)rhrfrbrW)r<Zversr'rrrrUniversalCRTSdkDirs


zSystemInfo.UniversalCRTSdkDircCs|jtjj|jdS)z@
        Microsoft Universal C Runtime SDK last version
        r)rrrrr)r<rrrUniversalCRTSdkLastVersions
z%SystemInfo.UniversalCRTSdkLastVersioncCs|jdkrdSfSdS)z8
        Microsoft .NET Framework SDK versions.
        g,@4.6.14.6N)rr)rh)r<rrrrs
zSystemInfo.NetFxSdkVersioncCs>x4|jD]*}tjj|jj|}|jj|d}|rPqW|p<dS)z9
        Microsoft .NET Framework SDK directory.
        Zkitsinstallationfolderr)rrrrrfrVrb)r<r'rrrrrNetFxSdkDirszSystemInfo.NetFxSdkDircCs&tjj|jd}|jj|jjdp$|S)z;
        Microsoft .NET Framework 32bit directory.
        zMicrosoft.NET\FrameworkZframeworkdir32)rrrrdrfrbrQ)r<guess_fwrrrFrameworkDir32szSystemInfo.FrameworkDir32cCs&tjj|jd}|jj|jjdp$|S)z;
        Microsoft .NET Framework 64bit directory.
        zMicrosoft.NET\Framework64Zframeworkdir64)rrrrdrfrbrQ)r<rrrrFrameworkDir64szSystemInfo.FrameworkDir64cCs
|jdS)z:
        Microsoft .NET Framework 32bit versions.
         )_find_dot_net_versions)r<rrrFrameworkVersion32szSystemInfo.FrameworkVersion32cCs
|jdS)z:
        Microsoft .NET Framework 64bit versions.
        @)r)r<rrrFrameworkVersion64szSystemInfo.FrameworkVersion64cCs|jj|jjd|}t|d|}|p6|j|dp6d}|jdkrL|df}n:|jdkrx|jdd	d
krndn|df}n|jd
krd}|jdkrd}|S)z
        Find Microsoft .NET Framework versions.

        Parameters
        ----------
        bits: int
            Platform number of bits: 32 or 64.
        zframeworkver%dzFrameworkDir%dvrg(@zv4.0g$@NZv4z
v4.0.30319v3.5g"@
v2.0.50727g @v3.0)rr)rr)rfrbrQgetattrrrhr3)r<bitsZreg_verZdot_net_dirr'Zframeworkverrrrrs





z!SystemInfo._find_dot_net_versionscs,fddttjD}t|dp*dS)z
        Return name of the last dir in path or '' if no dir found.

        Parameters
        ----------
        path: str
            Use dirs in this path
        prefix: str
            Use only dirs startings by this prefix
        c3s2|]*}tjjtjj|r|jr|VqdS)N)rrrwr
startswith).0Zdir_name)rprefixrr	<genexpr>)sz0SystemInfo._use_last_dir_name.<locals>.<genexpr>Nr)reversedrr{next)r<rrZ
matching_dirsr)rrrrszSystemInfo._use_last_dir_name)N)r) rr	r
rIrJrKrdrerrr=rgrirLrtrzrurvrrrrrrrrrrrrrrrrrrrrcs4

&	rcc@sReZdZdZd=ddZeddZedd	Zed
dZedd
Z	eddZ
eddZeddZeddZ
eddZeddZddZeddZeddZed d!Zed"d#Zed$d%Zed&d'Zed(d)Zed*d+Zed,d-Zed.d/Zed0d1Zed2d3Zed4d5Zd>d7d8Zd9d:Zd?d;d<Z dS)@r$aY
    Return environment variables for specified Microsoft Visual C++ version
    and platform : Lib, Include, Path and libpath.

    This function is compatible with Microsoft Visual C++ 9.0 to 14.0.

    Script created by analysing Microsoft environment configuration files like
    "vcvars[...].bat", "SetEnv.Cmd", "vcbuildtools.bat", ...

    Parameters
    ----------
    arch: str
        Target architecture.
    vc_ver: float
        Required Microsoft Visual C++ version. If not set, autodetect the last
        version.
    vc_min_ver: float
        Minimum Microsoft Visual C++ version.
    NrcCsBt||_t|j|_t|j||_|j|kr>d}tjj	|dS)Nz.No suitable Microsoft Visual C++ version found)
r8rNrMrfrcsirhr r!r")r<r(rhr,rkrrrr=Is

zEnvironmentInfo.__init__cCs|jjS)z/
        Microsoft Visual C++ version.
        )rrh)r<rrrrhRszEnvironmentInfo.vc_vercsVddg}jdkrDjjddd}|dg7}|dg7}|d|g7}fd	d
|DS)z/
        Microsoft Visual Studio Tools
        zCommon7\IDEz
Common7\Toolsg,@T)rCr9z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance ToolszTeam Tools\Performance Tools%scsg|]}tjjjj|qSr)rrrrrt)rr)r<rr
<listcomp>fsz+EnvironmentInfo.VSTools.<locals>.<listcomp>)rhrNrD)r<pathsarch_subdirr)r<rVSToolsYs


zEnvironmentInfo.VSToolscCs$tjj|jjdtjj|jjdgS)zL
        Microsoft Visual C++ & Microsoft Foundation Class Includes
        ZIncludezATLMFC\Include)rrrrrz)r<rrr
VCIncludeshszEnvironmentInfo.VCIncludescsbjdkrjjdd}njjdd}d|d|g}jdkrP|d|g7}fd	d
|DS)zM
        Microsoft Visual C++ & Microsoft Foundation Class Libraries
        g.@T)r9)rCzLib%szATLMFC\Lib%sg,@zLib\store%scsg|]}tjjjj|qSr)rrrrrz)rr)r<rrr~sz/EnvironmentInfo.VCLibraries.<locals>.<listcomp>)rhrNrE)r<rrr)r<rVCLibrariesps

zEnvironmentInfo.VCLibrariescCs"|jdkrgStjj|jjdgS)zA
        Microsoft Visual C++ store references Libraries
        g,@zLib\store\references)rhrrrrrz)r<rrrVCStoreRefss
zEnvironmentInfo.VCStoreRefscCs|j}tjj|jdg}|jdkr&dnd}|jj|}|rT|tjj|jd|g7}|jdkrd|jjdd}|tjj|j|g7}n|jdkr|jj	rd	nd
}|tjj|j||jj
ddg7}|jj|jjkr|tjj|j||jjddg7}n|tjj|jdg7}|S)
z,
        Microsoft Visual C++ Tools
        Z
VCPackagesg$@TFzBin%sg,@)rCg.@z
bin\HostX86%sz
bin\HostX64%s)r9Bin)
rrrrrzrhrNrHrDrBrErAr?)r<rtoolsrGrrZhost_dirrrrVCToolss&

zEnvironmentInfo.VCToolscCst|jdkr2|jjddd}tjj|jjd|gS|jjdd}tjj|jjd}|j}tjj|d||fgSdS)	z1
        Microsoft Windows SDK Libraries
        g$@T)rCr9zLib%s)r9rz%sum%sN)	rhrNrErrrrr_sdk_subdir)r<rrZlibverrrrOSLibrariess
zEnvironmentInfo.OSLibrariescCs|tjj|jjd}|jdkr.|tjj|dgS|jdkr@|j}nd}tjj|d|tjj|d|tjj|d|gSd	S)
z/
        Microsoft Windows SDK Include
        includeg$@Zglg,@rz%ssharedz%sumz%swinrtN)rrrrrrhr)r<rsdkverrrr
OSIncludess

zEnvironmentInfo.OSIncludescCstjj|jjd}g}|jdkr*||j7}|jdkrH|tjj|dg7}|jdkr||tjj|jjdtjj|ddtjj|d	dtjj|d
dtjj|jjddd
|jdddg7}|S)z7
        Microsoft Windows SDK Libraries Paths
        Z
Referencesg"@g&@zCommonConfiguration\Neutralg,@Z
UnionMetadataz'Windows.Foundation.UniversalApiContractz1.0.0.0z%Windows.Foundation.FoundationContractz,Windows.Networking.Connectivity.WwanContractZ
ExtensionSDKszMicrosoft.VCLibsz%0.1fZCommonConfigurationZneutral)rrrrrrhr)r<reflibpathrrr	OSLibpaths>




zEnvironmentInfo.OSLibpathcCst|jS)z-
        Microsoft Windows SDK Tools
        )list
_sdk_tools)r<rrrSdkToolsszEnvironmentInfo.SdkToolsccs|jdkr0|jdkrdnd}tjj|jj|V|jjsd|jjdd}d|}tjj|jj|V|jdksx|jdkr|jj	rd	}n|jjddd
}d|}tjj|jj|VnL|jdkrtjj|jjd}|jjdd}|jj
}tjj|d||fV|jjr|jjVd
S)z=
        Microsoft Windows SDK Tools paths generator
        g.@g&@rzBin\x86T)r9zBin%sg$@r)rCr9zBin\NETFX 4.0 Tools%sz%s%sN)rhrrrrrrNrBrDr@rr)r<Zbin_dirrrrrrrrs(



zEnvironmentInfo._sdk_toolscCs|jj}|rd|SdS)z6
        Microsoft Windows SDK version subdir
        z%s\r)rr)r<ucrtverrrrrszEnvironmentInfo._sdk_subdircCs"|jdkrgStjj|jjdgS)z-
        Microsoft Windows SDK Setup
        g"@ZSetup)rhrrrrr)r<rrrSdkSetup%s
zEnvironmentInfo.SdkSetupcs|j}|j|jdkr0d}|jo,|j}n$|jp>|j}|jdkpR|jdk}g}|rt|fddjD7}|r|fddjD7}|S)z0
        Microsoft .NET Framework Tools
        g$@Tr:csg|]}tjjj|qSr)rrrr)rr')rrrr@sz+EnvironmentInfo.FxTools.<locals>.<listcomp>csg|]}tjjj|qSr)rrrr)rr')rrrrCs)	rNrrhr@rBrAr?rr)r<rNZ	include32Z	include64rr)rrFxTools/s
zEnvironmentInfo.FxToolscCs>|jdks|jjrgS|jjdd}tjj|jjd|gS)z8
        Microsoft .Net Framework SDK Libraries
        g,@T)r9zlib\um%s)rhrrrNrErrr)r<rrrrNetFxSDKLibrariesGsz!EnvironmentInfo.NetFxSDKLibrariescCs,|jdks|jjrgStjj|jjdgS)z7
        Microsoft .Net Framework SDK Includes
        g,@z
include\um)rhrrrrr)r<rrrNetFxSDKIncludesRsz EnvironmentInfo.NetFxSDKIncludescCstjj|jjdgS)z>
        Microsoft Visual Studio Team System Database
        z
VSTSDB\Deploy)rrrrrt)r<rrrVsTDb\szEnvironmentInfo.VsTDbcCs~|jdkrgS|jdkr0|jj}|jjdd}n|jj}d}d|j|f}tjj||g}|jdkrz|tjj||dg7}|S)z(
        Microsoft Build Engine
        g(@g.@T)rCrzMSBuild\%0.1f\bin%sZRoslyn)	rhrrrrNrDrtrrr)r<	base_pathrrZbuildrrrMSBuildcs


zEnvironmentInfo.MSBuildcCs"|jdkrgStjj|jjdgS)z.
        Microsoft HTML Help Workshop
        g&@zHTML Help Workshop)rhrrrrrr)r<rrrHTMLHelpWorkshopzs
z EnvironmentInfo.HTMLHelpWorkshopcCsL|jdkrgS|jjdd}tjj|jjd}|j}tjj|d||fgS)z=
        Microsoft Universal C Runtime SDK Libraries
        g,@T)r9rz%sucrt%s)	rhrNrErrrrr_ucrt_subdir)r<rrrrrr
UCRTLibrariess
zEnvironmentInfo.UCRTLibrariescCs6|jdkrgStjj|jjd}tjj|d|jgS)z;
        Microsoft Universal C Runtime SDK Include
        g,@rz%sucrt)rhrrrrrr)r<rrrrUCRTIncludess
zEnvironmentInfo.UCRTIncludescCs|jj}|rd|SdS)zB
        Microsoft Universal C Runtime SDK version subdir
        z%s\r)rr)r<rrrrrszEnvironmentInfo._ucrt_subdircCs |jdkr|jdkrgS|jjS)z%
        Microsoft Visual F#
        g&@g(@)rhrr)r<rrrFSharpszEnvironmentInfo.FSharpcCsl|jjdd}|jdkr&|jj}d}n|jjjdd}d}|jdkrHdn|j}|||j|f}tjj||S)	zA
        Microsoft Visual C++ runtime redistribuable dll
        T)r9z-redist%s\Microsoft.VC%d0.CRT\vcruntime%d0.dllz\Toolsz\Redistz.onecore%s\Microsoft.VC%d0.CRT\vcruntime%d0.dllg,@)	rNrErhrrzr;rrr)r<rZredist_pathZ	vcruntimeZdll_verrrrVCRuntimeRedists
zEnvironmentInfo.VCRuntimeRedistTcCst|jd|j|j|j|jg||jd|j|j|j|j	|j
g||jd|j|j|j|jg||jd|j
|j|j|j|j|j|j|j|jg	|d}|jdkrtjj|jr|j|d<|S)z
        Return environment dict.

        Parameters
        ----------
        exists: bool
            It True, only return existing paths.
        rrrr)rrrrZpy_vcruntime_redist)dict_build_pathsrrrrrrrrrrrrrrrrrrrrhrrrr)r<existsenvrrrr%sD	

zEnvironmentInfo.return_envc
Csxtjj|}tj|djtj}tj||}|rBtt	tj
j|n|}|sbd|j}t
jj||j|}	tjj|	S)a
        Given an environment variable name and specified paths,
        return a pathsep-separated string of paths containing
        unique, extant, directories from those paths and from
        the environment variable. Raise an error if no paths
        are resolved.
        rz %s environment variable is empty)	itertoolschain
from_iterablerJrKsplitrpathseprfilterrrwupperr r!r"_unique_everseenr)
r<r^Zspec_path_listsrZ
spec_pathsZ	env_pathsrZextant_pathsryZunique_pathsrrrrs	
zEnvironmentInfo._build_pathsccsjt}|j}|dkr:xPt|j|D]}|||Vq"Wn,x*|D]"}||}||kr@|||Vq@WdS)z
        List unique elements, preserving order.
        Remember all elements ever seen.

        _unique_everseen('AAAABBBCCDAABBB') --> A B C D

        _unique_everseen('ABBCcAD', str.lower) --> A B C D
        N)setaddr__contains__)r<iterablerseenZseen_addelementkrrrrs	
z EnvironmentInfo._unique_everseen)Nr)T)N)!rr	r
rIr=rLrhrrrrrrrrrrrrrrrrrrrrrrrr%rrrrrrr$1s:
		 -





-r$)r)r)!rIrr.platformrZdistutils.errorsr Z#setuptools.extern.packaging.versionrZsetuptools.extern.six.movesrZmonkeyrsystemrenvironrJrImportErrorr!r"Z_msvc9_suppress_errorsZdistutils.msvc9compilerrrrr-r1r&r8rMrcr$rrrr<module>s>
+
/&
%[b