ó
    æ“–goí ã                   ó  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  / SQrSS/r/ SQr\" 5       q0 r0 rS	 r/ S
Qr/ q/ SQrSqSqSPS jrS r S r!S r"S r#S r$S r%S r&S r' " S S\(5      r) " S S5      r*S r+\" S5      r,SSSS.r-S  r.S! r/\R`                  " S"5      r1\R`                  " S#5      r2\R`                  " S$5      r30 r4S% r5S r6S&r7S'r8S( r90 r:S) r;S* r<S+ r=S, r>S- r? SPS. jr@S/ rAS0 rBS1 rCS2 rDS3 rES4 rFS5 rGS6 rHS7 rI " S8 S95      rJS: rKS; rLS< rMS= rN\R`                  " S>5      rOS? rPSQS@ jrQSA rRSB rSSC rTSD rUSE rVSF rWSG rXSH rYSI rZSJ r[SK r\SL r]SM r^SN r_SO r`g)Ré    N)ÚGypError)Ú
OrderedSet)ÚVersion)Ú
executableÚshared_libraryÚloadable_moduleÚmac_kernel_extensionÚwindows_driverÚdependenciesÚexport_dependent_settings)ÚdestinationÚfilesÚinclude_dirsÚinputsÚ	librariesÚoutputsÚsourcesc                 ó¾   • U (       a   U SS  S;   a  U S S n U (       a  U SS  S;   a  M  U [         ;   a  gSU ;   a%  U SS  nUS   S:X  a  US S nUSS  S;   a  gUS	S  S
:H  $ g)Néÿÿÿÿz=+?!TÚ_iúÿÿÿÚséûÿÿÿ)Ú_fileÚ_pathéüÿÿÿÚ_dirF)Úpath_sections)ÚsectionÚtails     Ú+/usr/lib/python3/dist-packages/gyp/input.pyÚIsPathSectionr!   8   sŽ   € ö �g˜b˜c�l fÓ,Ø˜#˜2�,ˆö �g˜b˜c�l fÕ,ð ”-ÓØð ˆgƒ~Ø�r�sˆ|ˆØ�‰8�s‹?Ø˜˜�9ˆDØ��ˆ9Ð*Ó*ØØ�B�Cˆy˜FÑ"Ð"àó    )ÚactionsÚconfigurationsÚcopiesÚdefault_configurationr   Údependencies_originalr   Ú
postbuildsÚproduct_dirÚproduct_extensionÚproduct_nameÚproduct_prefixÚrulesÚrun_asr   Ústandalone_static_libraryÚsuppress_wildcardÚtarget_nameÚtoolsetÚtoolsetsÚtypeÚ	variables)r#   Úall_dependent_settingsr$   r   Údirect_dependent_settingsr   Úlink_settingsr   r/   r1   r4   Fc                 óŽ   • Uc  / nX;   a  U$ UR                  U 5        X   R                  S/ 5       H  n[        X1U5        M     U$ )a  Return a list of all build files included into build_file_path.

The returned list will contain build_file_path as well as all other files
that it included, either directly or indirectly.  Note that the list may
contain files that were included into a conditional section that evaluated
to false and was not merged into build_file_path's dict.

aux_data is a dict containing a key for each build file or included build
file.  Those keys provide access to dicts whose "included" keys contain
lists of all other files included by the build file.

included should be left at its default None value by external callers.  It
is used for recursion.

