§
    Ö)ögªc  ã            
       ó  — d Z ddlZddlZddlmZmZmZmZmZ ddl	m
Z
mZmZmZmZ ddlmZmZmZmZmZ ddlmZ g d¢Z ej        e¦  «        Z	  eg d¢¦  «        ed	<    eg d
¢¦  «        ed<    eddg¦  «        ed<    eg d¢¦  «        ed<    eg d¢¦  «        xed<   ed<    eg d¢¦  «        xed<   ed<    eddg¦  «        xed<   ed<    eg d¢¦  «        ed<    eg d¢¦  «        ed<    eddg¦  «        ed<    edg¦  «        ed<   ed „ ¦   «         Zed!„ ¦   «         Z ed	dddd"d¦  «         e
d#d$¦  «        d%„ ¦   «         ¦   «         Z G d&„ d'ej        ¦  «        Z G d(„ d)e¦  «        Zd*„ Z  e e¦  «          ed	ddd"d¦  «         e
d$¦  «        d+„ ¦   «         ¦   «         Z!ed,„ ¦   «         Z" ed	ddd-d"¦  «         ed.d#¦  «         e
d/d$¦  «        d0„ ¦   «         ¦   «         ¦   «         Z#ed1„ ¦   «         Z$ed2„ ¦   «         Z%ed3„ ¦   «         Z& ed	ddd"d4d5d6d¦  «         e
d7¦  «        d8„ ¦   «         ¦   «         Z' eddd9¦  «         e
d/¦  «        d:„ ¦   «         ¦   «         Z( ej)        d;¦  «        Z* edddd9d<¦  «         e
d/d#¦  «        d=„ ¦   «         ¦   «         Z+ G d>„ d<ej        ¦  «        Z, G d?„ d@e¦  «        Z- G dA„ dBe¦  «        Z.eg g g fdC„¦   «         Z/eg g g fdD„¦   «         Z0g dE¢g dF¢dGœZ1 edH¦  «        dI„ ¦   «         Z2 G dJ„ dKej        ¦  «        Z3 edLdM¦  «        dN„ ¦   «         Z4 edO¦  «         ed$¦  «        dP„ ¦   «         ¦   «         Z5edQ„ ¦   «         Z6 edd¦  «         e
d/d7¦  «        dR„ ¦   «         ¦   «         Z7dS )Sz™
Classes and methods shared by tools providing support for C-like language such
as C/C++/D/Assembly/Go (this support module is almost never used alone).
é    N)ÚTaskÚUtilsÚNodeÚErrorsÚLogs)Úafter_methodÚbefore_methodÚfeatureÚtaskgen_methodÚ	extension)Ú	c_aliasesÚ	c_preprocÚc_configÚc_osxÚc_tests)Úconf)z
/usr/lib64z/usr/libz/usr/local/lib64z/usr/local/lib)ÚINCLUDESÚFRAMEWORKPATHÚDEFINESÚCPPFLAGSÚCCDEPSÚCFLAGSÚARCHÚc)r   r   r   r   ÚCXXDEPSÚCXXFLAGSr   Úcxxr   ÚDFLAGSÚd)r   r   r   Úincludes)ÚLIBÚSTLIBÚLIBPATHÚ	STLIBPATHÚ	LINKFLAGSÚRPATHÚLINKDEPSÚ	FRAMEWORKr   r   ÚLDFLAGSÚcprogramÚ
cxxprogramÚcshlibÚcxxshlibÚARFLAGSr'   ÚcstlibÚcxxstlib)r!   r"   r#   r$   r%   r&   r'   ÚdprogramÚdshlibÚdstlibÚASFLAGSÚasmc                 óî   — d|j         | j        fz  }|                      |||j                             |¦  «        ¦  «        }	 | j                             |¦  «         n# t          $ r |g| _        Y nw xY w|S )aÄ  
	Create the compilation task: c, cxx, asm, etc. The output node is created automatically (object file with a typical **.o** extension).
	The task is appended to the list *compiled_tasks* which is then used by :py:func:`waflib.Tools.ccroot.apply_link`

	:param name: name of the task class
	:type name: string
	:param node: the file to compile
	:type node: :py:class:`waflib.Node.Node`
	:return: The task created
	:rtype: :py:class:`waflib.Task.Task`
	z%s.%d.o)ÚnameÚidxÚcreate_taskÚparentÚfind_or_declareÚcompiled_tasksÚappendÚAttributeError)Úselfr7   ÚnodeÚoutÚtasks        ú-/git_repos/midimsg-lv2/waflib/Tools/ccroot.pyÚcreate_compiled_taskrD   (   s�   € ð �D”I˜tœxÐ(Ñ(€Ø×Ò˜˜t T¤[×%@Ò%@ÀÑ%EÔ%EÑFÔF€ðØÔ×Ò˜TÑ"Ô"Ð"Ð"øÝð ð ð Ø˜€$ÔÐÐðøøøà€s   ÁA ÁA2Á1A2c                 ó–  — g }t          ¦   «         }|                      |¦  «        D �]¡}||v s|sŒ
|                     |¦  «         t          |t          j        ¦  «        r|                     |¦  «         ŒOt          j                             |¦  «        r5|                     | j	        j
                             |¦  «        p|¦  «         Œ£|d         dk    rO| j	        j                             |dd…         ¦  «        }| j	        j                             |dd…         ¦  «        }nF| j                             ¦   «                              |¦  «        }| j                             |¦  «        }|                     | j	        j        ¦  «        r|                     ¦   «          |                     |¦  «         |                     |¦  «         �Œ£|S )a?  
	Task generator method provided to convert a list of string/nodes into a list of includes folders.

	The paths are assumed to be relative to the task generator path, except if they begin by **#**
	in which case they are searched from the top-level directory (``bld.srcnode``).
	The folders are simply assumed to be existing.

	The node objects in the list are returned in the output list. The strings are converted
	into node objects if possible. The node is searched from the source directory, and if a match is found,
	the equivalent build directory is created and added to the returned list too. When a folder cannot be found, it is ignored.

	:param inlst: list of folders
	:type inlst: space-delimited string or a list of string/nodes
	:rtype: list of :py:class:`waflib.Node.Node`
	:return: list of include folders as nodes
	r   ú#é   N)ÚsetÚto_listÚaddÚ
