Ë
    Ï"Kb ã                   óü  — d dl m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lZd dlmZ d dlmc mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z"  ejF                  d«      Z$i dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'd(œ¥Z%d)d*gZ&g d+¢Z'da(d,d-gZ)da*da+d.„ Z,da-d/„ Z.d0„ Z/d1„ Z0	 	 d¥d2„Z1d¦d3„Z2d¦d4„Z3d5„ Z4d6„ Z5d7„ Z6d8„ Z7d9„ Z8d:„ Z9d;„ Z:d<„ Z;d=„ Z<d>„ Z=d?„ Z>d@„ Z?dA„ Z@dB„ ZAdC„ ZBdD„ ZCdE„ ZD ejF                  dF«      ZEdG„ ZF ejF                  dH«      ZGdI„ ZHdJ„ ZI ejF                  dK«      ZJdL„ ZKdM„ ZLdN„ ZMdO„ ZNdP„ ZOdQ„ ZPdR„ ZQdS„ ZRdT„ ZSdU„ ZTdV„ ZUdW„ ZVdX„ ZWdY„ ZXdZ„ ZYd[„ ZZd\„ Z[d]„ Z\d^„ Z]d_„ Z^d`„ Z_da„ Z`db„ Zadc„ Zbdd„ Zcde„ Zddf„ Zedg„ Zfdh„ Zgdi„ Zhdj„ Zidk„ Zjdl„ Zkdm„ Zldn„ Zmdo„ Zndp„ Zodq„ Zpdr„ Zqds„ Zrdt„ Zsdu„ Ztdv„ Zudw„ Zvdx„ Zwdy„ Zxdz„ Zyd{„ Zzd|„ Z{d}„ Z|d~„ Z}d„ Z~d€„ Zd�„ Z€d‚„ Z�dƒ„ Z‚ G d„„ d…eƒ«      Z„d†„ Z…d‡„ Z†dˆ„ Z‡d‰„ ZˆdŠ„ Z‰d‹„ ZŠdŒ„ Z‹d�„ ZŒdŽ„ Z�d�„ ZŽd�„ Z�d‘„ Z�d’„ Z‘d“„ Z’d”„ Z“d•„ Z” ejF                  d–«      Z•d—„ Z–d˜„ Z—d™„ Z˜dš„ Z™d›„ Zšdœ„ Z›d�„ Zœdž„ Z�dŸ„ Zžd „ ZŸd¡„ Z d¢„ Z¡d£„ Z¢d¤„ Z£y)§é    )Úprint_functionN)Úcollections_abc)ÚGypError)Ú
OrderedSetz^[A-F0-9\-]+$ÚDRIVER_PREFIXÚ ÚDRIVER_SUFFIXú.sysÚEXECUTABLE_PREFIXÚEXECUTABLE_SUFFIXú.exeÚSTATIC_LIB_PREFIXÚSHARED_LIB_PREFIXÚSTATIC_LIB_SUFFIXú.libÚSHARED_LIB_SUFFIXú.dllÚINTERMEDIATE_DIRú	$(IntDir)ÚSHARED_INTERMEDIATE_DIRz $(OutDir)obj/global_intermediateÚOSÚwinÚPRODUCT_DIRú	$(OutDir)ÚLIB_DIRz$(OutDir)libÚRULE_INPUT_ROOTú$(InputName)ÚRULE_INPUT_DIRNAMEú$(InputDir)ÚRULE_INPUT_EXTú$(InputExt)ÚRULE_INPUT_NAMEú$(InputFileName)ú$(InputPath)z$(ConfigurationName))ÚRULE_INPUT_PATHÚCONFIGURATION_NAMEÚmsvs_cygwin_dirsÚ
msvs_props)r'   Úmsvs_cygwin_shellÚmsvs_large_pdbÚ
msvs_shardÚmsvs_external_builderÚmsvs_external_builder_out_dirÚmsvs_external_builder_build_cmdÚmsvs_external_builder_clean_cmdÚ#msvs_external_builder_clcompile_cmdÚmsvs_enable_winrtÚmsvs_requires_importlibraryÚmsvs_enable_winphoneÚmsvs_application_type_revisionÚmsvs_target_platform_versionÚmsvs_target_platform_minversionÚmsvs_precompiled_headerÚmsvs_precompiled_sourcec                  óz  — t         j                  dvryt        rt        �st        j
                  j                  d«      } t        j
                  j                  d«      }| r|sÊt        j                  g d¢t        j                  ¬«      }|j                  «       d   }t        j                  dt        j                  «      }|j                  |«      }|r|j                  d	«      }t        j                  d
t        j                  «      }|j                  |«      }|r|j                  d	«      } | a|at        t        fS )N)Úwin32Úcygwin)ÚDOMAINÚUSERNAMEÚ
USERDOMAINr=   )ÚnetÚconfigÚWorkstation)Ústdoutr   z^User name\s+(\S+)é   z^Logon domain\s+(\S+))ÚsysÚplatformÚcached_domainÚcached_usernameÚosÚenvironÚgetÚ
subprocessÚPopenÚPIPEÚcommunicateÚreÚcompileÚ	MULTILINEÚsearchÚgroup)ÚdomainÚusernameÚcallr@   Úusername_reÚusername_matchÚ	domain_reÚdomain_matchs           ú4/usr/lib/python3/dist-packages/gyp/generator/msvs.pyÚ_GetDomainAndUserNamer\   m   sô   € Ü‡\�\Ð,Ñ,Ø!õ 
žoÜ�Z‰Z�^‰^˜LÓ)€FÜ�z‰z�~‰~˜jÓ)€HÙ™Ü×ÑÒ>Ü%/§_¡_ô6€dà×ÑÓ! !Ñ$€fÜ—J‘JÐ4´b·l±lÓC€kØ"×)Ñ)¨&Ó1€nÙ	Ø!×'Ñ'¨Ó*ˆÜ—*‘*Ð5´r·|±|ÓD€iØ×%Ñ% fÓ-€lÙ	Ø×#Ñ# AÓ&ˆØ€MØ€OÜ
œÐ	)Ð)ó    c                 óŽ   — t         j                  j                  | «      }| j                  d«      |j                  d«      k(  r|} | S )zÜNormalize the path.

  But not if that gets rid of a variable, as this may expand to something
  larger than one directory.

  Arguments:
      source: The path to be normalize.d

  Returns:
      The normalized path.
  ú$)rH   ÚpathÚnormpathÚcount)ÚsourceÚ
normalizeds     r[   Ú_NormalizedSourcere   ˆ   s>   € ô �w‰w×Ñ Ó'€*Ø‡\�\�#Ó˜*×*Ñ*¨3Ó/Ò/Ø€FØ	€-r]   c                 ó  — t         rM| rKt        j                  j                  | «      s,| d   dk(  s$t        j                  j	                  t         | «      } | j                  dd«      } t        | «      } | r| d   dk(  r| dd } | S )zÁConvert paths to a form that will make sense in a vcproj file.

  Arguments:
    path: The path to convert, may contain / etc.
  Returns:
    The path with all slashes made into backslashes.
  r   r_   ú/ú\éÿÿÿÿN)Úfixpath_prefixrH   r`   ÚisabsÚjoinÚreplacere   ©r`   s    r[   Ú_FixPathro   š   sn   € õ ™¤R§W¡W§]¡]°4Ô%8ÀÀaÁÈCÂÜ�7‰7�<‰<œ¨Ó-€DØ	�‰�c˜4Ó	 €$Ü	˜4Ó	 €$Ù	ˆd�2‰h˜$ÒØ��ˆ9€DØ	€+r]   c                 ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w )z"Fix each of the paths of the list.)ro   )ÚpathsÚis     r[   Ú	_FixPathsrs   «   s   € à$Ö	%˜!Œ(�1�+Ò	%Ð%ùÒ	%s   …c                 ó  — |sg }g }g }t        j                  «       }| D ]ä  }t        |«      dk(  rEt        dj	                  ||z   «      «      }	|	|v r|j                  |	«       ŒD|j                  |	«       ŒV|rG|j                  «       s7|j                  |d   «      sg ||d   <   ||d      j                  |dd «       ŒŸt        |dd g||d   gz   |||¬«      }
t        j                  |d   |
¬«      }
|j                  |
«       Œæ |r*|r(t        j                  d|¬«      }|j                  |«       |r|j                  «       r|S |D ]A  }t        ||   ||gz   |||¬«      }
t        j                  ||
¬«      }
|j                  |
«       ŒC |S )	a©  Converts a list split source file paths into a vcproj folder hierarchy.

  Arguments:
    sources: A list of source file paths split.
    prefix: A list of source file path layers meant to apply to each of sources.
    excluded: A set of excluded files.
    msvs_version: A MSVSVersion object.

  Returns:
    A hierarchy of filenames and MSVSProject.Filter objects that matches the
    layout of the source tree.
    For example:
    _ConvertSourcesToFilterHierarchy([['a', 'bob1.c'], ['b', 'bob2.c']],
                                     prefix=['joe'])
    -->
    [MSVSProject.Filter('a', contents=['joe\a\bob1.c']),
     MSVSProject.Filter('b', contents=['joe\b\bob2.c'])]
  rC   rh   r   N©ÚexcludedÚlist_excludedÚmsvs_version)ÚcontentsÚ_excluded_files)Úprefixrv   rw   rx   )r   ÚOrderedDictÚlenre   rl   ÚappendÚUsesVcxprojrJ   Ú _ConvertSourcesToFilterHierarchyÚMSVSProjectÚFilter)Úsourcesr{   rv   rw   rx   ÚresultÚexcluded_resultÚfoldersÚsÚfilenamery   Úexcluded_folderÚfs                r[   r€   r€   °   s¤  € ñ( 
˜"�Ø€&Ø€/Ü×'Ñ'Ó)€'àò €aÜ
ˆ1ƒv�‚{Ü" 4§9¡9¨V°a©ZÓ#8Ó9€hØ	�XÑ	Ø×Ñ˜xÕ(à�‰�hÕÙ	˜l×6Ñ6Ô8ð �[‰[˜˜1™ÔØˆ��!‘‰Øˆa�‰d�m×Ñ˜1˜Q˜R˜5Õ!ä1°1°Q°R°5°'¸6ÀQÀqÁTÀF¹?Ø;CØ@MØ?KôM€hô ×#Ñ# A a¡D°8Ô<€hØ‡m�m�HÕð'ñ* ™Ü!×(Ñ(Ð):Ø2AôC€Oà
‡M�M�/Ô"á�l×.Ñ.Ô0Ø€Mð ò €aÜ/°¸±
À6ÈQÈCÁ<Ø9AØ>KØ=IôK€Hô ×!Ñ! !¨hÔ7€HØ
‡M�M�(Õðð 
€-r]   c                 ó(   — |sy t        | ||||«       y ©N)Ú_ToolSetOrAppend)ÚtoolsÚ	tool_nameÚsettingÚvalueÚonly_if_unsets        r[   Ú_ToolAppendr“   ñ   s   € Ù	�Ü�5˜) W¨e°]ÕCr]   c                 óÚ  — d|v sd|v rDt        |«      t        k(  r|j                  dd«      }n|D �cg c]  }|j                  dd«      ‘Œ }}| j                  |«      st	        «       | |<   | |   }d|k(  ry |j                  |«      r[|ry t        ||   «      t
        k(  r t        |«      t
        k(  r||xx   |z  cc<   y t        d|›d|›d|›d	t        ||   «      ›�«      ‚|||<   y c c}w )
NÚDirectoriesÚDependenciesrg   rh   ÚCompileAsWinRTzAppending "z" to a non-list setting "z" for tool "z"" is not allowed, previous value: )ÚtypeÚstrrm   rJ   ÚdictÚlistÚ	TypeError)rŽ   r�   r�   r‘   r’   rr   Útools          r[   r�   r�   ö   sé   € à�gÑ °7Ñ!:ÜˆEƒ{”cÒØ�m‰m˜C Ó&�eà-2Ö3¨ˆq�y‰y˜˜dÕ#Ð3€eÐ3Ø	�‰�9Ô	Ü“v€Eˆ)ÑØ	ˆyÑ	€$Ø˜Ò Ø
Ø	‡X�XˆgÔÙ�fÜˆD�‰MÓœdÒ"¤t¨E£{´dÒ':Ø
ˆ7ƒm�uÑ„måò ’Wši¬¨T°'©]Ô);ð=ó>ð >ð
 €Dˆ‚Mùò! 4s   ²C(c                 ó&   — | j                  dd«      S )NÚmsvs_target_versionÚWindows7©rJ   ©Úconfig_datas    r[   Ú_ConfigTargetVersionr¤     s   € Ø	�‰Ð.°
Ó	;Ð;r]   c                 ó&   — | j                  dd«      S )NÚmsvs_configuration_platformÚWin32r¡   r¢   s    r[   Ú_ConfigPlatformr¨     s   € Ø	�‰Ð6¸Ó	@Ð@r]   c                 óR   — | j                  d|z   «      r| dt        |«       dz
   S | S )NÚ_r   rC   )Úendswithr}   )Úconfig_nameÚplatform_names     r[   Ú_ConfigBaseNamer®     s5   € Ø×Ñ˜# Ñ-Ô.Ø�qœ#˜mÓ,Ð,¨qÑ0Ð1Ð1àÐr]   c                 ó:   — t        |«      }t        | |«      ›d|›�S )Nú|)r¨   r®   )r¬   r£   r­   s      r[   Ú_ConfigFullNamer±     s   € Ü! +Ó.€-Ü# K°Õ?ÁÐ	OÐOr]   c           
      óÜ  — | j                  d«      }|r|gn|j                  }|D ]À  }dD ]¹  }t        j                  ||z  d«      }|sŒt        j                  ||z  d«      xs d}d|z  }t	        t
        j                  j                  |«      rt        j                  |«      ng D �cg c]  }|j                  |«      r|‘Œ c}d¬«      }	|	r	|	d	   c c S t        d
|z  «       Œ» ŒÂ y c c}w )NÚmsvs_windows_sdk_version)z1HKLM\Software\Microsoft\Microsoft SDKs\Windows\%sz=HKLM\Software\Wow6432Node\Microsoft\Microsoft SDKs\Windows\%sÚInstallationFolderÚProductVersionr   z
%s\includeT)Úreverser   zCWarning: No include files found for detected Windows SDK version %s)rJ   Úcompatible_sdksÚMSVSVersionÚ_RegistryGetValueÚsortedrH   r`   ÚisdirÚlistdirÚ
startswithÚprint)
r£   ÚversionÚ
config_verÚversÚverÚkeyÚsdk_dirÚexpected_sdk_dirÚxÚnamess
             r[   Ú#_ConfigWindowsTargetPlatformVersionrÈ   #  s  € Ø�‰Ð9Ó:€*Ù#ˆ*‰¨×)@Ñ)@€$Øò =€cðHò =ˆô ×-Ñ-¨c°C©iÐ9MÓN€gÙØÜ×-Ñ-¨c°C©iÐ9IÓJÒPÈb€gà$ wÑ.ÐÜÜ%'§W¡W§]¡]Ð3CÔ%Dô #%§*¡*Ð-=Ô">à')ö0˜Að Ÿ™ gÔ.ò	 ò 0ð :>ô	?€eñ
 
Ø�Q‰xŒäð 0Ø3:ñ<õ 	=ñ#=ñ=ùò0s   Â(C)c                 óØ  — |D �cg c]	  }d|v sŒ|‘Œ c}rd}nd}|�rXt        | j                  ddg«      d   «      }|}	|	D �
cg c]  }
|
j                  dd«      ‘Œ }	}
|	D �
cg c]  }
|
j                  d	d
«      ‘Œ }	}
|	D �
cg c]  }
|
j                  dd«      ‘Œ }	}
|r|	D �
cg c]  }
|
j                  dd«      ‘Œ }	}
|	D �
cg c]  }
d|
j                  dd«      z  ‘Œ }	}
dj                  |	«      }	d}|r|dz  }|dz  }|	j	                  d«      dk\  r|dz  }|	j	                  d«      dk\  r|dz  }|	j	                  d«      dk\  r|dz  }|r|	j	                  d«      dk\  r|dz  }|dz  }|||	dœz  }||z   S |d   dk(  rdg}n|d   j                  d d!«      g}|j                  dd"«       |d#d  D �
cg c]  }
|
d d# d$v r|
n
t        |
«      ‘Œ }}
|D �
cg c]  }
|
j                  dd%«      ‘Œ }}
|D �
cg c]  }
t        j                  |
«      ‘Œ }}
|r|D �
cg c]  }
d&|
z  ‘Œ	 }}
|dj                  ||z   «      z   S c c}w c c}
w c c}
w c c}
w c c}
w c c}
w c c}
w c c}
w c c}
w c c}
w )'Nr   z_set INPUTDIR=$(InputDir)
if NOT DEFINED INPUTDIR set INPUTDIR=.\
set INPUTDIR=%INPUTDIR:~0,-1%
r   r'   ú.r   r   z`cygpath -m "${INTDIR}"`r   z`cygpath -m "${OUTDIR}"`z`cygpath -m "${INPUTDIR}"`r$   z`cygpath -m "${INPUTPATH}"`z\"%s\"ú"z\\\"ú z4call "$(ProjectDir)%(cygwin_dir)s\setup_env.bat" && zset CYGWIN=nontsec&& ÚNUMBER_OF_PROCESSORSz@set /a NUMBER_OF_PROCESSORS_PLUS_1=%%NUMBER_OF_PROCESSORS%%+1&& ÚINTDIRzset INTDIR=$(IntDir)&& ÚOUTDIRzset OUTDIR=$(OutDir)&& Ú	INPUTPATHzset INPUTPATH=$(InputPath) && zbash -c "%(cmd)s")Ú
cygwin_dirÚcmdÚcatr˜   rg   rh   rV   rC   z/-z
%INPUTDIR%ú"%s")ro   rJ   rm   rl   ÚfindÚinsertÚMSVSSettingsÚFixVCMacroSlashes)ÚspecrÒ   Úcygwin_shellÚhas_input_pathÚ	quote_cmdÚdo_setup_envrÆ   Úinput_dir_preamblerÑ   Ú
direct_cmdrr   ÚcommandÚ	argumentss                r[   Ú_BuildCommandLineForRuleRawrâ   <  s  € ð Ö+ˆA˜¨Ò*‚aÓ+ð(ñ ð Ðâä˜$Ÿ(™(Ð#5¸°uÓ=¸aÑ@ÓA€Jà€JàAKöMØ<=ð —)‘)˜KØ6õ8ð M€Jð Mð BLöMØ<=ð —)‘)˜KØ6õ8ð M€Jð Mð DNöOØ>?ð —)‘)˜MØ8õ:ð O€Jð Oáð (ö)àð —I‘I˜nØ;õ=ð )€jð )ð CMÖM¸Q�*˜qŸy™y¨¨iÓ8Ó8ÐM€JÐMà—‘˜*Ó%€Jà
€CÙØ	ÐDÑD€cØÐ"Ñ"€CØ‡�Ð-Ó.°!Ò3Ø	ÐOÑO€cØ‡��xÓ  AÒ%Ø	Ð&Ñ&€cØ‡��xÓ  AÒ%Ø	Ð&Ñ&€cÙ˜*Ÿ/™/¨+Ó6¸!Ò;Ø	Ð-Ñ-€cØÐÑ€CØ
˜zØ"ñ$ñ $€Cà Ñ#Ð#ð ˆ1�v�‚Ø��gà�Q‘—‘  TÓ*Ð+€gð
 ‡N�N�1�fÔð ADÀAÀBÀÖH¸1�q˜˜!�u ‘}‘¬8°A«;Ñ6ÐH€IÐHØAJÖK¸A�—‘˜=¨,Õ7ÐK€IÐKØ<EÖF°q”×/Ñ/°Õ2ÐF€IÐFÙð (1Ö1 !�6˜A“:Ð1€iÐ1à §¡¨°9Ñ)<Ó =Ñ=Ð=ùòK ,ùòMùòMùòOùò)ùò NùòH IùÚKùÚFùò
 2s@   …	H:�H:ÁH?Á"IÂI	Â"IÃIÆ1IÇIÇ1I"ÈI'c                 óô   — |j                  d«      }|€t        | j                  dd«      «      }nt        |t        «      rt        |«      }t        |j                  dd«      «      }t	        | |d   ||||¬«      S )Nr)   rC   Úmsvs_quote_cmdÚaction)rÝ   )rJ   ÚintÚ
isinstancer™   râ   )rÙ   ÚrulerÛ   rÝ   ÚmcsrÜ   s         r[   Ú_BuildCommandLineForRulerê   ‡  sw   € ð
 	�‰Ð$Ó%€#Ø€[Ü
ˆd�h‰hÐ*¨AÓ.Ó
/�CÜ�#”sÔÜ
ˆc‹(€CÜ�$—(‘(Ð+¨QÓ/Ó0€)Ü	$ T¨4°©>¸3ÀØ%.¸\ô
Kð Kr]   c                 ó^   — |sJ ‚||||dœ}|d   }|| vrg | |<   | |   j                  |«       y)aß  Merge action into an existing list of actions.

  Care must be taken so that actions which have overlapping inputs either don't
  get assigned to the same input, or get collapsed into one.

  Arguments:
    actions_dict: dictionary keyed on input name, which maps to a list of
      dicts describing the actions attached to that input file.
    inputs: list of inputs
    outputs: list of outputs
    description: description of the action
    command: command line to execute
  ©ÚinputsÚoutputsÚdescriptionrà   r   N©r~   )Úactions_dictrí   rî   rï   rà   rå   Úchosen_inputs          r[   Ú_AddActionStepró   –  sR   € ñ 
€-ˆð ØØ Øñ	€&ð ˜‘€,ð ˜Ñ%Ø!#€L�ÑØˆ|Ñ×#Ñ# FÕ+r]   c                 ó(  — t        |«      }t        |«      }t        j                  d|dj                  |«      dj                  |«      |dœ«      }|d   j	                  «       D ]-  \  }}	| j                  t        |«      t        ||	«      |g¬«       Œ/ y)a8  Add a custom build tool to execute something.

  Arguments:
    p: the target project
    spec: the target project dict
    primary_input: input file to attach the build tool to
    inputs: list of inputs
    outputs: list of outputs
    description: description of the action
    cmd: command line to execute
  ÚVCCustomBuildToolú;)ÚDescriptionÚAdditionalDependenciesÚOutputsÚCommandLineÚconfigurations©rŽ   N)rs   r�   ÚToolrl   ÚitemsÚAddFileConfigro   r±   )
ÚprÙ   Úprimary_inputrí   rî   rï   rÒ   r�   r¬   Úc_datas
             r[   Ú_AddCustomBuildToolForMSVSr  ¹  sœ   € ô �VÓ€&Ü�gÓ€'Ü	×	Ñ	ØØ!Ø!$§¡¨&Ó!1Ø—(‘(˜7Ó#Øñó
	€$ð "Ð"2Ñ3×9Ñ9Ó;ò HÑ€k�6Ø‡O�O”H˜]Ó+Ü# K°Ó8ÀÀð õ HñHr]   c           
      ó‚  — |D ]º  }t        «       }t        «       }g }g }||   D ]d  }|j                  t        |d   «      «       |j                  t        |d   «      «       |j                  |d   «       |j                  |d   «       Œf dj                  |«      }	dj                  |«      }
t	        | |||||	|
¬«       Œ¼ y)	a  Add actions accumulated into an actions_dict, merging as needed.

  Arguments:
    p: the target project
    spec: the target project dict
    actions_dict: dictionary keyed on input name, which maps to a list of
        dicts describing the actions attached to that input file.
  rí   rî   rï   rà   ú, and also ú
)r  rí   rî   rï   rÒ   N)r   Úupdater~   rl   r  )r   rÙ   rñ   r  rí   rî   ÚdescriptionsÚcommandsrå   rï   rà   s              r[   Ú_AddAccumulatedActionsToMSVSr
  Õ  sÊ   € ð $ò ,€mÜ‹\€FÜ‹l€GØ€LØ€HØ˜}Ñ-ò )ˆØ‡m�m”J˜v hÑ/Ó0Ô1Ø‡n�n”Z  yÑ 1Ó2Ô3Ø×Ñ˜& Ñ/Ô0Ø‡o�o�f˜YÑ'Õ(ð	)ð  ×$Ñ$ \Ó2€KØ�k‰k˜(Ó#€GÜ˜q $Ø-:Ø&,Ø'.Ø+6Ø#*ö,ñ,r]   c                 ó4  — | j                  dt        j                  j                  t        j                  j	                  |«      d   «      d   «      } | j                  dt        j                  j                  |«      «      } | j                  dt        j                  j                  t        j                  j	                  |«      d   «      d   «      } | j                  dt        j                  j	                  |«      d   «      } | j                  d|«      } | S )zÚGiven the input file to which a rule applied, string substitute a path.

  Arguments:
    path: a path to string expand
    input_file: the file to which the rule applied.
  Returns:
    The string substituted path.
  r   rC   r   r   r!   r#   r$   )rm   rH   r`   ÚsplitextÚsplitÚdirname)r`   Ú
input_files     r[   Ú_RuleExpandPathr  ó  sÍ   € ð 
�‰�nÜ—g‘g×&Ñ&¤r§w¡w§}¡}°ZÓ'@ÀÑ'CÓDÀQÑGó
I€$à	�‰�m¤R§W¡W§_¡_°ZÓ%@Ó	A€$Ø	�‰�mÜ—g‘g×&Ñ&¤r§w¡w§}¡}°ZÓ'@ÀÑ'CÓDÀQÑGó
I€$à	�‰Ð(¬"¯'©'¯-©-¸
Ó*CÀAÑ*FÓ	G€$Ø	�‰�n jÓ	1€$Ø	€+r]   c                 ó&   — | j                  dg «      S )zíFind the list of files which a particular rule applies to.

  Arguments:
    rule: the rule in question
    sources: the set of all known source files for this project
  Returns:
    The list of sources that trigger a particular rule.
  Úrule_sourcesr¡   )rè   rƒ   s     r[   Ú_FindRuleTriggerFilesr    s   € ð 
�‰�. "Ó	%Ð%r]   c                 óH  — t        | j                  dg «      «      }t        | j                  dg «      «      }t        «       }t        «       }|j                  |«       |D ]  }|j                  t	        ||«      «       Œ |D ]  }|j                  t	        ||«      «       Œ ||fS )z×Find the inputs and outputs generated by a rule.

  Arguments:
    rule: the rule in question.
    trigger_file: the main trigger for this rule.
  Returns:
    The pair of (inputs, outputs) involved in this rule.
  rí   rî   )rs   rJ   r   Úaddr  )rè   Útrigger_fileÚ
raw_inputsÚraw_outputsrí   rî   rr   Úos           r[   Ú_RuleInputsAndOutputsr    s—   € ô ˜Ÿ™ (¨BÓ/Ó0€*Ü˜$Ÿ(™( 9¨bÓ1Ó2€+Ü‹<€&Ü‹L€'Ø‡*�*ˆ\ÔØò 1€aØ
‡J�JŒ˜q ,Ó/Õ0ð1àò 2€aØ‡K�K”  <Ó0Õ1ð2à
�'Ð	Ðr]   c           	      ó  — |d   ›|j                   ›d�}t        j                  t        j                  j                  ||«      |d   «      }|D ]�  }|d   }|d   }	t        |j                  dg «      «      }
t        |j                  dg «      «      }d|vr|j                  dg «      sŒZt        ||d	d	¬
«      }|j                  ||j                  d|«      |	g|
||¬«       Œ’ |j                  «        | j                  |«       y)zïGenerate a native rules file.

  Arguments:
    p: the target project
    rules: the set of rules to include
    output_dir: the directory in which the project/gyp resides
    spec: the project dict
    options: global generator options
  Útarget_namez.rulesÚ	rule_nameÚ	extensionrí   rî   rå   r  T©rÛ   rÝ   Úmessage)Únamerï   Ú
extensionsÚadditional_dependenciesrî   rÒ   N)ÚsuffixÚMSVSToolFileÚWriterrH   r`   rl   rs   rJ   rê   ÚAddCustomBuildRuleÚWriteIfChangedÚAddToolFile)r   ÚrulesÚ
output_dirrÙ   ÚoptionsÚrules_filenameÚ
rules_fileÚrr  Úrule_extrí   rî   rÒ   s                r[   Ú_GenerateNativeRulesForMSVSr1  '  s  € ð $(¨Ò#6Ø#*§>£>ð3€.ä×"Ñ"¤2§7¡7§<¡<°
¸NÓ#KØ#'¨Ñ#6ó8€*ð ò +€aØ�+‘€IØ�‰~€HÜ�q—u‘u˜X rÓ*Ó+€FÜ˜Ÿ™˜i¨Ó,Ó-€Gà�qÑ §¡ ~°rÔ!:ØÜ
" 4¨¸4Ø04ô6€Cà×!Ñ! yØ./¯e©e°I¸yÓ.IØ.6¨ZØ:@Ø*1Ø&)ð "õ +ð+ð" ×ÑÔð ‡-�-�Õr]   c                 óN   — | j                  dd«      } | j                  dd«      } | S )Nr   z$(OutDirCygwin)r   z$(IntDirCygwin)©rm   rn   s    r[   Ú
_Cygwinifyr4  M  s)   € Ø	�‰�kÐ#4Ó	5€$Ø	�‰�kÐ#4Ó	5€$Ø	€+r]   c           	      ó~  — |d   ›d|j                   ›d�}t        j                  j                  t        j
                  j                  ||«      «      }|j                  d«       |j                  d«       t        «       }t        «       }	t        «       }