The returned list will not contain any duplicate entries.  Each build file
in the list will be relative to the current directory.
Úincluded)ÚappendÚgetÚGetIncludedBuildFiles)Úbuild_file_pathÚaux_datar:   Úincluded_build_files       r    r=   r=   ‹   sT   € ð& ÑØˆàÓ"Øˆà‡O�O�OÔ$à'Ñ8×<Ñ<¸ZÈÖLÐÜÐ1¸XÖFñ  Mð €Or"   c                 ó"  • [         R                  " U 5      n[        U[         R                  5      (       d   eUR                  n[        U5      S:X  d   eUS   n[        U[         R                  5      (       d   e[        UR                  / 5      $ )z¦Return the eval of a gyp file.
The gyp file is restricted to dictionaries and lists only, and
repeated keys are not allowed.
Note that this is slower than eval() is.
é   r   )	ÚastÚparseÚ
isinstanceÚModuleÚbodyÚlenÚExprÚ	CheckNodeÚvalue)Úfile_contentsÚsyntax_treeÚc1Úc2s       r    ÚCheckedEvalrP   ¬   su   € ô —)’)˜MÓ*€KÜ�k¤3§:¡:×.Ñ.Ð.Ð.Ø	×	Ñ	€BÜˆr‹7�a‹<Ðˆ<Ø	ˆA‰€BÜ�bœ#Ÿ(™(×#Ñ#Ð#Ð#Ü�R—X‘X˜rÓ"Ð"r"   c           	      ó€  • [        U [        R                  5      (       aÉ  0 n[        U R                  U R
                  5       H¡  u  p4[        U[        R                  5      (       d   eUR                  nX2;   aA  [        SU-   S-   [        [        U5      S-   5      -   S-   SR                  U5      -   S-   5      e[        U5      nUR                  U5        [        XE5      X#'   M£     U$ [        U [        R                  5      (       aa  / n[!        U R"                  5       HD  u  px[        U5      nUR                  [        U5      5        UR                  [        X…5      5        MF     U$ [        U [        R                  5      (       a  U R                  $ [%        SSR                  U5      -   S-   [        U 5      -   5      e)	NzKey 'z' repeated at level rB   z with key path 'Ú.Ú'zUnknown AST node at key path 'z': )rE   rC   ÚDictÚzipÚkeysÚvaluesÚStrr   r   ÚreprrH   ÚjoinÚlistr;   rJ   ÚListÚ	enumerateÚeltsÚ	TypeError)	ÚnodeÚkeypathÚdictÚkeyrK   ÚkpÚchildrenÚindexÚchilds	            r    rJ   rJ   ¼   sƒ  € Ü�$œŸ™×!Ñ!ØˆÜ˜dŸi™i¨¯©Ö5‰JˆCÜ˜c¤3§7¡7×+Ñ+Ð+Ð+Ø—%‘%ˆCØ‹{ÜØØñà,ñ-ô œ3˜w›<¨!Ñ+Ó,ñ-ð )ñ	)ð
 —h‘h˜wÓ'ñ(ð ñóð ô �g“ˆBØ�I‰I�cŒNÜ! %Ó,ˆD‹Iñ 6ð  ˆÜ	�Dœ#Ÿ(™(×	#Ñ	#ØˆÜ% d§i¡iÖ0‰LˆEÜ�g“ˆBØ�I‰I”d˜5“kÔ"Ø�O‰OœI eÓ0Ö1ñ 1ð ˆÜ	�Dœ#Ÿ'™'×	"Ñ	"Ø�v‰vˆäØ,¨s¯x©x¸Ó/@Ñ@À5ÑHÌ4ÐPTË:ÑUó
ð 	
r"   c                 óæ  • X;   a  X   $ [         R                  R                  U 5      (       a  [        U SS9R	                  5       nO$[        U  S[         R                  " 5        S35      eS n U(       a  [        U5      nO[        US0 0S 5      n [        U5      [         La  [        SU -  5      eXqU '   0 X '   SU;  d
  US   (       d(   U(       a  [#        XpXX55        U$ [#        XpXS U5         U$ U$ ! [         a  nXl
        e S nAf[         a)  n[        R                  R                  USU -   5        e S nAff = f! [         a)  n[        R                  R                  US	U -   5        e S nAff = f)
Núutf-8)Úencodingz not found (cwd: Ú)Ú__builtins__zwhile reading z%%s does not evaluate to a dictionary.Úskip_includeszwhile reading includes of )ÚosÚpathÚexistsÚopenÚreadr   ÚgetcwdrP   ÚevalÚSyntaxErrorÚfilenameÚ	ExceptionÚgypÚcommonÚExceptionAppendr4   rb   ÚLoadBuildFileIncludesIntoDict)	r>   Údatar?   ÚincludesÚ	is_targetÚcheckÚbuild_file_contentsÚbuild_file_dataÚes	            r    ÚLoadOneBuildFilerƒ   ß   sy  € ØÓØÑ$Ð$ä	‡w�w‡~�~�o×&Ñ&Ü" ?¸WÑE×JÑJÓLÑä˜/Ð*Ð*;¼B¿IºI»K¸=ÈÐJÓKÐKà€Oð
ÞÜ)Ð*=Ó>‰Oä"Ð#6¸ÈÐ8LÈdÓS‰Oô ˆOÓ¤DÒ(ÜÐ>ÀÑPÓQÐQà+ˆÑØ "€HÑð ˜oÓ-°_À_×5Uð	ÞÜ-Ø#°dÀhôð Ðô .Ø#°dÀdÈEõð Ðˆ?Ðøô= ó Ø$Œ
ØûÜó Ü�
‰
×"Ñ" 1Ð&6¸Ñ&HÔIØûðûô* ó 	Ü�J‰J×&Ñ&ØÐ/°/ÑAôð ûð		úsH   Á.C3 ÂC3 Ã
D= Ã D= Ã3
D:Ã=DÄD:Ä$D5Ä5D:Ä=
E0Å$E+Å+E0c                 óÆ  • / nUb  UR                  U5        SU ;   az  U S    Hn  n[        R                  R                  [        R                  R	                  [        R                  R                  U5      U5      5      nUR                  U5        Mp     U S	 U Hi  nSX1   ;  a  / X1   S'   X1   S   R                  U5        [        R                  " [        R                  SU5        [        U [        XrUS SU5      UU5        Mk     U R                  5        HH  u  pš[        U
5      [        L a  [        X¡X#S U5        M'  [        U
5      [         L d  M;  [#        X¡X#U5        MJ     g )Nr}   r:   zLoading Included File: '%s'F)Úextendrn   ro   ÚnormpathrZ   Údirnamer;   rx   ÚDebugOutputÚDEBUG_INCLUDESÚ
MergeDictsrƒ   Úitemsr4   rb   r{   r[   ÚLoadBuildFileIncludesIntoList)ÚsubdictÚsubdict_pathr|   r?   r}   r   Úincludes_listÚincludeÚrelative_includeÚkÚvs              r    r{   r{     s<  € ð €MØÑØ×Ñ˜XÔ&Ø�WÓØ˜zÔ*ˆGô  "Ÿw™w×/Ñ/Ü—‘—‘œRŸW™WŸ_™_¨\Ó:¸GÓDó Ðð × Ñ Ð!1Ö2ñ +ð �JÐó !ˆØ˜XÑ3Ó3Ø13ˆHÑ" :Ñ.ØÑ˜zÑ*×1Ñ1°'Ô:ä�Šœ×*Ñ*Ð,IÈ7ÔSäØÜ˜W¨H°d¸EÀ5ÓIØØö		
ñ !ð —‘–‰ˆÜ�‹7”dŠ?Ü)¨!¸4È4ÐQVÖWÜ�!‹WœŒ_Ü)¨!¸4È5ÖQò	  r"   c           	      óœ   • U  HF  n[        U5      [        L a  [        XQX#S U5        M%  [        U5      [        L d  M9  [	        XQX#U5        MH     g ©N)r4   rb   r{   r[   rŒ   )ÚsublistÚsublist_pathr|   r?   r   Úitems         r    rŒ   rŒ   9  sC   € ÛˆÜ�‹:œÒÜ)Ø D°D¸%öô �$‹Zœ4ÔÜ)¨$¸dÈeÖTò r"   c                 óD  • SU ;   aÈ  U S   n/ nU H·  nSU;   a  SU;  a  UR                  U5        M"  [        (       a  UR                  SS/5      nOS/nSU;   a  US	 [        U5      S:”  d  M^  USS   H7  n[        R
                  R                  U5      nXVS'   UR                  U5        M9     US   US'   UR                  U5        M¹     X S'   SU ;   aL  U S    HB  n[        U5      [        L d  M  USS   H"  n[        U5      [        L d  M  [        U5        M$     MD     g g )NÚtargetsr2   r3   Útargetr   rB   Ú
conditions)r;   Úmultiple_toolsetsr<   rH   rx   Úsimple_copyÚdeepcopyr4   r[   rb   ÚProcessToolsetsInDict)	r|   Útarget_listÚnew_target_listr›   r3   ÚbuildÚ
new_targetÚ	conditionÚcondition_dicts	            r    r    r    E  s-  € Ø�DÓØ˜9‘oˆØˆÛ!ˆFð ˜FÓ" z¸Ó'?Ø×&Ñ& vÔ.Ùß Ò Ø!Ÿ:™: j°8°*Ó=‘à$˜:�à˜VÓ#Ø˜:Ð&Ü�8‹}˜qÕ à% a b›\�EÜ!$§¡×!9Ñ!9¸&Ó!A�JØ,1˜yÑ)Ø#×*Ñ*¨:Ö6ñ *ð %-¨Q¡K��yÑ!Ø×&Ñ& vÖ.ñ) "ð* *ˆY‰Ø�tÓØ˜lÔ+ˆIÜ�I‹¤$Ô&Ø&/°°£m�NÜ˜NÓ+¬tÔ3Ü-¨nÖ=ó '4ò ,ð r"   c                 óL  • U(       a^  [         R                  R                  U[        R                  R                  U 5      5      nUS:X  a  SUS'   OUR                  SS5      US'   SU;   a  XS   ;   a  gUS   R                  U 5        [         R                  " [         R                  SU 5        [        XX$S	U5      n	XYS
'   SU	;   a  [        U S-   5      e[        X5      n
/ U	S'   U
 HT  n[         R                  R                  U[        R                  R                  U 5      5      nU	S   R                  U5        MV     [        U	5        [        U	[         X05        [        U	5        SU	;   a�  SU	;  a  [        SU -  5      eSnU[#        U	S   5      :  aV  U	S   U   n[         R$                  R'                  U	S   5      n[)        XþX 5        XùS   U'   US-  nU[#        U	S   5      :  a  MV  U	S	 / nSU	;   aS  U	S    HJ  nSU;  a  M  US    H6  nUR                  [         R                  R+                  U US 5      S   5        M8     ML     U(       a  U H  n [-        UUUUUUUU5        M     g U U4$ ! [.         a)  n[         R                  R1                  USU -  5        e S nAff = f)NÚ rR   ÚDEPTHÚ\Ú/Útarget_build_filesFzLoading Target Build File '%s'TÚ_DEPTHÚincluded_filesz$ must not contain included_files keyÚtarget_defaultsrš   z'Unable to find targets in build file %sr   rB   r   z while loading dependencies of %s)rx   ry   ÚRelativePathrn   ro   r‡   ÚreplaceÚaddrˆ   r‰   rƒ   r   r=   r;   r    Ú#ProcessVariablesAndConditionsInDictÚPHASE_EARLYrH   rž   rŸ   rŠ   ÚResolveTargetÚLoadTargetBuildFilerw   rz   )r>   r|   r?   r5   r}   Údepthr   Úload_dependenciesÚdr�   r:   Úincluded_fileÚincluded_relativerf   Úold_target_dictÚnew_target_dictr   Útarget_dictÚ
dependencyr‚   s                       r    r¶   r¶   j  sÝ  € ö ô �J‰J×#Ñ# E¬2¯7©7¯?©?¸?Ó+KÓLˆØ�‹7Ø!$ˆI�gÒà!"§¡¨4°Ó!5ˆI�gÑð ˜tÓ#ØÐ#7Ñ8Ó8àØÐ!Ñ"×&Ñ& Ô7ä‡O‚OÜ×ÑÐ<¸oôô 'Ø˜x°4¸ó€Oð
 !&�HÑð ˜?Ó*Ü�Ð)OÑOÓPÐPä$ _Ó?€HØ(*€OÐ$Ñ%Û!ˆô  ŸJ™J×3Ñ3Øœ2Ÿ7™7Ÿ?™?¨?Ó;ó
Ðð 	Ð(Ñ)×0Ñ0Ð1BÖCñ "ô ˜/Ô*ô (Øœ iôô ˜/Ô*ð ˜OÓ+Ø˜OÓ+ÜÐDÀÑVÓWÐWàˆØ”c˜/¨)Ñ4Ó5Ó5ð .¨iÑ8¸Ñ?ˆOÜ!Ÿo™o×6Ñ6ØÐ 1Ñ2óˆOô Ø°/ôð 1@˜IÑ& uÑ-Ø�Q‰JˆEð! ”c˜/¨)Ñ4Ó5Õ5ð& Ð-Ð.ð €LØ�OÓ#Ø*¨9Ô5ˆKØ [Ó0ÙØ)¨.Ô9�
Ø×#Ñ#Ü—J‘J×,Ñ,¨_¸jÈ$ÓOÐPQÑRöó :ñ 6ö Û&ˆJðÜ#ØØØØØØØØ%ö	ò 'ð$   Ð.Ð.øô ó Ü—
‘
×*Ñ*ØÐ9¸OÑKôð ûð	ús   ÉI0É0
J#É:$JÊJ#c           
      ój  •  [         R                   " [         R                  [         R                  5        U R                  5        H  u  pxU[	        5       U'   M     [        U5        [        U[        [        UUUUS5      n	U	(       d  U	$ U	u  p[        R                  U5      nXU
4$ ! [         a,  n[        R                  R                  SU-  5         SnAgSnAf[         aN  n[        SU[        R                  S9  [        [         R"                  " 5       [        R                  S9   SnAgSnAff = f)zŒWrapper around LoadTargetBuildFile for parallel processing.

This wrapper is used when LoadTargetBuildFile is executed in
a worker process.
Fzgyp: %s
Nz
Exception:)Úfile)ÚsignalÚSIGINTÚSIG_IGNr‹   ÚglobalsÚSetGeneratorGlobalsr¶   Úper_process_dataÚper_process_aux_dataÚpopr   ÚsysÚstderrÚwriterw   ÚprintÚ	tracebackÚ
format_exc)Úglobal_flagsr>   r5   r}   r·   r   Úgenerator_input_inforc   rK   Úresultr   r�   r‚   s                r    ÚCallLoadTargetBuildFilerÓ   ô  sù   € ð%Ü�Š”f—m‘m¤V§^¡^Ô4ð '×,Ñ,Ö.‰JˆCØ"ŒG‹I�c‹Nñ /ô 	Ð0Ô1Ü$ØÜÜ ØØØØØó	
ˆö ØˆMà*0Ñ'ˆô
 +×.Ñ.¨Ó?ˆð  °,Ð?Ð?øÜó Ü�
‰
×Ñ˜ q™Ô)ÜûÜó Üˆl˜A¤C§J¡JÒ/ÜŒi×"Ò"Ó$¬3¯:©:Ò6Üûðús+   ‚BB& Â	B& Â&
D2Â0"CÃD2Ã$AD-Ä-D2c                   ó   • \ rS rSrSrg)ÚParallelProcessingErrori+  © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__rÖ   r"   r    rÕ   rÕ   +  s   † Úr"   rÕ   c                   ó$   • \ rS rSrSrS rS rSrg)ÚParallelStatei/  a  Class to keep track of state when processing input files in parallel.

If build files are loaded in parallel, use this to keep track of
state during farming out and processing parallel jobs. It's stored
in a global so that the callback function can have access to it.
c                 óv   • S U l         S U l        S U l        SU l        [	        5       U l        / U l        SU l        g )Nr   F)Úpoolr¥   r|   ÚpendingÚsetÚ	scheduledr   Úerror©Úselfs    r    Ú__init__ÚParallelState.__init__7  s<   € àˆŒ	ð ˆŒàˆŒ	ð ˆŒô ›ˆŒàˆÔàˆ�
r"   c                 óR  • U R                   R                  5         U(       d<  SU l        U R                   R                  5         U R                   R	                  5         gUu  p#nX0R
                  U'   U R
                  S   R                  U5        U HJ  nXPR                  ;  d  M  U R                  R                  U5        U R                  R                  U5        ML     U =R                  S-  sl
        U R                   R                  5         U R                   R	                  5         g)zJHandle the results of running LoadTargetBuildFile in another process.
    TNr¬   rB   )r¥   Úacquirerä   ÚnotifyÚreleaser|   r²   rã   r   r;   rá   )ræ   rÒ   Úbuild_file_path0Úbuild_file_data0Údependencies0Únew_dependencys         r    ÚLoadTargetBuildFileCallbackÚ)ParallelState.LoadTargetBuildFileCallbackJ  sÜ   € ð 	�‰×ÑÔ ÞØˆDŒJØ�N‰N×!Ñ!Ô#Ø�N‰N×"Ñ"Ô$ØØ>DÑ;Ð	¨]Ø&6�	‰	Ð"Ñ#Ø�	‰	Ð&Ñ'×+Ñ+Ð,<Ô=Û+ˆNØ§^¡^Õ3Ø—‘×"Ñ" >Ô2Ø×!Ñ!×(Ñ(¨Ö8ñ ,ð 	�Š˜Ñ�Ø�‰×ÑÔØ�‰×ÑÕ r"   )r¥   r|   r   rä   rá   rà   rã   N)rØ   rÙ   rÚ   rÛ   Ú__doc__rç   rñ   rÜ   rÖ   r"   r    rÞ   rÞ   /  s   † ñòõ&!r"   rÞ   c           
      óÒ  • [        5       n[        R                  " 5       Ul        [	        U 5      Ul        [        U 5      Ul        SUl        Xl	         UR                  R                  5         UR
                  (       d  UR                  (       Ga-  UR                  (       a  GOUR
                  (       d  UR                  R                  5         Mc  UR
                  R                  5       nU=R                  S-  sl        [        5       S   [        5       S   [        5       S   S.n	UR                  (       d.  [         R"                  " [         R$                  " 5       5      Ul        UR                  R'                  [(        U	UUUUUU4UR*                  S9  UR
                  (       a  GM  UR                  (       a  GM-  UR                  R1                  5         UR                  R3                  5         UR                  R5                  5         S Ul        UR                  (       a  [6        R8                  " S5        g g ! [,         a!  n
UR                  R/                  5         U
eS n
A
ff = f)Nr   rB   r   Únon_configuration_keysr�   )r   rõ   r�   )ÚargsÚcallback)rÞ   Ú	threadingÚ	Conditionr¥   r[   r   râ   rã   rá   r|   rê   rä   ÚwaitrÉ   rÅ   rà   ÚmultiprocessingÚPoolÚ	cpu_countÚapply_asyncrÓ   rñ   ÚKeyboardInterruptÚ	terminaterì   ÚcloserZ   rÊ   Úexit)Úbuild_filesr|   r5   r}   r·   r   rÑ   Úparallel_stater¿   rÐ   r‚   s              r    ÚLoadTargetBuildFilesParallelr  _  sé  € ô #“_€NÜ(×2Ò2Ó4€NÔä"& {Ó"3€NÔÜ" ;Ó/€NÔØ€NÔØÔð#Ø× Ñ ×(Ñ(Ô*Ø×)×)¨^×-C×-CÐ-CØ×#×#ÙØ!×.×.Ø×(Ñ(×-Ñ-Ô/Ùà'×4Ñ4×8Ñ8Ó:ˆJà×"Ò" aÑ'Õ"ä!(£¨?Ñ!;Ü*1«)Ð4LÑ*MÜ%,£YÐ/BÑ%CñˆLð "×&×&Ü&5×&:Ò&:¼?×;TÒ;TÓ;VÓ&W�Ô#Ø×Ñ×+Ñ+Ü'à ØØØØØØ(ðð (×CÑCð ,ñ ð% ×)×)Ò)¨^×-C×-CÒ-CðF ×Ñ×$Ñ$Ô&à×Ñ×ÑÔØ×Ñ×ÑÔØ€NÔà××Ü�Š��ð øô ó Ø×Ñ×%Ñ%Ô'Øˆûðús&   ÁAH; Â#DH; Æ)H; È;
I&ÉI!É!I&z{[(Ú{Ú[Ú()Ú}Ú]rk   c                 ó  • / nSn[        U 5       Hm  u  p4U[        ;   a  UR                  U5        US:X  a  UnM*  M,  U[        ;   d  M8  U(       d    gUR	                  5       [        U   :w  a    gU(       a  Mg  X#S-   4s  $    g)Nr   )r   r   rB   )r]   Ú	LBRACKETSr;   ÚBRACKETSrÉ   )Ú	input_strÚstackÚstartrf   Úchars        r    ÚFindEnclosingBracketGroupr  ¢  s|   € Ø€EØ€EÜ  Ö+‰ˆØ”9ÓØ�L‰L˜ÔØ˜‹{Ø’ñ à”XÕÞÙØ�y‰y‹{œh t™nÓ,Ùß�5Ø q™yÐ)Ò)ñ ,ð r"   c                 ó¶   • [        U 5      [        L aG  U (       a@  U S:X  a  gU S   S:X  a  U SS n U (       d  gSU S   s=::  a  S	::  a   U R                  5       $   gg)
zxReturns True if |string| is in its canonical integer form.

The canonical form is such that str(int(string)) == string.
Ú0Tr   Ú-rB   NFÚ1Ú9)r4   ÚstrÚisdigit)Ústrings    r    ÚIsStrCanonicalIntr  ´  sd   € ô
 ˆFƒ|”sÒö Ø˜‹}ØØ�a‰y˜CÓØ  ˜�ÞØ Ø�f˜Q‘iÕ& 3Ô&Ø—~‘~Ó'Ð'ð 'ñ r"   zy(?P<replace>(?P<type><(?:(?:!?@?)|\|)?)(?P<command_string>[-a-zA-Z0-9_.]+)?\((?P<is_array>\s*\[?)(?P<content>.*?)(\]?)\))zy(?P<replace>(?P<type>>(?:(?:!?@?)|\|)?)(?P<command_string>[-a-zA-Z0-9_.]+)?\((?P<is_array>\s*\[?)(?P<content>.*?)(\]?)\))z|(?P<replace>(?P<type>[\^](?:(?:!?@?)|\|)?)(?P<command_string>[-a-zA-Z0-9_.]+)?\((?P<is_array>\s*\[?)(?P<content>.*?)(\]?)\))c                 óÊ   • [         R                  S:X  aN  [        U 5      [        L a$  [        R
                  " SSU S   5      /U SS  -   n U $ [        R
                  " SSU 5      n U $ )NÚwin32z^cat ztype r   rB   )rÊ   Úplatformr4   r[   ÚreÚsub)Úcmds    r    ÚFixupPlatformCommandr"  é  s^   € Ü
‡|�|�wÓÜ�‹9œÒÜ—6’6˜' 7¨C°©FÓ3Ð4°s¸1¸2°wÑ>ˆCð €Jô —&’&˜ '¨3Ó/ˆCØ€Jr"   rB   é   c           	      ó¨  • U[         :X  a	  [        nSnO(U[        :X  a	  [        nSnOU[        :X  a	  [
        nSnO e[        U 5      n[        U5      (       a  [        U5      $ XV;  a  U$ [        UR                  U5      5      nU(       d  U$ UnUR                  5         U GH	  n	U	R                  5       n
[        R                  " [        R                  SU
5        SU
S   ;   nU
S   nS	U
S   ;   nU	R!                  S
5      nU	R#                  S
5      n[%        XnS  5      u  nnUU-   nXnU nUU-   S-   nUS-
  nUUU nU(       a:  [        R&                  R)                  U5      n[+        UU5        [-        UUUU5      nO[-        UXU5      nUR/                  5       nSU
S   ;   =(       a    UU:H  nU(       d  U(       a.  [0        R2                  R5                  U5      nUS:X  a	  U(       d  S nU(       Ga’  [7        U5      [        L a  UOUR9                  S5      nUS   n[0        R2                  R;                  U5      (       a  [=        SU-  5      e[>        (       d!  [0        R2                  RA                  WU5      nO™[0        R2                  R;                  W5      (       a*  [>        S   n[        RB                  RE                  UU5      nOUn[>        S   n[0        R2                  RA                  UUU5      n[        RB                  RG                  U5        [        RB                  RE                  UU5      n[        RB                  RI                  U5      nUSS   H  nURK                  SU-  5        M     URM                  5         GOfU(       Ga3  Sn U
S   (       a  [O        U5      nSn [        U5      W4n![P        RS                  U!S 5      n"U"GcÉ  [        R                  " [        R                  SUU5        SnUS:X  aï  [0        RT                  " 5       n#U(       a  [0        RV                  " U5        [X        R2                  R[                  [0        RT                  " 5       5         [\        R8                  " U5      n$ [_        U$S   5      n%[        U%Rc                  U$SS  5      5      Re                  5       n[X        R2                  Rg                  5         [0        RV                  " U#5        Uc   eO¡U(       a  [=        SU< SU< S35      e[i        U5      n [j        Rl                  " U[j        Rn                  U USS9n'U'Rr                  S:”  a  [=        S UU'Rr                  U4-  5      eU'Rt                  Rw                  S!5      Re                  5       nU[P        U!'   OU[        R                  " [        R                  S"UU5        U"nO+UU;  a   US#   S$;   a  / nO[=        S%U-   S&-   U-   5      eUU   n[y        U[z        5      (       a&  [y        U[        5      (       d  URw                  S!5      n[7        U5      [        L a¡  U H�  n([y        U([z        5      (       a&  [y        U([        5      (       d  U(Rw                  S!5      n(US#   S':X  a  MI  [7        U(5      [        [        4;  d  Md  [=        S(U-   S)-   S*-   U(R|                  R~                  -   5      e   [�        UXU5        OD[7        U5      [        [        4;  a+  [=        S(U-   S)-   S+-   UR|                  R~                  -   5      eU(       a8  [7        U5      [        L a  US S  nOl[\        R8                  " [        U5      5      nOLSn)[7        U5      [        L a   [        RB                  Rƒ                  U5      n)OUn)US U [        U)5      -   X�S  -   nUnGM     X€:X  a'  [        R                  " [        R                  S,U5        O‹[        R                  " [        R                  S-U5        [7        U5      [        L aG  U(       a  [7        US   5      [        L a  O6/ n*U H  n(U*R[                  [-        U(XU5      5        M!     U*nO[-        X�X#5      n[7        U5      [        L a7  […        U5       H&  u  n+n,[        U,5      (       d  M  [        U,5      UU+'   M(     U$ [        U5      (       a  [        U5      nU$ ! [`         a  n&[=        SU$S   < SU&< 35      eS n&A&ff = f! [X        R2                  Rg                  5         [0        RV                  " U#5        f = f! [p         a  n&[=        U&< SU< SU< 35      eS n&A&ff = f).NÚ<Ú>Ú^FzMatches: %rÚ!r4   Úcommand_stringÚ|r±   rB   Ú@r¨   Ú r   z(| cannot handle absolute paths, got "%s"ÚtoplevelÚqualified_out_dirz%s
TÚis_arrayz(Executing command '%s' in directory '%s'Úpymod_do_mainz%Error importing pymod_do_mainmodule (z): zUnknown command string 'z' in 'z'.)ÚstdoutÚshellÚcwdr   z while executing command 'ú' in z1Call to '%s' returned exit status %d while in %s.ri   z2Had cache value for command '%s' in directory '%s'r   ©r(  r«   zUndefined variable ú in r«   z	Variable z- must expand to a string or list of strings; zlist contains a zfound a z?Found only identity matches on %r, avoiding infinite recursion.zFound output %r, recursing.)Cr´   Úearly_variable_reÚ
PHASE_LATEÚlate_variable_reÚPHASE_LATELATEÚlatelate_variable_rer  r  Úintr[   ÚfinditerÚreverseÚ	groupdictrx   rˆ   ÚDEBUG_VARIABLESr  Úendr  rž   rŸ   ÚProcessListFiltersInDictÚExpandVariablesÚstriprn   ro   r‡   r4   ÚsplitÚisabsr   Úgenerator_filelist_pathsrZ   ry   r°   ÚEnsureDirExistsÚWriteOnDiffrÌ   r  rt   Úcached_command_resultsr<   rs   ÚchdirrÊ   r;   ÚshlexÚ
__import__ÚImportErrorÚDoMainÚrstriprÉ   r"  Ú
subprocessÚrunÚPIPErw   Ú
returncoder1  ÚdecoderE   ÚbytesÚ	__class__rØ   Ú#ProcessVariablesAndConditionsInListÚEncodePOSIXShellListr]   )-ÚinputÚphaser5   Ú
build_fileÚvariable_reÚexpansion_symbolr  ÚmatchesÚoutputÚmatch_groupÚmatchÚrun_commandr)  Ú	file_listÚreplace_startÚreplace_endÚc_startÚc_endÚreplacementÚcontents_startÚcontents_endÚcontentsÚprocessed_variablesÚexpand_to_listÚbuild_file_dirÚcontents_listro   r-  Úrel_build_file_dirr.  ÚfÚiÚ	use_shellÚ	cache_keyÚcached_valueÚoldwdÚparsed_contentsÚ	py_moduler‚   rÒ   r˜   Úencoded_replacementÚ
new_outputrf   Úoutstrs-                                                r    rC  rC  ÷  s�  € à”ÓÜ'ˆØÑØ	”*Ó	Ü&ˆØÑØ	”.Ó	 Ü*ˆØÑàˆuä�E“
€IÜ˜×#Ñ#Ü�9‹~Ðð Ó(ØÐô �;×'Ñ'¨	Ó2Ó3€GÞØÐà€Fð
 ‡O�OÔÜˆØ×%Ñ%Ó'ˆÜ�Šœ×+Ñ+¨]¸EÔBð ˜U 6™]Ñ*ˆØÐ/Ñ0ˆð ˜5 ™=Ñ(ˆ	ð $×)Ñ)¨)Ó4ˆØ!—o‘o iÓ0ˆô 5°Y¸~Ð5NÓOÑˆ�%ð $ eÑ+ˆð  ¨kÐ:ˆð '¨Ñ0°1Ñ4ˆØ" Q‘ˆØ˜^¨LÐ9ˆö Ü"%§/¡/×":Ñ":¸9Ó"EÐÜ$ XÐ/BÔCä& x°Ð8KÈZÓX‰Hô ' x°À:ÓNˆHð —>‘>Ó#ˆð   f¡Ñ-×J°)¸{Ñ2Jˆæž)ô  ŸW™WŸ_™_¨ZÓ8ˆNØ Ó#®Ið
 "&�÷ Ü(,¨X«¼$Ò(>™HÀHÇNÁNÐSVÓDWˆMØ'¨Ñ*ˆKÜ�w‰w�}‰}˜[×)Ñ)ÜÐIÈKÑWÓXÐXç+Ò+Ü—w‘w—|‘| N°KÓ@‘ä—7‘7—=‘= ×0Ñ0Ü7¸
ÑC�HÜ),¯©×)@Ñ)@Ø&¨ó*Ñ&ð *8Ð&Ü$<Ð=PÑ$QÐ!Ü—w‘w—|‘|Ð$5Ð7IÈ;ÓW�Ü—
‘
×*Ñ*¨4Ô0äŸ*™*×1Ñ1°$¸ÓGˆKÜ—
‘
×&Ñ& tÓ,ˆAØ" 1 2Ó&�Ø—‘˜ ™
Ö#ñ 'à�G‰GŽIçØˆIØ�Z× Ü ›>�Ø!�	ô ˜X›¨Ð7ˆIÜ1×5Ñ5°iÀÓFˆLØÒ#Ü—’Ü×'Ñ'Ø>ØØ"ô	ð !�à! _Ó4ô ŸIšI›K�EÞ%ÜŸš Ô0Ü—H‘H—O‘O¤B§I¢I£KÔ0ð(ä*/¯+ª+°hÓ*?˜ðÜ(2°?À1Ñ3EÓ(F˜Iô '*Ø%×,Ñ,¨_¸Q¸RÐ-@ÓAó'ç ™&›(ð $ô Ÿ™Ÿ™œÜŸš œØ&Ñ2Ð2Ñ2Þ#Ý"ã)«8ð5óð ô  4°HÓ=�Hðä!+§¢Ø$Ü#-§?¡?Ø"+Ø .Ø"'ñ"˜ð ×(Ñ(¨1Ó,Ü&ØOØ'¨×):Ñ):¸JÐGñHóð ð #)§-¡-×"6Ñ"6°wÓ"?×"FÑ"FÓ"H�Kà4?Ô& yÒ1ä—’Ü×'Ñ'ØHØØ"ô	ð +‘ð ˜yÓ(Ø˜B‘< :Ó-ð #%‘Kä"Ø-°Ñ8¸6ÑAÀJÑNóð ð (¨Ñ1�ä�k¤5×)Ñ)´*¸[Ì#×2NÑ2NØ%×,Ñ,¨WÓ5ˆKÜ�Ó¤Ò$Û#�Ü˜d¤E×*Ñ*´:¸dÄC×3HÑ3HØŸ;™; wÓ/�DØ ‘| sÕ*¬t°D«zÄ#ÄsÀÕ/KÜ"Ø#Ø"ñ#àIñJð -ñ-ð Ÿ.™.×1Ñ1ñ	2óð ñ	 $ô 0Ø˜U¨zõô �+Ó¤s¬C jÓ0ÜØØñàAñBð ñð ×'Ñ'×0Ñ0ñ	1óð ö ô �KÓ ¤DÒ(à$¡Q˜‘ô Ÿš¤S¨Ó%5Ó6‘ð #%ÐÜ�KÓ ¤DÒ(ô '*§j¡j×&EÑ&EÀkÓ&RÑ#à&1Ð#ð �~˜Ð&¬Ð-@Ó)AÑAÀFÈ<ÐDXÑXð ð ‹	ñm ðp ƒÜ�ŠÜ×ÑØPØõ	
ô 	�Šœ×+Ñ+Ð-JÈFÔSÜ�‹<œ4ÒÞœ$˜v a™y›/¬TÒ1ð à�
Û"�DØ×%Ñ%Ü'¨¨eÀ
ÓKöñ #ð $‘ä$ V°IÓJˆFô ˆFƒ|”tÒÜ& vÖ.‰MˆE�6Ü  ×(Ó(Ü # F£��u“ñ /ð €Mô 
˜6×	"Ñ	"Ü�V“ˆà€MøôO  +ó Ý"*à5DÀQÔ5GÊð!Ló#ð ûðûô Ÿ™Ÿ™œÜŸš �ûô& %ó Ü&ã £(ªJð8óð ûðúsH   Ñ c3Ñ7cÒ+c3Ô&d,ã
c0ãc+ã+c0ã0c3ã36d)ä,
eä6eåec           	      óŒ  • [        U 5      [        La  [        US-   5      e[        U 5      S:  a,  [        US-   U S   -   S-   [	        [        U 5      5      -   5      eSnSnU[        U 5      :  aÕ  X   nXS-      n[        U5      [
        La$  [        SR                  X[        U5      5      5      e[        U 5      US-   :”  aZ  [        XS-      5      [
        L aC  XS-      n	US	-   nU[        U 5      :w  a'  [        S
R                  X[        U 5      U-
  5      5      eOSn	US-   nUc  [        XxX’X45      nU[        U 5      :  a  MÕ  U$ )z[Returns the dict that should be used or None if the result was
that nothing should be used.z must be a listr#  r,  r   z  must be at least length 2, not NrB   z.{} {} must be followed by a dictionary, not {}é   z&{} {} has {} unexpected trailing items)r4   r[   r   rH   r  rb   ÚformatÚEvalSingleCondition)
r¥   Úconditions_keyr[  r5   r\  rs  rÒ   Ú	cond_exprÚ	true_dictÚ
false_dicts
             r    ÚEvalConditionr…  [  sz  € ô ˆIƒœdÒ"Ü�~Ð(9Ñ9Ó:Ð:Ü
ˆ9ƒ~˜Óô ØØñà˜‰lñð 1ñ1ô ”#�i“.Ó!ñ	"ó
ð 	
ð 	
€AØ€FØ
Œc�)‹nÓ
Ø‘Lˆ	Ø !™eÑ$ˆ	Ü�	‹?¤$Ò&ÜØ@×GÑGØ"¬t°I«óóð ô
 ˆy‹>˜A ™EÓ!¤d¨9¸±UÑ+;Ó&<ÄÒ&DØ" q¡5Ñ)ˆJØ�A‘ˆAØ”C˜	“NÓ"ÜØ<×CÑCØ&´3°y³>ÀAÑ3Eóóð ð #ð ˆJØ�A‘ˆAØ‰>Ü(Ø j¸óˆFð- Œc�)‹nÕ
ð4 €Mr"   c                 ó”  • [        XXE5      n[        U5      [        [        4;  a"  [	        SUR
                  R                  -   5      e U[        ;   a
  [        U   nO[        USS5      nU[        U'   0 [        S.n[        XxU5      (       a  U$ U$ ! [         an  n	[        S[        U	R                  S   5      U	R                  XYR                  4-  U	R                  U	R                   U	R                  U	R                  5      n
U
eSn	A	f["         a6  n	[$        R&                  R)                  U	SU S	U 35        [+        U	5      eSn	A	ff = f)
zKReturns true_dict if cond_expr evaluates to true, and false_dict
otherwise.úCVariable expansion in this context permits str and int only, found z<string>rt   )rl   r“   z9%s while evaluating condition '%s' in %s at character %d.r   Nzwhile evaluating condition 'r4  )rC  r4   r  r<  Ú
ValueErrorrW  rØ   Úcached_conditions_astsÚcompiler   rt   ru   rö   ÚtextÚoffsetrv   ÚlinenoÚ	NameErrorrx   ry   rz   r   )r‚  rƒ  r„  r[  r5   r\  Úcond_expr_expandedÚast_codeÚenvr‚   Úsyntax_errors              r    r€  r€  Š  sC  € ô )¨¸9ÓQÐÜÐÓ¬¬S zÓ1Üðà ×*Ñ*×3Ñ3ñ4ó
ð 	
ðØÔ!7Ó7Ü-Ð.@ÑA‰HäÐ1°:¸vÓFˆHØ9AÔ"Ð#5Ñ6Ø!¬Ñ0ˆÜ�˜y×)Ñ)ØÐØÐøÜó 	Ü"ðÜ"% a§f¡f¨Q¡i£.°!·&±&¸*ÇhÁhÐ!OñPà�J‰JØ�H‰HØ�H‰HØ�F‰Fó
ˆð ÐûÜó Ü�
‰
×"Ñ"ØØ*Ð+=Ð*>¸eÀJÀ<ÐPô	
ô �q‹kÐûðús,   Á	AB ÂB Â
EÂA)DÄEÄ1EÅEc                 óÐ   • U[         :X  a  SnOU[        :X  a  SnOU[        :X  a  g  eX@;  a  g X   nX	 U H-  n[        XdXU5      nUc  M  [	        XqX#5        [        XX35        M/     g )Nrœ   Útarget_conditions)r´   r8  r:  r…  r³   rŠ   )Úthe_dictr[  r5   r\  r�  Úconditions_listr¥   Ú
merge_dicts           r    ÚProcessConditionsInDictr˜  µ  sƒ   € ð" ”ÓØ%‰Ø	”*Ó	Ø,‰Ø	”.Ó	 ØàˆuàÓ%ØàÑ.€OàÐ ã$ˆ	Ü"Ø u¸ó
ˆ
ð Ó!ô 0Ø 9ôô �x¨ZÖDò %r"   c                 ó„   • UR                  5        H,  u  p#[        U5      [        [        [        4;   d  M%  X0SU-   '   M.     g )Nr   )r‹   r4   r  r<  r[   )r5   r•  rc   rK   s       r    ÚLoadAutomaticVariablesFromDictrš  å  s6   € ð —n‘nÖ&‰
ˆÜ�‹;œ3¤¤TÐ*Õ*Ø#(�c˜C‘iÓ ò 'r"   c                 ó  • UR                  S0 5      R                  5        H]  u  p4[        U5      [        [        [
        4;  a  M%  UR                  S5      (       a  US S nXP;   a  MG  US:X  a	  XQ;   a  X   nOUnX@U'   M_     g )Nr5   Ú%r   )r<   r‹   r4   r  r<  r[   Úendswith)r5   r•  Úthe_dict_keyrc   rK   Úvariable_names         r    ÚLoadVariablesFromVariablesDictr   í  s‚   € ð —l‘l ;°Ó3×9Ñ9Ö;‰
ˆÜ�‹;œs¤C¬Ð.Ó.Ùà�<‰<˜×ÑØ  ˜HˆMØÓ)áØ˜{Ó*¨}Ó/Hð !Ñ/�øàˆMà#(�-Ó ò# <r"   c                 óÜ  • UR                  5       n[        XP5        SU ;   a1  U S   R                  5        H	  u  pgXuU'   M     [        U S   XUS5        [	        XPU5        U R                  5        Hr  u  pgUS:w  d  M  [        U5      [        L d  M!  [        XqXS5      n[        U5      [        [        4;  a(  [        SUR                  R                  -   S-   U-   5      eX€U'   Mt     UR                  5       n[        XP5        [	        XPU5        [        XXS5        UR                  5       n[        XP5        [	        XPU5        U R                  5        Hš  u  pgUS:X  d  [        U5      [        L a  M  [        U5      [        L a  [        XqXSU5        M@  [        U5      [        L a  [        XqXS5        M`  [        U5      [        Ld  Mt  [!        SUR                  R                  -   S-   U-   5      e   g)zìHandle all variable and command expansion and conditional evaluation.

This function is the public entry point for all variable expansions and
conditional evaluations.  The variables_in dictionary will not be modified
by this function.
r5   r‡  z for úUnknown type N)Úcopyrš  r‹   r³   r   r4   r  rC  r<  rˆ  rW  rØ   r˜  rb   r[   rX  r_   )	r•  r[  Úvariables_inr\  rž  r5   rc   rK   Úexpandeds	            r    r³   r³   	  sÔ  € ð ×!Ñ!Ó#€IÜ" 9Ô7à�hÓð
 # ;Ñ/×5Ñ5Ö7‰JˆCØ"�c‹Nñ 8ô 	,Ø�[Ñ! 5°ZÀô	
ô # 9¸ÔEà—n‘nÖ&‰
ˆà�+Õ¤$ u£+´Ô"4Ü& u°YÓKˆHÜ�H‹~¤c¬3 ZÓ/Ü ð%à×(Ñ(×1Ñ1ñ2ð ñð ñ	óð ð %�S‹Mñ 'ð  ×!Ñ!Ó#€IÜ" 9Ô7Ü" 9¸ÔEôD ˜H¨YÔCð ×!Ñ!Ó#€IÜ" 9Ô7Ü" 9¸ÔEð —n‘nÖ&‰
ˆð �+Ó¤ e£´Ò!3ÙÜ�‹;œ$Òô 0Ø˜i°Söô �%‹[œDÒ ô
 0°¸iÖTÜ�%‹[¤Ô#Ü˜O¨e¯o©o×.FÑ.FÑFÈÑPÐSVÑVÓWÐWò% 'r"   c                 óh  • SnU[        U 5      :  Ga   X   n[        U5      [        L a  [        XQX#5        Oå[        U5      [        L a  [        XQX#5        OÆ[        U5      [        L az  [        XQX#5      n[        U5      [        [        4;   a  X`U'   OŠ[        U5      [        L a  X`XDS-   & U[        U5      -  nM¶  [        SUR                  R                  -   S-   U-   5      e[        U5      [        La(  [        SUR                  R                  -   S-   U-   5      eUS-   nU[        U 5      :  a  GM  g g )Nr   rB   zIVariable expansion in this context permits strings and lists only, found z at r¢  z
 at index )rH   r4   rb   r³   r[   rX  r  rC  r<  rˆ  rW  rØ   r_   )Úthe_listr[  r5   r\  rf   r˜   r¥  s          r    rX  rX  ~  s/  € à€EØ
”#�h“-Ô
Ø‰ˆÜ�‹:œÒô 0°¸YÕSÜ�$‹Zœ4ÒÜ/°¸YÕSÜ�$‹Zœ3ÒÜ& t°IÓJˆHÜ�H‹~¤#¤s Ó+Ø"*˜’Ü�h“¤4Ò'Ø.6˜¨¡Ð+Øœ˜X›Ñ&�ñ ä ð+à×(Ñ(×1Ñ1ñ2ð ñð ñ	óð ô �$‹ZœsÒ"ÜØ $§.¡.×"9Ñ"9Ñ9¸LÑHÈ5ÑPóð ð ˜‘	ˆð? ”#�h“-×
Ð
r"   c                 óÒ   • 0 nU S    H[  nX   R                  S/ 5       H@  n[        R                  R                  X#S   US   5      nXA;   a  [	        SU-   5      eX1U'   MB     M]     U$ )ag  Builds a dict mapping fully-qualified target names to their target dicts.

|data| is a dict mapping loaded build files by pathname relative to the
current directory.  Values in |data| are build file contents.  For each
|data| value with a "targets" key, the value of the "targets" key is taken
as a list containing target dicts.  Each target's fully-qualified name is
constructed from the pathname of the build file (|data| key) and its
"target_name" property.  These fully-qualified names are used as the keys
in the returned dict.  These keys provide access to the target dicts,
the dicts in the "targets" lists.
r¬   rš   r1   r2   z!Duplicate target definitions for )r<   rx   ry   ÚQualifiedTargetr   )r|   rš   r\  r›   r1   s        r    ÚBuildTargetsDictrª  £  s~   € ð €GØÐ/Ô0ˆ
ØÑ&×*Ñ*¨9°bÖ9ˆFÜŸ*™*×4Ñ4Ø =Ñ1°6¸)Ñ3DóˆKð Ó%ÜÐBÀ[ÑPÓQÐQØ#)�KÓ ó :ñ 1ð €Nr"   c                 ó2  • [          VVs/ s H  nS  H  o!U-   PM	     M     nnnU R                  5        HÙ  u  pE[        R                  R	                  U5      nUS   nU Hª  nUR                  U/ 5      n	[        U	5       H†  u  p¡[        R                  R                  XaU5      u  p¼n[        (       d  Un[        R                  R                  X¼U5      nXéU
'   US:w  d  Ma  XåS   ;  d  Mk  [        SU-   S-   U-   S-   U-   S-   5      e   M¬     MÛ     gs  snnf )	aÀ  Make dependency links fully-qualified relative to the current directory.

|targets| is a dict mapping fully-qualified target names to their target
dicts.  For each target in this dict, keys known to contain dependency
links are examined, and any dependencies referenced will be rewritten
so that they are fully-qualified and relative to the current directory.
All rewritten dependencies are suitable for use as keys to |targets| or a
similar dict.
©r¨   r(  r«   r2   r   zFound r6  ú of z, but not in dependenciesN)Údependency_sectionsr‹   rx   ry   Ú	BuildFiler<   r]   rµ   r�   r©  r   )rš   ÚdepÚopÚall_dependency_sectionsr›   r¾   Útarget_build_filer2   Údependency_keyr   rf   Údep_fileÚ
dep_targetÚdep_toolsetr¿   s                  r    ÚQualifyDependenciesr¸  ½  s:  € õ 0ôÚ/�S¼.°BˆbŒ¹.‰Ñ/ð ñ ð  'Ÿ}™}žÑˆÜŸJ™J×0Ñ0°Ó8ÐØ˜iÑ(ˆÛ5ˆNØ&Ÿ?™?¨>¸2Ó>ˆLÜ'¨Ö5‘
�Ü47·J±J×4LÑ4LØ%¨Gó5Ñ1� k÷ )Ò(à")�KÜ ŸZ™Z×7Ñ7Ø¨+ó�
ð '1˜UÑ#ð
 # nÕ4Ø"°nÑ*EÕEä"Ø Ø$ñ%à ñ!ð )ñ)ð !ñ	!ð
 !ñ!ð 6ñ6óð ó% 6ó 6ò  /ùó	s   ŠDc           	      óÐ  • U R                  5        GHQ  u  p#[        R                  R                  U5      n[         GH!  nUR                  U/ 5      nSnU[        U5      :  d  M)  [        R                  R                  Xg   5      u  nn	n
U	S:w  a  U
S:w  a  US-   nMI  X„:X  a  [        SU-   S-   U-   S-   5      eXg	 US-
  nX   S   nU Hz  n[        UR                  SS	5      5      (       a  M%  US
   nU	SU1;  a  M4  US   nU
SU1;  a  MC  [        R                  R                  UUU5      nUS-   nUR                  X5        M|     US-   nU[        U5      :  a  Mø  GM$     GMT     g)a«  Expands dependencies specified as build_file:*.

For each target in |targets|, examines sections containing links to other
targets.  If any such section contains a link of the form build_file:*, it
is taken as a wildcard link, and is expanded to list each target in
build_file.  The |data| dict provides access to build file dicts.

Any target that does not wish to be included by wildcard can provide an
optional "suppress_wildcard" key in its target dict.  When present and
true, a wildcard dependency link will not include such targets.

All dependency names, including the keys to |targets| and the values in each
dependency list, must be qualified when this function is called.
r   Ú*rB   zFound wildcard in r­  z referring to same build filerš   r0   Fr1   r2   N)r‹   rx   ry   r¯  r®  r<   rH   ÚParseQualifiedTargetr   r<  r©  Úinsert)rš   r|   r›   r¾   r³  r´  r   rf   Údependency_build_fileÚdependency_targetÚdependency_toolsetÚdependency_target_dictsÚdependency_target_dictÚdependency_target_nameÚdependency_target_toolsetr¿   s                   r    ÚExpandWildcardDependenciesrÄ  î  s°  € ð   'Ÿ}™}ŸÑˆÜŸJ™J×0Ñ0°Ó8Ðß1Ð1ˆNØ&Ÿ?™?¨>¸2Ó>ˆLð ˆEØœ#˜lÓ+Õ+ô
 —J‘J×3Ñ3°LÑ4GÓHñ	Ø)Ø%Ø&à$¨Ó+Ð0BÀcÓ0Ià! A™I�EÙà(Ó=ô #Ø,Ø(ñ)à ñ!ð !ñ!ð :ñ	:óð ð !Ð'Ø ™	�ð
 +/Ñ*EÀiÑ*PÐ'Û.EÐ*ÜÐ1×5Ñ5Ð6IÈ5ÓQ×RÑRÙ Ø-CÀMÑ-RÐ*à)°#Ð7MÐ1NÓNá Ø0FÀyÑ0QÐ-à*°3Ð8QÐ2RÓRá Ü!$§¡×!;Ñ!;Ø-Ø.Ø1ó"�Jð
 " A™I�EØ ×'Ñ'¨Ö:ñ' /Fð*  ™	�ðk œ#˜lÓ+×+Ð+ô 2ò  /r"   c                 ób   • 0 nU  Vs/ s H  o"U;  d  M
  UR                  X"5      PM     sn$ s  snf )zARemoves duplicate elements from items, keeping the first element.©Ú
setdefault)r‹   Úseenr‚   s      r    ÚUnifyrÉ  >  s/   € à€DÙ+0ÓBª5 a¸T±MÓ!ˆD�O‰O˜AÖ!©5ÑBÐBùÒBó   ‡	,”,c                 ó    • U R                  5        H:  u  p[         H+  nUR                  U/ 5      nU(       d  M  [        U5      X#'   M-     M<     g)zPMakes sure every dependency appears only once in all targets's dependency
lists.N)r‹   r®  r<   rÉ  )rš   r1   r¾   r´  r   s        r    ÚRemoveDuplicateDependenciesrÌ  D  sC   € ð %,§M¡M¦OÑ ˆß1ˆNØ&Ÿ?™?¨>¸2Ó>ˆLßˆ|Ü.3°LÓ.A�Ó+ó 2ò %4r"   c                 ób   • 0 nU  Vs/ s H  o3U:w  d  M
  UR                  X35      PM     sn$ s  snf )zRemoves item from items.rÆ  )r‹   r˜   Úresr‚   s       r    ÚFilterrÏ  N  s/   € à
€CÙ*/Ó=ª% Q¸±9Ó ˆC�N‰N˜1Ö ©%Ñ=Ð=ùÒ=rÊ  c                 ó  • U R                  5        Hu  u  p[         Hf  nUR                  U/ 5      nU(       d  M  U HB  nXQ:X  d  M
  X   R                  S0 5      R                  SS5      (       d  M5  [        XA5      X#'   MD     Mh     Mw     g)zWRemove self dependencies from targets that have the prune_self_dependency
variable set.r5   Úprune_self_dependencyr   N©r‹   r®  r<   rÏ  ©rš   r1   r¾   r´  r   Úts         r    ÚRemoveSelfDependenciesrÕ  T  s{   € ð %,§M¡M¦OÑ ˆß1ˆNØ&Ÿ?™?¨>¸2Ó>ˆLßˆ|Û%�AØÕ'Ø™
ß™˜[¨"Ó-ß™Ð4°aÓ8÷9ô 7=Ø(ó7˜Ó3ó &ó 2ò %4r"   c                 ó>  • U R                  5        H‰  u  p[         Hz  nUR                  U/ 5      nU(       d  M  U HV  nUR                  SS5      S:X  d  M  X   R                  S0 5      R                  SS5      (       d  MF  [        X#   U5      X#'   MX     M|     M‹     g)zSRemove dependencies having the 'link_dependency' attribute from the 'none'
targets.r4   NÚnoner5   Úlink_dependencyr   rÒ  rÓ  s         r    Ú%RemoveLinkDependenciesFromNoneTargetsrÙ  f  sŠ   € ð %,§M¡M¦OÑ ˆß1ˆNØ&Ÿ?™?¨>¸2Ó>ˆLßˆ|Û%�AØ"—‘ v¨tÓ4¸Õ>Ø"™:Ÿ>™>¨+°rÓ:×>Ñ>Ð?PÐRS×TÓTÜ:@Ø +Ñ ;¸Qó;˜KÓ7ó &ó 2ò %4r"   c                   ó†   • \ rS rSrSr " S S\5      rS rS rS r	S r
SS
 jrSS jrSS jrSS jr SS jrS rS rSrg	)ÚDependencyGraphNodeiu  zä

Attributes:
  ref: A reference to an object that this DependencyGraphNode represents.
  dependencies: List of DependencyGraphNodes on which this one depends.
  dependents: List of DependencyGraphNodes that depend on this one.
c                   ó   • \ rS rSrSrg)Ú%DependencyGraphNode.CircularExceptioni~  rÖ   Nr×   rÖ   r"   r    ÚCircularExceptionrÝ  ~  s   † Úr"   rÞ  c                 ó,   • Xl         / U l        / U l        g r•   )Úrefr   Ú
dependents)ræ   rà  s     r    rç   ÚDependencyGraphNode.__init__�  s   € ØŒØˆÔØˆ�r"   c                 ó    • SU R                   -  $ )Nz<DependencyGraphNode: %r>©rà  rå   s    r    Ú__repr__ÚDependencyGraphNode.__repr__†  s   € Ø*¨T¯X©XÑ5Ð5r"   c                 óŠ  • [        5       nS n[        U R                  S S  US9nU(       aŽ  UR                  5       nUR	                  UR
                  5        [        UR                  US9 HB  nSn[        UR                  US9 H  nUR
                  U;  d  M  Sn  O   U(       d  M=  X5/-  nMD     U(       a  MŽ  [        U5      $ )Nc                 ó   • U R                   $ )zAExtracts the object that the node represents from the given node.rä  )r`   s    r    ÚExtractNodeRefÚ9DependencyGraphNode.FlattenToList.<locals>.ExtractNodeRef�  s   € à—8‘8ˆOr"   )rc   TF)r   Úsortedrá  rÉ   r²   rà  r   r[   )ræ   Ú	flat_listré  Úin_degree_zerosr`   Únode_dependentÚis_in_degree_zeroÚnode_dependent_dependencys           r    ÚFlattenToListÚ!DependencyGraphNode.FlattenToList‰  sÉ   € ô
 “Lˆ	ò	ô ! §¡±Ð!3¸ÑHˆæð
 #×&Ñ&Ó(ˆDØ�M‰M˜$Ÿ(™(Ô#ô #)¨¯©¸nÔ"M�Ø$(Ð!ô 28Ø"×/Ñ/°^ô2Ð-ð 1×4Ñ4¸IÕEð
 -2Ð)Ùñ2÷ %Ð$ð $Ð'7Ñ7’Oñ) #N÷ ˆoô@ �I‹Ðr"   c                 óh   ^^^• / m[        5       mUUU4S jmTR                  U 5        T" X /5        T$ )zJ
Returns a list of cycles in the graph, where each cycle is its own list.
c           	      óØ   >• U R                    HY  nX!;   a,  TR                  U/US UR                  U5      S-    -   5        M4  UT;  d  M<  TR                  U5        T" X"/U-   5        M[     g )NrB   )rá  r;   rf   r²   )r`   ro   rg   ÚVisitÚresultsÚvisiteds      €€€r    rõ  Ú-DependencyGraphNode.FindCycles.<locals>.VisitÃ  sa   ø€ ØŸœ�Ø“=Ø—N‘N E 7¨TÐ2I°D·J±J¸uÓ4EÈÑ4IÐ-JÑ#JÖKØ 'Õ)Ø—K‘K Ô&Ù˜% ¨4¡Ö0ò )r"   )râ   r²   )ræ   rõ  rö  r÷  s    @@@r    Ú
FindCyclesÚDependencyGraphNode.FindCycles¼  s3   ú€ ð ˆÜ“%ˆ÷	1ð 	�‰�DÔÙˆd�FÔàˆr"   Nc                 ó¶   • Uc  / nU R                    HC  nUR                  (       d  M  UR                  U;  d  M(  UR                  UR                  5        ME     U$ )z+Returns a list of just direct dependencies.)r   rà  r;   ©ræ   r   r¿   s      r    ÚDirectDependenciesÚ&DependencyGraphNode.DirectDependenciesÐ  sK   € àÑØˆLà×+Ô+ˆJà�~�~‰~ *§.¡.¸Õ"DØ×#Ñ# J§N¡NÖ3ñ ,ð
 Ðr"   c                 óä   • Uc  / nSnU[        U5      :  aY  X#   nX   nSnUR                  S/ 5       H#  nXr;  d  M
  UR                  X6-   U5        US-   nM%     US-   nU[        U5      :  a  MY  U$ )a*  Given a list of direct dependencies, adds indirect dependencies that
other dependencies have declared to export their settings.

This method does not operate on self.  Rather, it operates on the list
of dependencies in the |dependencies| argument.  For each dependency in
that list, if any declares that it exports the settings of one of its
own dependencies, those dependencies whose settings are "passed through"
are added to the list.  As new items are added to the list, they too will
be processed, so it is possible to import settings through multiple levels
of dependencies.

This method is not terribly useful on its own, it depends on being
"primed" with a list of direct dependencies such as one provided by
DirectDependencies.  DirectAndImportedDependencies is intended to be the
public entry point.
r   rB   r   )rH   r<   r¼  )ræ   rš   r   rf   r¿   Údependency_dictÚ	add_indexÚimported_dependencys           r    Ú_AddImportedDependenciesÚ,DependencyGraphNode._AddImportedDependenciesÜ  sš   € ð$ ÑØˆLàˆØ”c˜,Ó'Ó'Ø%Ñ,ˆJØ%Ñ1ˆOð ˆIØ'6×':Ñ':Ø+¨Rö(Ð#ð 'Õ:Ø ×'Ñ'¨Ñ(9Ð;NÔOØ )¨A¡’Iñ(ð ˜A‘IˆEð! ”c˜,Ó'Õ'ð$ Ðr"   c                 óF   • U R                  U5      nU R                  X5      $ )z¨Returns a list of a target's direct dependencies and all indirect
dependencies that a dependency has advertised settings should be exported
through the dependency for.
)rý  r  )ræ   rš   r   s      r    ÚDirectAndImportedDependenciesÚ1DependencyGraphNode.DirectAndImportedDependencies  s%   € ð ×.Ñ.¨|Ó<ˆØ×,Ñ,¨WÓCÐCr"   c                 óà   • Uc
  [        5       nU R                   HP  nUR                  c  M  UR                  U;  d  M$  UR                  U5        UR	                  UR                  5        MR     U$ )zEReturns an OrderedSet of all of a target's dependencies, recursively.)r   r   rà  ÚDeepDependenciesr²   rü  s      r    r	  Ú$DependencyGraphNode.DeepDependencies  sb   € àÑô &›<ˆLà×+Ô+ˆJà�~‰~Ñ%ÙØ�~‰~ \Õ1Ø×+Ñ+¨LÔ9Ø× Ñ  §¡Ö0ñ ,ð Ðr"   c                 ó¾  • Uc
  [        5       nU R                  c  U$ SXR                     ;  a  [        S5      eSXR                     ;  a  [        SXR                     S   -  5      eXR                     S   nU[        ;   nU(       a	  U(       d  U$ US:X  a@  XR                     R	                  SS5      (       d  UR                  U R                  5        U$ U(       d  US;   a  U$ U(       d  US	:X  a	  U(       d  U$ U R                  U;  aO  UR                  U R                  5        U(       d  U(       d&  U R                   H  nUR                  XUS
5        M     U$ )aM  Returns an OrderedSet of dependency targets that are linked
into this target.

This function has a split personality, depending on the setting of
|initial|.  Outside callers should always leave |initial| at its default
setting.

When adding a target to the list of dependencies, this function will
recurse into itself with |initial| set to False, to collect dependencies
that are linked into the linkable target for which the list is being built.

If |include_shared_libraries| is False, the resulting dependencies will not
include shared_library targets that are linked into this target.
r1   z&Missing 'target_name' field in target.r4   z!Missing 'type' field in target %sr×  Údependencies_traverseT)r   r   r	   r
   r   F)r   rà  r   Úlinkable_typesr<   r²   r   Ú_LinkDependenciesInternal)ræ   rš   Úinclude_shared_librariesr   ÚinitialÚtarget_typeÚis_linkabler¿   s           r    r  Ú-DependencyGraphNode._LinkDependenciesInternal   sb  € ð" Ñô &›<ˆLð �8‰8ÑØÐð  ¯©Ñ 1Ó1ÜÐCÓDÐDà˜§¡Ñ*Ó*ÜØ3°g¿h¹hÑ6GÈÑ6VÑVóð ð Ÿh™hÑ'¨Ñ/ˆà!¤^Ñ3ˆæž;ð
  Ðð ˜&Ó ¨·±Ñ):×)>Ñ)>Ø# T÷*
ñ *
ð ×Ñ˜TŸX™XÔ&ØÐö ˜;ð +
ó 
ð  Ðö ØÐ/Ó/Þ,àÐð �8‰8˜<Ó'Ø×Ñ˜TŸX™XÔ&Þžkð
 #'×"3Ô"3�JØ×8Ñ8Ø¸<Èöñ #4ð
 Ðr"   c                 ó`   • XR                      R                  SS5      nU R                  X5      $ )z]
Returns a list of dependency targets whose link_settings should be merged
into this target.
Ú(allow_sharedlib_linksettings_propagationT)rà  r<   r  )ræ   rš   r  s      r    ÚDependenciesForLinkSettingsÚ/DependencyGraphNode.DependenciesForLinkSettings€  s4   € ð $+¯8©8Ñ#4×#8Ñ#8Ø6¸ó$
Ð ð ×-Ñ-¨gÓPÐPr"   c                 ó&   • U R                  US5      $ )zH
Returns a list of dependency targets that are linked into this target.
T)r  )ræ   rš   s     r    ÚDependenciesToLinkAgainstÚ-DependencyGraphNode.DependenciesToLinkAgainst�  s   € ð ×-Ñ-¨g°tÓ<Ð<r"   )r   rá  rà  r•   )NT)rØ   rÙ   rÚ   rÛ   ró   r   rÞ  rç   rå  rñ  rù  rý  r  r  r	  r  r  r  rÜ   rÖ   r"   r    rÛ  rÛ  u  sW   † ñô˜Hô òò
6ò1òfô(
ô(ôTDôð$ MQô^ò@Qõ=r"   rÛ  c                 ó  • 0 nU R                  5        H  u  p#X!;  d  M  [        U5      X'   M     [        S 5      nU R                  5        H°  u  p#X   nUR                  S5      nU(       d%  U/Ul        UR                  R                  U5        MF  U Hd  nUR                  U5      nU(       d  [        SU< SU< 35      eUR                  R                  U5        UR                  R                  U5        Mf     M²     UR                  5       n	[        U	5      [        U 5      :w  aÝ  UR                  (       dN  [        [        U 5      5      nX   nUR                  R                  U5        UR                  R                  U5        / n
UR                  5        HA  nU Vs/ s H  oÌR                  PM     nnU
R                  SSR                  U5      -  5        MC     [        R                  SSR                  U
5      -   5      eX/$ s  snf )Nr   zDependency 'z(' not found while trying to load target ú	Cycle: %sú -> z%Cycles in dependency graph detected:
Ú
)r‹   rÛ  r<   r   rá  r;   r   rñ  rH   ÚnextÚiterrù  rà  rZ   rÞ  )rš   Údependency_nodesr›   ÚspecÚ	root_nodeÚtarget_noder   r¿   Údependency_noderì  ÚcyclesÚcycler`   Úpathss                 r    ÚBuildDependencyListr)  –  sÍ  € ð ÐØŸ™ž‰ˆØÕ)Ü':¸6Ó'BÐÓ$ñ (ô $ DÓ)€IØŸ™ž‰ˆØ&Ñ.ˆØ—x‘x Ó/ˆÞØ(1 {ˆKÔ$Ø× Ñ ×'Ñ'¨Ö4ã*�
Ø"2×"6Ñ"6°zÓ"B�Þ&Ý"ã6@Â&ðJóð ð ×(Ñ(×/Ñ/°Ô@Ø×*Ñ*×1Ñ1°+Ö>ó +ñ (ð" ×'Ñ'Ó)€Iô ˆ9ƒ~œ˜W›Ó%Ø×#×#ô œ$˜w›-Ó(ˆFØ*Ñ2ˆKØ×$Ñ$×+Ñ+¨IÔ6Ø× Ñ ×'Ñ'¨Ô4àˆØ×)Ñ)Ö+ˆEÙ*/Ó0ª% $—X”X©%ˆEÐ0Ø�M‰M˜+¨¯©°EÓ(:Ñ:Ö;ñ ,ô "×3Ñ3Ø4°t·y±yÀÓ7HÑHó
ð 	
ð Ð(Ð(ùò 1s   ÆHc                 óÒ  • 0 nU  H6  n[         R                  R                  U5      nX1;  d  M)  [        U5      X'   M8     U R	                  5        H×  u  p$[         R                  R                  U5      nX   nUR                  S/ 5      nU H—  n [         R                  R                  U5      nXƒ:X  a  M*  UR                  U5      n
U
(       d  [        SU-  5      eX¥R                  ;  d  Ma  UR                  R                  U
5        U
R                  R                  U5        M™     MÙ     [        S 5      nUR                  5        HT  n[        UR                  5      S:X  d  M  UR                  R                  U5        UR                  R                  U5        MV     UR                  5       n[        U5      [        U5      :w  aè  UR                  (       dX  [        [        UR                  5       5      5      nUR                  R                  U5        UR                  R                  U5        / nUR!                  5        HB  nU Vs/ s H  nUR"                  PM     nnUR                  SSR%                  U5      -  5        MD     [        R'                  SSR%                  U5      -   5      eg ! [         a)  n	[         R                  R                  U	SU-  5        e S n	A	ff = fs  snf )	Nr   z,while computing dependencies of .gyp file %szDependency '%s' not foundr   r  r  z/Cycles in .gyp file dependency graph detected:
r  )rx   ry   r¯  rÛ  r‹   r<   r   rz   r   r;   rá  rW   rH   rñ  r  r   rù  rà  rZ   rÞ  )rš   r!  r›   r\  r"  Úbuild_file_nodeÚtarget_dependenciesr¿   r½  r‚   r%  r#  rì  Ú	file_noder&  r'  r`   r(  s                     r    Ú#VerifyNoGYPFileCircularDependenciesr.  Ê  s~  € ð ÐÛˆÜ—Z‘Z×)Ñ)¨&Ó1ˆ
ØÕ-Ü+>¸zÓ+JÐÓ(ñ ð  Ÿ™ž‰ˆÜ—Z‘Z×)Ñ)¨&Ó1ˆ
Ø*Ñ6ˆØ"Ÿh™h ~°rÓ:ÐÛ-ˆJðÜ(+¯
©
×(<Ñ(<¸ZÓ(HÐ%ð %Ó2áØ.×2Ñ2Ð3HÓIˆOÞ"ÜÐ:Ð=RÑRÓSÐSØ×&BÑ&BÕBØ×,Ñ,×3Ñ3°OÔDØ×*Ñ*×1Ñ1°/ÖBó# .ñ	 (ô0 $ DÓ)€IØ+×2Ñ2Ö4ˆÜˆ×+Ñ+Ó,°Õ1Ø×(Ñ(×/Ñ/°	Ô:Ø× Ñ ×'Ñ'¨Ö8ñ 5ð
 ×'Ñ'Ó)€Iô ˆ9ƒ~œÐ-Ó.Ó.Ø×#×#ô œTÐ"2×"9Ñ"9Ó";Ó<Ó=ˆIØ×"Ñ"×)Ñ)¨)Ô4Ø× Ñ ×'Ñ'¨	Ô2ØˆØ×)Ñ)Ö+ˆEÙ*/Ó0ª% $�T—X”X©%ˆEÐ0Ø�M‰M˜+¨¯©°EÓ(:Ñ:Ö;ñ ,ô "×3Ñ3Ø>ÀÇÁÈ6ÓARÑRó
ð 	
ð /øô7 ó Ü—
‘
×*Ñ*ØÐEÈ
ÑRôð ûð	üòH 1s   ÂJ.ÉK$Ê.
K!Ê8$KËK!c                 ó–  • U HÃ  nX$   n[         R                  R                  U5      nU S:X  a  X4   R                  5       nOBU S:X  a  X4   R	                  U5      nO(U S:X  a  X4   R                  U5      nO[        SU -   5      eU H<  nX(   n	X	;  a  M  [         R                  R                  U5      n
[        XYU    Xj5        M>     MÅ     g )Nr6   r7   r8   zCDoDependentSettings doesn't know how to determine dependencies for )rx   ry   r¯  r	  r  r  r   rŠ   )rc   rì  rš   r!  r›   r¾   r\  r   r¿   r   r½  s              r    ÚDoDependentSettingsr0    sÞ   € ó ˆØ‘oˆÜ—Z‘Z×)Ñ)¨&Ó1ˆ
àÐ*Ó*Ø+Ñ3×DÑDÓF‰LØÐ/Ó/Ø+Ñ3×QÑQØó‰Lð �OÓ#Ø+Ñ3×OÑOÐPWÓX‰Läð$Ø&)ñ*óð ó
 'ˆJØ%Ñ1ˆOØÓ)ÙÜ$'§J¡J×$8Ñ$8¸Ó$DÐ!ÜØ¨SÑ1°:öó 'ò% r"   c                 óÊ  • U  GHW  nX   nUS   nUS:X  a°  SU;  a  M  UR                  S/ 5      S S  US'   X$   R                  U5      nSnU[        U5      :  aR  Xx   n	X   n
U
S   S:X  a  U
R                  SS5      (       a  U
S   S:w  a  X•S   ;  a  Xx	 OUS-   nU[        U5      :  a  MR  [        U5      S:”  a  XuS'   M¾  US	 MÃ  U[        ;   d  MÏ  X$   R	                  U5      nU H3  n	X”:X  a  M
  SU;  a  / US'   X•S   ;  d  M  US   R                  U	5        M5     U(       d  GM%  SU;   d  GM.  [        U 5       Vs/ s H  nXÅS   ;   d  M  UPM     snUS'   GMZ     g s  snf )	Nr4   Ústatic_libraryr   r'   r   Úhard_dependencyFrB   )r<   r  rH   r  r  r;   Úreversed)rì  rš   r!  Úsort_dependenciesr›   r¾   r  r   rf   r¿   r   Úlink_dependenciesr°  s                r    ÚAdjustStaticLibraryDependenciesr7  &  sº  € ô ˆØ‘oˆØ! &Ñ)ˆàÐ*Ó*Ø [Ó0Ùà3>·?±?À>ÐSUÓ3VÙð4ˆKÐ/Ñ0ð ,Ñ3×QÑQØóˆLð ˆEØœ#˜lÓ+Ó+Ø)Ñ0�
Ø")Ñ"5�ð
 $ FÑ+Ð/?Ó?Ø+×/Ñ/Ð0AÀ5×IÑIà# FÑ+Ð/?Ó?Ø"°nÑ*EÓEð
 %Ñ+à! A™I�Eð% œ#˜lÓ+Õ+ô, �<Ó  1Ó$Ø.:˜NÓ+à Ò/àœNÕ*ð
 !1Ñ 8× RÑ RØó!Ðó 0�
ØÓ'ÙØ!¨Ó4Ø24�K Ñ/Ø°Ñ%@Õ@Ø Ñ/×6Ñ6°zÖBñ 0÷ !Ñ  ^°{Ö%Bô  (¨	Ô2ó/â2˜Ø¨.Ñ9Ñ9÷ Ù2ñ/�˜NÔ+òO ùòN/s   Ä>E ÅE z["']?[-/$<>^]c           
      óÈ  • X:X  d  [         R                  U5      (       a  U$ [        R                  R	                  [        R                  R                  [        R                  R                  [        R                  R                  U5      [        R                  R                  U 5      5      U5      5      R                  SS5      nUR                  S5      (       a  US-  nU$ )Nrª   r«   )Úexception_rerb  rn   ro   r†   rZ   rx   ry   r°   r‡   r±   r�  )Úto_fileÚfro_filer˜   Úrets       r    ÚMakePathRelativer=  �  s«   € ð$ Óœl×0Ñ0°×6Ñ6Øˆô
 �g‰g×ÑÜ�G‰G�L‰LÜ—
‘
×'Ñ'Ü—G‘G—O‘O HÓ-¬r¯w©w¯©¸wÓ/Góð ó	ó
÷ ‰'�$˜Ó
ð 	ð �=‰=˜×ÑØ�3‰JˆCØˆ
r"   c                 ób  ^• S mU4S jnSnU  Vs1 s H  nT" U5      (       d  M  UiM     n	nU GHv  n
Sn[        U
5      [        [        4;   a@  U(       a  [        X#U
5      OU
n[        U
5      [        L a  U
R	                  S5      (       d  SnOd[        U
5      [
        L a  0 n[        XÊX#5        OC[        U
5      [        L a  / n[        XÊX#5        O"[        SU
R                  R                  -   5      eU(       aM  U(       a  U" XÉU 5      (       d5  U R                  U5        T" U5      (       a  U	R                  U5        GM  GM  GM  U(       a$  XÀ;   a  U R                  U5        U(       a  XÀ;   a  M  U R                  X|5        T" U5      (       a  U	R                  U5        US-   nGMy     g s  snf )	Nc                 ó   • U R                   $ r•   )Ú__hash__)Úvals    r    Úis_hashableÚMergeLists.<locals>.is_hashable©  s   € Ø�|‰|Ðr"   c                 ó.   >• T" U 5      (       a  X;   $ X;   $ r•   rÖ   )Úxr   r‹   rB  s      €r    Úis_in_set_or_listÚ%MergeLists.<locals>.is_in_set_or_list­  s   ø€ Ù�q�>‰>Ø‘6ˆMØ‰zÐr"   r   Fr  Tz/Attempt to merge list item of unsupported type rB   )r4   r  r<  r=  Ú
startswithrb   rŠ   r[   Ú
MergeListsr_   rW  rØ   r;   r²   Úremover¼  )ÚtoÚfror:  r;  Úis_pathsr;   rF  Úprepend_indexrE  Úhashable_to_setr˜   Ú	singletonÚto_itemrB  s                @r    rI  rI  ¦  s|  ø€ òõð
 €Mñ #%Ó7¢"˜Q©°A¯—q¡"€OÐ7ÜˆØˆ	Ü�‹:œ#œs˜Ó#æCKÔ& w¸$Ô?ÐQUˆGä˜“J¤#Ò%¨$¯/©/¸#×*>Ñ*>ð !�	øÜ�$‹Zœ4Òð ˆGÜ�w gÕ8Ü�$‹Zœ4Òð ˆGÜ�w gÕ8äØAØ—.‘.×)Ñ)ñ*óð ö
 ö Ñ$5°gÐPR×$SÑ$SØ—	‘	˜'Ô"Ù˜w×'Ñ'Ø#×'Ñ'¨×0ò (ò %Tö  £Ø—	‘	˜'Ô"ö  ¥ð �I‰I�mÔ-Ù˜7×#Ñ#Ø×#Ñ# GÔ,Ø)¨AÑ-‹Mòg ùò 8s
   ‘F,¦F,c           	      óê  • UR                  5        GH^  u  pEX@;   a¢  Sn[        U5      [        [        4;   a  [        X   5      [        [        4;  a  SnO[	        U[        X   5      5      (       d  SnU(       aD  [        SUR                  R                  -   S-   X   R                  R                  -   S-   U-   5      e[        U5      [        [        4;   a(  [        U5      nU(       a  [        X#U5      X'   Mè  XPU'   Mî  [        U5      [        L a  X@;  a  0 X'   [        X   XRU5        GM  [        U5      [        L Ga  US   nSn	US:X  a  US S n
XªS-   /n/ X
'   O:US	:X  a  US S n
U
S-   U
S-   /nSn	O"US:X  a  US S n
XªS-   U
S	-   /nOUn
U
S-   U
S-   /nU H  nXÁ;   d  M
  [        S
U-   S-   U-   5      e   X ;   ak  US:X  a  GMµ  [        X
   5      [        LaM  [        SUR                  R                  -   S-   X
   R                  R                  -   S-   U
-   S-   U-   S-   5      eO/ X
'   [        U
5      n[        X
   XRX=U	5        GM9  [        SUR                  R                  -   S-   U-   5      e   g )NFTz$Attempt to merge dict value of type z into incompatible type z	 for key r   Ú=Ú?Ú+zIncompatible list policies ú and r  rk   z0Attempt to merge dict value of unsupported type )r‹   r4   r  r<  rE   r_   rW  rØ   r!   r=  rb   rŠ   r[   r   rI  )rK  rL  r:  r;  r’   r“   Ú	bad_mergeÚis_pathÚextr;   Ú	list_baseÚlists_incompatibleÚlist_incompatiblerM  s                 r    rŠ   rŠ   í  sâ  € à—	‘	—‰ˆð ‹7ØˆIÜ�A‹wœ3¤˜*Ó$Ü˜™“;¤s¬C jÓ0Ø $�IøÜ ¤4¨©£;×/Ñ/Ø �	æÜØ:Ø—k‘k×*Ñ*ñ+à0ñ1ð ‘e—o‘o×.Ñ.ñ/ð "ñ	"ð
 ñóð ô �‹7”sœC�jÓ ä# AÓ&ˆGÞÜ(¨¸AÓ>�“à�1“Ü�!‹WœŠ_à‹{Ø�‘Ü�r‘u˜a¨(×3Ü�!‹Wœ‹_ð �B‘%ˆCØˆFØ�c‹zØ˜c˜r˜F�	Ø&/¸S±Ð%AÐ"Ø "�’Ø˜“Ø˜c˜r˜F�	Ø&/°#¡o°yÀ3±Ð%GÐ"Ø‘Ø˜“Ø˜c˜r˜F�	Ø&/¸S±À)ÈcÁ/Ð%RÑ"à�	Ø&/°#¡o°yÀ3±Ð%GÐ"ó
 &8Ð!Ø$Õ+Ü"Ø5¸Ñ9¸GÑCÐFWÑWóð ñ &8ð ‹Ø˜#“:ò Ü˜"™-Ó(´Ò4ô $Ø>ØŸ+™+×.Ñ.ñ/à4ñ5ð ™-×1Ñ1×:Ñ:ñ;ð &ñ	&ð
 $ñ$ð ñð ñð ñó
ð 
ð 5ð !#�‘ô % YÓ/ˆHÜ�r‘} a°(Àf×MäØBØ—+‘+×&Ñ&ñ'àñð ñóð òQ r"   c           	      ó¢   • X4;   a  g US   U   nUR                  S/ 5       H  n[        U UUUXC/-   5        M     [        XX5        SU ;   a  U S	 g g )Nr$   Úinherit_fromÚabstract)r<   ÚMergeConfigWithInheritancerŠ   )Únew_configuration_dictr\  r¾   Úconfigurationr÷  Úconfiguration_dictÚparents          r    r`  r`  _	  sz   € ð ÓØð %Ð%5Ñ6°}ÑEÐð %×(Ñ(¨¸Ö<ˆÜ"Ø"ØØØØ�oÑ%ö	
ñ =ô Ð%¸:ÔRð Ð+Ó+Ø" :Ñ.ð ,r"   c           	      ó$  • / SQn[         R                  R                  U 5      nSU;  a  S0 0US'   SU;  aP  US   R                  5        VVs/ s H  u  pEUR	                  S5      (       a  M  UPM!     nnn[        U5      S   US'   0 nUS   nUR                  5        H‡  u  pšU
R	                  S5      (       a  M  0 nUR                  5        HC  u  pÍUSS  nXâ;   a  US S OUnU[        ;  d  M"  [         R                  R                  U5      X¼'   ME     [        X³X/ 5        X·U	'   M‰     U H  n	UU	   US   U	'   M     US   nUR                  5        VVs0 s H!  u  nnUR	                  S5      (       a  M  UU_M#     snnUS'   / nU H1  nUSS  nXâ;   a  US S OUnU[        ;  d  M   UR                  U5        M3     U H  nX	 M     US    H4  n	US   U	   nU H#  nU[        ;   d  M  [        U< SU	< S	U < 35      e   M6     g s  snnf s  snnf )
N)rS  rU  rT  r(  r«   r$   ÚDefaultr&   r_  r   r   z not allowed in the z  configuration, found in target )rx   ry   r¯  r‹   r<   rë  rõ   rž   rŸ   r`  r;   Úinvalid_configuration_keysr   )r›   r¾   Úkey_suffixesr\  rs  ÚconfigÚconcreteÚmerged_configurationsÚconfigsrb  Úold_configuration_dictra  rc   Ú
target_valÚkey_extÚkey_baser’   r“   Údelete_keysrc  s                       r    ÚSetUpConfigurationsrr  {	  sb  € ò
 -€Lä—‘×%Ñ% fÓ-€Jð
 ˜{Ó*Ø)2°B¨ˆÐ$Ñ%Ø kÓ1ð  +Ð+;Ñ<×BÑBÔDô
âD‘�Ø—:‘:˜j×)÷ ÙDð 	ñ 
ô
 06°hÓ/?ÀÑ/BˆÐ+Ñ,àÐØÐ*Ñ+€GØ3:·=±=¶?Ñ/ˆà!×%Ñ% j×1Ñ1Ùð "$ÐØ!,×!2Ñ!2Ö!4ÑˆSØ˜"˜#�hˆGØ#*Ó#:�s˜3˜B‘xÀˆHØÔ5Õ5Ü.1¯o©o×.FÑ.FÀzÓ.RÐ&Ó+ñ	 "5ô 	#Ø"°ÈBô	
ð 0F˜mÓ,ñ' 4Có, /ˆØ7LØñ8
ˆÐ$Ñ% mÓ4ñ /ð Ð*Ñ+€Gà Ÿ™œô%Ú(‘��A°·±°j×0A‹ˆˆ1Š™ò%€KÐ Ñ!ð €KÛˆØ�b�c�(ˆØ&Ó6�3�s˜‘8¸CˆØÔ1Õ1Ø×Ñ˜sÖ#ñ	 ó
 ˆØÒñ ð %Ð%5Ô6ˆØ(Ð)9Ñ:¸=ÑIÐÛ%ˆCØÔ0Õ0Üã#&«²vð?óð ó &ò 7ùóo
ùóL%s   ÁHÁ-HÅHÅ6Hc                 ó|  • / n/ nUR                  5        HÓ  u  pEUS   nUS;  a  M  [        U5      [        La+  [        U S-   U-   S-   UR                  R
                  -   5      eUSS nXq;  a  UR                  U5        Ml  [        X   5      [        La;  X   n[        U S-   U-   S-   UR                  R
                  -   S-   SSS	.U   -   5      eXr;  d  MÂ  UR                  U5        MÕ     U H  nX	 M     U GHh  nX   n	[        S
[        U	5      -  5      n
US-   nX±;   a,  X    H"  n[        U	5       H  u  pÞXÎ:X  d  M  SX­'   M     M$     X	 US-   nXñ;   aŽ  X    H„  nUu  nn[        R                  " U5      nUS:X  a  SnO#US:X  a  SnO[        SU-   S-   U -   S-   U-   5      e[        U	5       H+  u  pÞX­   U:X  a  M  UR                  U5      (       d  M'  UX­'   M-     M†     X	 US-   nUU;   a  [        U S-   U-   S-   U-   5      e/ n[        [        U
5      S-
  SS5       H#  nX­   S:X  d  M  UR                  SX�   5        X�	 M%     [        U5      S:”  d  GMc  UUU'   GMk     UR                  5        HC  u  pE[        U5      [        L a  [!        XE5        M$  [        U5      [        L d  M8  [#        XE5        ME     g)aµ  Process regular expression and exclusion-based filters on lists.

An exclusion list is in a dict key named with a trailing "!", like
"sources!".  Every item in such a list is removed from the associated
main list, which in this example, would be "sources".  Removed items are
placed into a "sources_excluded" list in the dict.

Regular expression (regex) filters are contained in dict keys named with a
trailing "/", such as "sources/" to operate on the "sources" list.  Regex
filters in a dict take the form:
  'sources/': [ ['exclude', '_(linux|mac|win)\.cc$'],
                ['include', '_mac\.cc$'] ],
The first filter says to exclude all files ending in _linux.cc, _mac.cc, and
_win.cc.  The second filter then includes all files ending in _mac.cc that
are now or were once in the "sources" list.  Items matching an "exclude"
filter are subject to the same processing as would occur if they were listed
by name in an exclusion list (ending in "!").  Items matching an "include"
filter are brought back into the main list if previously excluded by an
exclusion list or exclusion regex filter.  Subsequent matching "exclude"
patterns can still cause items to be excluded after matching an "include".
r   >   r(  r«   z key z must be list, not Nz when applying Ú	exclusionÚregexr5  )r   r(  r   r«   Úexcluder�   rB   zUnrecognized action r6  Ú	_excludedzD must not be present prior  to applying exclusion/regex filters for )r‹   r4   r[   rˆ  rW  rØ   r;   rH   r]   r  rŠ  Úsearchr   Úranger¼  rb   rB  ÚProcessListFiltersInList)Únamer•  ÚlistsÚ	del_listsrc   rK   Ú	operationÚlist_keyÚdel_listr§  Úlist_actionsÚexclude_keyÚexclude_itemrf   Ú	list_itemÚ	regex_keyÚ
regex_itemÚactionÚpatternÚ
pattern_reÚaction_valueÚexcluded_keyÚexcluded_lists                          r    rB  rB  Ë	  sT  € ð> €EØ€IØ—n‘nÖ&‰
ˆØ˜‘Gˆ	Ø˜JÓ&Ùä�‹;œdÒ"ÜØ�w‘ Ñ$Ð'<Ñ<¸u¿¹×?WÑ?WÑWóð ð �s˜�8ˆØÓ#ð ×Ñ˜SÔ!Ùä�Ñ"Ó#¬4Ò/ØÑ&ˆEÜØØñàñð (ñ(ð —/‘/×*Ñ*ñ	+ð
 $ñ$ð $¨'Ñ2°9Ñ=ñ>óð ð Õ Ø�L‰L˜Ö"ñ? 'óD ˆØÒñ ô ˆØÑ%ˆô ˜E¤C¨£MÑ1Ó2ˆà ‘nˆØÓ"Ø (Ô 5�Ü(1°(Ö(;Ñ$�EØ#Õ0ð /0˜Ó+ó	 )<ñ !6ð Ð%à˜s‘Nˆ	ØÓ Ø&Ô1�
Ø$.Ñ!�˜ÜŸZšZ¨Ó0�
à˜YÓ&à#$‘LØ˜yÓ(à#$‘Lô %Ø.Ø ñ!à ñ!ð ñð "ñ	"ð
 $ñ$óð ô )2°(Ö(;Ñ$�EØ#Ñ*¨lÓ:ñ !Ø!×(Ñ(¨×3Ó3à.:˜Ó+ó )<ñ+ 2ð> Ð#ð   +Ñ-ˆØ˜8Ó#ÜØ�w‘ Ñ-ð 1<ñ <Ø>FñGóð ð
 ˆô œ3˜|Ó,¨qÑ0°"°bÖ9ˆEØÑ" aÕ'ð ×$Ñ$ Q¨©Ô8Ø’Oñ :ô ˆ}Ó Ö!Ø%2ˆH�\Ô"ñu ðz —n‘nÖ&‰
ˆÜ�‹;œ$ÒÜ$ SÖ0Ü�%‹[œDÔ Ü$ SÖ0ò	 'r"   c                 ó’   • U HA  n[        U5      [        L a  [        X5        M"  [        U5      [        L d  M6  [	        X5        MC     g r•   )r4   rb   rB  r[   rz  )r{  r§  r˜   s      r    rz  rz  u
  s4   € ÛˆÜ�‹:œÒÜ$ TÖ0Ü�$‹Zœ4ÔÜ$ TÖ0ò	 r"   c           
      óè   • SnUR                  SS5      nX2;  a'  [        SU < SU< SSR                  U5      < S35      eUR                  S	S
5      (       a  US:X  d  [        SU < SU< S35      egg)z±Ensures the 'type' field on the target is one of the known types.

Arguments:
  target: string, name of target.
  target_dict: dict, target spec.

Raises an exception on error.
)r   r   r2  r   r	   r×  r
   r4   NzTarget z has an invalid target type 'z'.  Must be one of r«   rR   r/   r   r2  z
 has type zJ but standalone_static_library flag is only valid for static_library type.)r<   r   rZ   )r›   r¾   ÚVALID_TARGET_TYPESr  s       r    ÚValidateTargetTyper�  }
  s…   € ðÐð —/‘/ &¨$Ó/€KØÓ,Ýã$*«K¸¿¹ÐBTÖ9UðWó
ð 	
ð
 	�‰Ð3°Q×7Ñ7ØÐ/Ó/åã6<»kðKó
ð 	
ð 0ð 	8r"   c                 óŒ  • 0 n0 nUR                  S/ 5      nU GH'  nUS   nXs;   a  [        SU SU  35      eXcU'   US   nUR                  S5      (       a  USS nX„;   a   [        S	U< S
U < SXH   S   < SU< 35      eXdU'   SU;   a  [        SU < SU< 35      e/ n	S/n
U
R                  U5        U
 Hp  nUR                  U/ 5       HW  n[        R
                  R                  U5      u  pÞUR                  S5      (       a  USS nXè:X  d  MF  U	R                  U5        MY     Mr     [        U	5      S:”  d  GM#  X–S'   GM*     g)aO  Ensures that the rules sections in target_dict are valid and consistent,
and determines which sources they apply to.

Arguments:
  target: string, name of target.
  target_dict: dict, target spec containing "rules" and "sources" lists.
  extra_sources_for_rules: a list of keys to scan for rule matches in
      addition to 'sources'.
r-   Ú	rule_namezrule z exists in duplicate, target Ú	extensionrR   rB   Nz
extension z( associated with multiple rules, target z rules rV  Úrule_sourcesz-rule_sources must not exist in input, target z rule r   r   )	r<   r   rH  r…   rn   ro   Úsplitextr;   rH   )r›   r¾   Úextra_sources_for_rulesÚ
rule_namesÚrule_extensionsr-   Úruler’  Úrule_extensionr”  Úsource_keysÚ
source_keyÚsourceÚsource_rootÚsource_extensions                  r    ÚValidateRulesInTargetr   Ÿ
  s}  € ð €JØ€Oà�O‰O˜G RÓ(€EÜˆà˜Ñ%ˆ	ØÓ"ÜØ˜	�{Ð"?À¸xÐHóð ð !%�9Ñà˜kÑ*ˆØ×$Ñ$ S×)Ñ)Ø+¨A¨BÐ/ˆNØÓ,Ýó #ÛØ#Ñ3°KÔ@Úð	óð ð +/˜Ñ'ð ˜TÓ!Ýãš9ð&óð ð
 ˆØ �kˆØ×ÑÐ2Ô3Û%ˆJØ%Ÿ/™/¨*°bÖ9�Ü24·'±'×2BÑ2BÀ6Ó2JÑ/�Ø#×.Ñ.¨s×3Ñ3Ø'7¸¸Ð';Ð$Ø#Õ5Ø ×'Ñ'¨Ö/ó :ñ &ô ˆ|Ó˜qÖ Ø#/�Ô ò_ r"   c                 óB  • UR                  S5      nUR                  S5      nU(       d  g [        U5      [        La  [        SU< SU< S35      eUR                  S5      nU(       d  [        SU< SU< S35      e[        U5      [        La  [        SU< SU< S	35      eUR                  S
5      nU(       a&  [        U5      [
        La  [        SU< SU< S35      eUR                  S5      nU(       a'  [        U5      [        La  [        SU< SU< S35      eg g )Nr1   r.   zThe 'run_as' in target z from file z should be a dictionary.r‡  z must have an 'action' section.z$The 'action' for 'run_as' in target z must be a list.Úworking_directoryz/The 'working_directory' for 'run_as' in target z	 in file z should be a string.Úenvironmentz)The 'environment' for 'run_as' in target )r<   r4   rb   r   r[   r  )r›   r¾   r\  r1   r.   r‡  r¢  r£  s           r    ÚValidateRunAsInTargetr¤  â
  s  € Ø—/‘/ -Ó0€KØ�_‰_˜XÓ&€FÞØÜˆFƒ|œ4ÒÝã(«*ð6ó
ð 	
ð �Z‰Z˜Ó!€FÞÝã#.³
ð<ó
ð 	
ô ˆFƒ|œ4ÒÝã!,«jð:ó
ð 	
ð Ÿ
™
Ð#6Ó7ÐÞœTÐ"3Ó4¼CÒ?Ýã0;»ZðIó
ð 	
ð —*‘*˜]Ó+€KÞ”t˜KÓ(´Ò4Ýã4?ÃðMó
ð 	
ð 5€{r"   c                 óR  • UR                  S5      nUR                  S/ 5      nU H~  nUR                  S5      nU(       d  [        SU-  5      eUR                  SS5      nUc  [        SU-  5      eUR                  S5      nU(       d  Mf  US	   (       a  Mr  [        S
U-  5      e   g)z0Validates the inputs to the actions in a target.r1   r#   Úaction_namezKAnonymous action in target %s.  An action must have an 'action_name' field.r   Nz"Action in target %s has no inputs.r‡  r   z%Empty action as command in target %s.)r<   r   )	r›   r¾   r\  r1   r#   r‡  r¦  r   Úaction_commands	            r    ÚValidateActionsInTargetr¨    s¬   € à—/‘/ -Ó0€KØ�o‰o˜i¨Ó,€GÛˆØ—j‘j Ó/ˆÞÜð>Ø@KñLóð ð —‘˜H dÓ+ˆØ‰>ÜÐ?À+ÑMÓNÐNØŸ™ HÓ-ˆßˆ> .°×"3Ñ"3ÜÐBÀ[ÑPÓQÐQò r"   c                 ó6  • U R                  5        H…  u  p[        U5      [        L a  [        U5      nX U'   O;[        U5      [        L a  [        U5        O[        U5      [        L a  [        U5        [        U5      [        L d  Mv  X	 X [        U5      '   M‡     g)zGGiven dict the_dict, recursively converts all integers into strings.
  N)r‹   r4   r<  r  rb   ÚTurnIntIntoStrInDictr[   ÚTurnIntIntoStrInList)r•  r’   r“   s      r    rª  rª    st   € ð
 —‘Ö ‰ˆÜ�‹7”cŠ>Ü�A“ˆAØ�QŠKÜ�!‹WœŠ_Ü  Õ#Ü�!‹WœŠ_Ü  Ô#ä�‹7”cŒ>Ø�Ø ”S˜“VÓò !r"   c                 óê   • [        U 5       Hd  u  p[        U5      [        L a  [        U5      X'   M&  [        U5      [        L a  [        U5        ME  [        U5      [        L d  MY  [        U5        Mf     g)zGGiven list the_list, recursively converts all integers into strings.
  N)r]   r4   r<  r  rb   rª  r[   r«  )r§  rf   r˜   s      r    r«  r«  +  sT   € ô ! Ö*‰ˆÜ�‹:œÒÜ! $›iˆH‹OÜ�$‹Zœ4ÒÜ  Ö&Ü�$‹Zœ4ÔÜ  Ö&ò +r"   c                 ó:  • / nU HX  nUR                  5       n[        R                  R                  Xa5      nU(       d  [	        SU-  5      eUR                  U5        MZ     0 nU H(  nX   X†'   X&   R                  5        H	  n	X	   X‰'   M     M*     U V
s/ s H  oªU;   d  M
  U
PM     nn
US    Hb  nSXL   ;  a  M  / nXL   S    HA  n[        R                  R                  XÆS   US   5      nXè;   d  M0  UR                  U5        MC     XÔU   S'   Md     X‹4$ s  sn
f )zEReturn only the targets that are deep dependencies of |root_targets|.zCould not find target %sr¬   rš   r1   r2   )	rD  rx   ry   ÚFindQualifiedTargetsr   r…   r	  r©  r;   )rš   rì  r!  Úroot_targetsr|   Úqualified_root_targetsr›   Úqualified_targetsÚwanted_targetsr¿   rÔ  Úwanted_flat_listr\  Únew_targetsÚqualified_names                  r    ÚPruneUnwantedTargetsr¶  7  s>  € àÐÛˆØ—‘“ˆÜŸJ™J×;Ñ;¸FÓNÐÞ ÜÐ5¸Ñ>Ó?Ð?Ø×%Ñ%Ð&7Ö8ñ ð €NÛ(ˆØ!(¡ˆÑØ*Ñ2×CÑCÖEˆJØ)0Ñ)<ˆNÓ&ó Fñ )ñ
 $-ÓD¢9˜a°^Ñ0CŸ¡9ÐÐDð Ð/Ô0ˆ
Ø˜DÑ,Ó,ÙØˆØÑ& yÔ1ˆFÜ ŸZ™Z×7Ñ7Ø =Ñ1°6¸)Ñ3DóˆNð Õ/Ø×"Ñ" 6Ö*ñ 2ð '2ˆZÑ˜Ó#ñ 1ð Ð+Ð+ùò Es   Â	DÂ"Dc                 óô   • 0 nU  Hp  nUR                  SS5      u  p4[        R                  R                  U5      u  pVU(       d  SnUS-   U-   nXq;   a  [	        SU< SU< SU< SX   < S3	5      eXaU'   Mr     g	)
z›Verify that no two targets in the same directory share the same name.

Arguments:
  targets: A list of targets in the form 'path/to/file.gyp:target_name'.
Ú:rB   rR   zDuplicate target name "z" in directory "z" used both in "z" and "z".N)Úrsplitrn   ro   rE  r   )rš   Úusedr›   ro   r{  Úsubdirrx   rc   s           r    ÚVerifyNoCollidingTargetsr¼  Y  s   € ð €DÛˆð —]‘] 3¨Ó*‰
ˆä—g‘g—m‘m DÓ)‰ˆö ØˆFà�s‰l˜TÑ!ˆØ‹;åã'+«V³S¸$¼)ðEóð ð ˆS‹	ò% r"   c                 ó¨   • [        [        5      q[        R                  U S   5        [        S S  q[
        R                  U S   5        U S   qU S   qg )Nr   rõ   Ú$generator_supports_multiple_toolsetsrG  )	râ   Úbase_path_sectionsr   ÚupdateÚbase_non_configuration_keysrõ   r…   r�   rG  )rÑ   s    r    rÆ   rÆ   v  sa   € ô Ô*Ó+€MÜ×ÑÐ-¨oÑ>Ô?ô 9¹Ð;ÐÜ×!Ñ!Ð"6Ð7OÑ"PÔQð -Ð-SÑTÐð  4Ð4NÑOÑr"   c	                 ó  • [        U5        US   n	S[        5       0n
[        [        [        R                  R
                  U 5      5      n U(       a  [        X
XX5U5        O0 nU  H  n [        XÊX±X#US5        M     [        U
5      n[        U5        [        U5        [        Xê5        [!        U5        UR#                  5        HS  u  nn0 n[$         H$  nS H  nUU-   nUU;   d  M  UU   UU'   UU	 M     M&     ['        UU5        U H  nUU   UU'   M     MU     [)        U5        U(       a  [+        U5        [-        U5      u  nnU(       a  [/        UUUXŠ5      u  nn[1        U5        S H+  n[3        UUUU5        U H  nUUU   ;   d  M  UU   U	 M     M-     UnUS   (       a  [5        UUUUS   5        U H8  nUU   n[        R                  R7                  U5      n[9        U[:        X5        M:     U H  nUU   n[=        UU5        M     U H  nUU   n['        UU5        M     U H8  nUU   n[        R                  R7                  U5      n[9        U[>        X5        M:     U HZ  nUU   n[        R                  R7                  U5      n[A        UU5        [C        UUU	5        [E        UUU5        [G        UUU5        M\     [I        U
5        UXê/$ ! [         a)  n[        R                  R                  USU-  5        e S nAff = f)	Nr–  r¬   Tzwhile trying to load %sr¬  )r6   r7   r8   Ú4generator_wants_static_library_dependencies_adjustedÚ#generator_wants_sorted_dependencies)%rÆ   râ   Úmaprn   ro   r†   r  r¶   rw   rx   ry   rz   rª  r¸  rÕ  rÄ  rÙ  r‹   r®  rB  rÌ  r.  r)  r¶  r¼  r0  r7  r¯  r³   r8  rr  r:  r�  r   r¤  r¨  rª  )r  r5   r}   r·   rÑ   r   Úcircular_checkÚparallelr¯  r–  r|   r?   r\  r‚   rš   r1   r¾   Útmp_dictrp  r±  rc   r!  rì  Úsettings_typer›   Úgiis                             r    ÚLoadrË  ˆ  s;  € ô Ð,Ô-ð 3Ð3LÑMÐð !¤#£%Ð(€Dô ”cœ"Ÿ'™'×*Ñ*¨KÓ8Ó9€KÞÜ$Ø˜y°EÐBVõ	
ð ˆÛ%ˆJðÜ#Ø h¸8ÈEÐSWöñ &ô ˜tÓ$€Gô ˜Ô ô ˜7Ô#ô ˜wÔ-ô *¨'Ô2ð %,§M¡M¦OÑ ˆ�[Øˆß+ˆHÛ$�Ø ‘m�Ø˜+Õ%Ø$/°Ñ$4�H˜S‘MØ# CÒ(ó	 %ñ ,ô 	! ¨hÔ7ãˆCØ'¨™}ˆK˜Óó ñ %4ô   Ô(æô 	,¨GÔ4ä$7¸Ó$@Ñ!Ð�yæô 2Ø�YÐ 0°,ó
Ñˆ�ô
 ˜YÔ'óˆô
 	˜M¨9°gÐ?OÔPó  ˆFØ ¨¡Õ/Ø˜F‘O MÒ2ó  ñð  €CØ
ÐA×BÜ'ØØØØÐ5Ñ6ô		
ó ˆØ˜f‘oˆÜ—Z‘Z×)Ñ)¨&Ó1ˆ
Ü+Øœ Yö	
ñ ó ˆØ˜f‘oˆÜ˜F KÖ0ñ ó
 ˆØ˜f‘oˆÜ  ¨Ö5ñ ó
 ˆØ˜f‘oˆÜ—Z‘Z×)Ñ)¨&Ó1ˆ
Ü+Øœ¨ö	
ñ ó ˆØ˜f‘oˆÜ—Z‘Z×)Ñ)¨&Ó1ˆ
Ü˜6 ;Ô/Ü˜f kÐ3JÔKÜ˜f k°:Ô>Ü ¨°ZÖ@ñ ô ˜Ôð
 �wÐ%Ð%øô{ ó Ü—
‘
×*Ñ*¨1Ð.GÈ*Ñ.TÔUØûðús   Á(KË
LË$LÌLr•   )FT)arC   Ú
gyp.commonrx   Úgyp.simple_copyrû   Úos.pathrn   r  rL  rÂ   rQ  rÊ   rø   rÎ   r   r   Úpackaging.versionr   r  r®  r¿  râ   r   rÇ   rÈ   r!   rÁ  rõ   rg  r�   rG  r=   rP   rJ   rƒ   r{   rŒ   r    r¶   rÓ   rw   rÕ   rÞ   r  r  r  r  r  rŠ  r7  r9  r;  rJ  r"  r´   r8  r:  rC  r‰  r…  r€  r˜  rš  r   r³   rX  rª  r¸  rÄ  rÉ  rÌ  rÏ  rÕ  rÙ  rÛ  r)  r.  r0  r7  r9  r=  rI  rŠ   r`  rr  rB  rz  r�  r   r¤  r¨  rª  r«  r¶  r¼  rÆ   rË  rÖ   r"   r    Ú<module>rÐ     st  ðó ã Û Û Û Û 	Û Û Û Û 
Û Û Ý Ý !Ý %ò€ð &Ð'BÐCÐ òÐ ñ “€ð Ð ØÐ òò:Ð ð6 Ð òÐ ð Ð ð  Ð ôòB#ò  
òF-ò`&RòTUò>òJG/òT4ôn	˜iô 	÷-!ñ -!ò`7ñ~ �‹J€	Ø˜3 SÑ)€òò$ð2 —J’Jð óÐ ð —:’:ð óÐ ð —z’zð óÐ ð Ð òð €Ø€
Ø€ò\ðB Ð ò,ò^(òV-Eò`)ò)ð: =AôrXòj"òJò4.òbM"ò`CòBò>òò$÷^=ñ ^=òB	1)òh9
òxò@Tðp �zŠzÐ.Ó/€ò"ôJD.òNoòd/ò8Mò`g1òT1ò
òD@0òF 
òFRò&!ò&	'ò,òDò:Pó$c&r"   