isinstancer   r=   ÚosÚpathÚisabsÚbldÚrootÚ	make_nodeÚbldnodeÚsrcnodeÚget_bldÚis_child_ofÚmkdir)r?   ÚinlstÚlstÚseenÚxÚpÚvs          rC   Úto_incnodesr]   =   s…  € ð$ 
€Ý‰Œ€Ø
�,Š,�uÑ
Ô
ð ñ €QØˆ$€Y€Y�a€YØØ‡(‚(ˆ1�+„+€+õ �•4”9ÑÔð Ø‡:‚:ˆa�=„=€=€=å„g‡m‚m�AÑÔð Ø‡J‚JˆtŒxŒ}×&Ò& qÑ)Ô)Ð.¨QÑ/Ô/Ð/Ð/àˆ„tˆs‚{€{Ø	ŒÔ	×	#Ò	# A a b b¤EÑ	*Ô	*€QØ	ŒÔ	×	#Ò	# A a b b¤EÑ	*Ô	*€Q€Qà	Œ×	Ò	Ñ	Ô	×	&Ò	& qÑ	)Ô	)€QØ	Œ×	Ò	˜QÑ	Ô	€QØ‡}‚}�T”XÔ%Ñ&Ô&ð Ø‡W‚W�Y„Y€YØ‡J‚Jˆq�M„M€MØ‡J‚Jˆq�M„M€M�MØ€ó    ÚfcÚpropagate_uselib_varsÚprocess_sourcec           	      óö   ‡— |                       |                      t          | dg ¦  «        ¦  «        | j        j        z   ¦  «        }|| _        |                      ¦   «         Šˆfd„|D ¦   «         | j        _        dS )aÿ  
	Task generator method that processes the attribute *includes*::

		tg = bld(features='includes', includes='.')

	The folders only need to be relative to the current directory, the equivalent build directory is
	added automatically (for headers created in the build directory). This enable using a build directory
	or not (``top == out``).

	This method will add a list of nodes read by :py:func:`waflib.Tools.ccroot.to_incnodes` in ``tg.env.INCPATHS``,
	and the list of include paths in ``tg.env.INCLUDES``.
	r    c                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS © )Ú	path_from)Ú.0rZ   Úcwds     €rC   ú
<listcomp>z"apply_incpaths.<locals>.<listcomp>|   s%   ø€ Ð4Ð4Ð4¨1�a—k’k #Ñ&Ô&Ð4Ð4Ð4r^   N)r]   rI   ÚgetattrÚenvr   Úincludes_nodesÚget_cwdÚINCPATHS)r?   rX   rg   s     @rC   Úapply_incpathsrn   i   ss   ø€ ð  ×Ò˜Ÿš¥W¨T°:¸rÑ%BÔ%BÑCÔCÀdÄhÔFWÑWÑXÔX€Ø€ÔØ‡|‚|�~„~€Ø4Ð4Ð4Ð4°Ð4Ñ4Ô4€„ÔÐÐr^   c                   óR   ‡ — e Zd ZdZdZdZ	 dZ	 ej        Z		 d„ Z
ˆ fd„Zˆ fd„Zˆ xZS )Ú	link_taska<  
	Base class for all link tasks. A task generator is supposed to have at most one link task bound in the attribute *link_task*. See :py:func:`waflib.Tools.ccroot.apply_link`.

	.. inheritance-diagram:: waflib.Tools.ccroot.stlink_task waflib.Tools.c.cprogram waflib.Tools.c.cshlib waflib.Tools.cxx.cxxstlib  waflib.Tools.cxx.cxxprogram waflib.Tools.cxx.cxxshlib waflib.Tools.d.dprogram waflib.Tools.d.dshlib waflib.Tools.d.dstlib waflib.Tools.ccroot.fake_shlib waflib.Tools.ccroot.fake_stlib waflib.Tools.asm.asmprogram waflib.Tools.asm.asmshlib waflib.Tools.asm.asmstlib
	ÚYELLOWé   Nc                 ó"  — t          |t          ¦  «        �rc| j        j        }|                     d¦  «        r|dd…         }| j        j        j        }| j        | j        j	        dz            }|sd}t          j                             |¦  «        \  }}| j        j	                             d¦  «        dk    r’t          | j        dd¦  «        r|| j        j                             d	¦  «        }| j        j        d
k    r|dz   |d         z   }n>| j        j        dk    r.|›d	|d         ›�}t#          |¦  «        dk    r|d|d         z  z  }|r|t          j        z   ||z  z   }n||z  }|                     |¦  «        }|                      |¦  «         dS )z¢
		Process the *target* attribute to add the platform-specific prefix/suffix such as *.so* or *.exe*.
		The settings are retrieved from ``env.clsname_PATTERN``
		rF   rG   NÚ_PATTERNz%sÚshlibr   Úvnumú.Úpeú-Úopenbsdé   z.%s)rK   ÚstrÚ	generatorrM   Ú
startswithrO   rR   rj   Ú	__class__Ú__name__rL   ÚsplitÚfindri   rv   ÚDEST_BINFMTÚDEST_OSÚlenÚsepr;   Úset_outputs)r?   ÚtargetÚbaseÚpatternÚfolderr7   ÚnumsÚtmps           rC   Ú
add_targetzlink_task.add_target�   s“  € õ
 ��ÑÔñ &Ø