g }| D ]¼  }t        ||«      }|D ]©  }t        ||«      \  }}|j                  t        |«      «       |	j                  t        |«      «       |j                  t        |«      d   «       |D �cg c]$  }t        j
                  j                  |«      d   ‘Œ& }}|D ]  }|
j                  |«       Œ Œ« Œ¾ |D �cg c]  }t!        |«      ‘Œ }}|j                  ddj                  |«      z  «       |
D ]  }|sŒ|j                  d	|z  «       Œ |j                  d
«       | D ]Ü  }t        ||«      }|D ]É  }t        ||«      \  }}|D �cg c]  }t!        |«      ‘Œ }}|D �cg c]  }t!        |«      ‘Œ }}|d   D �cg c]  }t#        ||«      ‘Œ }}|D �cg c]  }d|z  ‘Œ	 }}dj                  |«      }|j                  dj                  |«      ›ddj                  |«      ›d
�«       |j                  d|z  «       ŒË ŒÞ |j%                  «        |j                  |«       dddddd|g}t'        ||dddd«      }t        |«      }|j)                  d|«       t+        |t-        |«      t-        |	«      d|d   z  |¬«       yc c}w c c}w c c}w c c}w c c}w c c}w )aG  Generate an external makefile to do a set of rules.

  Arguments:
    rules: the list of rules to include
    output_dir: path containing project and gyp files
    spec: project specification data
    sources: set of sources known
    options: global generator options
    actions_to_add: The list of actions we will add to.
  r  Ú_rulesz.mkz.OutDirCygwin:=$(shell cygpath -u "$(OutDir)")
z.IntDirCygwin:=$(shell cygpath -u "$(IntDir)")
r   zall: %s
rÌ   z	mkdir -p `cygpath -u "%s"`
ú
rå   rÔ   ú: z	%s