Œ.Ô
€4Ø×Ò˜ÑÔð &à�A�B�BŒZ€FØŒ>ÔÔ%€DàŒX�d”nÔ-°
Ñ:Ô;€7Ø
ð Ø€GÝ”'—-’- Ñ'Ô'�<€6ˆ4à
„nÔ×"Ò" 7Ñ+Ô+¨aÒ/Ð/µG¸D¼NÈFÐTXÑ4YÔ4YÐ/ØŒ>Ô×$Ò$ SÑ)Ô)€DØ„xÔ˜tÒ#Ð#ð �3‰J˜˜aœÑ €T€TØ	ŒÔ	˜YÒ	&Ð	&Ø!˜'˜' 4¨¤7 7Ð+€WÝˆD‰	Œ	�QŠˆØ�˜˜aœ‘Ñ €gàð Ø
•2”6‰/˜G d™NÑ
*€C€Cà
�D‰.€CØ× Ò  Ñ%Ô%€6Ø×Ò�6ÑÔÐÐÐr^   c                 óŒ   •—  t          t          | ¦  «        j        |i |¤Ž}|s | j        j        r|                      ¦   «         }|S ©N)Úsuperrp   Úexec_commandrj   ÚDO_MANIFESTÚexec_mf)r?   ÚkÚkwÚretr   s       €rC   r’   zlink_task.exec_command²   sJ   ø€ Ø+��i˜ÑÔÔ+¨QÐ5°"Ð5Ð5€#Ø	ð �”Ô%ð Ø	�Š‰Œ€3Ø	€*r^   c                 ó”  •— | j         j        sdS d}| j        D ]2}|j                             d¦  «        r|                     ¦   «         } nŒ3dS d}t          j        | j        j	        ¦  «        D ]}|dv rd}Œ	|dv rd}Œt          j        d	|¦  «         g | j         j        z   }|                     t          j        | j         j        ¦  «        ¦  «         |                     d
|g¦  «         |                     d| j        d                              ¦   «         ›d|›�¦  «         t          t           | ¦  «                             |¦  «        S )zD
		Create manifest files for VS-like compilers (msvc, ifort, ...)
		r   Nz	.manifestÚ )r*   r+   Ú	fcprogramÚfcprogram_testrG   )r,   r-   Úfcshlibr{   z#msvc: embedding manifest in mode %rz	-manifestz-outputresource:ú;)rj   ÚMTÚoutputsr7   ÚendswithÚabspathr   rI   r}   Úfeaturesr   ÚdebugÚextendÚMTFLAGSr=   r‘   rp   r’   )r?   ÚmanifestÚout_nodeÚmoderZ   rX   r   s         €rC   r”   zlink_task.exec_mf¸   sZ  ø€ ð 
ŒŒð Ø
ˆ!à€(Ø”,ð ð €hØ„m×Ò˜[Ñ)Ô)ð 
Ø×ÒÑ!Ô!€HØ	€Eð
ð ˆ!ð 
€$ÝŒ=˜œÔ0Ñ1Ô1ð ð €aØÐDÐDÐDØ€D€DØ	Ð.Ð.Ð.Ø€Døå„*Ð2°DÑ9Ô9Ð9à
ˆTŒXŒ[Ñ€#Ø‡*‚*�UŒ]˜4œ8Ô+Ñ,Ô,Ñ-Ô-Ð-Ø‡*‚*ˆk˜8Ð$Ñ%Ô%Ð%Ø‡*‚*€*¨¬°Q¬×(?Ò(?Ñ(AÔ(AÐ(AÐ(AÀ4À4ÐHÑIÔIÐIå	�y˜$Ñ	Ô	×	,Ò	,¨SÑ	1Ô	1Ð1r^   )r€   Ú
__module__Ú__qualname__Ú__doc__ÚcolorÚweightÚinst_tor   ÚO755ÚchmodrŽ   r’   r”   Ú__classcell__)r   s   @rC   rp   rp   ~   sŒ   ø€ € € € € ðð ð
 €à€Ø5à€ØNàŒ:€Ø:ð!ð !ð !ðFð ð ð ð ð"2ð "2ð "2ð "2ð "2ð "2ð "2ð "2ð "2r^   rp   c                   ó$   — e Zd ZdZdZej        ZdS )Ústlink_taskzt
	Base for static link tasks, which use *ar* most of the time.
	The target is always removed before being written.
	z4${AR} ${ARFLAGS} ${AR_TGT_F}${TGT} ${AR_SRC_F}${SRC}N)r€   r©   rª   r«   Úrun_strr   ÚO644r°   rd   r^   rC   r³   r³   Ü   s)   € € € € € ðð ð B€àŒ:€Ø9Ð9r^   r³   c                 óB   ‡— | j         Šˆfd„}t          | d|¦  «         d S )Nc                 ó    •— 	 t          j        | j        d                              ¦   «         ¦  «         n# t          $ r Y nw xY w ‰| ¦  «        S )Nr   )rL   ÚremoverŸ   r¡   ÚOSError)r?   Úolds    €rC   Úwrapzrm_tgt.<locals>.wrapè   s[   ø€ ðÝ„9ˆTŒ\˜!Œ_×$Ò$Ñ&Ô&Ñ'Ô'Ð'Ð'øÝ	ð ð ð Ø€4ðøøøà	ˆˆT‰ŒÐs   ƒ15 µ
AÁAÚrun)r¼   Úsetattr)Úclsr»   rº   s     @rC   Úrm_tgtr¿   æ   s=   ø€ Ø
„w€ðð ð ð ð õ 	ˆˆe�TÑÔÐÐÐr^   c                 óL  — | j         D ]\}|dk    rd| j         v rd}n|dk    rd| j         v rd}|t          j        v r)t          t          j        |         t          ¦  «        r|} nŒ]dS d„ t          | dg ¦  «        D ¦   «         }|                      ||¦  «        | _        | j                             | j        ¦  «         	 | j	        }n# t          $ r | j        j        }Y nw xY w|rA|                      || j        j        dd…         | j        j        | j        ¬	¦  «        | _        dS dS )
aù  
	Collect the tasks stored in ``compiled_tasks`` (created by :py:func:`waflib.Tools.ccroot.create_compiled_task`), and
	use the outputs for a new instance of :py:class:`waflib.Tools.ccroot.link_task`. The class to use is the first link task
	matching a name from the attribute *features*, for example::

			def build(bld):
				tg = bld(features='cxx cxxprogram cprogram', source='main.c', target='app')

	will create the task ``tg.link_task`` as a new instance of :py:class:`waflib.Tools.cxx.cxxprogram`
	r*   r   r+   r,   r-   Nc                 ó(   — g | ]}|j         d          ‘ŒS )r   )rŸ   )rf   Úts     rC   rh   zapply_link.<locals>.<listcomp>  s   € ÐCÐCÐC˜!ˆŒ�1ŒÐCÐCÐCr^   r<   ©Ú
install_toÚinstall_fromr°   rB   )r¢   r   ÚclassesÚ
issubclassrp   ri   r9   rŽ   rˆ   Úinstall_pathr>   r®   Úadd_install_filesrŸ   r°   Úinstall_task)r?   rZ   ÚlinkÚobjsr®   s        rC   Ú
apply_linkrÍ   ñ   s[  € ð Œ-ð 	ð 	€QØˆ*‚_€_˜ $¤-Ð/Ð/Ø€1€1ØˆH‚}€}˜ $¤-Ð/Ð/Ø€1à�$Œ,ÐÐÝ•”˜a”¥)Ñ,Ô,ð 
Ø€DØ	€Eøà€&àCÐC�w tÐ-=¸rÑBÔBÐCÑCÔC€Ø×"Ò" 4¨Ñ.Ô.€„Ø„×Ò˜4œ;Ñ'Ô'Ð'ð#ØÔ€'€'øÝð #ð #ð #ØŒNÔ"€'€'€'ð#øøøàð 4à×,Ò,Ø D¤NÔ$:¸1¸1¸1Ô$=Ø	ŒÔ	 D¤Nð -ñ 4ô 4€$ÔÐÐð4ð 4s   Â=C ÃCÃCc                 ón  — || j         v s	|| j        v rdS 	 | j                             |¦  «        }nJ# t          j        $ r8 | j                             |¦  «         | j                              |¦  «         Y dS w xY w| j                             |¦  «         | 	                    ¦   «          | 
                    dd¦  «        x|_        }| 
                    dd¦  «        x|_        }	 |j        }d}t          |t          ¦  «        s
d}d|_        nd|_        n# t"          $ r
 d|_        Y nw xY w| j        }|                      t)          |d	g ¦  «        ¦  «        D ]^}| j        d
|z            rŒ	 ||                              |¦  «         n# t,          $ r	 |g||<   Y nw xY w|                      |||¬¦  «         Œ_dS )z|
	Processes the ``use`` keyword recursively. This method is kind of private and only meant to be used from ``process_use``
	NÚobjectsTÚstlibFr!   r"   r™   ÚuseÚSTLIB_)rÏ   rÐ   )Útmp_use_notÚtmp_use_seenrO   Úget_tgen_by_namer   ÚWafErrorÚuselibr=   rJ   ÚpostÚgetÚtmp_use_objectsÚtmp_use_stlibrp   rK   r³   Útmp_use_varr>   Útmp_use_precrI   ri   rj   ÚKeyErrorÚuse_rec)	r?   r7   r–   ÚyrÏ   rÐ   rp   r[   rZ   s	            rC   rß   rß     s  € ð 	ˆDÔÐÐ ¨Ô(9Ð 9Ð 9Ø€&ð	Ø
„h×Ò Ñ%Ô%€!€!øÝŒð 	ð 	ð 	Ø„+×Ò�TÑÔÐØÔ×Ò�tÑÔÐØ€&€&ð	øøøð
 Ô×Ò˜$ÑÔÐØ‡‚�„€ð  "Ÿvšv i°Ñ6Ô6Ð6€Ô�WØ!Ÿvšv g¨tÑ4Ô4Ð4€„�Uð
ØŒk€)ð €'Ý	�I�{Ñ	+Ô	+ð Ø€5Ø€1„=€=à€1„=€=øõ 	ð ð ð Ø€!„-€-€-ðøøøð 
Ô€Ø
�,Š,•w˜q %¨Ñ,Ô,Ñ
-Ô
-ð 0ð 0€QØ	„Xˆh˜‰lÔð ØðØ€Q„4‡;‚;ˆtÑÔÐÐøÝ	ð ð ð Øˆ&€1€Q�4€4€4ðøøøà‡,‚,ˆq˜'¨€,Ñ/Ô/Ð/Ð/ð0ð 0s4   –1 ±AA8Á7A8Ã$D ÄD(Ä'D(Å*FÆFÆFrÑ   rn   rÍ   c                 óP  — t          ¦   «         x}| _        g | _        i x}| _        |                      t          | dg ¦  «        ¦  «        | _        |                      t          | dg ¦  «        ¦  «        | _        |                      t          | dg ¦  «        ¦  «        }|D ]}|                      |¦  «         Œ|D ]	}||v r||= Œ
g x}| _	        g }| j        D ]4}| 
                    ¦   «         D ]}||v r nŒ	|                     |¦  «         Œ5|rs|                     ¦   «         }|                     |¦  «         	 ||         }	||= |	D ](}|D ]}
|||
         v r nŒ|                     |¦  «         Œ)n# t          $ r Y nw xY w|°s|rt          j        d|z  ¦  «        ‚|                     ¦   «          t          | dd¦  «        }|D �]¤}| j                             |¦  «        }
|
j        }|ræ|rä|dk    s|
j        s||v rÒ| j                             ||
j        |
j                             t2          j        ¦  «        dz   d…         g¦  «         | j        j                             |
j        j        ¦  «         |
j        j        d	         j                              |  !                    ¦   «         ¦  «        }| j         "                    |d
z   |g¦  «         n|
j#        r|  $                    |
¦  «         t          |
dd¦  «        r'| j        |
 %                    |
j&        ¦  «        z   | _        t          |
dd¦  «        r3| j                             d|                      |
j'        ¦  «        ¦  «         �Œ¦|D ]¿}	 | j                             |¦  «        }
|                      t          |
dg ¦  «        ¦  «        D ]5}| j        d|z            s#|| j        vr| j                             |¦  «         Œ6Œx# t          j        $ r6 | j        d|z            s#|| j        vr| j                             |¦  «         Y Œ¼w xY wdS )zö
	Process the ``use`` attribute which contains a list of task generator names::

		def build(bld):
			bld.shlib(source='a.c', target='lib1')
			bld.program(source='main.c', target='app', use='lib1')

	See :py:func:`waflib.Tools.ccroot.use_rec`.
	r×   r    rÑ   z'Cycle detected in the use processing %rrp   Nr!   rG   r   ÚPATHÚexport_includesÚexport_definesr   rÒ   )(rH   rÓ   rÔ   rÝ   rI   ri   r×   r    rß   Útmp_use_sortedÚvaluesr=   ÚpoprÞ   r   rÖ   ÚreverserO   rÕ   rÜ   rÛ   rj   Úappend_valuerˆ   ÚrfindrL   r†   rp   Ú	dep_nodesr¤   rŸ   r:   re   rl   Úappend_uniquerÚ   Úadd_objects_from_tgenr]   rã   rä   )r?   Úuse_notÚuse_precÚnamesrZ   rA   r�   r•   ÚeÚnlstrà   rp   ÚvarÚtmp_paths                 rC   Úprocess_userõ   G  s‘  € õ "™eœeÐ#€ˆ4ÔØ€ÔØ "Ð"€ˆDÔØ�|Š|�G D¨(°BÑ7Ô7Ñ8Ô8€„Ø—’�g d¨J¸Ñ;Ô;Ñ<Ô<€„Ø	�Š•g˜d E¨2Ñ.Ô.Ñ	/Ô	/€à
ð ð €QØ‡,‚,ˆq�/„/€/€/à
ð ð €QØˆ(€]€]Ø�€{øð  Ð€€tÔØ	€Ø
Ô
ð ð €QØ�?Š?ÑÔð ð €aØˆ1€f€fØ	€Eð ð ‡:‚:ˆa�=„=€=øà
ð Ø	‡g‚g�i„i€!Ø‡*‚*ˆQ�-„-€-ðØ
�1Œ+€4ð �€{Øð ð €qØð ð ˆØ	ˆX�aŒ[ÐÐØ€eð 	ð 	‡Z‚Z��]„]€]øðøõ	 
ð ð ð Ø€4ðøøøð ð ð ð NÝŒÐAÀHÑLÑMÔMÐMØ‡‚�„€å�T˜;¨Ñ-Ô-€Ø
ð Dñ D€QØ
„h×Ò Ñ"Ô"€!Ø	Œ€#Øð "ˆYð "Ø	ˆU‚l€l�a”o€l¨¨e¨¨Ø„H×Ò˜# ¤¨¬¯ª½¼Ñ)?Ô)?À!Ñ)CÐ)DÐ)DÔ EÐFÑGÔGÐGØ„NÔ×#Ò# A¤KÔ$7Ñ8Ô8Ð8ØŒ{Ô" 1Ô%Ô,×6Ò6°t·|²|±~´~ÑFÔF€HØ„H×Ò˜3 ™<¨(¨Ñ4Ô4Ð4øàÔð "Ø×Ò˜qÑ!Ô!Ð!åˆQÐ! 4Ñ(Ô(ð Dà”= 1§=¢=°Ô1BÑ#CÔ#CÑC€4„=åˆQÐ  $Ñ'Ô'ð DØ„8×Ò˜ D§L¢L°Ô1AÑ$BÔ$BÑCÔCÐCùð ð 	ð 	€QðØ„x× Ò  Ñ#Ô#€1ð
 �LŠL�  E¨2Ñ.Ô.Ñ/Ô/ð ð €qØŒ8�H˜q‘LÔ!ð ¨!¨t¬{Ð*:Ð*:Ø	„[×Ò˜ÑÔÐøðøõ	 
Œð ð ð Ø
Œ(�8˜a‘<Ô
 ð ¨¨d¬kÐ)9Ð)9Ø„K×Ò�qÑÔÐøøðøøøð	ð 	s%   Ä5E, Å,
E9Å8E9Í)OÏAP#Ð"P#c                 ó8   — |j                              d¦  «         S )z
	PRIVATE INTERNAL USE ONLY
	z.pdb)r7   r    ©r?   r@   s     rC   Úaccept_node_to_linkrø   ¢  s   € ð
 ŒI×Ò˜vÑ&Ô&Ð&Ð&r^   c                 óÒ   — 	 | j         }t          |dg ¦  «        D ];}|j        D ]1}|                      |¦  «        r|j                             |¦  «         Œ2Œ<dS # t          $ r Y dS w xY w)zè
	Add the objects from the depending compiled tasks as link task inputs.

	Some objects are filtered: for instance, .pdb files are added
	to the compiled tasks but not to the link tasks (to avoid errors)
	PRIVATE INTERNAL USE ONLY
	r<   N)rp   ri   rŸ   rø   Úinputsr=   r>   )r?   Útgrp   ÚtskrZ   s        rC   rí   rí   ©  sž   € ð ØŒn€)õ �RÐ)¨2Ñ.Ô.ð  ð  €cØŒKð  ð  €qØ×Ò Ñ"Ô"ð  ØÔ×Ò˜QÑÔÐøð ð ð  øõ 	ð ð ð Ø€$€$ðøøøs   ‚A Á