ÚmakezOutDir=$(OutDir)zIntDir=$(IntDir)z-jz${NUMBER_OF_PROCESSORS_PLUS_1}z-fTFzRunning external rules for %srì   N)r$  ÚgypÚcommonÚWriteOnDiffrH   r`   rl   Úwriter   r  r  r  r~   r›   r  r  r4  r  Úcloserâ   rÖ   ró   rs   )r*  r+  rÙ   rƒ   r,  Úactions_to_addrˆ   Úmk_fileÚ
all_inputsÚall_outputsÚall_output_dirsÚfirst_outputsrè   Útrigger_filesÚtfrí   rî   rr   Úoutput_dirsÚodÚfirst_outputs_cygÚcrÒ   s                          r[   Ú_GenerateExternalRulesrK  S  s  € ð !% ]Ó 3°W·^³^ÐD€(Ü�J‰J×"Ñ"¤2§7¡7§<¡<°
¸HÓ#EÓF€'à	‡-�-ÐAÔBØ	‡-�-ÐAÔBä‹|€*Ü“€+Ü“L€/Ø€-Øò  €dÜ)¨$°Ó8€MØò 
 ˆÜ-¨d°BÓ7�o€fˆgØ×Ñœ
 6Ó*Ô+Ø×Ñœ GÓ,Ô-ð ×Ñœ4 ›=¨Ñ+Ô,à29Ö:¨Q”R—W‘W—]‘] 1Ó% aÓ(Ð:€kÐ:Øò  ˆ"Ø×Ñ˜BÕñ ñ
 ð ð /<Ö<¨”z !•}Ð<ÐÐ<à	‡-�-�˜cŸh™hÐ'8Ó9Ñ9Ô:Øò ;€bÚ	Ø‡m�mÐ4°rÑ9Õ:ð;ð 
‡-�-�Ôàò &€dÜ)¨$°Ó8€MØò &ˆä-¨d°BÓ7�o€fˆgØ'-Ö. !”
˜1•Ð.€fÐ.Ø(/Ö0 1”˜A•Ð0€gÐ0à-1°(©^Ö<¨Œ_˜Q Õ#Ð<€cÐ<Ø!$Ö%˜AˆV�a‹ZÐ%€cÐ%Ø�H‰H�S‹M€cà‡m�m #§(¡(¨7Õ"3°S·X±X¸fÕ5EÐFÔGØ‡m�m�J Ñ$Õ%ñ&ð&ð 
‡-�-„/ð 
‡+�+ˆhÔà	Ø	Ø	Ø	Ð/Ø	ˆxð		€#ô
 	$ D¨#¨t°U¸DÀ$ÓG€#ô �JÓ€*Ø×Ñ�A�xÔ Ü�Ü! *Ó-Ü" ;Ó/Ø<Ø˜-Ñ(ñ)àöùòS ;ùò =ùò /ùÚ0ùâ<ùÚ%s$   Ä)L!ÅL&Ç)L+ÈL0ÈL5È5L:c                 ó*   — | j                  dd«      } | S )a„  Escapes % characters.

  Escapes any % characters so that Windows-style environment variable
  expansions will leave them alone.
  See http://connect.microsoft.com/VisualStudio/feedback/details/106127/cl-d-name-text-containing-percentage-characters-doesnt-compile
  to understand why we have to do this.

  Args:
      s: The string to be escaped.

  Returns:
      The escaped string.
  ú%z%%r3  ©r‡   s    r[   Ú#_EscapeEnvironmentVariableExpansionrO  ¤  s   € ð ‡i�i��TÓ€!Ø	
€(r]   z(\\*)"c                 óH   — d„ }t         j                  || «      } d| z   dz   } | S )aw  Escapes a Windows command-line argument.

  So that the Win32 CommandLineToArgv function will turn the escaped result back
  into the original string.
  See http://msdn.microsoft.com/en-us/library/17w5ykft.aspx
  ("Parsing C++ Command-Line Arguments") to understand why we have to do
  this.

  Args:
      s: the string to be escaped.
  Returns:
      the escaped string.
  c                 ó0   — d| j                  d«      z  dz   S )Né   rC   ú\"©rS   ©Úmatchs    r[   Ú_Replacez3_EscapeCommandLineArgumentForMSVS.<locals>._ReplaceÈ  s   € ð ˆu�{‰{˜1‹~Ñ Ñ%Ð%r]   rË   )Úquote_replacer_regexÚsub©r‡   rW  s     r[   Ú!_EscapeCommandLineArgumentForMSVSr[  ¹  s-   € ò&ô ×Ñ˜x¨Ó+€!à	ˆA�g��m€!Ø	
€(r]   z(\\*)([,;]+)c                 ó  — d„ }| j                  d«      }t        dt        |«      d«      D ]  }t        j	                  |||   «      ||<   Œ  dj                  |«      } t        |«      dz  dk(  rt        d| z   t        j                  ¬«       | S )a©  Escapes command line arguments for MSVS.

  The VCProj format stores string lists in a single string using commas and
  semi-colons as separators, which must be quoted if they are to be
  interpreted literally. However, command-line arguments may already have
  quotes, and the VCProj parser is ignorant of the backslash escaping
  convention used by CommandLineToArgv, so the command-line quotes and the
  VCProj quotes may not be the same quotes. So to store a general
  command-line argument in a VCProj list, we need to parse the existing
  quoting according to VCProj's convention and quote any delimiters that are
  not already quoted by that convention. The quotes that we add will also be
  seen by CommandLineToArgv, so if backslashes precede them then we also have
  to escape those backslashes according to the CommandLineToArgv
  convention.

  Args:
      s: the string to be escaped.
  Returns:
      the escaped string.
  c                 óZ   — d| j                  d«      z  dz   | j                  d«      z   dz   S )NrR  rC   rË   rT  rU  s    r[   rW  z5_EscapeVCProjCommandLineArgListItem.<locals>._Replaceî  s.   € ð ˆu�{‰{˜1‹~Ñ Ñ# e§k¡k°!£nÑ4°sÑ:Ð:r]   rË   r   rR  z;Warning: MSVS may misinterpret the odd number of quotes in )Úfile)	r  Úranger}   Údelimiters_replacer_regexrY  rl   r¾   rD   Ústderr)r‡   rW  Úsegmentsrr   s       r[   Ú#_EscapeVCProjCommandLineArgListItemrc  Ø  s’   € ò,;ð �W‰W�S‹\€(ä�”C˜“M 1Ó%ò G€aÜ+×/Ñ/°¸(À1¹+ÓF€HˆQ‚KðGð 
‡h�hˆxÓ€!Üˆƒ]�QÑ˜!Òô 
ð 'Ø)*ñ+Ü25·*±*õ>à	
€(r]   c                 ó„   — t        | «      } t        | «      } t        | «      } | j                  ddt	        d«      z  «      } | S ©zBEscapes a CPP define so that it will reach the compiler unaltered.ú#z\%03o)rO  r[  rc  rm   ÚordrN  s    r[   Ú_EscapeCppDefineForMSVSrh    s@   € ä)¨!Ó,€!Ü'¨Ó*€!Ü)¨!Ó,€!ð ‡i�i��X¤ C£Ñ(Ó)€!Ø	
€(r]   z(\\+)"c                 ó8   — d„ }t         j                  || «      } | S )z;Escapes a Windows command-line argument for use by MSBuild.c                 óN   — t        | j                  d«      «      dz  dz  dz  dz   S )NrC   rR  é   rh   rS  )r}   rS   rU  s    r[   rW  z6_EscapeCommandLineArgumentForMSBuild.<locals>._Replace  s)   € Ü�—‘˜A“Ó !Ñ# aÑ'¨4Ñ/°%Ñ7Ð7r]   )Úquote_replacer_regex2rY  rZ  s     r[   Ú$_EscapeCommandLineArgumentForMSBuildrm    s    € ò8ô ×Ñ ¨!Ó,€!Ø	
€(r]   c           	      ó‚   — ddddddddœ}d	j                  | D �cg c]  }|j                  ||«      ‘Œ c}«      }|S c c}w )
Nz%25z%24z%40z%27z%3Bz%3Fz%2A)rM  r_   ú@ú'rö   ú?Ú*r   )rl   rJ   )r‡   Úescape_dictionaryrJ  r„   s       r[   Ú_EscapeMSBuildSpecialCharactersrt     sR   € àØØØØØØñÐð �7‰7¸Ö;°AÐ%×)Ñ)¨!¨QÕ/Ò;Ó<€&Ø	€-ùò <s   š<c                 ó„   — t        | «      } t        | «      } t        | «      } | j                  ddt	        d«      z  «      } | S re  )rO  rm  rt  rm   rg  rN  s    r[   Ú_EscapeCppDefineForMSBuildrv  .  s@   € ä)¨!Ó,€!Ü*¨1Ó-€!Ü% aÓ(€!ð ‡i�i��X¤ C£Ñ(Ó)€!Ø	
€(r]   c           	      óJ  — |j                  dg «      }|D �cg c]   }t        |j                  dd«      «      rŒ|‘Œ" }	}|D �cg c]   }t        |j                  dd«      «      sŒ|‘Œ" }
}|	rt        | |	|||«       |
rt        |
|||||«       t	        |||d«       yc c}w c c}w )aŸ  Generate all the rules for a particular project.

  Arguments:
    p: the project
    output_dir: directory to emit rules to
    options: global options passed to the generator
    spec: the specification for this project
    sources: the set of all known source files in this project
    excluded_sources: the set of sources excluded from normal processing
    actions_to_add: deferred list of actions to add in
  r*  Úmsvs_external_ruler   FN)rJ   ræ   r1  rK  Ú_AdjustSourcesForRules)r   r+  r,  rÙ   rƒ   Úexcluded_sourcesr?  r*  r/  Úrules_nativeÚrules_externals              r[   Ú_GenerateRulesForMSVSr}  9  s§   € ð �(‰(�7˜BÓ
€%Ø"ÖN˜¬#¨a¯e©eÐ4HÈ!Ó.LÕ*M’!ÐN€,ÐNØ$ÖL˜!¬¨A¯E©EÐ2FÈÓ,JÕ(K’AÐL€.ÐLñ Ü  <°¸TÀ7ÔKñ Ü˜>¨:°tØ" G¨^ô=ä˜ Ð)9¸5ÕAùò OùÚLs   — B¸BÁ B Á#B c                 ó°  — | D ]Ñ  }t        ||«      }|D ]¾  }|j                  t        |«      «       t        |j	                  dd«      «      sŒ9t        ||«      \  }}t        t        |«      «      }t        t        |«      «      }|j                  t        |«      «       |j                  |«       |s|j                  |«       |j                  |«       ŒÀ ŒÓ y )NÚprocess_outputs_as_sourcesF)
r  Údiscardro   ræ   rJ   r  r   rs   Úremover  )	r*  rƒ   rz  Ú
is_msbuildrè   rE  r  rí   rî   s	            r[   ry  ry  V  s½   € àò  €dä)¨$°Ó8€MØ%ò  ˆð ×Ñœx¨Ó5Ô6ä	ˆT�X‰XÐ2°EÓ:Õ	;Ü/°°lÓC‰ˆ�ÜœI fÓ-Ó.ˆÜœY wÓ/Ó0ˆØ�‰”h˜|Ó,Ô-Ø�‰�vÔÙØ
×
!Ñ
! &Ô
)Ø�‰�wÕñ ñ r]   c                 óz   — t        t        |j                  «       «      «      }| D �cg c]	  }||vsŒ|‘Œ c}S c c}w )a*  Take inputs with actions attached out of the list of exclusions.

  Arguments:
    excluded_sources: list of source files not to be built.
    actions_to_add: dict of actions keyed on source file they're attached to.
  Returns:
    excluded_sources with files that have actions attached removed.
  )r   rs   Úkeys)rz  r?  Ú	must_keepr‡   s       r[   Ú_FilterActionsFromExcludedr†  l  s7   € ô œ >×#6Ñ#6Ó#8Ó9Ó:€)Ø%Ö	<�¨°)Ò);Š!Ò	<Ð<ùÒ	<s   §	8±8c                 ó   — | d   | d      S )Nrû   Údefault_configuration© )rÙ   s    r[   Ú_GetDefaultConfigurationrŠ  y  s   € Ø	ÐÑ	 Ð%<Ñ =Ñ	>Ð>r]   c                 óè   — t        |«      }|j                  d«      }|r:t        j                  |«      € t	        d|›dt        j
                  ›d�«      ‚d|z  }|xs t        j                  | «      }|S )a  Get the guid for the project.

  Arguments:
    proj_path: Path of the vcproj or vcxproj file to generate.
    spec: The target dictionary containing the properties of the target.
  Returns:
    the guid.
  Raises:
    ValueError: if the specified GUID is invalid.
  Ú	msvs_guidzInvalid MSVS guid: "z".  Must match regex: "z".z{%s})rŠ  rJ   ÚVALID_MSVS_GUID_CHARSrV  Ú
ValueErrorÚpatternÚMSVSNewÚMakeGuid)Ú	proj_pathrÙ   Údefault_configÚguids       r[   Ú_GetGuidOfProjectr•  }  ss   € ô ,¨DÓ1€.à	×	Ñ	˜KÓ	(€$Ù	Ü×"Ñ" 4Ó(Ð0ÝÚÔ3×;Ó;ð=ó >ð >à�D‰=€DØ	Ò	,”×!Ñ! )Ó,€$Ø	€+r]   c                 ó–   — t        |«      }|j                  d«      }|s |j                  «       r|j                  «       }|d   dk(  rd}|S )a  Get the platform toolset for the project.

  Arguments:
    proj_path: Path of the vcproj or vcxproj file to generate.
    spec: The target dictionary containing the properties of the target.
    version: The MSVSVersion object.
  Returns:
    the platform toolset string or None.
  Úmsbuild_toolsetr˜   Úwindows_driverzWindowsKernelModeDriver10.0)rŠ  rJ   ÚDefaultToolset)r’  rÙ   r¿   r“  Útoolsets        r[   Ú_GetMsbuildToolsetOfProjectr›  •  sR   € ô ,¨DÓ1€.Ø×ÑÐ0Ó1€'Ù	�W×+Ñ+Ô-Ø×$Ñ$Ó&€GØ	ˆ&�\Ð%Ò%Ø+€GØ	€.r]   c                 óª   — t        | j                  «      }|j                  d«      rg S |j                  «       rt	        | |||«      S t        | |||«      S )a  Generates a vcproj file.

  Arguments:
    project: the MSVSProject object.
    options: global generator options.
    version: the MSVSVersion object.
    generator_flags: dict of generator-specific flags.
  Returns:
    A list of source files that cannot be found on disk.
  Úmsvs_existing_vcproj)rŠ  rÙ   rJ   r   Ú_GenerateMSBuildProjectÚ_GenerateMSVSProject)Úprojectr,  r¿   Úgenerator_flagsr“  s        r[   Ú_GenerateProjectr¢  ©  sV   € ô ,¨G¯L©LÓ9€.ð ×ÑÐ.Ô/Ø€Ià×ÑÔÜ" 7¨G°W¸oÓNÐNä ¨°'¸?ÓKÐKr]   c                 ó*  — |j                  «       rJ ‚| j                  dd«      dvry| j                  dg «      }i }|D ]k  }t        j                  j	                  |«      \  }}|dv }|sŒ,t        j                  j                  |«      }|j                  |g «      j                  |«       Œm d}	|j                  «       D ]/  \  }}
t        |
«      dkD  sŒ|	d|›d	d
j                  |
«      ›d�z  }	Œ1 |	r"t        d| d   z  |	z   dz   «       t        d«      ‚y)zÎMakes sure if duplicate basenames are not specified in the source list.

  Arguments:
    spec: The target dictionary containing the properties of the target.
    version: The VisualStudioVersion object.
  r˜   N)Ústatic_libraryÚshared_libraryrƒ   )ú.cú.ccú.cppú.cxxz.mz.mmz.sz.Sr   rC   z  r8  rÌ   r7  z<static library %s has several files with the same basename:
r  zMSVC08 cannot handle that.z6Duplicate basenames in sources section, see list above)r   rJ   rH   r`   r  ÚbasenameÚ
setdefaultr~   rþ   r}   rl   r¾   r   )rÙ   r¿   rƒ   Ú	basenamesrc   r!  ÚextÚis_compiled_filerª  ÚerrorÚfiless              r[   Ú_ValidateSourcesForMSVSProjectr±  Á  s3  € ð × Ñ Ô"Ð"Ð	"ð 
‡X�Xˆf�dÓÐ#GÑGØ
Ø�H‰H�Y Ó#€'Ø€)Øò 6€fÜ—‘× Ñ  Ó(�I€Dˆ#Øð >ð >ÐáØÜ�w‰w×Ñ Ó%€HØ×Ñ˜ 2Ó&×-Ñ-¨fÕ5ð6ð €%Ø"Ÿ™Ó*ò :�o€h�Ü
ˆ5ƒz�Aƒ~Ùšx¨¯©°%­Ð9Ñ9�eð:ñ Ü	Ð
IØ
ˆ}Ñ
ñØ %ñ&Ø(DñEô Fä
ÐKÓ
LÐLð r]   c           	      óh  — | j                   }t        j                  j                  | j                  «       t        |«      }t        j                  | j                  ||d   | j                  |«      }t        j                  j                  | j                  «      d   }t        | j                  «      }t        j                  j                  ||«      }	t        || j                  «      }
|d   j                  «       D ]  \  }}t!        |||
||«       Œ t#        ||«       t        j                  j                  | j                  «      d   }t%        |||«      \  }}i }t'        |||||||«       |j)                  dd«      }t+        |||||||«      \  }}}t-        ||«      }|j/                  |«       t1        ||«       t3        |||«       t5        |||	«       t7        ||«       t9        | j                  ||«       t;        ||«      }t=        |||||«       t?        |||«       |jA                  «        |S )a-  Generates a .vcproj file.  It may create .rules and .user files too.

  Arguments:
    project: The project object we will generate the file for.
    options: Global options passed to the generator.
    version: The VisualStudioVersion object.
    generator_flags: dict of generator-specific flags.
  r  r   rû   rC   Úmsvs_list_excluded_filesT)!rÙ   r:  r;  ÚEnsureDirExistsr`   Ú_GetUniquePlatformsr�   r&  r”  rH   r  re   Ú
build_fileÚRelativePathÚ_GetMSVSConfigurationTyperþ   Ú_AddConfigurationToMSVSProjectr±  Ú_PrepareListOfSourcesr}  rJ   Ú)_AdjustSourcesAndConvertToFilterHierarchyÚ_VerifySourcesExistÚAddFilesÚ_AddToolFilesToMSVSÚ_HandlePreCompiledHeadersÚ_AddActionsÚ
_AddCopiesÚ_WriteMSVSUserFiler†  Ú_ExcludeFilesFromBeingBuiltr
  r(  )r   r,  r¿   r¡  rÙ   Ú	platformsr   Úproject_dirÚgyp_pathÚrelative_path_of_gyp_fileÚconfig_typer¬   r@   Úgyp_filerƒ   rz  r?  rw   Úexcluded_idlÚmissing_sourcess                       r[   rŸ  rŸ  ä  s  € ð 
�‰€$Ü‡*�*×Ñ˜WŸ\™\Ô*ä! $Ó'€)Ü×Ñ˜Ÿ™ w°°]Ñ0CØ Ÿ™ yó2€!ô —‘—‘˜gŸl™lÓ+¨AÑ.€+Ü˜w×1Ñ1Ó2€(Ü!Ÿj™j×5Ñ5°hÀÓLÐä)¨$°×0BÑ0BÓC€+Ø!Ð"2Ñ3×9Ñ9Ó;ò NÑ€k�6Ü" 1 d¨K¸ÀfÕMðNô !  wÔ/ô �W‰W�]‰]˜7×-Ñ-Ó.¨qÑ1€(Ü3°D¸/Ø4<ó>Ñ€'Ðð €.Ü˜˜;¨°ØÐ!1Ø&ô(ð "×%Ñ%Ð&@À$ÓG€-ä/°°g¸{Ø07Ð9IØ0=¸wóHñ *€'Ð˜\ô (¨°Ó=€/Ø‡*�*ˆWÔä�a˜ÔÜ˜A˜w¨Ô-Üˆn˜dÐ$=Ô>Üˆ^˜TÔ"Ü�W—\‘\ 7¨DÔ1ô 0Ø˜ó(Ðä˜a Ð'7¸Ø+ô-ä˜q $¨Ô7ð ×ÑÔà	Ðr]   c                 ó„   — t        «       }| d   D ]"  }|j                  t        | d   |   «      «       Œ$ t        |«      }|S )zÑReturns the list of unique platforms for this spec, e.g ['win32', ...].

  Arguments:
    spec: The target dictionary containing the properties of the target.
  Returns:
    The MSVSUserFile object created.
  rû   )r   r  r¨   r›   )rÙ   rÄ  Úconfigurations      r[   rµ  rµ  *  sM   € ô ‹l€)ØÐ,Ñ-ò J€mØ‡M�M”/ $Ð'7Ñ"8¸Ñ"GÓHÕIðJä�9‹o€)Ø	Ðr]   c                 ó~   — t        «       \  }}dj                  | ||dg«      }t        j                  |||d   «      }|S )a�  Generates a .user file for the user running this Gyp program.

  Arguments:
    proj_path: The path of the project file being created.  The .user file
               shares the same path (with an appropriate suffix).
    version: The VisualStudioVersion object.
    spec: The target dictionary containing the properties of the target.
  Returns:
    The MSVSUserFile object created.
  rÊ   Úuserr  )r\   rl   ÚMSVSUserFiler&  )r’  r¿   rÙ   rT   rU   Úvcuser_filenameÚ	user_files          r[   Ú_CreateMSVSUserFilerÓ  :  sJ   € ô -Ó.Ñ€6ˆ8Ø—H‘H˜i¨°¸6ÐBÓC€/Ü×!Ñ! /°7Ø"& }Ñ"5ó7€)à	Ðr]   c           
      óÂ   — 	 dddddddœ| d      }|S # t         $ rB | j                  d«      rt        d| d   ›d	| d
   ›d|›d�«      ‚t        d| d
   ›d|›d�«      ‚w xY w)a(  Returns the configuration type for this project.

  It's a number defined by Microsoft.  May raise an exception.

  Args:
      spec: The target dictionary containing the properties of the target.
      build_file: The path of the gyp file.
  Returns:
      An integer, the configuration type.
  Ú1Ú2Ú4Ú5Ú10)Ú
executabler¥  Úloadable_moduler¤  r˜  Únoner˜   zTarget type z' is not a valid target type for target r  z in rÊ   zMissing type field for target )ÚKeyErrorrJ   r   )rÙ   r¶  rÈ  s      r[   r¸  r¸  L  s–   € ð8àØØØØØñ
ð ˆv‰,ñ€Kð  
Ðøô 
ò 8Ø‡x�x�ÔÝà˜6“l D¨Ó$7ºðEó Fð Fõ Ø˜=Ó)ª:ð7ó 8ð 8ð8ús
   ‚ “AAc           	      ó„  — t        |«      \  }}}t        |«      }t        |«      }	t        |d¬«      \  }
}}t	        |«      }|D �cg c]  }t        |«      ‘Œ }}t        |«      }|j                  d«      }|j                  d«      }t        |«      }|j                  d«      }t        «       }|j                  di «      }t        j                  |«       t        |ddd	g«       |D ]"  }|d   |   }|D ]  }t        |||||   «       Œ Œ$ t        |d
d|«       t        |dd|«       t        |dd|«       t        |dd|«       t        |dd|	«       |
rt        ||d|
d¬«       t        |d
d|«       t        |dd|«       t        |d
ddd¬«       t        |d
d|«       t        |dd|«       t        |dd|«       |rLt        j                  j                  |«      d   }t        |d
dd«       t        |d
d|«       t        |d
d|«       |d   dk(  rt        |dd d!«       |rt        |dd"|«       t!        | |||||«       y#c c}w )$a+  Adds a configuration to the MSVS project.

  Many settings in a vcproj file are specific to a configuration.  This
  function the main part of the vcproj file that's configuration specific.

  Arguments:
    p: The target project being generated.
    spec: The target dictionary containing the properties of the target.
    config_type: The configuration type, a number as defined by Microsoft.
    config_name: The name of the configuration.
    config: The dictionary that defines the special processing to be done
            for this configuration.
  F©ÚmsbuildÚmsvs_prebuildÚmsvs_postbuildr7   Úmsvs_settingsÚVCLinkerToolrø   ú$(NOINHERIT)ÚVCCLCompilerToolÚAdditionalIncludeDirectoriesÚ
VCMIDLToolÚVCResourceCompilerToolÚAdditionalLibraryDirectoriesÚ
OutputFileT©r’   ÚPreprocessorDefinitionsÚProgramDataBaseFileNamez $(IntDir)$(ProjectName)\vc80.pdbÚDisableSpecificWarningsÚVCPreBuildEventToolrú   ÚVCPostBuildEventToolrC   ÚUsePrecompiledHeaderrÖ  ÚPrecompiledHeaderThroughÚForcedIncludeFilesr˜   rÛ  ÚIgnoreImportLibraryÚtrueÚModuleDefinitionFileN)Ú_GetIncludeDirsÚ_GetLibrariesÚ_GetLibraryDirsÚ_GetOutputFilePathAndToolÚ_GetDefinesrh  Ú_GetDisabledWarningsrJ   Ú_GetModuleDefinitionrš   r×   ÚValidateMSVSSettingsr“   rH   r`   r  Ú_AddConfigurationToMSVS)r   rÙ   rÈ  r¬   r@   Úinclude_dirsÚmidl_include_dirsÚresource_include_dirsÚ	librariesÚlibrary_dirsÚout_fileÚvc_toolrª   ÚdefinesÚdÚdisabled_warningsÚprebuildÚ	postbuildÚdef_fileÚprecompiled_headerrŽ   rã  r�   Úsettingsr�   s                            r[   r¹  r¹  k  sœ  € ô  �fÓñ 9€,Ð!Ð#8ä˜DÓ!€)Ü  Ó(€,Ü2°4ÀÔGÑ€(ˆG�QÜ˜Ó€'Ø18Ö9¨AÔ$ QÕ'Ð9€'Ð9Ü*¨6Ó2ÐØ�Z‰Z˜Ó(€(Ø�j‰jÐ)Ó*€)Ü! $Ó'€(Ø—z‘zÐ";Ó<Ðô ‹&€%à—*‘*˜_¨bÓ1€-Ü×#Ñ# MÔ2ô ˆe�^Ð%=ÀÐ?OÔPàò ;€dØ�oÑ& tÑ,€HØò ;ˆÜ�%˜˜w¨°Ñ(9Õ:ñ;ð;ô
 ˆeÐ'Ø,¨lô<äˆe�\Ø,Ð.?ôAäˆeÐ-Ø,Ð.CôEô ˆe�^Ð%=¸yÔIÜˆe�^Ð%CØôáÜ��w ¨hÀdÕKäˆeÐ'Ð)BÀGÔLÜˆeÐ-Ð/HØôô ˆeÐ'Ð)BØ1ÀõGô ˆeÐ'Ø'Ð):ô<ô ˆeÐ*¨M¸8ÔDäˆeÐ+¨]¸IÔFáÜŸ™Ÿ™Ð'9Ó:¸1Ñ=ÐÜ�Ð)Ð+AÀ3ÔGÜ�Ð)Ø*Ð,>ô@ä�Ð)Ø$Ð&8ô:ð 