A&Á%A&c                 óh   — t          ¦   «         }| j        D ]}|t          v r|t          |         z  }Œ|S )z“
	:return: the *uselib* variables associated to the *features* attribute (see :py:attr:`waflib.Tools.ccroot.USELIB_VARS`)
	:rtype: list of string
	)rH   r¢   ÚUSELIB_VARS)r?   Ú_varsrZ   s      rC   Úget_uselib_varsr   ¼  s=   € õ 
‰Œ€Ø
Œ-ð ð €QØ�+ÐÐØ�K˜ŒNÑ€5øØ€r^   ÚjavacÚcsr×   rõ   c                 óx  — |                       ¦   «         }| j        }|j        }| j        |                      t          | dg ¦  «        ¦  «        z   }|D ]h}|                     ¦   «         }t          | |g ¦  «        }|r |||                      |¦  «        ¦  «         |D ]}||›d|›�         }|r |||¦  «         ŒŒidS )am  
	Process uselib variables for adding flags. For example, the following target::

		def build(bld):
			bld.env.AFLAGS_aaa = ['bar']
			from waflib.Tools.ccroot import USELIB_VARS
			USELIB_VARS['aaa'] = ['AFLAGS']

			tg = bld(features='aaa', aflags='test')

	The *aflags* attribute will be processed and this method will set::

			tg.env.AFLAGS = ['bar', 'test']
	r×   Ú_N)r   rj   ré   r¢   rI   ri   Úlower)	r?   rÿ   rj   ÚappÚfeature_uselibró   rà   ÚvalrZ   s	            rC   r`   r`   È  sæ   € ð" 
×	Ò	Ñ	Ô	€Ø„x€Ø
Ô€Ø”- $§,¢,­w°t¸XÀrÑ/JÔ/JÑ"KÔ"KÑK€Øð 	ð 	€SØ	‡i‚i�k„k€!Ý��a˜ÑÔ€#Øð Ø€3€sˆD�LŠL˜ÑÔÑÔÐàð ð €aØ	˜˜˜˜Q˜QÐÔ	 €3Ø	ð Ø€CˆˆS�M„M€Møðð	ð 	r^   rœ   c                 ó.  — | j         j        dk    sdS | j        j        d         }t	          | j        t          j        ¦  «        r| j        j        }n*t          j	         
                    | j        ¦  «        d         }| j         j        |z  }|j                             |¦  «        }| j                              d| j         j        |                     ¦   «         z  ¦  «         | j        j                             |¦  «         t%          | dd¦  «        rå| j         j        dk    rÕ| j	                             | j        ¦  «        }|st+          j        d| j        z  ¦  «        ‚| j         j        rm| j                              d| j         j        |                     |                      ¦   «         ¦  «        z  ¦  «         | j        j                             |¦  «         n| j        j                             |¦  «         t%          | dd¦  «        r‘	 | j        }nY# t:          $ rL 	 | j        }n@# t:          $ r3 d	}d
| j        _         | j         j!        s| j         j"        | j         _!        Y nw xY wY nw xY w|  #                    ||| j        j$        | j        ¬¦  «        | _%        dS dS )z¹
	Handle dlls and their import libs on Windows-like systems.

	A ``.dll.a`` file called *import library* is generated.
	It must be installed as it is required for linking the library.
	rx   Nr   rG   r%   Údefszinvalid def file %rrÊ   z${IMPLIBDIR}z	${BINDIR}rÃ   )&rj   rƒ   rp   rŸ   rK   rˆ   r   r7   rL   rM   r�   Úimplib_PATTERNr:   r;   ré   Ú	IMPLIB_STÚbldpathr=   ri   Úfind_resourcer
  r   rÖ   Údef_PATTERNre   rl   rë   rú   Úinstall_path_implibr>   rÈ   rÊ   rÄ   Ú	IMPLIBDIRÚLIBDIRrÉ   r°   Úimplib_install_task)r?   Údllr7   Úimplibr@   r®   s         rC   Úapply_implibr  ê  sz  € ð 	ŒÔ Ò$Ð$Ø€&à„~Ô˜aÔ €ÝˆtŒ{�DœIÑ&Ô&ð 'Ø	ŒÔ	€$€$å	Œ�Š�t”{Ñ	#Ô	# AÔ	&€$Ø
Œ(Ô
! DÑ
(€Ø
Œ*×
$Ò
$ VÑ
,Ô
,€Ø„×Ò�{ D¤HÔ$6¸¿ºÑ9IÔ9IÑ$IÑJÔJÐJØ„Ô×Ò˜vÑ&Ô&Ð&åˆD�&˜$ÑÔð 	& D¤HÔ$8¸DÒ$@Ð$@Ø	Œ×	 Ò	  ¤Ñ	+Ô	+€$Ø	ð <Ý	ŒÐ.°´Ñ:Ñ	;Ô	;Ð;Ø	„XÔð &Ø„8×Ò˜ d¤hÔ&:¸T¿^º^ÈDÏLÊLÉNÌNÑ=[Ô=[Ñ&[Ñ\Ô\Ð\Ø„>Ô×"Ò" 4Ñ(Ô(Ð(Ð(ð „>Ô×Ò Ñ%Ô%Ð%õ ˆD�. $Ñ'Ô'ð 4ð*àÔ%€7€7øÝ	ð 	*ð 	*ð 	*ð*àÔ€G€GøÝ
ð *ð *ð *à€GØ#.€DÔÔ ØŒ8Ôð *Øœ(œ/€T„XÔøøð*øøøøøð		*øøøð "×3Ò3¸wÐU[Ø	ŒÔ	 D¤Nð 4ñ 4ô 4€$ÔÐÐð4ð 4s6   ÈH È
I#ÈH ÈI#È :IÉI#ÉIÉI#É"I#z%^([1-9]\d*|0)([.]([1-9]\d*|0)){0,2}?$rv   c           
      óÄ  — t          | dd¦  «        rt          j        dk    s| j        j        dvrdS | j        }t                               | j        ¦  «        s.t          j
        d| j        ›dt          | d| ¦  «        ›�¦  «        ‚| j                             d	¦  «        }|j        d
         }t          | dt          |d
         ¦  «        ¦  «        }|                     d	¦  «        }t          |¦  «        t          |¦  «        k    s|d
t          |¦  «        …         |k    rt          j
        d|z  ¦  «        ‚|j        }|                     d¦  «        r8|                     dd| j        z  ¦  «        }|                     dd|z  ¦  «        }n|d	z   | j        z   }|d	z   |z   }| j        j        r<| j        j        |z  }	| j                             d|	                     ¦   «         ¦  «         | j        j        dk    re|j                             |¦  «        g}
||k    r-|
                     |j                             |¦  «        ¦  «         |                      d||
¦  «         t          | dd¦  «        �rt0          j        | j        _        d| j        _        | j        j        }| j        j        dk    rG| j        j        d
         j        }|                      |›d|›�|| j        j        ¬¦  «        }|f| _         nš|                      |t          j!        z   |z   || j        j        ¬¦  «        }|  "                    |t          j!        z   |z   |¬¦  «        }||k    r2|  "                    |t          j!        z   |z   |¬¦  «        }|||f| _         n	||f| _         d| j        j#        v rÁ	 | j$        }n# tJ          $ r | j        j&        }Y nw xY w|rœtO          j(        || j        ¦  «        }t          j)         *                    ||¦  «        }| j                             dd|g¦  «         | j                             dd|z  ¦  «         | j                             dd| j        z  ¦  «         dS dS dS )u^  
	Enforce version numbering on shared libraries. The valid version numbers must have either zero or two dots::

		def build(bld):
			bld.shlib(source='a.c', target='foo', vnum='14.15.16')

	In this example on Linux platform, ``libfoo.so`` is installed as ``libfoo.so.14.15.16``, and the following symbolic links are created:

	* ``libfoo.so    â†’ libfoo.so.14.15.16``
	* ``libfoo.so.14 â†’ libfoo.so.14.15.16``

	By default, the library will be assigned SONAME ``libfoo.so.14``, effectively declaring ABI compatibility between all minor and patch releases for the major version of the library.  When necessary, the compatibility can be explicitly defined using `cnum` parameter:

		def build(bld):
			bld.shlib(source='a.c', target='foo', vnum='14.15.16', cnum='14.15')

	In this case, the assigned SONAME will be ``libfoo.so.14.15`` with ABI compatibility only between path releases for a specific major and minor version of the library.

	On OS X platform, install-name parameter will follow the above logic for SONAME with exception that it also specifies an absolute path (based on install_path) of the library.
	rv   r™   Úposix)Úelfzmac-oNzInvalid vnum z for target r7   rw   r   Úcnumz invalid compatibility version %sz.dylibz	.%s.dylibr%   rz   rÊ   Tú/)rÄ   rÅ   r°   )rÄ   rÅ   z-dynamiclibz-install_namez-Wl,-compatibility_version,%sz-Wl,-current_version,%s)+ri   rL   r7   rj   rƒ   rp   Úre_vnumÚmatchrv   r   rÖ   r�   rŸ   r|   r…   r    ÚreplaceÚ	SONAME_STré   r„   r:   rQ   r=   r9   r   ÚSKIPPEDrÊ   ÚhasrunÚno_errcheck_outrÄ   Úadd_install_asr°   Úvnum_install_taskr†   Úadd_symlink_asr%   rÈ   r>   r®   r   Ú