ˆ&�\Ð&Ò&Ü��~Ð'<¸fÔEáÜ��~Ð'=¸xÔHä˜!˜T 5¨&°+¸{ÕKùò :s   ÁH=c                 ó  — | j                  dg «      | j                  dg «      z   }| j                  dg «      | j                  dg «      z   }| j                  d|«      }t        |«      }t        |«      }t        |«      }|||fS )zîReturns the list of directories to be used for #include directives.

  Arguments:
    config: The dictionary that defines the special processing to be done
            for this configuration.
  Returns:
    The list of directory paths.
  r  Úmsvs_system_include_dirsr  r  ©rJ   rs   )r@   r  r  r  s       r[   rø  rø  Â  sš   € ð ‡j�j� Ó$Ø‡j�jÐ+¨RÓ0ñ1ð ð ‡j�jÐ$ bÓ)Ø‡j�jÐ+¨RÓ0ñ1ð ð !Ÿ*™*Ð%<¸lÓKÐÜ˜<Ó(€,ÜÐ 1Ó2ÐÜ#Ð$9Ó:ÐØ	Ð(Ð*?Ð	?Ð?r]   c                 ó@   — | j                  dg «      }t        |«      }|S )zïReturns the list of directories to be used for library search paths.

  Arguments:
    config: The dictionary that defines the special processing to be done
            for this configuration.
  Returns:
    The list of directory paths.
  r  r  )r@   r  s     r[   rú  rú  Ú  s$   € ð —‘˜N¨BÓ/€,Ü˜<Ó(€,Ø	Ðr]   c                 óL  — | j                  dg «      }t        «       }g }t        |«      D ]g  }t        j                  dd|«      }t
        j                  j                  |«      d   s|dz  }||vsŒF|j                  |«       |j                  |«       Œi |j                  «        |S )z»Returns the list of libraries for this configuration.

  Arguments:
    spec: The target dictionary containing the properties of the target.
  Returns:
    The list of directory paths.
  r  z^\-lr   rC   r   )rJ   r   ÚreversedrO   rY  rH   r`   r  r  r~   r¶   )rÙ   r  ÚfoundÚunique_libraries_listÚentryÚlibrarys         r[   rù  rù  é  s    € ð �h‰h�{ BÓ'€)ô
 ‹,€%ØÐÜ˜	Ó"ò ,€eÜ�f‰f�W˜b %Ó(€GÜ�7‰7×Ñ˜GÓ$ QÒ'Ø�Ñ€gØ�eÒØ‡i�i�ÔØ×"Ñ" 7Õ+ð,ð ×ÑÔ!Ø	Ðr]   c                 óž  — d}d}d}ddddddœ}|j                  | d   «      }|r¥t        | j                  dd	«      «      rŠ|\  }}}}| j                  d
d«      rd}| j                  d|«      }| j                  d«      }	|	rd|	z   }n|rd}| j                  dd«      }
| j                  dd«      }t        j                  ||
|z   |z   «      }|||fS )aN  Returns the path and tool to use for this target.

  Figures out the path of the file this spec will create and the name of
  the VC tool that will create it.

  Arguments:
    spec: The target dictionary containing the properties of the target.
  Returns:
    A triple of (file path, name of the vc tool, name of the msbuild tool)
  r   )rä  ÚLinkr   r   )rä  r  r   r   )rä  r  r   r
   )ÚVCLibrarianToolÚLibz$(OutDir)lib\r   ©rÚ  r¥  rÛ  r˜  r¤  r˜   Úmsvs_auto_output_filerC   Ústandalone_static_libraryr   r   Úproduct_dirÚproduct_extensionrÊ   z$(TargetExt)Úproduct_prefixÚproduct_nameú$(ProjectName))rJ   ræ   Úntpathrl   )rÙ   rà  r  r  Úmsbuild_toolÚoutput_file_mapÚoutput_file_propsÚout_dirr$  r"  r{   r$  s               r[   rû  rû    s÷   € ð €(Ø€'Ø€,àAØEØFØEØLñ€/ð &×)Ñ)¨$¨v©,Ó7ÐÙœ3˜tŸx™xÐ(?ÀÓCÔDØ->Ñ*€Gˆ\˜7 FØ‡x�xÐ+¨QÔ/Ø€gØ�h‰h�} gÓ.€GØŸ™Ð!4Ó5ÐÙØÐ&Ñ&�fÙ	Ø€fØ�X‰XÐ&¨Ó+€FØ—8‘8˜NÐ,<Ó=€LÜ�{‰{˜7 F¨\Ñ$9¸FÑ$BÓC€HØ	�7˜LÐ	(Ð(r]   c                 ó4   — | j                  d«      }|rd|z   S y)aq  Returns the extension for this target, including the dot

  If product_extension is specified, set target_extension to this to avoid
  MSB8012, returns None otherwise. Ignores any target_extension settings in
  the input files.

  Arguments:
    spec: The target dictionary containing the properties of the target.
  Returns:
    A string with the extension, or None
  r"  rÊ   Nr¡   )rÙ   Útarget_extensions     r[   Ú_GetOutputTargetExtr-  *  s&   € ð —X‘XÐ1Ó2ÐÙØÐ!Ñ!Ð!Ø	r]   c           	      óð   — g }| j                  dg «      D ]Y  }t        |«      t        k(  r)dj                  |D �cg c]  }t	        |«      ‘Œ c}«      }nt	        |«      }|j                  |«       Œ[ |S c c}w )z÷Returns the list of preprocessor definitions for this configuation.

  Arguments:
    config: The dictionary that defines the special processing to be done
            for this configuration.
  Returns:
    The list of preprocessor definitions.
  r  ú=)rJ   r˜   r›   rl   r™   r~   )r@   r  r	  ÚdpartÚfds        r[   rü  rü  <  sl   € ð €'Ø�:‰:�i Ó$ò €aÜˆAƒw”$‚Ø�8‰8¨QÖ/ E”S˜•ZÒ/Ó0�bäˆq‹6€bØ‡N�N�2Õðð 
€.ùò	 0s   ¹A3
c                 ó^   — | j                  dg «      D �cg c]  }t        |«      ‘Œ c}S c c}w )NÚmsvs_disabled_warnings)rJ   r™   )r@   rr   s     r[   rý  rý  O  s&   € Ø Ÿ*™*Ð%=¸rÓBÖ	C�QŒ#ˆa�&Ò	CÐCùÒ	Cs   •*c                 ó
  — d}| d   dv rt| j                  dg «      D �cg c]  }|j                  d«      sŒ|‘Œ }}t        |«      dk(  rt        |d   «      }|S |r#t	        d| d	   ›d
dj                  |«      ›�«      ‚|S c c}w )Nr   r˜   )r¥  rÛ  rÚ  r˜  rƒ   z.defrC   r   z7Multiple module definition files in one target, target r  z lists multiple .def files: rÌ   )rJ   r«   r}   ro   rŽ  rl   )rÙ   r  r‡   Ú	def_filess       r[   rþ  rþ  S  s›   € Ø€(Ø	ˆ&�\ð (ñ (à ŸH™H Y°Ó3ÖJ�q°q·z±zÀ&Õ7I’ÐJ€IÐJÜ
ˆ9ƒ~˜ÒÜ˜) A™,Ó'€hð 
€/ñ 
Ýð �=Ó! 3§8¡8¨IÔ#6ð8ó9ð 9ð 
€/ùò Ks
   žB µB c                 óX  — g }| j                  «       D ]”  \  }}i }|j                  «       D ]U  \  }}t        |«      t        k(  r9|dk(  r|dk(  s|dk(  rdj                  |«      ||<   Œ<dj                  |«      ||<   ŒQ|||<   ŒW |j	                  t        j                  ||«      «       Œ– |S )z©Convert tools to a form expected by Visual Studio.

  Arguments:
    tools: A dictionary of settings; the tool name is the key.
  Returns:
    A list of Tool objects.
  rä  rø   ÚAdditionalOptionsrÌ   rö   )rþ   r˜   r›   rl   r~   r�   rý   )rŽ   Ú	tool_listr�   r  Úsettings_fixedr�   r‘   s          r[   Ú_ConvertToolsToExpectedFormr:  b  sº   € ð €)ØŸ™›ò =�n€dˆHà€NØ"Ÿ.™.Ó*ò 	(‰ˆ�Ü	ˆe‹œÒ	Ø�^Ò#ØÐ0Ò0ØÐ*Ò*Ø$'§H¡H¨U£Oˆ.˜Ò
!à$'§H¡H¨U£Oˆ.˜Ò
!à"'ˆ�wÒð	(ð ×Ñ”[×%Ñ% d¨NÓ;Õ<ð=ð 
Ðr]   c                 óp   — t        |||«      }t        |«      }| j                  t        ||«      ||¬«       y)aÅ  Add to the project file the configuration specified by config.

  Arguments:
    p: The target project being generated.
    spec: the target project dict.
    tools: A dictionary of settings; the tool name is the key.
    config: The dictionary that defines the special processing to be done
            for this configuration.
    config_type: The configuration type, a number as defined by Microsoft.
    config_name: The name of the configuration.
  )ÚattrsrŽ   N)Ú_GetMSVSAttributesr:  Ú	AddConfigr±   )r   rÙ   rŽ   r@   rÈ  r¬   Ú
attributesr8  s           r[   r   r   }  s;   € ô " $¨°Ó<€*ä)¨%Ó0€)Ø‡+�+Œo˜k¨6Ó2Ø ið õ 1r]   c                 óŠ  — i }|j                  di «      }|D ]
  }||   ||<   Œ |j                  dg «      }t        |«      }|rdj                  |«      |d<   ||d<   |j                  dd«      }t        |«      dz   |d<   d	|vrd
}t        |«      dz   |d	<   |S t        |d	   «      dz   }t	        j
                  |«      }||d	<   |S )NÚmsvs_configuration_attributesr(   rö   ÚInheritedPropertySheetsÚConfigurationTypeÚOutputDirectoryz"$(SolutionDir)$(ConfigurationName)rh   ÚIntermediateDirectoryz'$(ConfigurationName)\obj\$(ProjectName))rJ   rs   rl   ro   r×   rØ   )	rÙ   r@   rÈ  Úprepared_attrsÚsource_attrsÚaÚvsprops_dirsr+  Úintermediates	            r[   r=  r=  �  s  € à€.Ø—‘Ð;¸RÓ@€,Øò (€aØ$ Q™€N�1Òð(ð —‘˜L¨"Ó-€,Ü˜<Ó(€,ÙØ03·±¸Ó0F€NÐ,Ñ-à(3€.Ð$Ñ%Ø×!Ñ!Ð"3Ø"FóH€*ä&.¨zÓ&:¸TÑ&A€.Ð"Ñ#Ø NÑ2Ø>€LÜ.6°|Ó.DÀtÑ.K€NÐ*Ñ+ð
 
Ðô ˜NÐ+BÑCÓDÀtÑK€LÜ×1Ñ1°,Ó?€LØ.:€NÐ*Ñ+Ø	Ðr]   c                 ó4   — | j                  d„ |D «       «       y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrŒ   )re   )Ú.0r‡   s     r[   ú	<genexpr>z(_AddNormalizedSources.<locals>.<genexpr>«  s   è ø€ ÒA¨aÔ& q×)ÑAùs   ‚)r  )Úsources_setÚsources_arrays     r[   Ú_AddNormalizedSourcesrQ  ª  s   € Ø×ÑÑA°=ÔAÕAr]   c                 ór  — t        «       }t        || j                  dg «      «       t        «       }|j                  d«      s|j                  |«       | j                  dg «      D ]•  }|d   }|D �cg c]  }t	        |«      ‘Œ }}t        |«      }|j                  |«       | j                  d«      s|j                  |«       t        |j                  dd«      «      sŒzt        ||j                  dg «      «       Œ— | j                  d	g «      D ]  }t        ||j                  d
g «      «       Œ  ||fS c c}w )a.  Prepare list of sources and excluded sources.

  Besides the sources specified directly in the spec, adds the gyp file so
  that a change to it will cause a re-compile. Also adds appropriate sources
  for actions and copies. Assumes later stage will un-exclude files which
  have custom build steps attached.

  Arguments:
    spec: The target dictionary containing the properties of the target.
    gyp_file: The name of the gyp file.
  Returns:
    A pair of (list of sources, list of excluded sources).
    The sources will be relative to the gyp file.
  rƒ   Ú
standaloneÚactionsrí   r,   r  Frî   Úcopiesr°  )r   rQ  rJ   r  re   r  ræ   )	rÙ   r¡  rÉ  rƒ   rz  rH  rí   rr   Úcpys	            r[   rº  rº  ®  s  € ô ‹L€'Ü˜ §¡¨)°RÓ!8Ô9Ü“\Ðà	×	Ñ	˜\Ô	*Ø‡K�K�Ôð �8‰8�I˜rÓ"ò 	;€aØˆx‰[€FØ,2Ö3 qÔ Õ"Ð3€FÐ3ä˜Ó€FØ‡N�N�6ÔØ�8‰8Ð+Ô,Ø×Ñ˜fÔ%Ü
ˆ1�5‰5Ð-¨uÓ5Õ6Ü˜G Q§U¡U¨9°bÓ%9Õ:ð	;ð �X‰X�h Ó#ò 9€cÜ˜' 3§7¡7¨7°BÓ#7Õ8ð9à
Ð#Ð	$Ð$ùò 4s   Á1D4c           	      ó¾  — |j                  t        | j                  dg «      «      «       |j                  |«       t        |«      }t        |«      }t	        | |«      }t        | «      }|D �	cg c]	  }	|	|vsŒ|	‘Œ }
}	|D �	cg c]  }	|	j                  d«      ‘Œ }}	t        ||
||¬«      }|j                  «       �rt        |D �cg c]  }t        |t        j                  «      ‘Œ c}«      �rEt        t        |D �cg c]  }|j                  ‘Œ c}«      «      dk(  �rt        |D �cg c]  }t        |j                   «      dk(  ‘Œ c}«      sJ ‚|D �cg c]  }|j                   d   ‘Œ }}t        |D �cg c]  }t        |t        j                  «      ‘Œ c}«      r—t        t        |D �cg c]  }|j                  ‘Œ c}«      «      dk(  rŒ®nft        |«      dk(  rXt        |d   t        j                  «      r;|d   j                   }t        |«      dk(  rt        |d   t        j                  «      rŒ;|||fS c c}	w c c}	w c c}w c c}w c c}w c c}w c c}w c c}w )a&  Adjusts the list of sources and excluded sources.

  Also converts the sets to lists.

  Arguments:
    spec: The target dictionary containing the properties of the target.
    options: Global generator options.
    gyp_dir: The path to the gyp file being processed.
    sources: A set of sources to be included for this project.
    excluded_sources: A set of sources to be excluded for this project.
    version: A MSVSVersion object.
  Returns:
    A trio of (list of sources, list of excluded sources,
               path of excluded IDL file)
  Úsources_excludedrh   ru   rC   r   )r  r   rJ   rs   Ú_IdlFilesHandledNonNativelyÚ_GetPrecompileRelatedFilesr  r€   r   Úallrç   r�   r‚   r}   Úsetr!  ry   )rÙ   r,  Úgyp_dirrƒ   rz  rw   r¿   rÊ  Úprecompiled_relatedrr   Úfully_excludedr‡   s               r[   r»  r»  Õ  s  € ð$ ×Ñœ* T§X¡XÐ.@À"Ó%EÓFÔGà	‡.�.Ð!Ô"ô �gÓ€'äÐ/Ó0Ðä,¨T°7Ó;€,ä2°4Ó8Ðà/ÖP˜!°1Ð<OÒ3O’AÐP€.ÐPð %,Ö,˜qˆQ�W‰W�T�]Ð,€'Ð,Ü,¨W¸~Ø;HØ:AôC€'ð ×ÑÕÜ
¸'ÖB°QŒz˜!œ[×/Ñ/Õ0ÒBÕ
CÜ” WÖ- �Q—V“VÒ-Ó.Ó/°1Ó4Ü°Ö8¨1”#�a—j‘j“/ QÓ&Ò8Ô9Ð9Ð9Ø(/Ö0 1�—‘˜A“Ð0€gÐ0ô ¸'ÖB°QŒz˜!œ[×/Ñ/Õ0ÒBÔ
CÜ” WÖ- �Q—V“VÒ-Ó.Ó/°1Ô4ô ˆg‹,˜!Ò
¤
¨7°1©:´{×7IÑ7IÔ JØ˜‘
×#Ñ#€gô ˆg‹,˜!Ò
¤
¨7°1©:´{×7IÑ7IÕ Jð 
Ð" LÐ	0Ð0ùò' Qùò -ùò CùÚ-ùÚ8ùÚ0ùò CùÚ-s6   Á-	H7Á7H7ÂH<Ã!IÃ;IÄ&IÅIÅ3!IÆ)Ic                 óà   — d}| j                  dg «      D ]*  }|d   dk(  sŒt        |j                  dd«      «      sŒ(d} n |r#|D �cg c]  }|j                  d«      sŒ|‘Œ }}|S g }|S c c}w )	NFr*  r  Úidlrx  r   Tú.idl)rJ   ræ   r«   )rÙ   rƒ   Ú	using_idlrè   rr   rÊ  s         r[   rY  rY    sˆ   € ð €)Ø�h‰h�w Ó#ò €dØˆKÑ˜EÓ!¤c¨$¯(©(Ð3GÈÓ*KÕ&LØ€iÙðñ Ø&Ö=˜!¨!¯*©*°VÕ*<’AÐ=€LÐ=ð 
Ðð €LØ	Ðùò >s   ÁA+ÁA+c                 ó²   — g }| d   j                  «       D ]>  \  }}t        D ]0  }|j                  |«      }|sŒ|j                  t	        |«      «       Œ2 Œ@ |S )Nrû   )rþ   Úprecomp_keysrJ   r~   ro   )rÙ   r^  rª   r@   ÚkrŠ   s         r[   rZ  rZ    sc   € àÐØÐ(Ñ)×/Ñ/Ó1ò 0�i€aˆÜò 0ˆØ
�*‰*�Q‹-€aÚ	
Ø×"Ñ"¤8¨A£;Õ/ñ0ð0ð
 
Ðr]   c           	      óÚ   — t        |||«      }|j                  «       D ]K  \  }}|st        |«      t        |d   «      k(  rŒ#|D ]$  \  }}	| j                  |t	        ||	«      ddi«       Œ& ŒM y )Nrû   ÚExcludedFromBuildrö  )Ú_GetExcludedFilesFromBuildrþ   r}   rÿ   r±   )
r   rÙ   rz  rÊ  rw   Ú
exclusionsÚ	file_nameÚexcluded_configsr¬   r@   s
             r[   rÃ  rÃ  %  sƒ   € ä)¨$Ð0@À,ÓO€*Ø%/×%5Ñ%5Ó%7ò 	7Ñ!€iÐ!ÙÜÐ Ó!¤S¨Ð.>Ñ)?Ó%@Ò@ð à!1ò 7Ñ
ˆ+�vØ	�‰˜	¤?°;ÀÓ#GØ,¨fÐ5õ	7ñ7ñ	7r]   c                 óf  — i }|D ]h  }g }| d   j                  «       D ]I  \  }}t        D �cg c]  }t        |j                  |d«      «      ‘Œ }	}||	vsŒ7|j	                  ||f«       ŒK |||<   Œj |D ]7  }g }| d   j                  «       D ]  \  }}|j	                  ||f«       Œ |||<   Œ9 |S c c}w )Nrû   r   )rþ   re  ro   rJ   r~   )
rÙ   rz  rÊ  rj  rŠ   rl  r¬   r@   rr   Ú	precompeds
             r[   ri  ri  4  sì   € Ø€*àò %€aØÐØ#Ð$4Ñ5×;Ñ;Ó=ò 7Ñˆ�VÜ8DÖE°1”8˜FŸJ™J q¨"Ó-Õ.ÐE€iÐEà	
�)Ò	Ø×Ñ ¨fÐ 5Õ6ð	7ð
 %€Jˆq‚Mð%ð ò %€aØÐØ#Ð$4Ñ5×;Ñ;Ó=ò 5Ñˆ�VØ×Ñ˜{¨FÐ3Õ4ð5à$€Jˆq‚Mð	%ð
 
Ðùò Fs   «"B.c                 óÎ   — t        «       }|d   j                  «       D ]-  \  }}|j                  dg «      D ]  }|j                  |«       Œ Œ/ |D ]  }| j	                  |«       Œ y )Nrû   Úmsvs_tool_files)r   rþ   rJ   r  r)  )r   rÙ   Ú
tool_filesrª   r@   rŠ   s         r[   r¾  r¾  I  so   € ä‹|€*ØÐ(Ñ)×/Ñ/Ó1ò �i€aˆØ�Z‰ZÐ)¨2Ó.ò ˆØ‡n�n�QÕñðð ò €aØ‡M�M�!Õñr]   c                 óx  ‡ ‡‡	‡
— g Š
‰d   j                  «       D ]‹  \  }}|j                  d«      }|sŒt        |«      }t        j                  dddi«      }‰ j                  |t        ||«      i |g¬«       t        j                  j                  |«      \  }}|dk(  rg d¢Š
Œ‰dgŠ
Œ� ˆ	ˆ
ˆ ˆfd	„Š	‰
r	 ‰	|«       y y )
Nrû   r8   ræ  rò  rÕ  rü   r¦  ©r§  r¨  r©  c           	      óv  •— | D ]³  }t        |t        j                  «      r ‰|j                  «       Œ0t        j
                  j                  |«      \  }}|‰v sŒW‰
d   j                  «       D ]G  \  }}t        j                  ddddœ«      }‰	j                  t        |«      t        ||«      i |g¬«       ŒI Œµ y )Nrû   ræ  Ú0rå  )rò  rô  rü   )rç   r�   r‚   ry   rH   r`   r  rþ   rý   rÿ   ro   r±   )Úsource_treerc   rª  r  r¬   r@   r�   ÚDisableForSourceTreeÚ#extensions_excluded_from_precompiler   rÙ   s          €€€€r[   rw  z7_HandlePreCompiledHeaders.<locals>.DisableForSourceTreeg  s¾   ø€ Øò .ˆÜ	�FœK×.Ñ.Ô	/Ù˜VŸ_™_Õ-ä Ÿg™g×.Ñ.¨vÓ6Ñˆ�)ØÐ;Ò;Ø%)Ð*:Ñ%;×%AÑ%AÓ%Cò .Ñ!ˆk˜6Ü×#Ñ#Ð$6Ø=@Ø;Iñ%KóLˆDð �O‰OœH VÓ,Ü+¨K¸Ó@Ø t fð õ .ñ	.ñ.r]   )
rþ   rJ   ro   r�   rý   rÿ   r±   rH   r`   r  )r   rƒ   rÙ   r¬   r@   rc   r�   rª  r  rw  rx  s   ` `      @@r[   r¿  r¿  S  sÎ   û€ ð
 )+Ð%Ø!Ð"2Ñ3×9Ñ9Ó;ò 5Ñ€k�6Ø�Z‰ZÐ1Ó2€FÚÜ˜Ó€fä×ÑÐ0Ø5°sÐ;ó=€dà‡o�o�fœo¨k¸6ÓBØ  ð ô (äŸG™G×,Ñ,¨VÓ4Ñ€h�	Ø	�dÒ	Ú.EÑ+à/3¨fÑ+ð5÷.ñ )Ù˜Õ!ð )r]   c                 ó.  — |j                  dg «      }t        «       }|D ]t  }|j                  d«      xs |g}|d   }||v}t        ||d|¬«      }	|j                  |«       t	        | ||j                  dg «      |j                  d|d   «      |	¬	«       Œv y )
NrT  rí   r   Fr  rî   r   Úaction_namerì   )rJ   r\  rê   r  ró   )
r?  rÙ   rÇ  rT  Úhave_setup_envrH  rí   Úattached_toÚneed_setup_envrÒ   s
             r[   rÀ  rÀ  z  s¦   € à�H‰H�Y Ó#€'ô
 “5€.Øò  €aà�U‰U�8‹_Ò;Ð!:Ð ;€FØ˜‘)€KØ ¨Ð6€NÜ
" 4¨¸5Ø0>ô@€Cà×Ñ�{Ô#ä�>Ø ØŸ5™5 ¨BÓ/Ø Ÿu™u Y°°-Ñ0@ÓAØö	 ñ r]   c                 óz  — d|v r<|d   }|j                  dg «      }|j                  dg «      }|j                  dd«      }n%t        |j                  dd«      «      r	dd	g}g }d}ny t        | ||«      }|d
   j                  «       D ]#  \  }}	|j	                  t        ||	«      |||«       Œ% |j                  «        y )NÚrun_asrå   ÚenvironmentÚworking_directoryrÊ   Útestr   z$(TargetPath)z--gtest_print_timerû   )rJ   ræ   rÓ  rþ   ÚAddDebugSettingsr±   r(  )
Úproject_pathr¿   rÙ   r  rå   r€  r�  rÒ  r¬   r  s
             r[   rÂ  rÂ  ’  sÒ   € à�ÑØ�(‰^€FØ�Z‰Z˜ "Ó%€FØ—*‘*˜]¨BÓ/€KØŸ
™
Ð#6¸Ó<ÑÜ
ˆ4�8‰8�F˜AÓÔØÐ3Ð4€FØ€KØÑà
ä! ,°¸Ó>€)Ø!Ð"2Ñ3×9Ñ9Ó;ò GÑ€k�6Ø×Ñœ¨{¸FÓCØ% {Ð4EõGðGð ×ÑÕr]   c                 óR   — t        |«      }|D ]  \  }}}}t        | ||||¬«       Œ y )Nrì   )Ú
_GetCopiesró   )r?  rÙ   rU  rí   rî   rÒ   rï   s          r[   rÁ  rÁ  §  s7   € Ü�dÓ€&Ø+1ò 9Ñ'€fˆg�s˜KÜ�>¨&¸'Ø*°Cö9ñ9r]   c                 ó   — g }| j                  dg «      D �]5  }|j                  dg «      D �]  }t        j                  j                  |d   t        j                  j	                  |«      «      }|j                  d«      r|d d }t        j                  |«      d   }t        j                  |«      d   }t        |«      }d|›d	|›d
�}	d|	›dt        |«      ›d|›d|	›�}
|j                  |gd|g|
d|›d|›�f«       ŒÔt        |d   «      }d|›dt        |«      ›dt        |«      ›d�}
|j                  |g|g|
d|›d|›�f«       �Œ �Œ8 |S )NrU  r°  Údestinationrg   ri   r   rC   rË   rh   rS  zmkdir z 2>nul & cd "z" && xcopy /e /f /y "z" Údummy_copieszCopying z to zmkdir "z&" 2>nul & set ERRORLEVEL=0 & copy /Y "z" ")
rJ   rH   r`   rl   rª  r«   Ú	posixpathr  ro   r~   )rÙ   rU  rV  ÚsrcÚdstÚsrc_bareÚbase_dirÚ	outer_dirÚ	fixed_dstÚfull_dstrÒ   Úfix_dsts               r[   r†  r†  ®  s@  € Ø€&à�X‰X�h Ó#ó P€cØ�w‰w�w Ó#ó PˆÜ�G‰G�L‰L˜˜]Ñ+¬R¯W©W×-=Ñ-=¸cÓ-BÓC€cð 
�‰�cÔ	Ø�s˜�8ˆÜ—?‘? 8Ó,¨QÑ/ˆÜ—O‘O HÓ-¨aÑ0ˆ	Ü˜S“M‰	Ú#,ªiÐ8‰â”h˜xÕ(ª)±Xð?ˆà�‰˜�u˜~¨sÐ3±SÚ-0±)Ð<ð>õ 	?ô ˜3˜}Ñ-Ó.‰â”X˜c•]¤H¨S¥Mð3ˆà�‰˜�u˜s˜e¡SÂÁWÐ*MÐNÖOò%PðPð( 
€-r]   c                 óÐ   — |r|j                  t        j                  «      r| S t        j                  j	                  |«      \  }}t        | |«      }||vrt        «       ||<   ||   S rŒ   )r«   rH   Úsepr`   r  Ú_GetPathDictrš   )Úrootr`   ÚparentÚfolderÚparent_dicts        r[   r•  r•  È  s\   € ñ 
�—‘œrŸv™vÔ&Ø€KÜ—7‘7—=‘= Ó&�.€&ˆ&Ü˜T 6Ó*€+Ø�;ÑÜ›&€K�ÑØ	�VÑ	Ðr]   c                 ó‚  — g }|j                  «       D ]©  \  }}t        |«      t        k(  r�t        t        j
                  j                  | |«      ||«      }|r||z  }ŒKt        j                  t        j
                  j                  | |«      d|z   dz   |¬«      }|j                  |«       Œ™|j                  |«       Œ« |S )Nú(ú))r!  Úentries)