subst_varsrM   Újoin)r?   rË   rŒ   r@   r  ÚcnumsÚlibnameÚname3Úname2r\   ÚoutsrM   Út1Út3Út2r®   r[   s                    rC   Ú
apply_vnumr0     sF  € õ. 	��f˜bÑ!Ô!ð 	¥R¤W°Ò%7Ð%7¸4¼8Ô;OÐWgÐ;gÐ;gØ€&àŒ€Ý�Š�d”iÑ Ô ð dÝŒˆ¸4¼9¸9¸9ÅgÈdÐTZÐ\`ÑFaÔFaÐFaÐbÑcÔcÐcØŒ	�Š˜ÑÔ€ØŒ�QŒ€å��f�c $ q¤'™lœlÑ+Ô+€Ø	�Š�C‰Œ€Ýˆ�J„J�s�4‰yŒyÒÐ˜D ¥3 u¡:¤: Ô.°%Ò7Ð7ÝŒÐ:¸TÑAÑBÔBÐBàŒ9€Ø×Ò�XÑÔð Ø
�/Š/˜( K°$´)Ñ$;Ñ
<Ô
<€%Ø
�/Š/˜( K°$Ñ$6Ñ
7Ô
7€%€%à
�C‰-˜$œ)Ñ
#€%Ø
�C‰-˜$Ñ
€%ð 	„HÔð 0Ø
„hÔ˜5Ñ €!Ø„(×Ò˜ Q§W¢W¡Y¤YÑ/Ô/Ð/ð 	„HÔ˜	Ò!Ð!Ø
Œ+×
Ò
 Ñ
&Ô
&Ð	'€$Ø
ˆe‚^€^Ø‡;‚;ˆtŒ{×$Ò$ UÑ+Ô+Ñ,Ô,Ð,Ø×Ò�6˜4 Ñ&Ô&Ð&åˆD�. $Ñ'Ô'ñ &Ý!œ\€$ÔÔØ&*€$ÔÔ#Ø	Ô	Ô	%€$Ø	„XÔ˜Ò"Ð"ØŒ^Ô# AÔ&Ô+€7Ø×Ò°$°$°$¸¸Ð'@ÈtÐ[_Ô[iÔ[oÐÑpÔp€2Ø˜E€4ÔÐà×Ò t­b¬f¡}°uÑ'<È4ÐW[ÔWeÔWkÐÑlÔl€2Ø×Ò t­b¬f¡}°wÑ'>ÈUÐÑSÔS€2Øˆu‚n€nØ	×	Ò	¨­r¬v©¸Ñ(=ÈEÐ	Ñ	RÔ	R€BØ  " b˜\€DÔÐà  "˜X€DÔà�T”XÔ'Ð'Ð'ð$ØÔ€7€7øÝ	ð $ð $ð $ØŒ^Ô#€7€7€7ð$øøøàð MÝÔ˜ ¤Ñ*Ô*€1Ý
Œ'�,Š,�q˜%Ñ
 Ô
 €4Ø„8×Ò˜ ¸Ð&=Ñ>Ô>Ð>Ø„8×Ò˜Ð&EÈÑ&LÑMÔMÐMØ„8×Ò˜Ð&?À$Ä)Ñ&KÑLÔLÐLÐLÐLð (Ð'ðMð Ms   ÎN& Î&N?Î>N?c                   ó(   — e Zd ZdZdZdgZd„ Zd„ ZdS )rv   z€
	Create the symbolic links for a versioned shared library. Instances are created by :py:func:`waflib.Tools.ccroot.apply_vnum`
	ÚCYANz.binc                 ó   — dS )NÚ
Symlinkingrd   ©r?   s    rC   Úkeywordzvnum.keyword}  s   € Ø	ˆr^   c                 óþ   — | j         D ]t}|                     ¦   «         }	 t          j        |¦  «         n# t          $ r Y nw xY w	 t          j        | j        d         j        |¦  «         Œc# t          $ r Y  dS w xY wd S )Nr   rG   )rŸ   r¡   rL   r¸   r¹   Úsymlinkrú   r7   )r?   rZ   rM   s      rC   r¼   zvnum.run  s¥   € ØŒ<ð 
ð 
€aØ
�)Š)‰+Œ+€4ð	Ý„Iˆd�O„O€O€OøÝ
ð 	ð 	ð 	Ø€Dð	øøøðÝ„JˆtŒ{˜1Œ~Ô" DÑ)Ô)Ð)Ð)øÝ
ð ð ð Øˆ1ˆ1ˆ1ðøøøð
ð 
s!   Ÿ4´
AÁ AÁ%A+Á+
A:Á9A:N)r€   r©   rª   r«   r¬   Úext_inr6  r¼   rd   r^   rC   rv   rv   w  sJ   € € € € € ðð ð 
€Øˆ(€ðð ð ðð ð ð ð r^   c                   ó   — e Zd ZdZd„ ZdS )Ú
fake_shlibúJ
	Task used for reading a system library and adding the dependency on it
	c                 óX   — | j         D ]}|j        st          j        c S Œt          j        S r�   ©Ú	run_afterr!  r   Ú	ASK_LATERÚSKIP_ME©r?   rÂ   s     rC   Úrunnable_statuszfake_shlib.runnable_status�  ó8   € ØŒ>ð ð €aØ
Œ(ð ÝŒ>ÐÐÐðå	ŒÐr^   N©r€   r©   rª   r«   rC  rd   r^   rC   r;  r;  Œ  ó-   € € € € € ðð ðð ð ð ð r^   r;  c                   ó   — e Zd ZdZd„ ZdS )Ú
fake_stlibr<  c                 óX   — | j         D ]}|j        st          j        c S Œt          j        S r�   r>  rB  s     rC   rC  zfake_stlib.runnable_statusš  rD  r^   NrE  rd   r^   rC   rH  rH  –  rF  r^   rH  c                 ó$   —  | |d|d||¬¦  «        S )zÆ
	Read a system shared library, enabling its use as a local library. Will trigger a rebuild if the file changes::

		def build(bld):
			bld.read_shlib('m')
			bld.program(source='main.c', use='m')
	Úfake_libru   ©r7   r¢   Ú	lib_pathsÚlib_typerã   rä   rd   ©r?   r7   Úpathsrã   rä   s        rC   Ú
read_shlibrQ     s3   € ð 	ˆ�$ °uÀwÐ`oð  AOð  	Pñ  	Pô  	Pð  Pr^   c                 ó$   —  | |d|d||¬¦  «        S )zp
	Read a system static library, enabling a use as a local library. Will trigger a rebuild if the file changes.
	rK  rÐ   rL  rd   rO  s        rC   Ú
read_stlibrS  «  s3   € ð
 	ˆ�$ °uÀwÐ`oð  AOð  	Pñ  	Pô  	Pð  Pr^   )zlib%s.soz%s.sozlib%s.dylibú	lib%s.dllú%s.dll)zlib%s.az%s.arT  rU  z	lib%s.libz%s.lib)ru   rÐ   rK  c                 ó”  ‡ — d}ˆ fd„t           ‰ j                 D ¦   «         }‰ j        ‰ j        gz   t          z   D ]À}t          |t          j        ¦  «        s<‰ j        j         	                    |¦  «        p‰ j         	                    |¦  «        }|sŒX|D ]c}| 	                    |¦  «        }|rJ	 t          j        |                     ¦   «         ¦  «         n # t          $ r t          d|z  ¦  «        ‚w xY w nŒdŒ¿ nt          j        d‰ j        z  ¦  «        ‚‰                      d‰ j        z  g |g¦  «        ‰ _        ‰ j        ‰ _        dS )zŽ
	Find the location of a foreign library. Used by :py:class:`waflib.Tools.ccroot.read_shlib` and :py:class:`waflib.Tools.ccroot.read_stlib`.
	Nc                 ó$   •— g | ]}|‰j         z  ‘ŒS rd   )r7   )rf   rZ   r?   s     €rC   rh   zprocess_lib.<locals>.<listcomp>¾  s   ø€ Ð	=Ð	=Ð	=˜Aˆ!ˆdŒi‰-Ð	=Ð	=Ð	=r^   zCould not read %rzcould not find library %rzfake_%s)Úlib_patternsrN  rM  rM   ÚSYSTEM_LIB_PATHSrK   r   rO   rP   Ú	find_noder   Úh_filer¡   ÚEnvironmentErrorÚ
ValueErrorr   rÖ   r7   r9   rp   rˆ   )r?   r@   rð   rZ   rà   s   `    rC   Úprocess_libr^  ·  sg  ø€ ð
 	€à	=Ð	=Ð	=Ð	=¥¨d¬mÔ!<Ð	=Ñ	=Ô	=€Ø
Œ.˜DœI˜;Ñ
&Õ)9Ñ
9ð Að A€QÝ	�A•t”yÑ	!Ô	!ð Ø„x„}×Ò˜qÑ!Ô!Ð; T¤Y×%8Ò%8¸Ñ%;Ô%;€1Ø
ð Øàð 	ð 	€aØ
�+Š+�a‰.Œ.€4Ø
ð 
ð/Ý
„\�$—,’,‘.”.Ñ!Ô!Ð!Ð!øÝð /ð /ð /ÝÐ)¨AÑ-Ñ.Ô.Ð.ð/øøøà	€Eð
ð Ø€%åŒÐ3°d´iÑ?Ñ@Ô@Ð@Ø×"Ò" 9¨t¬}Ñ#<¸bÀ4À&ÑIÔI€„ØŒy€„€€s   Â.&CÃC2c                   ó   — e Zd Zd„ ZdS )Úfake_oc                 ó   — t           j        S r�   )r   rA  r5  s    rC   rC  zfake_o.runnable_status×  s
   € Ý	ŒÐr^   N)r€   r©   rª   rC  rd   r^   rC   r`  r`  Ö  s#   € € € € € ðð ð ð ð r^   r`  z.oz.objc                 óœ   — |                       dg |¦  «        }	 | j                             |¦  «         d S # t          $ r |g| _        Y d S w xY w)Nr`  )r9   r<   r=   r>   )r?   r@   rü   s      rC   Úadd_those_o_filesrc  Ú  si   € à×Ò˜ " dÑ+Ô+€ðØÔ×Ò˜SÑ!Ô!Ð!Ð!Ð!øÝð ð ð Ø˜€$ÔÐÐÐðøøøs   ™5 µAÁ
AÚfake_objc                 óx   — |                       | j        ¦  «        D ]}|                      |¦  «         Œg | _        dS )z3
	Puts object files in the task generator outputs
	N)Úto_nodesÚsourcerc  r÷   s     rC   Úprocess_objsrh  â  sC   € ð �]Š]˜4œ;Ñ'Ô'ð ð €TØ×Ò˜ÑÔÐÐØ€„€€r^   c                 ó�   — t          || j        j        ¦  «        s| j                             |¦  «        } | d||j        ¬¦  «        S )z›
	Read an object file, enabling injection in libs/programs. Will trigger a rebuild if the file changes.

	:param obj: object file path, as string or Node
	rd  )r¢   rg  r7   )rK   rM   r   r  r7   )r?   Úobjs     rC   Úread_objectrk  ì  sI   € õ 	�3˜œ	Ô+Ñ,Ô,ð %ØŒ	×Ò Ñ$Ô$€#Øˆ�j¨°3´8Ð<Ñ<Ô<Ð<r^   c           
      óž  — | j         j        dk    rdS | j        j                             ¦   «         }dD ]™}g }| j         |         D ]}}|                     d¦  «        r|                     |¦  «         Œ-|                     t          j         	                    t          j         
                    ||¦  «        ¦  «        ¦  «         Œ~|| j         |<   ŒšdS )zL
	On hp-ux, extend the libpaths and static library paths to absolute paths
	zhp-uxN)r#   r$   r  )rj   r„   rO   rR   r¡   r~   r=   rL   rM   Únormpathr'  )r?   r‰   ró   rX   rZ   s        rC   Úset_full_paths_hpuxrn  ÷  sÉ   € ð 	„HÔ˜ÒÐØ€&ØŒÔ× Ò Ñ"Ô"€Ø$ð ð €SØ
€#ØŒ8�CŒ=ð 8ð 8€aØ‡l‚l�3ÑÔð 8Ø‡J‚Jˆq�M„M€M€Mà‡J‚J�rŒw×Ò¥¤§¢¨T°1Ñ 5Ô 5Ñ6Ô6Ñ7Ô7Ð7Ð7Ø€$„(ˆ3�-€-ðð r^   )8r«   rL   ÚreÚwaflibr   r   r   r   r   Úwaflib.TaskGenr   r	   r
   r   r   Úwaflib.Toolsr   r   r   r   r   Úwaflib.Configurer   rY  ÚdefaultdictrH   rþ   rD   r]   rn   rp   r³   r¿   rÍ   rß   rõ   rø   rí   r   r`   r  Úcompiler  r0  rv   r;  rH  rQ  rS  rX  r^  r`  rc  rh  rk  rn  rd   r^   rC   ú<module>rv     sE  ðð
ð ð
 €€€€€€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ !Ð !Ð !Ð !Ð !Ð !àSÐSÐSÐ àˆeÔ Ñ$Ô$€ðð ˜#ÐnÐnÐnÑoÔo€ˆCÑ Ø˜#ÐqÐqÐqÑrÔr€ˆEÑ Ø˜#˜z¨8Ð4Ñ5Ô5€ˆCÑ Ø˜#ÐCÐCÐCÑDÔD€ˆJÑ à69°cð  ;vð  ;vð  ;vñ  7wô  7wð  w€ˆJÑ ˜+ lÑ3Ø69°cð  ;vð  ;vð  ;vñ  7wô  7wð  w€ˆHÑ ˜+ jÑ1Ø69°c¸9ÀjÐ:QÑ6RÔ6RÐ R€ˆHÑ ˜+ jÑ1à˜#ÐhÐhÐhÑiÔi€ˆJÑ Ø˜#ÐhÐhÐhÑiÔi€ˆHÑ Ø˜#˜y¨*Ð5Ñ6Ô6€ˆHÑ à�S˜)˜Ñ%Ô%€ˆEÑ ð ðð ñ „ðð( ð)ð )ñ „ð)ðV 	€ˆˆe�S˜%  zÑ2Ô2Ø€Ð%Ð'7Ñ8Ô8ð5ð 5ñ 9Ô8ñ 3Ô2ð5ð&\2ð \2ð \2ð \2ð \2�”	ñ \2ô \2ð \2ð|:ð :ð :ð :ð :�)ñ :ô :ð :ðð ð ð €€{Ñ Ô Ð à€ˆˆe�S˜$ Ñ&Ô&Ø€ÐÑÔð&4ð &4ñ  Ôñ 'Ô&ð&4ðP ð)0ð )0ñ „ð)0ðV 	€ˆˆe�S˜% Ñ&Ô&Ø€ÐÐ!8Ñ9Ô9Ø€ˆlÐ,Ñ-Ô-ðVð Vñ .Ô-ñ :Ô9ñ 'Ô&ðVðp ð'ð 'ñ „ð'ð ð ð  ñ „ð ð$ ð	ð 	ñ „ð	ð 	€ˆˆe�S˜$ ¨¨x¸Ñ?Ô?Ø€ˆmÑÔðð ñ Ôñ @Ô?ðð@ 	€ˆ�:˜yÑ)Ô)Ø€ˆlÑÔð/4ð /4ñ Ôñ *Ô)ð/4ðf ˆ"Œ*Ð>Ñ
?Ô
?€Ø€ˆ�:˜x¨°FÑ;Ô;Ø€ˆlÐ3Ñ4Ô4ðSMð SMñ 5Ô4ñ <Ô;ðSMðjð ð ð ð ˆ4Œ9ñ ô ð ð*ð ð ð ð �ñ ô ð ðð ð ð ð �ñ ô ð ð Ø!#°RÈð Pð Pð Pñ „ðPð Ø!#°RÈð Pð Pð Pñ „ðPð GÐFÐFØLÐLÐLðð €ð
 	€ˆÑÔðð ñ Ôðð<ð ð ð ð ˆTŒYñ ô ð ð €ˆ4�ÑÔðð ñ Ôðð 	€ˆÑÔØ€ÐÑ Ô ðð ñ !Ô ñ Ôðð ð=ð =ñ „ð=ð 	€ˆ�zÑ"Ô"Ø€ˆl˜MÑ*Ô*ðð ñ +Ô*ñ #Ô"ðð ð r^   