rþ   r˜   rš   Ú_DictsToFoldersrH   r`   rl   r�  Ú
MSVSFolderr~   )Ú	base_pathÚbucketÚflatÚchildrenr˜  ry   Úfolder_childrens          r[   rž  rž  Ô  s¬   € à€(Ø Ÿ,™,›.ò  Ñ€fˆhÜˆHƒ~œÒÜ'¬¯©¯©°YÀÓ(GØ(0°$ó8€oá	Ø�OÑ#‰ä!×,Ñ,¬R¯W©W¯\©\¸)ÀVÓ-LØ25¸±,ÀÑ2DØ5DôFˆð 	�‰˜Õ(à‡o�o�hÕð ð 
€/r]   c                 ó  — t        |«      t        k(  r?t        |«      dk(  r1t        t	        |«      «      | dz   k(  r|t        t	        |«      «         S t        |«      t        k7  r|S |D ]  }t        |||   «      ||<   Œ |S )NrC   ú.vcproj)r˜   rš   r}   ÚnextÚiterÚ_CollapseSingles)r—  ÚnodeÚchilds      r[   r©  r©  ç  s~   € ô ˆ4ƒj”DÒÜ	ˆ$ƒi�1‚nÜ
Œ4�‹:Ó˜& 9Ñ,Ò,Ø””T˜$“ZÓ Ñ!Ð!Ü	ˆ$ƒZ”4ÒØ€KØò 7€eÜ" 5¨$¨u©+Ó6€Dˆ‚Kð7à	€+r]   c                 ó   — i }| D ]]  }t         j                  j                  |«      dd \  }}t        j                  j                  |«      }t        ||«      }||   ||dz   <   Œ_ t        |«      dk(  rtt        |t        t        |«      «         «      t        k(  rM|t        t        |«      «         }t        |«      dk(  r(t        |t        t        |«      «         «      t        k(  rŒMt        d|«      }t        d||«      S )Nr   rR  r¦  rC   r   )r:  r;  ÚParseQualifiedTargetrH   r`   r  r•  r}   r˜   r§  r¨  rš   r©  rž  )	Úsln_projectsÚproject_objectsr¢  r–  r   rÉ  Útargetr]  Ú	path_dicts	            r[   Ú_GatherSolutionFoldersr²  ö  sæ   € Ø	€$àò 7€aÜ—z‘z×6Ñ6°qÓ9¸!¸AÐ>Ñ€HˆfÜ�g‰g�o‰o˜hÓ'€GÜ˜T 7Ó+€IØ$3°AÑ$6€Iˆf�yÑ Ò!ð	7ô 	ˆD‹	�QŠœ4 ¤T¬$¨t«*Ó%5Ñ 6Ó7¼4Ò?Ø””T˜$“ZÓ Ñ!€Dô 	ˆD‹	�QŠœ4 ¤T¬$¨t«*Ó%5Ñ 6Ó7¼4Ó?ô 
˜"˜dÓ	#€$ä	˜˜T 4Ó	(Ð(r]   c                 ó¦  — t        |«      }|j                  d«      }|s#|d   |j                  z   |j                  «       z   }t        j
                  j                  | «      }t        j                  j                  t        j                  j                  |«      |«      }d }|j                  r£t        j                  j                  t        j                  j                  |«      «      }	t        j                  j                  |j                  |«      }t        j
                  j                  |	t        j                  j                  |«      «      }||fS )Nr�  r  )rŠ  rJ   r$  ÚProjectExtensionr:  r;  Ú	BuildFilerH   r`   rl   r  Úgenerator_outputÚabspathr·  )
Úqualified_targetrÙ   r,  rx   r“  Úproj_filenamer¶  r’  Ú
fix_prefixÚproject_dir_paths
             r[   Ú_GetPathOfProjectr¼  	  s÷   € Ü+¨DÓ1€.Ø ×$Ñ$Ð%;Ó<€-Ù	Ø˜-Ñ(¨7¯>©>Ñ9Ø!×2Ñ2Ó4ñ5€Mô �z‰z×#Ñ#Ð$4Ó5€*Ü�g‰g�l‰lœ2Ÿ7™7Ÿ?™?¨:Ó6¸ÓF€)Ø€*Ø×ÒÜ—w‘w—‘¤r§w¡w§¡°yÓ'AÓBÐÜ—‘—‘˜W×5Ñ5°yÓA€IÜ—‘×(Ñ(Ð)9Ü)+¯©¯©¸Ó)CóE€Jà	�JÐ	Ðr]   c                 óÌ   — i }| d   j                  «       D ]K  \  }}t        ||«      }|j                  dt        |«      «      }t	        |t        |«      «      ›d|›�}|||<   ŒM |S )Nrû   Úmsvs_target_platformr°   )rþ   r±   rJ   r¨   r®   )rÙ   Úconfig_platform_overridesr¬   rJ  Úconfig_fullnamerE   Úfixed_config_fullnames          r[   Ú_GetPlatformOverridesOfProjectrÂ    s}   € ð !ÐØÐ-Ñ.×4Ñ4Ó6ò G�n€k�1Ü% k°1Ó5€OØ�u‰uÐ+¬_¸QÓ-?Ó@€Hä˜¤_°QÓ%7Õ8¹(ðDÐà1FÐ˜oÒ.ðGð 
#Ð"r]   c           
      ón  — i }| D ]¸  }||   }|d   dk7  rt        d|z  «      ‚t        ||||«      \  }at        ||«      }t	        |«      }	t
        j                  j                  |«      }
t        j                  ||d   |||
|	t        ¬«      }|j                  «       r|j                  t        |||«      «       |||<   Œº |j                  «       D ]]  }|j                  j                  d«      rŒ|j                  j                  dg «      }|D �cg c]  }||   ‘Œ	 }}|j!                  |«       Œ_ |S c c}w )aX  Create a MSVSProject object for the targets found in target list.

  Arguments:
    target_list: the list of targets to generate project objects for.
    target_dicts: the dictionary of specifications.
    options: global generator options.
    msvs_version: the MSVSVersion object.
  Returns:
    A set of created projects, keyed by target.
  rš  r°  z9Multiple toolsets not supported in msvs build (target %s)r  )r!  r”  rÙ   r¶  r¿  rj   r,   Údependencies)r   r¼  rj   r•  rÂ  r:  r;  rµ  r�  r�   r   Úset_msbuild_toolsetr›  ÚvaluesrÙ   rJ   Úset_dependencies)Útarget_listÚtarget_dictsr,  rx   Úprojectsr¸  rÙ   r’  r”  Ú	overridesr¶  Úobjr   Údepsr	  s                  r[   Ú_CreateProjectObjectsrÎ  (  s_  € ð €(Ø%ò %ÐØÐ(Ñ)€DØˆI�˜(Ò"ÜØ
EØ
ñóð ô !2Ð2BÀDØ29¸<ó!IÑ€Iˆ~ä˜Y¨Ó-€DÜ.¨tÓ4€IÜ—‘×%Ñ%Ð&6Ó7€Jä
×
Ñ
ØØ�-Ñ ØØØØ"+Ü%ô'€Cð ×ÑÔ!Ø	×ÑÜ
% i°°|Ó
DôFà!$€HÐÒð1%ð6 —‘Ó"ò %€gØ�<‰<×ÑÐ3Õ4Ø�\‰\×Ñ˜n¨bÓ1€dØ#'Ö(˜aˆh�q‹kÐ(€dÐ(Ø×Ñ˜tÕ$ð	%ð
 
€/ùò )s   ÄD2c                 ó€  — |D �]8  }||   }|j                  d«      rŒ|j                  dd«      }d|d<   |j                  d«      s¿t        j                  j                  |«      \  }}}t        j
                  j                  |«      }d}	| j                  d«      dk(  r|	d	z  }	t        j
                  j                  t        j                  j                  | d
   j                  |«      t        j                  | «      |	«      |d<   |j                  d«      s	|dddg|d<   |j                  d«      r�Œ/|ddddg|d<   �Œ; y)aó  Initialize targets for the ninja flavor.

  This sets up the necessary variables in the targets to generate msvs projects
  that use ninja as an external builder. The variables in the spec are only set
  if they have not been set. This allows individual specs to override the
  default values initialized here.
  Arguments:
    params: Params provided to the generator.
    target_list: List of target pairs: 'base/base.gyp:base'.
    target_dicts: Dict of target properties keyed on target pair.
  r,   Úmsvs_path_to_ninjaz	ninja.exeÚninjar-   ú$(Configuration)Útarget_archÚx64Ú_x64r,  r.   z-Cr   r%  r/   z-tcleanN)rJ   r:  r;  r­  rH   r`   r  rl   r·  Útoplevel_dirÚninja_generatorÚComputeOutputDir)
ÚparamsrÈ  rÉ  r¸  rÙ   Úpath_to_ninjarÉ  rª   r]  rÍ  s
             r[   Ú_InitNinjaFlavorrÛ  Y  s@  € ð &ó !ÐØÐ(Ñ)€DØ‡x�xÐ'Ô(àà—H‘HÐ1°;Ó?€Mà$+€DÐ	 Ñ!Ø�8‰8Ð3Ô4Ü—z‘z×6Ñ6Ð7GÓH�n€h��1Ü—‘—‘ Ó)€gØ(€mØ	�‰�MÓ	" eÒ	+Ø˜ÑˆÜ.0¯g©g¯l©lÜ
�*‰*×
!Ñ
! &¨Ñ"3×"@Ñ"@À'Ó
JÜ
×
*Ñ
*¨6Ó
2Ø
ó/€dÐ*Ñ+ð �8‰8Ð5Ô6àØØØð	1€dÐ,Ñ-ð �8‰8Ð5Ö6àØØØØð1€dÐ,Ó-ñ7!r]   c                 óÐ  — |j                  di «      }t        j                  |j                  dd«      «      }||d<   |j                  «       | d<   t        j
                  j                  dd«      j                  d«      dk\  s2t        j
                  j                  d	d«      j                  d«      dk\  rd
| d<   nd| d<   t        j                  j                  |«      dk(  rd| d<   yy)z4Generated variables that require params to be known.r¡  rx   ÚautoÚMSVS_VERSIONÚPROCESSOR_ARCHITECTUREr   Ú64r   ÚPROCESSOR_ARCHITEW6432é@   ÚMSVS_OS_BITSé    rÑ  z$(OutDir)genr   N)
rJ   r¸   ÚSelectVisualStudioVersionÚ	ShortNamerH   rI   rÕ   r:  r;  Ú	GetFlavor)Údefault_variablesrÙ  r¡  rx   s       r[   ÚCalculateVariablesré  ‰  sß   € ð —J‘JÐ0°"Ó5€/ô ×6Ñ6Ø×Ñ˜.¨&Ó1ó3€,ð (€&ˆÑð '3×&<Ñ&<Ó&>Ð�NÑ#ô 	‡j�j‡n�nÐ-¨rÓ2×7Ñ7¸Ó=ÀÒBÜ‡j�j‡n�nÐ-¨rÓ2×7Ñ7¸Ó=ÀÒBØ(*Ð�nÒ%à(*Ð�nÑ%ä‡Z�Z×Ñ˜&Ó! WÒ,Ø3AÐÐ/Ò0ð -r]   c                 óè  — |d   }|d   }t         j                  j                  |j                  ddd«      }| j                  «       D ]v  \  }}t         j                  j	                  |«      \  }}	|	dk7  rŒ.||j
                  z   dz   }
|j                  sŒMt         j                  j                  |j                  |
«      }
Œx |D ].  }|
d|g}t        d	|›d
|›�«       t        j                  |«      }Œ0 y )Nr,  rx   ÚCommon7ÚIDEz
devenv.comú.gypú.slnz/Buildz
Building [z]: )
rH   r`   rl   rþ   r  r$  r¶  r¾   rK   Ú
check_call)Údatarû   rÙ  r,  rx   Údevenvr¶  Úbuild_file_dictÚbuild_file_rootÚbuild_file_extÚsln_pathr@   rá   Úrtns                 r[   ÚPerformBuildr÷  ¥  sæ   € Ø�9Ñ€'Ø˜Ñ'€,Ü�7‰7�<‰<˜×)Ñ)¨9°e¸\ÓJ€&à%)§Z¡Z£\ò BÑ!€j�/Ü(*¯©×(8Ñ(8¸Ó(DÑ%€_�nØ˜ÒØØ §¡Ñ/°&Ñ8€HØ×ÓÜ—‘—‘˜g×6Ñ6¸ÓA�hðBð ò +€fØ˜ 8¨VÐ4€IÝ	¢©Ð
3Ô4Ü
×
Ñ
 	Ó
*�Cñ+r]   c                 óø   — | j                  d«      dk(  rf| d   j                  }t        j                  j	                  t        j                  j                  |t        j                  | «      d«      «      }||dœay y )NÚflavorrÑ  r,  zgypfiles-msvs-ninja)ÚtoplevelÚqualified_out_dir)	rJ   rÖ  rH   r`   ra   rl   r×  rØ  Úgenerator_filelist_paths)rÙ  rú  rû  s      r[   ÚCalculateGeneratorInputInforý  ¸  so   € Ø‡Z�Z�Ó˜WÒ$Ø�iÑ ×-Ñ-€HÜŸ™×(Ñ(¬¯©¯©Ø”/×2Ñ2°6Ó:Øó*ó  Ðð Ø.ñ Ñð %r]   c           	      óè  — |d   }|d   }|j                  di «      }t        j                  | |«      \  } }t        j                  | |t        «      \  } }|j                  d«      dk(  rt        || |«       t        «       }| D ]=  }||   }	|	d   j                  «       D ]   \  }
}|j                  t        |
|«      «       Œ" Œ? t        |«      }t        | |||«      }g }|j                  «       D ]+  }|j                  a|j                  t        ||||«      «       Œ- da|D �]  }|j!                  d«      sŒt"        j$                  j'                  |«      d	   |j(                  z   d
z   }|j*                  r*t"        j$                  j-                  |j*                  |«      }t.        j0                  j3                  | |«      }|t.        j0                  j5                  ||«      z  }t7        |||j9                  «       ¬«      }t;        j<                  |||d|¬«      }|j?                  «        �Œ	 |rIddj-                  t        |«      «      z   }|j                  dd«      rtA        |«      ‚tC        d|z   «       yy)a  Generate .sln and .vcproj files.

  This is the entry point for this generator.
  Arguments:
    target_list: List of target pairs: 'base/base.gyp:base'.
    target_dicts: Dict of target properties keyed on target pair.
    data: Dictionary containing per .gyp data.
  r,  rx   r¡  rù  rÑ  rû   Nrí  r   rî  )r¢  F)r�  ÚvariantsÚwebsitePropertiesr¿   zMissing input files:
r7  Úmsvs_error_on_missing_sourcesz	Warning: )"rJ   ÚMSVSUtilÚShardTargetsÚInsertLargePdbShimsÚgenerator_default_variablesrÛ  r\  rþ   r  r±   r›   rÎ  rÆ  rj   Úextendr¢  r«   rH   r`   r  r$  r¶  rl   r:  r;  ÚBuildFileTargetsÚDeepDependencyTargetsr²  ÚFlatSolutionr�  ÚMSVSSolutionÚWriter   r¾   )rÈ  rÉ  rð  rÙ  r,  rx   r¡  Úconfigsr¸  rÙ   r¬   r@   r¯  rË  r   r¶  rõ  r®  Úroot_entriesÚslnÚerror_messages                        r[   ÚGenerateOutputr  Å  s|  € ð �9Ñ€'ð ˜Ñ'€,à—J‘JÐ0°"Ó5€/ô !)× 5Ñ 5°kÀ<Ó PÑ€;�ô !)× <Ñ <Ø�\Ô#>ó!@Ñ€;�ð ‡Z�Z�Ó˜WÒ$Ü�V˜[¨,Ô7ô ‹E€'Ø%ò 8ÐØÐ(Ñ)€DØ#Ð$4Ñ5×;Ñ;Ó=ò 8Ñˆ�VØ‡k�k”/ +¨vÓ6Õ7ñ8ð8ô �‹M€'ô *¨+°|ÀWØ*6ó8€/ð €/Ø ×'Ñ'Ó)ò >€gØ×+Ñ+€NØ×ÑÔ+¨G°W¸lØ,;ó=õ >ð>ð €.àó €jà×Ñ˜vÔ&ØÜ�w‰w×Ñ 
Ó+¨AÑ.°·±Ñ?À&ÑH€HØ×ÒÜ—‘—‘˜g×6Ñ6¸ÓA€hä—:‘:×.Ñ.¨{¸JÓG€LØ”C—J‘J×4Ñ4°\À<ÓPÑP€Lä)Ø�o¨L×,EÑ,EÓ,GôI€Lô ×
Ñ
˜xØ'3Ø(/Ø16Ø'3ô	5€Cð
 ‡I�I†Kð'ñ* Ø,Ø—I‘Iœc /Ó2Ó3ñ4€Mà×ÑÐ:¸EÔBÜ�]Ó#Ð#äˆK˜-Ñ'Õ(ð r]   c                 óð   — g }g }t        d|||||«       |r+ddddœdg|z   dg|z   g}t        j                  || dd¬«       y	t        j                  j                  | «      rt        j                  | «       y	y	)
aV  Generate the filters file.

  This file is used by Visual Studio to organize the presentation of source
  files into folders.

  Arguments:
      filters_path: The path of the file to be created.
      source_files: The hierarchical structure of all the sources.
      extension_to_rule_name: A dictionary mapping file extensions to rules.
  r   ÚProjectz4.0ú3http://schemas.microsoft.com/developer/msbuild/2003)ÚToolsVersionÚxmlnsÚ	ItemGroupT©Úprettyr:   N)Ú_AppendFiltersForMSBuildÚeasy_xmlÚWriteXmlIfChangedrH   r`   ÚexistsÚunlink)Úfilters_pathÚsource_filesÚrule_dependenciesÚextension_to_rule_nameÚfilter_groupÚsource_groupÚcontents          r[   Ú_GenerateMSBuildFiltersFiler%    sŠ   € ð €,Ø€,Ü˜2˜|Ð->Ø1°<ÀôOáØØ %ØNñð ˆ}˜|Ñ+Øˆ}˜|Ñ+ð€Gô ×Ñ˜w¨¸TÈÖNÜ	‡w�w‡~�~�lÔ#ä‡I�IˆlÕð $r]   c           	      óž  — |D ]È  }t        |t        j                  «      rp| s|j                  }n| ›d|j                  ›�}|j	                  dd|idt        j                  |j                  «      gg«       t        ||j                  ||||«       Œ�t        |||«      \  }}	|	d|ig}
| r|
j	                  d| g«       |j	                  |
«       ŒÊ y)aÍ  Creates the list of filters and sources to be added in the filter file.

  Args:
      parent_filter_name: The name of the filter under which the sources are
          found.
      sources: The hierarchy of filters and sources to process.
      extension_to_rule_name: A dictionary mapping file extensions to rules.
      filter_group: The list to which filter entries will be appended.
      source_group: The list to which source entries will be appeneded.
  rh   r‚   ÚIncludeÚUniqueIdentifierN)
rç   r�   r‚   r!  r~   r�  r‘  r  ry   Ú_MapFileToMsBuildSourceType)Úparent_filter_namerƒ   r   r!  r"  r#  rc   Úfilter_namerª   ÚelementÚsource_entrys              r[   r  r  4  sÝ   € ð ò (€fÜ�&œ+×,Ñ,Ô-áØ—k‘k‰â"4°f·k²kÐBˆà×ÑØ�i Ð-Ø¤× 0Ñ 0°·±Ó =Ð>ð@ôAô ˜{¨F¯O©OØ0Ð2HØ+¨\õ;ô
 /¨vÐ7HØ/EóG�j€aˆà 	¨6Ð2Ð3€lá	Ø×Ñ˜XÐ'9Ð:Ô;Ø×Ñ˜,Õ'ñ/(r]   c                 ó
  — t         j                  j                  | «      \  }}||v rd}||   }||fS |dv rd}d}||fS |dv rd}d}||fS |dk(  rd	}d
}||fS |dk(  rd}d}||fS |dk(  rd}d}||fS | |v rd}d}||fS d}d}||fS )a  Returns the group and element type of the source file.

  Arguments:
      source: The source file name.
      extension_to_rule_name: A dictionary mapping file extensions to rules.

  Returns:
      A pair of (group this file should be part of, the label of element)
  rè   )r§  r¨  r¦  r©  rP   Ú	ClCompile)z.hz.hxxÚincludeÚ	ClIncludez.rcÚresourceÚResourceCompilez.asmÚmasmÚMASMrb  ÚmidlÚMidlÚrule_dependencyÚCustomBuildrÜ  ÚNone)rH   r`   r  )rc   r   r!  rª   r­  rS   r,  s          r[   r)  r)  [  s  € ô �7‰7×Ñ˜FÓ#�&€!€SØÐ"Ñ"Ø€EØ$ SÑ)€Gð, �Ð	Ðð+ Ð+Ñ+Ø€EØ€Gð& �Ð	Ðð% ˆnÑØ€EØ€Gð  �Ð	Ðð ˆe‚|Ø€EØ€Gð �Ð	Ðð ˆf‚}Ø€EØ€Gð �Ð	Ðð ˆf‚}Ø€EØ€Gð �Ð	Ðð Ð"Ñ"Ø€EØ€Gð �Ð	Ðð €EØ€GØ
�Ð	Ðr]   c
           	      óº  — |j                  dg «      }
|
D �cg c]   }t        |j                  dd«      «      rŒ|‘Œ" }}|
D �cg c]   }t        |j                  dd«      «      sŒ|‘Œ" }}g }|D ]y  }d|vr|j                  dg «      sŒt        ||«      }|j                  |«       |j	                  |j
                  j                  d«      «       |j                  |	|j                  <   Œ{ |rÇ|d   |j                  z   }|dz   }|d	z   }|d
z   }|j                  |«       |j                  |«       t        j                  j                  | |«      }t        j                  j                  | |«      }t        j                  j                  | |«      }t        ||«       t        ||«       t!        ||«       |rt#        || ||||«       t%        |
||d«       y c c}w c c}w )Nr*  rx  r   rå   r  rö   r  z.propsz.targetsz.xmlT)rJ   ræ   ÚMSBuildRuler~   r  r#  r  r  r  r$  r  rH   r`   rl   Ú_GenerateMSBuildRulePropsFileÚ_GenerateMSBuildRuleTargetsFileÚ_GenerateMSBuildRuleXmlFilerK  ry  )r+  r,  rÙ   rƒ   rz  Úprops_files_of_rulesÚtargets_files_of_rulesr?  r   r!  r*  r/  r{  r|  Úmsbuild_rulesrè   Úmsbuild_ruleÚbaseÚ
props_nameÚtargets_nameÚxml_nameÚ
props_pathÚtargets_pathÚxml_paths                           r[   Ú_GenerateRulesForMSBuildrK  ‚  s¹  € ð �(‰(�7˜BÓ
€%Ø"ÖN˜¬#¨a¯e©eÐ4HÈ!Ó.LÕ*M’!ÐN€,ÐNØ$ÖL˜!¬¨A¯E©EÐ2FÈÓ,JÕ(K’AÐL€.ÐLà€-Øò L€dà�tÑ D§H¡H¨^¸RÔ$@ØÜ˜t TÓ*€LØ×Ñ˜Ô&Ø×Ñ˜\×AÑA×GÑGÈÓLÔMØ5A×5KÑ5KÐ˜<×1Ñ1Ò2ðLñ Ø�Ñ §¡Ñ/€DØ˜‘€JØ˜*Ñ$€LØ�f‰}€Hà×Ñ˜ZÔ(Ø×Ñ˜|Ô,ä—‘—‘˜j¨*Ó5€JÜ—7‘7—<‘< 
¨LÓ9€LÜ�w‰w�|‰|˜J¨Ó1€Hä! *¨mÔ<Ü# L°-Ô@Ü ¨-Ô8áÜ˜>¨:°tØ" G¨^ô=ä˜ Ð)9¸4Õ@ùòA OùÚLs   — G¸GÁ GÁ#Gc                   ó   — e Zd ZdZd„ Zy)r<  a-  Used to store information used to generate an MSBuild rule.

  Attributes:
    rule_name: The rule name, sanitized to use in XML.
    target_name: The name of the target.
    after_targets: The name of the AfterTargets element.
    before_targets: The name of the BeforeTargets element.
    depends_on: The name of the DependsOn element.
    compute_output: The name of the ComputeOutput element.
    dirs_to_make: The name of the DirsToMake element.
    inputs: The name of the _inputs element.
    tlog: The name of the _tlog element.
    extension: The extension this rule applies to.
    description: The message displayed when this rule is invoked.
    additional_dependencies: A string listing additional dependencies.
    outputs: The outputs of this rule.
    command: The command used to run the rule.
  c                 ó,  — |d   | _         t        j                  dd| j                   «      | _        d| j                  z   | _        | j                  dz   | _        | j                  dz   | _        | j                  dz   | _        d| j                  z  | _        | j                  dz   | _	        | j                  d	z   | _
        | j                  d
z   | _        |d   | _        | j                  j                  d«      sd| j                  z   | _        t        j                  |j!                  d| j                  «      «      | _        t%        |j!                  dg «      «      }dj'                  |D �cg c]  }t        j                  |«      ‘Œ c}«      | _        t%        |j!                  dg «      «      }dj'                  |D �cg c]  }t        j                  |«      ‘Œ c}«      | _        t-        ||dd¬«      }t        j                  |«      | _        y c c}w c c}w )Nr  z\Wrª   ÚAfterTargetsÚBeforeTargetsÚ	DependsOnzCompute%sOutputÚ
DirsToMakeÚ_inputsÚ_tlogr  rÊ   r   rí   rö   rî   Tr  )Údisplay_namerO   rY  r  r  Úafter_targetsÚbefore_targetsÚ
depends_onÚcompute_outputÚdirs_to_makerí   Útlogr  r½   r×   ÚConvertVCMacrosToMSBuildrJ   rï   rs   rl   r#  rî   rê   rà   )Úselfrè   rÙ   Úold_additional_dependenciesrr   Úold_outputsÚold_commands          r[   Ú__init__zMSBuildRule.__init__Ã  sÅ  € Ø˜[Ñ)€DÔä—V‘V˜E 3¨×(9Ñ(9Ó:€D„Nð ˜TŸ^™^Ñ+€DÔØŸ™¨.Ñ8€DÔØŸ.™.¨?Ñ:€DÔØ—n‘n {Ñ2€D„OØ+¨d¯n©nÑ<€DÔØŸ™¨Ñ5€DÔØ—.‘. 9Ñ,€D„KØ—‘ Ñ(€D„IØ˜+Ñ&€D„NØ�>‰>×$Ñ$ SÔ)Ø˜TŸ^™^Ñ+€d„nä#×<Ñ<Ø�‰�˜DŸN™NÓ+ó-€DÔä"+¨D¯H©H°X¸rÓ,BÓ"CÐà�‰Ø6ö8Øô ×7Ñ7¸Õ:ò 8ó 	9ð 	Ô ô ˜DŸH™H Y°Ó3Ó4€KØ—8‘8Ø&1ö3Ø!"ô *×BÑBÀ1ÕEò 3ó 4€D„Lä*¨4°ÀdØ8<ô>€Kä×8Ñ8¸ÓE€D…Lùò8ùò3s   Å(HÆ:HN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r`  r‰  r]   r[   r<  r<  ¯  s   „ ñó&Fr]   r<  c                 ó¨  — dddig}|D ]®  }|j                  ddd|j                  ›d|j                  ›d�i|j                  d	g|j                  d
ggd|j                  ddid|j                  z  ggd|j                  d|j
                  gd|j                  gd|j                  gd|j                  gggg«       Œ° t        j                  || dd¬«       y)zGenerate the .props file.r  r  r  ÚPropertyGroupÚ	Conditionz'$(z)' == '' and '$(z1)' == '' and '$(ConfigurationType)' != 'Makefile'r7  r9  z$'$(ConfigurationType)' != 'Makefile'z_SelectedFiles;$(%s)ÚItemDefinitionGroupÚCommandLineTemplaterù   ÚExecutionDescriptionrø   Tr  N)r  rV  rU  rW  r  rà   rî   rï   r#  r  r  )rH  rB  r$  rè   s       r[   r=  r=  ä  s  € àØÐLÐMðO€'àò €dØ‡N�NØ	Ù
Ø48×4GÓ4GØ48×4FÓ4FðHð 
ð ×
Ñ
˜vÐ	&Ø
×
Ñ
˜mÐ	,ð	
ð 
Ø
�/‰/ØÐ>Ð
?Ø
  4§?¡?Ñ
2ð
ð	
ð 
Ø
�.‰.Ø  $§,¡,Ð
/Ø�d—l‘lÐ
#Ø! 4×#3Ñ#3Ð
4Ø# T×%AÑ%AÐ
Bð	
ð	
ðõ ðô2 ×Ñ˜W j¸ÀTÖJr]   c                 ót  — dddig}ddddigg}|D ].  }|j                  dd|j                  id	|j                  gg«       Œ0 |j                  |«       |D ]&  }|j                  d
|j                  dddœddgg«       Œ( |D �]  }|j                  }d|z  }d|›d|›d�}d|z  }d}	dddi|d|z  ddœgg}
d|j                  dd|z  igg}d|j                  d|z  d|›d|›d�dœdd |z  gd!d"|j                  z  ggg}d#d$d%|z  d&œg}d'd(|j                  ›d)|j                  ›d�d*d+|j                  ›d,|j                  ›d-�d.œg}d'd(|j                  ›d)|j                  ›d�d/d+|j                  ›d0|j                  ›d1�d.œg}|d(|›d)|›d�d2d$d$d3|z  d4|z  |d5œg}|j                  d6|j                  d7|j                  z  d7|j                  z  d8|z  d9|j                  ›d:|j                  ›�||d;œ|
||||||g	d<d=d>d?|j                  z  gd@dAd?|j                  z  ggd6|j                  d8|z  dBœd|j                  d(|›d)|›d�d|z  dCœgdDd|j                  z  |	dœgdEd|j                  z  |	dœgdFd|j                  z  |	dœggdGdHdI|j                  z  iggg«       �Œ t        j                  || dJdJ¬K«       yL)MzGenerate the .targets file.r  r  r  r  ÚPropertyPageSchemar'  z5$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xmlÚAvailableItemNameÚTargetsÚ	UsingTaskÚXamlTaskFactoryzMicrosoft.Build.Tasks.v4.0)ÚTaskNameÚTaskFactoryÚAssemblyNameÚTaskz%%(%s.Outputs)z%(z.Identity);%(z..AdditionalDependencies);$(MSBuildProjectFile)z%%(%s.Identity)zd'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'rg  z'@(SelectedFiles)' != ''z@(%s)z#'%(Identity)' != '@(SelectedFiles)')ÚRemoverg  z%%(%s.AdditionalDependencies)z'%(z.Outputs)' != '' and '%(z.ExcludedFromBuild)' != 'true')r'  rg  ÚSourcez
@(%s, '|')ÚInputsz@(%s -> '%%(Fullpath)', ';')ÚMessageÚHighz%%(%s.ExecutionDescription))Ú
ImportanceÚTextÚWriteLinesToFilez'@(z)' != '' and '%(z$$(IntDir)$(ProjectName).write.1.tlogz^%(z.Source);@(z->'%(Fullpath)'))rg  ÚFileÚLinesz#$(IntDir)$(ProjectName).read.1.tlogz.Source);%(z.Inputs)rö  z%%(%s.CommandLineTemplate)z%%(%s.AdditionalOptions))rg  ÚEchoOffÚStandardOutputImportanceÚStandardErrorImportanceri  r7  rw  ÚTargetz$(%s)z'@(%s)' != ''z$(z);)ÚNamerO  rN  rg  ÚDependsOnTargetsrù   rw  rf  ÚComputeLinkInputsTargetsz$(ComputeLinkInputsTargets);z%s;ÚComputeLibInputsTargetsz$(ComputeLibInputsTargets);)rƒ  rg  )rg  r'  r  r  ÚImpLibÚMakeDirr•   z!@(%s->'%%(RootDir)%%(Directory)')Tr  N)r~   r  r  rí   rZ  r  rV  rU  rW  rX  rY  r  r  )rI  rB  r$  Ú
item_grouprè   r  Útarget_outputsÚtarget_inputsÚrule_inputsÚextension_conditionÚremove_sectionÚinputs_sectionÚlogging_sectionÚmessage_sectionÚwrite_tlog_sectionÚread_tlog_sectionÚcommand_and_input_sections                    r[   r>  r>  	  s  € àØÐLð ð€'ð
 ØØÐJÐKðð€*ð ò €dØ×ÑØ	Ø
�T—^‘^Ð	$Ø
�T×%Ñ%Ð	&ð	
õðð 
‡.�.�Ôàò €dØ‡N�NØ	Ø—n‘nØ*Ø6ñ
ð ÐIÐ	Jð	
õðð ó D€dØ—‘€IØ%¨	Ñ1�Nâ1:ºIðG€Mà# iÑ/€Kð4Ðð
 	Ø	Ð0Ð1Ø	Ø˜iÑ'Ø<ñ
ð	
ð€Nð 	Ø	�‰�yÐ"AÀIÑ"MÐNÐOð€Nð
 	Ø	�‰Ø%¨	Ò1ò #¢Ið/ñ
ð
 �L 9Ñ,Ð	-Ø
Ð2°T·[±[Ñ@Ð	Að	
ð€Oð 	ØØ.°Ñ:ñ	
ð€Oñ 	à—Y“Y §	£	ð+á7Ø<@¿I»IØ<@¿I»IðGñ	
ðÐñ 	à—Y“Y §	£	ð+á6Ø48·I³I¸t¿y»yÐIñ	
ðÐñ 	â¢	ð+àØ%+Ø$*Ø <¸yÑ HØ8¸9ÑDØñ	
ð!Ðð ‡N�NØ	Ø×"Ñ"Ø" T×%8Ñ%8Ñ8Ø! D×$6Ñ$6Ñ6Ø&¨Ò2Ø,0¯O«OØ,0×,?Ò,?ðAà#Ø!ñ
ð 
Ø	Ø	Ø	Ø	Ø	Ø	"ð!	
ð$ 
Ø
$Ø
(Ø
�$×%Ñ%Ñ
%ð
ð $Ø
'Ø
�$×%Ñ%Ñ
%ð
ð		
ð 
Ø×%Ñ%Ø&¨Ñ2ñ
ð Ø×Òâ6?ÂðLà'¨)Ñ3ñðð Ø(¨4×+<Ñ+<Ñ<Ø,ñðð
 Ø(¨4×+<Ñ+<Ñ<Ø,ñðð
 Ø(¨4×+<Ñ+<Ñ<Ø,ñðð#
ð. ØÐ>Ø×,Ñ,ñ-ð ð
ð7 	
ð;>ö >ðMDôJ ×Ñ˜W l¸4ÀtÖLr]   c                 ó(  — ddddddœg}|D �]j  }|j                  d|j                  d|j                  d	d
œddd|j                  dœggddddidddgggddddœdddggggddddddœddd|j                  ddœgggd d!dd"d"d#œgd$|j                  dd%d"d&œd'dd(ggd)dd*ggd+d,d-d.|j                  z  d/œggd0dddd1œgggd$|j                  dd%d"d&œd'dd2ggd)dd3ggd+d,d-d.|j                  z  d/œggd0ddd4dd5œgggdd6d6d"d"d#œgd d7d8d"d"d#œgdd9d:d"d;d<œgd d=d=dd>œd?dd@ggdAdd@ggggdB|j                  |j                  dCœgdDdE|j
                  z   |j                  dFœgdG|j                  d4|j                  dHœgg«       �Œm t        j                  || dIdI¬J«       y )KNÚProjectSchemaDefinitionszTclr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Frameworkz,http://schemas.microsoft.com/winfx/2006/xamlz&clr-namespace:System;assembly=mscorlibz+Microsoft.Cpp.Dev10.ConvertPropertyCallback)r  zxmlns:xz	xmlns:syszxmlns:transformCallbackÚRuler�   Ú200)rƒ  ÚPageTemplateÚDisplayNameÚOrderzRule.DataSourceÚ
DataSourceÚProjectFile)ÚPersistenceÚItemTypezRule.CategoriesÚCategoryrƒ  ÚGeneralzCategory.DisplayNamez
sys:StringzCommand Linerú   )rƒ  ÚSubtypeÚStringListPropertyrw  rö  rÌ   )rƒ  r   Ú
IsRequiredÚSwitchzStringListProperty.DataSourceÚItem)rž  rŸ  Ú
SourceTypeÚStringPropertyri  ÚFalse)rƒ  rš  ÚVisibleÚIncludeInCommandLineÚDynamicEnumPropertyrn  )rƒ  r   ÚEnumProviderr«  zDynamicEnumProperty.DisplayNamezExecute BeforezDynamicEnumProperty.Descriptionz@Specifies the targets for the build customization to run before.z$DynamicEnumProperty.ProviderSettingsÚNameValuePairÚExcludez^%s|^Compute)rƒ  ÚValuezDynamicEnumProperty.DataSource)rž  ÚHasConfigurationConditionzExecute Afterz?Specifies the targets for the build customization to run after.r   )rž  rŸ  r±  rù   rj  zExecution Descriptionrø   zAdditional DependenciesÚfalse)rƒ  rš  r«  rª  r7  )r¢  rƒ  r   zStringProperty.DisplayNamezAdditional OptionszStringProperty.DescriptionrŸ  )rƒ  rš  ÚFileExtensionrr  )rƒ  ÚContentTyper´  )rƒ  rš  rŸ  Tr  )r  r  rT  rV  rU  r  r  r  )rJ  rB  r$  rè   s       r[   r?  r?  ©	  sc  € ð !ð6à@Ø<à4ñð	€'ð ó b€dØ‡N�NØ	Ø—.‘.Ø Ø×*Ñ*Øñ
ð
 ØØ(ØŸ™ñðð
ð ØØ�IÐØ"Ø˜9Ð%ððð Ø"Ø$ñð #Ø˜>Ð*ðð	ð
ð  ØØ%ØØñð
 +ØØ)ØŸ™Ø!ñððð
ð Ø(Ø(ØØ#*ñð
ð  Ø×&Ñ&Ø Ø$Ø#*ñð
 -ØÐ*Ð+ðð -Øð ð ðð
 2ØØØ$ t×':Ñ':Ñ:ñððð ,ØØ)Ø*0ñððð+
ð:  Ø×%Ñ%Ø Ø$Ø#*ñð
 -Ø˜/Ð*ðð -Øð ,ð ðð
 2ØØØ$ t×'9Ñ'9Ñ9ñððð ,ØØ)ØØ*0ñððð+
ð< ØØ#ØØ#*ñð
ð Ø)Ø1ØØ#*ñð
ð Ø+Ø3Ø#*Øñð
ð Ø)Ø&Ø%ñð (ØÐ.Ð/ðð (ØÐ.Ð/ðð
ðGO	
ð` 
Ø—.‘.Ø×*Ñ*ñ
ð	
ð
 
Ø˜Ÿ™Ñ&ØŸ™ñ
ð	
ð
 
Ø—.‘.ØØ—n‘nñ
ð	
ðwaö aðbôF ×Ñ˜W h°tÀ4ÖHr]   c                 óX   — | j                  dd«      d   }|j                  dd«      }||fS )Nrª   rC   r   r¦   r§   )ÚrsplitrJ   )r!  r  rÍ  rE   s       r[   Ú_GetConfigurationAndPlatformr·  [
  s3   € Ø—+‘+˜c 1Ó% aÑ(€-Ø�\‰\Ð7¸ÓA€(Ø
˜Ð	"Ð"r]   c                 ó    — dt        | |«      z  S )Nz''$(Configuration)|$(Platform)'=='%s|%s')r·  )r!  r  s     r[   Ú_GetConfigurationConditionr¹  a
  s   € Ø
4Ü
& t¨XÓ
6ñ7ð 8r]   c                 ó¸   — dddig}t        | j                  «       «      D ]6  \  }}t        ||«      \  }}|›d|›�}|j                  dd|id|gd|gg«       Œ8 |gS )	Nr  ÚLabelÚProjectConfigurationsr°   ÚProjectConfigurationr'  ÚConfigurationÚPlatform)rº   rþ   r·  r~   )rû   rS   r!  r  rÍ  rE   Údesignations          r[   Ú _GetMSBuildProjectConfigurationsrÁ  f
  sƒ   € Ø˜Ð"9Ð:Ð
;€%Ü  ×!5Ñ!5Ó!7Ó8ò "Ñ€tˆXÜ:¸4ÀÓJÑ€M�8Ú*©HÐ5€KØ	‡L�LØ	 )¨[Ð!9Ø
˜=Ð	)Ø
�hÐ	ð	!õ"ð"ð ˆ€.r]   c                 ó&  — t         j                  j                  |«      d   }dddid|gddgd|gd	d
ggg}t         j                  j	                  d«      dk(  s"t         j                  j	                  d«      dk(  r|d   j                  ddg«       | j	                  d«      rv| j	                  d«      }|d   j                  d|g«       | j	                  d«      r(| j	                  d«      }|d   j                  d|g«       n|d   j                  d|g«       | j	                  d«      r¹|d   j                  ddg«       |d   j                  dd
g«       | j	                  d«      r(| j	                  d«      }|d   j                  d|g«       n|d   j                  ddg«       | j	                  d«      r|d   j                  ddg«       n|d   j                  ddg«       d }	d }
| d   j                  «       D ](  }|	xs t        |«      }	|
xs t        ||«      }
|	sŒ%|
sŒ( n |
r |d   j                  dt        |
«      g«       n1|j                  r%t        |j                  ›d |j                  ›d!�«      ‚|	d"k(  r|d   j                  d#d
g«       |S )$Nr   rf  r»  ÚGlobalsÚProjectGuidÚKeywordÚ	Win32ProjÚRootNamespaceÚ#IgnoreWarnCompileDuplicatedFilenamerö  rß  ÚAMD64rá  ÚPreferredToolArchitecturerÔ  r5   ÚWindowsTargetPlatformVersionr6   ÚWindowsTargetPlatformMinVersionr1   ÚDefaultLanguagezen-USÚAppContainerApplicationr4   ÚApplicationTypeRevisionz8.1r3   ÚApplicationTypezWindows PhonezWindows Storerû   z requires any SDK of z version, but none were foundÚARMÚWindowsSDKDesktopARMSupport)rH   r`   r  rI   rJ   r~   rÆ  r¨   rÈ   r™   r·   r   rï   )rÙ   r¿   r”  Úgyp_file_nameÚ	namespaceÚ
propertiesÚtarget_platform_versionÚtarget_platform_minversionÚapp_type_revisionr­   r³   rÍ  s               r[   Ú_GetMSBuildGlobalPropertiesrÙ  r
  sÌ  € Ü�g‰g×Ñ˜}Ó-¨aÑ0€)à˜ )Ð,Ø	˜ÐØ	�KÐ Ø	˜)Ð$Ø	.°Ð7ð	ð€*ô ‡Z�Z‡^�^Ð,Ó-°Ò8Ü‡Z�Z‡^�^Ð,Ó-°Ò8Øˆq�M×ÑÐ5°uÐ=Ô>à	‡X�XÐ,Ô-Ø"Ÿh™hÐ'EÓFÐØˆq�M×ÑÐ8Ø1ð3ô 4à‡x�xÐ1Ô2Ø#'§8¡8Ð,MÓ#NÐ Ø��m×ÑÐ=Ø6ð8õ 9ð ��m×ÑÐ=Ø3ð5ô 6ð 
‡X�XÐ!Ô"Øˆq�M×ÑÐ+¨WÐ5Ô6Øˆq�M×ÑÐ3°VÐ<Ô=Ø‡x�xÐ0Ô1ØŸ(™(Ð#CÓDÐØ��m×ÑÐ5Ð7HÐIÕJà��m×ÑÐ5°uÐ=Ô>Ø‡x�xÐ&Ô'Ø��m×ÑÐ-¨Ð?Õ@à��m×ÑÐ-¨Ð?Ô@à€-Ø!ÐØÐ,Ñ-×4Ñ4Ó6ò €mØ!ÒC¤_°]Ó%C€MØ 8ò !NÜ5°mÀWÓMð âÒ1Ùðñ Øˆq�M×ÑÐ8ÜÐ6Ó7ð9õ :à×ÒÜ
Ø×'Ó'¨×)@Ó)@ðBó Cð Cð �eÒØˆq�M×ÑÐ7¸Ð@ÔAà	Ðr]   c           	      óh  — i }| d   j                  «       D ]Ž  \  }}t        | ||«      }t        ||«      }|j                  d«      }|j                  d«      }t	        ||d|«       |dk(  r%t	        ||dd«       t	        ||dt        |«      «       |sŒ|d| vsŒ�t	        ||d|«       Œ� t        | d	|«      S )
Nrû   ÚCharacterSetrC  ÚDriverÚ
DriverTypeÚWDMÚTargetVersionr1   r¾  )rþ   Ú_GetMSBuildAttributesr¹  rJ   Ú_AddConditionalPropertyr¤   Ú_GetMSBuildPropertyGroup)	rÙ   r¶  rÕ  r!  r  Úmsbuild_attributesÚ	conditionÚcharacter_setrÈ  s	            r[   Ú_GetMSBuildConfigurationDetailsræ  ¯
  sÐ   € Ø€*ØÐ-Ñ.×4Ñ4Ó6ò /�n€dˆHÜ.¨t°X¸zÓJÐÜ*¨4°Ó:€IØ&×*Ñ*¨>Ó:€MØ$×(Ñ(Ð)<Ó=€KÜ˜J¨	Ð3FØ'ô)à�hÒÜ˜j¨)°\À5ÔIÜ˜j¨)°_Ü2°8Ó<ô>âØ	 DÒ	(Ü 
¨I°~Ø -õ	/ð/ô 
" $¨¸Ó	DÐDr]   c                 ó"   — i }| r
dddid| ggg}|S )Nrf  r»  ÚLocalsÚPlatformToolsetr‰  )r—  rÕ  s     r[   Ú_GetMSBuildLocalPropertiesrê  Ã
  s0   € à€*Ùà	˜7 HÐ-Ø˜oÐ
.ð	
ð€Jð
 
Ðr]   c                 ó|  — d}i }d}t        | j                  «       «      D ].  \  }}t        ||«      }d|v rt        |d   «      ||<   d}Œ*d||<   Œ0 |sdddid	|d
|z  ddœgggS g }|j                  «       D ]C  \  }}	dd|dœd	|d
|z  ddœgg}
|	D ]  }|
j	                  d	d|ig«       Œ |j	                  |
«       ŒE |S )Nz3$(UserRootDir)\Microsoft.Cpp.$(Platform).user.propsFÚmsbuild_propsTr   ÚImportGroupr»  ÚPropertySheetsÚImportzexists('%s')ÚLocalAppDataPlatform)r  rg  r»  )r»  rg  r  )rº   rþ   r¹  rs   r~   )rû   Ú
user_propsÚadditional_propsÚprops_specifiedr!  r  rÍ  Úsheetsrä  ÚpropsÚimport_groupÚ
props_files               r[   Ú_GetMSBuildPropertySheetsrø  Ï
  s;  € ØE€*ØÐØ€/Ü˜~×3Ñ3Ó5Ó6ò *�n€dˆHÜ.¨t°XÓ>€MØ˜(Ñ"Ü(1°(¸?Ñ2KÓ(LÐ�}Ñ%Ø�oà')Ð�mÒ$ð*ñ 
à	Ø
Ð#Ð	$Ø
Ø Ø&¨Ñ3Ø*ñð
ð	
ð
ð 
ð €FØ,×2Ñ2Ó4ò "Ñˆ	�5àØ"Øñ	
ð 
ØØ%¨
Ñ2Ø)ñ
ð	
ð€lð ò @ˆ*Ø×Ñ˜X¨	°*Ð'=Ð>Õ?ð@à‡m�m�LÕ!ð"ð  €Mr]   c                 ó2  — t        | |«      }t        | ||«      }i }|D ]v  }|dv r4t        j                  ||   «      }|j	                  d«      s|dz  }|||<   Œ;|dk(  rt        ||   «      ||<   ŒR|dk(  rt        ||   «      ||<   Œit        d|z   «       Œx |S )N)rE  rD  rh   rÛ  rC  z3Warning: Do not know how to convert MSVS attribute )r¸  r=  r×   r[  r«   Ú_ConvertMSVSCharacterSetÚ_ConvertMSVSConfigurationTyper¾   )rÙ   r@   r¶  rÈ  Úmsvs_attributesrã  rH  Ú	directorys           r[   Ú_ConvertMSVSBuildAttributesrþ  û
  sÅ   € Ü)¨$°
Ó;€+Ü& t¨V°[ÓA€/ØÐØò G€aØÐ8Ñ8Ü×7Ñ7¸ÈÑ8JÓK€iØ×Ñ Ô%Ø�TÑˆ	Ø'Ð˜ÒØ	
ˆnÒ	Ü6°ÀqÑ7IÓJÐ˜ÒØ	
Ð!Ò	!Ü;¸OÈAÑ<NÓOÐ˜ÒäÐAÀAÑEÕFðGð 
Ðr]   c                 ó8   — | j                  «       r	ddddœ|    } | S )NÚ	MultiByteÚUnicode)ru  rÕ  rÖ  ©Úisdigit)Úchar_sets    r[   rú  rú    s/   € Ø×ÑÔàØØñð ñ	€Hð
 
€/r]   c                 ó<   — | j                  «       rddddddœ|    } | S )NÚApplicationÚDynamicLibraryÚStaticLibraryrÜ  ÚUtility)rÕ  rÖ  r×  rØ  rÙ  r  )rÈ  s    r[   rû  rû    s6   € Ø×ÑÔàØØØØñð ñ€Kð 
Ðr]   c                 ó  — d|vrt        | ||«      }nŠt        | |«      }t        |«      }|j                  di «      }|j	                  d|«       |j                  dd«      }t        |«      dz   |d<   d|vrt        d«      dz   }||d<   d|v rt        |d   «      |d<   d	|vr.| j                  d
d«      }| j                  dd«      }||z   }	|	|d	<   d|vrd| v r| j                  d«      }
d|
z   |d<   | j                  d«      r#| j                  dd«      }t        |«      dz   |d<   ddddddœ}|j                  | d   «      }|rD|d   }||   j                  d«      }|rt        |«      |d<   ||   j                  d«      }|r||d<   |S )NÚ msbuild_configuration_attributesrC  rD  z$(SolutionDir)$(Configuration)rh   rE  rÒ  rÛ  Ú
TargetNamer#  r   r$  r%  Ú	TargetExtr"  rÊ   r,   r-   r  r  r  r˜   Úfinalized_msbuild_settingsrë  Ú
TargetPath)rþ  r¸  rû  rJ   r«  ro   rú  )rÙ   r@   r¶  rã  rÈ  r+  rJ  r{   r$  r  r­  Úexternal_out_dirÚmsbuild_tool_mapr'  Úmsbuild_settingsr  Ú
target_exts                    r[   rà  rà  $  sû  € Ø'¨vÑ5Ü4°T¸6À:ÓNÑô ,¨D°*Ó=€KÜ/°Ó<€KØŸ™Ð$FÈÓKÐØ×!Ñ!Ð"5°{ÔCØ#×'Ñ'Ð(9Ø&FóH€Jä,4°ZÓ,@À4Ñ,GÐÐ(Ñ)ØÐ&8Ñ8ÜÐ0Ó1°DÑ8€lØ4@ÐÐ0Ñ1ØÐ+Ñ+Ü+CØ
˜^Ñ
,ó,.Ð˜Ñ(àÐ+Ñ+Ø�X‰XÐ&¨Ó+€FØ—8‘8˜NÐ,<Ó=€LØ˜<Ñ'€KØ'2Ð�|Ñ$ØÐ*Ñ*Ð/BÀdÑ/JØ
�(‰(Ð&Ó
'€CØ&)¨C¡iÐ�{Ñ#à	‡X�XÐ%Ô&Ø—x‘xÐ ?ÀÓEÐÜ,4Ð5EÓ,FÈÑ,MÐÐ(Ñ)ð
 ØØØØñÐð "×%Ñ% d¨6¡lÓ3€,ÙØÐ:Ñ;ÐØ Ñ-×1Ñ1°,Ó?€HÙÜ)1°(Ó);Ð˜Ñ&Ø! ,Ñ/×3Ñ3°KÓ@€JÙØ(2Ð˜Ñ%à	Ðr]   c                 óZ  — g }| j                  ddg«      d   }|rXdt        |«      z  }|j                  |«       |j                  dd«      }|j                  |«       |rddj	                  |«      z   }i }t        |j                  «       «      D �]  \  }}	t        ||	«      }
t        | |	|«      }|	d	   }t        ||
d
|d   «       t        ||
d|d   «       t        ||
d|d   «       d|v rt        ||
d|d   «       |j                  d«      rt        ||
d|d   «       |j                  d«      rt        ||
d|d   «       |rt        ||
d|«       |j                  di «      }t        |j                  «       «      D ]   \  }}t        d||«      }t        ||
||«       Œ" �Œ t        | d |«      S )Nr'   rÊ   r   z"$(MSBuildProjectDirectory)\%s\bin\z
cygwin\binÚ	python_26z$(ExecutablePath);rö   r  ÚIntDirrE  ÚOutDirrD  r  r  r  ÚExecutablePathr   )rJ   ro   r~   rm   rl   rº   rþ   r¹  rà  rá  Ú_GetValueFormattedForMSBuildrâ  )rÙ   rû   r¶  Ú	new_pathsÚcygwin_dirsÚcyg_pathÚpython_pathrÕ  r!  rÍ  rä  r?  r  Útool_settingsr‘   Úformatted_values                   r[   Ú(_GetMSBuildConfigurationGlobalPropertiesr   Y  sê  € ð €)Ø—‘Ð+¨c¨UÓ3°AÑ6€+ÙØ6¼À+Ó9NÑN€HØ×Ñ�XÔð ×"Ñ" =°+Ó>€KØ×Ñ�[Ô!ÙØ&¨¯©°)Ó)<Ñ<€ià€*Ü% n×&:Ñ&:Ó&<Ó=ó LÑ€tˆ]Ü*¨4°Ó?€IÜ& t¨]¸JÓG€JØ$Ð%AÑBÐÜ˜J¨	°8Ø&Ð'>Ñ?ôAä˜J¨	°8Ø&Ð'8Ñ9ô;ä˜J¨	°<Ø& |Ñ4ô6à�jÑ Ü˜j¨)°[Ø(¨Ñ5ô7ð ‡~�~�lÔ#Ü˜j¨)°\Ø(¨Ñ6ô8à‡~�~�kÔ"Ü˜j¨)°[Ø(¨Ñ5ô7ñ Ü˜j¨)Ð5EØ'ô)à$×(Ñ(¨¨RÓ0€MÜ˜m×1Ñ1Ó3Ó4ò L‰ˆˆeÜ4°R¸¸uÓE€oÜ˜j¨)°T¸?ÕKòLð3Lô8 
" $¨¨jÓ	9Ð9r]   c                 ó^   — || vri | |<   | |   }||vrg ||<   ||   }|j                  |«       y)a¼  Adds a property / conditional value pair to a dictionary.

  Arguments:
    properties: The dictionary to be modified.  The key is the name of the
        property.  The value is itself a dictionary; its key is the value and
        the value a list of condition for which this value is true.
    condition: The condition under which the named property has the value.
    name: The name of the property.
    value: The value of the property.
  Nrð   )rÕ  rä  r!  r‘   rÆ  Ú
conditionss         r[   rá  rá  ‰  sH   € ð 
�ÑØ€JˆtÑØ�dÑ€&Ø
�&ÑØ€Fˆ5�MØ�e‰}€*Ø×Ñ�IÕr]   z\$\(([a-zA-Z_][a-zA-Z0-9_]*)\)c                 ó¦  ‡— dg}|r|j                  d|i«       t        | d   «      }ˆfd„}t        j                  j	                  ‰j                  «       |«      }t        |«      D ]g  }‰|   }t        |j                  «       «      D ]D  \  }	}
t        |
«      |k(  r|j                  ||	g«       Œ(|
D ]  }|j                  |d|i|	g«       Œ ŒF Œi |gS )a†  Returns a PropertyGroup definition for the specified properties.

  Arguments:
    spec: The target project dict.
    label: An optional label for the PropertyGroup.
    properties: The dictionary to be converted.  The key is the name of the
        property.  The value is itself a dictionary; its key is the value and
        the value a list of condition for which this value is true.
  rf  r»  rû   c           
      óð   •— t        «       }t        ‰|    j                  «       «      D ]F  }|j                  t        t        j                  |«      D �cg c]  }|‰v r|| k7  r|‘Œ c}«      «       ŒH |S c c}w rŒ   )r\  rº   r„  r  ÚMSVS_VARIABLE_REFERENCEÚfindall)rª  Úedgesr‘   ÚvrÕ  s       €r[   ÚGetEdgesz*_GetMSBuildPropertyGroup.<locals>.GetEdges¯  s|   ø€ ô ‹E€EÜ˜
 4Ñ(×-Ñ-Ó/Ó0ò 
<ˆð ‡l�l”3Ô#:×#BÑ#BÀ5Ó#Iö :˜aØ 
™?¨q°Dªyò ò :ó ;õ <ð
<ð €Lùò:s   ÁA3rg  )	r~   r}   r:  r;  ÚTopologicallySortedr„  r  rº   rþ   )rÙ   ÚlabelrÕ  rS   Únum_configurationsr)  Úproperties_orderedr!  rÆ  r‘   r"  rä  s     `         r[   râ  râ  ¡  sï   ø€ ð Ð
€%Ù
Ø	‡L�L�'˜5Ð!Ô"Ü˜4Ð 0Ñ1Ó2Ðôô" —z‘z×5Ñ5Ø‡o�oÓ˜ó#Ðô Ð)Ó*ò 	@€dØ˜Ñ€FÜ# F§L¡L£NÓ3ò @ÑˆˆzÜ	ˆZ‹Ð.Ò	.ð 	�‰�d˜E�]Õ#à#ò 	@ˆIØ
�,‰,˜˜{¨IÐ6¸Ð>Õ
?ñ	@ñ@ð	@ð ˆ€.r]   c                 ó�  — g }t        |j                  «       «      D ]§  \  }}|d   }ddt        ||«      ig}t        |j                  «       «      D ]`  \  }}|sŒ	|sŒ|g}	t        |j                  «       «      D ]%  \  }}
t        |||
«      }|	j	                  ||g«       Œ' |j	                  |	«       Œb |j	                  |«       Œ© |S )Nr  rh  rg  )rº   rþ   r¹  r  r~   )rÙ   rû   Úgroupsr!  rÍ  r  rS   r�   r  r�   r‘   r  s               r[   Ú_GetMSBuildToolSettingsSectionsr0  Ó  sê   € Ø€&Ü% n×&:Ñ&:Ó&<Ó=ò Ñ€tˆ]Ø$Ð%AÑBÐØ"ØÔ5°d¸MÓJÐKð€Eô %+Ð+;×+AÑ+AÓ+CÓ$Dò 
Ñ ˆ	�=ò 
ÚØ�ˆ$Ü# M×$7Ñ$7Ó$9Ó:ò 1‰kˆd�EÜ:¸9ÀdØ;@óBˆOà�K‰K˜˜Ð/Õ0ð1ð �,‰,�tÕ
ð
ð ‡M�M�%Õð!ð" 
€-r]   c           	      óz  — d|v rd}|d   }t        j                  |«       n)d}|j                  di «      }t        j                  |«      }t	        |«      \  }}}t        | «      }t        |«      }	t        | d¬«      \  }
}}t        | «      }t        |«      }|rM|D �cg c]
  }|dk7  sŒ	|‘Œ }}dg}|D ]0  }|j                  |«      }|sŒt        d|›d	t        |«      ›�«       Œ2 |D �cg c]  }t        |«      ‘Œ }}t        |«      }|j                  d
«      }|j                  d«      }t        | «      }|j                  d«      }t        |dd|«       t        |dd|«       t        |dd|«       t!        |dd|«       t        |dd|	«       |
rt        ||d|
d¬«       |rt        ||d|d¬«       t        |dd|«       t        |dd|«       t        |dd|«       |rNt"        j$                  j'                  |«      d   }t        |ddd«       t        |dd|«       t        |dd|g«       nt        |ddd«       t        |ddd «       | j                  d!«      rt        |d"d#d «       | d$   d%k(  rt        |d"d#d&«       |rt        |dd'|«       ||d(<   |rt        |d)d*|«       |rt        |d+d*|«       y y c c}w c c}w ),Nr  FTrã  rß  z
_HAS_TR1=0rp  z=Warning: The automatic conversion to MSBuild does not handle z.  Ignoring setting of rá  râ  r7   r/  rç  r7  r3  r  rø   rê  rë  rì  r  rí  rï  rC   ÚPrecompiledHeaderÚUseÚPrecompiledHeaderFilerô  ÚNotUsingr—   r²  r2   r   rõ  r˜   rÛ  rö  r÷  r  ÚPreBuildEventÚCommandÚPostBuildEvent)r×   ÚValidateMSBuildSettingsrJ   ÚConvertToMSBuildSettingsrø  rù  rú  rû  r-  rü  r¾   r™   rv  rý  rþ  r“   r�   rH   r`   r  )rÙ   rÍ  Ú	convertedr  rã  r  r  r  r  r  r  rª   r'  r  r  r	  Úignored_settingsÚignored_settingr‘   r
  r  r  r  r  s                           r[   Ú_FinalizeMSBuildSettingsr>  é  s>  € Ø˜=Ñ(Ø€IØ$Ð%7Ñ8ÐÜ×(Ñ(Ð)9Õ:à€IØ!×%Ñ% o°rÓ:€MÜ#×<Ñ<¸]ÓKÐä�mÓ$ñ 9€,Ð!Ð#8ä˜DÓ!€)Ü  Ó/€,Ü7¸ÀdÔKÑ€(ˆAˆ|Ü" 4Ó(€*Ü˜Ó&€'Ùà!Ö7�Q Q¨,Ó%6ŠqÐ7€GÐ7à)Ð*ÐØ+ò MˆØ×Ñ Ó0€eÚ	ÝÚ/>ÄÀEÄ
ðLõ 	MðMð 5<Ö<¨qÔ'¨Õ*Ð<€'Ð<Ü*¨=Ó9ÐØ×Ñ˜Ó/€(Ø×ÑÐ 0Ó1€)Ü! $Ó'€(Ø$×(Ñ(Ð)BÓCÐô Ð Ø,¨lô<äÐ Ø,Ð.?ôAäÐÐ 1Ø,Ð.CôEô Ð# VÐ-EØôäÐ Ð(FØôáÜÐ  ,°¸hØ"õ$áÜÐ  ,°¸ZØ"õ$ô Ð Ø'¨ô2äÐÐ 1Ø'¨ô2ô Ð Ø'Ð):ô<ñ ÜŸ™Ÿ™Ð'9Ó:¸1Ñ=ÐÜÐ  +Ð/BÀEÔJÜÐ  +Ø'Ð);ô=äÐ  +Ø$Ð'9Ð&:õ<ô Ð  +Ð/BÀJÔOäÐ Ð-=¸wÔGà	‡X�XÐ+Ô,ÜÐ Ð%:¸GÔDð 
ˆ&�\Ð&Ò&ÜÐ  "Ð&;¸VÔDáÜÐ  &Ð*@À(ÔKØ0@€-Ð,Ñ-ÙÜÐ  /°9¸hÔGÙÜÐ Ð"2°I¸yÕIð ùòO 8ùò =s   Â
J3Â(J3Ã*J8c                 ó(  — t        |«      t        k(  re|dv r|j                  d|z  «       dgdgdgdœ}| |v r
|||    v rd}nd}|j                  |D �cg c]  }t	        j
                  |«      ‘Œ c}«      }|S t	        j
                  |«      }|S c c}w )N)rç  rê  r7  ÚDelayLoadDLLsrï  rí  z%%(%s)r7  )r/  r  r  rÌ   rö   )r˜   r›   r~   rl   r×   r[  )r�   r!  r‘   Ú
exceptionsÚcharrr   r  s          r[   r  r  F  s¸   € Ü	ˆ%ƒ[”DÒð ð +ñ +ð ‡l�l�8˜d‘?Ô#ð *Ð*Ø$Ð%Ø#Ð$ñ&€Jð �JÑ 4¨:°iÑ+@Ñ#@Ø�dà€dØ—i‘iØ;@ÖA°aŒ×	.Ñ	.¨qÕ	1ÒAóC€Oð 
Ðô #×;Ñ;¸EÓB€OØ	Ðùò 	Bs   ÁBc                 óD  — g }| D ]˜  }t        |t        j                  «      r&|j                  t	        |j
                  |«      «       ŒCd|vsŒHt        j                  j                  ||«      }t        j                  j                  |«      rŒˆ|j                  |«       Œš |S )a›  Verifies that all source files exist on disk.

  Checks that all regular source files, i.e. not created at run time,
  exist on disk.  Missing files cause needless recompilation but no otherwise
  visible errors.

  Arguments:
    sources: A recursive list of Filter/file names.
    root_dir: The root directory for the relative path names.
  Returns:
    A list of source files that cannot be found on disk.
  r_   )rç   r�   r‚   r  r¼  ry   rH   r`   rl   r  r~   )rƒ   Úroot_dirrË  rc   Ú	full_paths        r[   r¼  r¼  b  s„   € ð €/Øò ,€fÜ�&œ+×,Ñ,Ô-Ø×ÑÔ0°·±À(ÓKÕLà	�FÒ	Ü—G‘G—L‘L ¨6Ó2ˆ	Ü�w‰w�~‰~˜iÕ(Ø
×
 Ñ
  Õ
+ð,ð 
Ðr]   c           
      óÊ   — g d¢}i }	|D ]  }
g |	|
<   Œ	 t        | |||	||||«       g }|D ]   }
|	|
   sŒ	|j                  dg|	|
   z   «       Œ" |r|j                  dg|z   «       |S )N)rÜ  r4  r6  r0  rP   r2  rè   r8  r  )Ú_AddSources2r~   )rÙ   rƒ   rj  r   r!  Úactions_specÚsources_handled_by_actionrw   r/  Úgrouped_sourcesÚgs              r[   Ú_GetMSBuildSourcesrL  {  s—   € ò€&à€/Øò €aØ€O�AÒðô ˆt�W˜j¨/Ø Ð"8Ø(¨-ô9ð €'Øò 9€aØ�qÓØ‡n�n�k�] _°QÑ%7Ñ7Õ8ð9ñ Ø‡N�N�K�= <Ñ/Ô0Ø	€.r]   c                 ó€  — g }|D �]¶  }	t        |	t        j                  «      rt        | |	j                  ||||||«       Œ;|	|vsŒ@g }
|j                  |	g «      }t        |«      t        | d   «      k(  r|
j                  ddg«       n5t        |«      D ]'  \  }}t        ||«      }|
j                  dd|idg«       Œ) | d   j                  «       D ]¿  \  }}|j                  dd«      }|dk7  r<t        |«      }|s/t        j                  j                  |«      \  }}|dk(  rg d¢}ndg}||	k(  r#t        ||«      }|
j                  d	d|id
g«       Œ�|D ]:  }|	j                  |«      sŒ|
j                  d	dg«       |
j                  ddg«       Œ< ŒÁ t!        |	||«      \  }}||   j                  |d|	ig|
z   «       �Œ¹ y )Nrû   rh  rö  rg  r8   r   r¦  rs  r2  ÚCreaterô  r'  )rç   r�   r‚   rG  ry   rJ   r}   r~   rº   r¹  rþ   ro   rH   r`   r  r«   r)  )rÙ   rƒ   rj  rJ  r   r!  rI  rw   rx  rc   ÚdetailÚexcluded_configurationsr¬   rÍ  rä  Úprecompiled_sourcerª  r  rS   r,  s                       r[   rG  rG  �  s  € ð )+Ð%Øó 1O€fÜ�&œ+×,Ñ,Ô-Ü�4˜Ÿ™¨*°oØ$Ð&<Ø,Ø õ"ð
 Ð0Ò0ØˆØ",§.¡.°¸Ó"<ÐÜÐ&Ó'¬3¨tÐ4DÑ/EÓ+FÒFØ
�-‰-Ð,¨fÐ5Õ
6ä,2Ð3JÓ,Kò $Ñ(ˆk˜=Ü2°;ÀÓNˆIØ�M‰MÐ.Ø'¨Ð3Ø!ð#õ $ð$ð +/Ð/?Ñ*@×*FÑ*FÓ*Hò 	:Ñ&ˆK˜Ø,×0Ñ0Ð1JÈBÓOÐ
Ø 2Ò%Ü!)Ð*<Ó!=ÐÙ6ô %'§G¡G×$4Ñ$4Ð5GÓ$HÑ!ˆh˜	Ø˜dÒ"Ú6MÑ3à7;°fÐ3à 6Ò)Ü2°;ÀÓNˆIØ�M‰MÐ.Ø'¨Ð3Ø#ðõ ð Aò :�	Ø—‘ Õ+Ø—‘Ð2°BÐ7Ô8Ø—‘Ð3°RÐ8Õ9ñ:ð/	:ô8 5°VÐ=NØ5KóM‰ˆˆwà˜Ñ×%Ñ% w°¸FÐ0CÐ&DÀvÑ&MÖNñc1Or]   c                 óh  — g }| j                   �r"dg}| j                   D ]ÿ  }|j                  }t        j                  j	                  | j                  «      d   }t
        j                  j                  |j                  |«      }dd|id|gddgg}|j                  j                  di «      j                  «       D ]P  }|j                  d	d«      r|j                  d
dg«        n)|j                  dd«      sŒ=|j                  d
dg«        n |j                  |«       �Œ |j                  |«       |S )Nr  r   ÚProjectReferencer'  r  ÚReferenceOutputAssemblyr²  rû   Ú"msvs_use_library_dependency_inputsÚUseLibraryDependencyInputsrö  Ú&msvs_2010_disable_uldi_when_referenced)rÄ  r”  rH   r`   r  r:  r;  r·  rÙ   rJ   rÆ  r~   )	r   Ú
referencesrS   Ú
dependencyr”  rÅ  Úrelative_pathÚproject_refr@   s	            r[   Ú_GetMSBuildProjectReferencesr\  É  s(  € Ø€*Ø×ÓØˆM€EØ×*Ñ*ò  ˆ
Ø�_‰_€dÜ—G‘G—M‘M '§,¡,Ó/°Ñ2€kÜ—j‘j×-Ñ-¨j¯o©o¸{ÓK€mØ'Ø�mÐ
$Ø�dÐ
Ø$ gÐ
.ð€kð
 —O‘O×'Ñ'Ð(8¸"Ó=×DÑDÓFò ˆ&Ø�:‰:Ð:¸AÔ>Ø
×
Ñ
Ð:¸FÐCÔ
DÙ
à�:‰:Ð>ÀÕBØ
×
Ñ
Ð:¸GÐDÔ
EÙ
ðð ‡l�l�;Öð# ð$ ×Ñ�eÔØ	Ðr]   c                 ó:  — | j                   }|d   }t        j                  j                  | j                  «      \  }}t        j
                  j                  | j                  «       t        | j                  «      }t        j
                  j                  ||«      }	t        j                  j                  | j                  «      d   }
t        |||
«      \  }}i }t        «       }t        «       }t        «       }i }|j                  dd«      }|j                  d«      st        ||||||||||«
       n |j                  dg «      }t        |||d«       t        |||||||«      \  }}}|j                  d«      s/t!        ||| j                  «       t#        ||«       t%        ||«      }t'        |||«      }t)        ||«      \  }}t+        | j                  dz   |||«       t-        ||«      }|j/                  «       D ]  }t1        ||«       Œ dd	d
igg}dd	digg}dd	digg}dd	digg}dd	digg}dddigg}d	d|j3                  «       ddœg} | t5        |«      z  } | t7        ||| j8                  |«      z  } | |z  } | t;        || j                  «      z  } |j                  d«      r| t=        d«      z  } n| t=        | j>                  «      z  } | |z  } | |z  } | tA        |«      z  } | tC        |«      z  } | |z  } | tE        ||| j                  «      z  } | tG        ||«      z  } | tI        ||||||||«      z  } | tK        | «      z  } | |z  } | |z  } | tM        |«      z  } |j                  d«      r| tO        |«      z  } tQ        jR                  | | j                  dd¬«       |S )Nrû   rC   r³  Tr,   r*  z.filtersrï  r  z,$(VCTargetsPath)\Microsoft.Cpp.Default.propsz$$(VCTargetsPath)\Microsoft.Cpp.propsz&$(VCTargetsPath)\Microsoft.Cpp.targetsz/$(VCTargetsPath)\BuildCustomizations\masm.propsz1$(VCTargetsPath)\BuildCustomizations\masm.targetsrf  r»  Ú
UserMacrosr  ÚBuild)r  r  ÚDefaultTargetsr3   Ú	v120_wp81r  )*rÙ   rH   r`   r  r:  r;  r´  re   r¶  r·  rº  r\  rJ   rK  ry  r»  rÀ  rÁ  r†  ri  Ú_GenerateActionsForMSBuildr%  r¼  rÆ  r>  ÚProjectVersionrÁ  rÙ  r”  ræ  rê  r—  Ú_GetMSBuildExtensionsrø  r   r0  rL  r\  Ú_GetMSBuildExtensionTargetsÚ!_GetMSBuildExternalBuilderTargetsr  r  )!r   r,  r¿   r¡  rÙ   rû   rÅ  Úproject_file_namerÆ  rÇ  rÉ  rƒ   rz  r?  r@  rA  r   r!  rw   r*  rÊ  rj  rH  rI  rË  rÍ  Úimport_default_sectionÚimport_cpp_props_sectionÚimport_cpp_targets_sectionÚimport_masm_props_sectionÚimport_masm_targets_sectionÚmacro_sectionr$  s!                                    r[   rž  rž  ã  sZ  € Ø	�‰€$ØÐ(Ñ)€.Ü#%§7¡7§=¡=°·±Ó#>Ñ €+Ð Ü‡*�*×Ñ˜WŸ\™\Ô*ä˜w×1Ñ1Ó2€(Ü!Ÿj™j×5Ñ5°hÀÓLÐä�W‰W�]‰]˜7×-Ñ-Ó.¨qÑ1€(Ü3°D¸/Ø4<ó>Ñ€'Ðð €.Ü›ÐÜ›5ÐÜ“eÐØÐØ!×%Ñ%Ð&@À$ÓG€-ð 
�‰Ð)Ô	*Ü˜[¨'°4Ø$Ð&6Ø1Ð3IØ+Ð->Ø3õ	5ð �H‰H�W˜bÓ!€EÜ˜5 'Ð+;¸TÔBô 0°°gØ0;¸WØ0@Ø0=¸wóHñ *€'Ð˜\ð 
�‰Ð)Ô	*Ü�  g×&8Ñ&8Ô9Üˆ~˜tÔ$ô 2Ø˜.ó*Ðô *¨$Ð0@À,ÓO€*Ü,FØ
ˆNó-Ñ)€,Ð)ô ˜gŸl™l¨ZÑ7¸Ø/Ø4ô6ô (¨°Ó=€/à%×,Ñ,Ó.ò 2€mÜ˜T =Õ1ð2ð �)ÐLÐMÐNðPÐð �)ÐDÐEÐFðHÐð �)ÐFÐGÐHð JÐð Ø	ÐFÐGðIðJÐð Ø	ÐHÐIðKð!LÐð $ g¨|Ð%<Ð=Ð>€-ð ØEØ×-Ñ-Ó/Ø ñð	€'ð 
Ô-¨nÓ=Ñ=€'Ø	Ô(¨¨w¸¿¹Ø):ó<ñ <€'à	Ð#Ñ#€'Ø	Ô,¨T°7×3EÑ3EÓFÑF€'Ø	‡X�XÐ$Ô%Ø
Ô(¨Ó5Ñ5�7à
Ô(¨×)@Ñ)@ÓAÑA€7Ø	Ð%Ñ%€'Ø	Ð&Ñ&€'Ø	Ô"Ð#7Ó8Ñ8€'Ø	Ô& ~Ó6Ñ6€'Ø	ˆ]Ñ€'Ø	Ô5°d¸NØ6=×6HÑ6HóJñ J€'à	Ô,¨T°>ÓBÑB€'Ø	ÔØ
ˆG�ZÐ!2Ð4JØÐ-¨}ó>ñ >€'ð 
Ô)¨'Ó2Ñ2€'Ø	Ð'Ñ'€'Ø	Ð(Ñ(€'Ø	Ô(Ð)?Ó@Ñ@€'à	‡X�XÐ%Ô&ØÔ0°Ó6Ñ6€Gô
 ×Ñ˜W g§l¡l¸4ÀtÕLà	Ðr]   c                 óf  — t        | | d   dddd«      }dddig}|j                  dd|ig«       t        | | d   dddd«      }ddd	ig}|j                  dd|ig«       ||g}| j                  d
«      r?t        | | d
   dddd«      }dddig}|j                  dd|ig«       |j                  |«       |S )an  Return a list of MSBuild targets for external builders.

  The "Build" and "Clean" targets are always generated.  If the spec contains
  'msvs_external_builder_clcompile_cmd', then the "ClCompile" target will also
  be generated, to support building selected C/C++ files.

  Arguments:
    spec: The gyp target spec.
  Returns:
    List of MSBuild 'Target' specs.
  r.   Fr‚  rƒ  r_  ÚExecr7  r/   ÚCleanr0   r/  )râ   r~   rJ   )rÙ   Ú	build_cmdÚbuild_targetÚ	clean_cmdÚclean_targetÚtargetsÚclcompile_cmdÚclcompile_targets           r[   rf  rf  Y  s  € ô *Ø
ˆDÐ2Ñ3ØˆU�E˜5ó"€)ð ˜V WÐ-Ð.€,Ø×Ñ�v 	¨9Ð5Ð6Ô7ä)Ø
ˆDÐ2Ñ3ØˆU�E˜5ó"€)ð ˜V WÐ-Ð.€,Ø×Ñ�v 	¨9Ð5Ð6Ô7à˜<Ð(€'à	‡X�XÐ3Ô4Ü/ØˆdÐ8Ñ9Øˆu�e˜Uó$€Mð ! 6¨;Ð"7Ð8ÐØ×Ñ˜V i°Ð%?Ð@ÔAØ‡N�NÐ#Ô$à	€.r]   c                 óL   — dddig}| D ]  }|j                  dd|ig«       Œ |gS )Nrí  r»  ÚExtensionSettingsrï  r  rð   )r@  r"  r÷  s      r[   rd  rd  ~  sA   € Ø Ð)<Ð=Ð>€*Ø(ò ;€jØ×Ñ�x )¨ZÐ!8Ð9Õ:ð;à
ˆÐr]   c                 ó^   — dddig}t        | «      D ]  }|j                  dd|ig«       Œ |gS )Nrí  r»  ÚExtensionTargetsrï  r  )rº   r~   )rA  Útargets_nodeÚtargets_files      r[   re  re  …  sG   € Ø 'Ð+=Ð!>Ð?€,ÜÐ3Ó4ò ?€lØ×Ñ˜ I¨|Ð#<Ð=Õ>ð?à
ˆÐr]   c                 ó  — t        «       }g }|j                  «       D ]ä  \  }}t        «       }t        «       }g }g }	|D ]}  }
|j                  t        |
d   «      «       |j                  t        |
d   «      «       |j                  |
d   «       |
d   }|
j	                  dd«      rd|z   }|	j                  |«       Œ dj                  |«      }d	j                  |	D �cg c]  }|d
z   ‘Œ	 c}«      }t        | |||||||«       Œæ ||fS c c}w )aY  Add actions accumulated into an actions_to_add, merging as needed.

  Arguments:
    spec: the target project dict
    actions_to_add: dictionary keyed on input name, which maps to a list of
        dicts describing the actions attached to that input file.

  Returns:
    A pair of (action specification, the sources handled by this action).
  rí   rî   rï   rà   Úmsbuild_use_callTzcall r  r  z,
if %errorlevel% neq 0 exit /b %errorlevel%)r   rþ   r  r~   rJ   rl   Ú_AddMSBuildAction)rÙ   r?  rI  rH  r  rT  rí   rî   r  r	  rå   rÒ   rï   rJ  rà   s                  r[   rb  rb  Œ  s5  € ô )›lÐØ€,Ø .× 4Ñ 4Ó 6ò !$Ñ€m�WÜ‹\€FÜ‹l€GØ€LØ€HØò ˆØ‡m�m”J˜v hÑ/Ó0Ô1Ø‡n�n”Z  yÑ 1Ó2Ô3Ø×Ñ˜& Ñ/Ô0Ø�9Ñ€cð
 
�‰Ð&¨Ô	-Ø˜‰mˆØ‡o�o�cÕðð  ×$Ñ$ \Ó2€Kð �k‰kØ$,ö.Ø ð ÐOÓOò .ó /€Gä�dØ#ØØØØ!Ø/Ø"õ$ð5!$ðD 
Ð0Ð	0Ð0ùò.s   ÃD
c                 ó˜  — t        j                  |«      }t        |«      }t        |«      }	t        |«      }
dj	                  |	D �cg c]	  }||k7  r|‘Œ c}«      }dj	                  |
«      }|j                  |«       dd|ig}|j                  ddgd|gd|gd|gg«       |r|j                  d	|g«       |j                  |«       y c c}w )
Nrö   r9  r'  ÚFileTypeÚDocumentr7  rx  rù   ÚAdditionalInputs)r×   r[  ro   rs   rl   r  r  r~   )rÙ   r  rí   rî   rÒ   rï   rI  rH  rà   Úinputs_arrayÚoutputs_arrayrr   Úadditional_inputsÚaction_specs                 r[   r€  r€  ¾  sæ   € ä×1Ñ1°#Ó6€'Ü˜=Ó)€-Ü˜6Ó"€,Ü˜GÓ$€-Ø—h‘h¨<ö  7 aØ#$¨Ò#5ò !"ò  7ó 8Ðà�H‰H�]Ó#€'Ø×Ñ Ô.Ø ¨MÐ :Ð;€+Ø×Ñà�JÐØ�7ÐØ�;ÐØ�7Ððô	ñ Ø×ÑÐ*Ð,=Ð>Ô?Ø×Ñ�kÕ"ùò 7s   ÁC)NNTN)F)¤Ú
__future__r   Úcopyr&  rH   rŠ  rO   rK   rD   Ú	six.movesr   Ú
gyp.commonr:  Úgyp.easy_xmlr  Úgyp.generator.ninjaÚ	generatorrÑ  r×  Úgyp.MSVSNewr�  Úgyp.MSVSProjectr�   Úgyp.MSVSSettingsr×   Úgyp.MSVSToolFiler%  Úgyp.MSVSUserFilerÐ  Úgyp.MSVSUtilr  Úgyp.MSVSVersionr¸   r   r   rP   r�  r  Ú"generator_additional_path_sectionsÚ+generator_additional_non_configuration_keysrü  re  rG   rF   r\   rj   re   ro   rs   r€   r“   r�   r¤   r¨   r®   r±   rÈ   râ   rê   ró   r  r
  r  r  r  r1  r4  rK  rO  rX  r[  r`  rc  rh  rl  rm  rt  rv  r}  ry  r†  rŠ  r•  r›  r¢  r±  rŸ  rµ  rÓ  r¸  r¹  rø  rú  rù  rû  r-  rü  rý  rþ  r:  r   r=  rQ  rº  r»  rY  rZ  rÃ  ri  r¾  r¿  rÀ  rÂ  rÁ  r†  r•  rž  r©  r²  r¼  rÂ  rÎ  rÛ  ré  r÷  rý  r  r%  r  r)  rK  Úobjectr<  r=  r>  r?  r·  r¹  rÁ  rÙ  ræ  rê  rø  rþ  rú  rû  rà  r   rá  r%  râ  r0  r>  r  r¼  rL  rG  r\  rž  rf  rd  re  rb  r€  r‰  r]   r[   ú<module>rš     sX  ðõ
 &ã Û Û 	Û Û 	Û Û 
å %ã Ý ß -Ð -Ý Ý %Ý 'Ý 'Ý 'Ý Ý %Ý Ý !ð #˜Ÿ
™
Ð#3Ó4Ð ðØ�Rðà�Vðð ˜ðð ˜ð	ð
 ˜ðð ˜ðð ˜ðð ˜ðð ˜ðð ÐAðð 	ˆ%ðð �;ðð ˆ~ðð �~ðð ˜-ðð  �mð!ð" Ð)ð#ð$ &Ø0ò'Ð ð2 Øð&Ð "ò/Ð +ð$  Ð ð Øð€ð €ð €ò*ð0 €òò$ò"&ð
 EIØFJó>óBDó
ò2<òAòòPò
=ò2H>òVKò ,òFHò8,ò<ò&	&òò*# òLòNòbð$ "�r—z‘z )Ó,Ð òð8 '˜BŸJ™J Ó7Ð ò,ò^ð #˜Ÿ
™
 9Ó-Ð òòòòBò: ò,
=ò?òò0ò(Lò0 MòFCòLò ò$ò>TLòn@ò0òò4$)òNò$ò&Dòòò61ò&ò4Bò$%òN31òlòò7òò*ò$"òN ò0ò*9òò4	òò&ò)ò&ò$
#ò.òb-ò`Bò8+ò&òN)òbò<$(òN$òN*AôZ2F�&ô 2FòjKò@bMòJoIòd#ò8ò
	ò:òzEò(	ò*òXò&ò	ò2òj-:ò`ð* %˜"Ÿ*™*Ð%FÓGÐ ò/òdò,ZJòzò8ò2ò*6Oòrò4sòl"òJòò/1ód#r]   