Ë
    K©Òb°i ã                   óª  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dlm
Z
 d dlZddddddd	d
dddddddœZdZdag ag ag adad„ Zd„ ZdZdZdZdZdZdZdez   dz   ez   dz   ez   dz   ez   d z   ez   d!z   Zd"Zd#„ Zd$Zd%Zd&Z d'Z!d(d)d)d)d(d(d*œZ"d+„ Z#d,„ Z$d-„ Z%d.„ Z&d/„ Z'd0„ Z(d1„ Z)d2„ Z*da+d3„ Z,d;d4„Z-d5„ Z.i Z/i Z0 G d6„ d7e1«      Z2d8„ Z3d9„ Z4d:„ Z5y)<é    )Úprint_functionN)ÚGetEnvironFallback)ÚGypErrorÚ Úlibú.az $(obj).$(TOOLSET)/$(TARGET)/geniz
$(obj)/genú$(builddir)ú%(INPUT_ROOT)sú%(INPUT_DIRNAME)sz$(abspath $<)z$(suffix $<)z$(notdir $<)ú$(BUILDTYPE))ÚEXECUTABLE_PREFIXÚEXECUTABLE_SUFFIXÚSTATIC_LIB_PREFIXÚSHARED_LIB_PREFIXÚSTATIC_LIB_SUFFIXÚINTERMEDIATE_DIRÚSHARED_INTERMEDIATE_DIRÚPRODUCT_DIRÚRULE_INPUT_ROOTÚRULE_INPUT_DIRNAMEÚRULE_INPUT_PATHÚRULE_INPUT_EXTÚRULE_INPUT_NAMEÚCONFIGURATION_NAMETFc                 ó\  — t         j                  j                  |«      }|dk(  rŸ| j                  dd«       | j                  dd«       | j                  dt        d   «       | j                  dt        d   «       dd	lmc m} t        |d
g «      a	t        |dg «      a
t        |dg «      at        j                  dddœ«       y	|}|dk(  rd}| j                  d|«       |dk(  r| j                  dd«       n| j                  dd«       | j                  dd«       | j                  dd«       y	)zDCalculate additional variables for use in the build (called by gyp).ÚmacÚOSÚSHARED_LIB_SUFFIXz.dylibÚSHARED_LIB_DIRr   ÚLIB_DIRr   NÚ+generator_additional_non_configuration_keysÚ"generator_additional_path_sectionsÚ!generator_extra_sources_for_rulesÚobjcÚobjcxx)ú.mú.mmÚandroidÚlinuxÚaixr   ú.soz$(builddir)/lib.$(TOOLSET)z$(obj).$(TOOLSET))ÚgypÚcommonÚ	GetFlavorÚ
setdefaultÚgenerator_default_variablesÚgyp.generator.xcodeÚ	generatorÚxcodeÚgetattrr!   r"   r#   ÚCOMPILABLE_EXTENSIONSÚupdate)Údefault_variablesÚparamsÚflavorÚxcode_generatorÚoperating_systems        ú4/usr/lib/python3/dist-packages/gyp/generator/make.pyÚCalculateVariablesr=   D   s7  € ä�:‰:×Ñ Ó'€&Øˆu‚_Ø× Ñ   uÔ-Ø× Ñ Ð!4°hÔ?Ø× Ñ Ð!1Ü!<¸]Ñ!KôMà× Ñ  Ü!<¸]Ñ!KôM÷
 2Ð1ä29¸/Ø5°ró3;Ð/ô *1°Ø,¨bó*2Ð&ô )0°Ø+¨Ró)1Ð%ä× Ñ ¨¸Ñ!AÕBàÐØ�ÒØ ÐØ× Ñ  Ð'7Ô8Ø�‚Ø×"Ñ"Ð#6¸Õ=à×"Ñ"Ð#6¸Ô>Ø× Ñ Ð!1Ð2NÔOØ× Ñ  Ð,?Õ@ó    c                 óX  — | j                  di «      }|j                  dd«      }|rda| d   j                  xs | d   j                  }|j                  dd«      }t        j
                  j                  t        j
                  j                  ||d«      «      }| d   j                  |d	œay)
zOCalculate the generator specific info that gets fed to input (called by
  gyp).Úgenerator_flagsÚandroid_ndk_versionNTÚoptionsÚ
output_dirÚoutÚgypfiles)ÚtoplevelÚqualified_out_dir)	ÚgetÚ#generator_wants_sorted_dependenciesÚgenerator_outputÚtoplevel_dirÚosÚpathÚnormpathÚjoinÚgenerator_filelist_paths)r8   r@   rA   rC   Úbuilddir_namerG   s         r<   ÚCalculateGeneratorInputInforR   i   s°   € ð —J‘JÐ0°"Ó5€/Ø'×+Ñ+Ð,AÀ4ÓHÐáà*.Ð'à�iÑ ×1Ñ1ò .Ø�iÑ ×-Ñ-ð à!×%Ñ% l°EÓ:€-Ü—g‘g×&Ñ&¤r§w¡w§|¡|Ø�˜zó(+ó ,Ðð
 �yÑ!×.Ñ.Ø*ñÑr>   ú?aÎ  quiet_cmd_alink = AR($(TOOLSET)) $@
cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^)

quiet_cmd_alink_thin = AR($(TOOLSET)) $@
cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)

# Due to circular dependencies between libraries :(, we wrap the
# special "figure out circular dependencies" flags around the entire
# input list during linking.
quiet_cmd_link = LINK($(TOOLSET)) $@
cmd_link = $(LINK.$(TOOLSET)) -o $@ $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,--start-group $(LD_INPUTS) $(LIBS) -Wl,--end-group

# We support two kinds of shared objects (.so):
# 1) shared_library, which is just bundling together many dependent libraries
# into a link line.
# 2) loadable_module, which is generating a module intended for dlopen().
#
# They differ only slightly:
# In the former case, we want to package all dependent code into the .so.
# In the latter case, we want to package just the API exposed by the
# outermost module.
# This means shared_library uses --whole-archive, while loadable_module doesn't.
# (Note that --whole-archive is incompatible with the --start-group used in
# normal linking.)

# Other shared-object link notes:
# - Set SONAME to the library filename so our binaries don't reference
# the local, absolute paths used on the link command-line.
quiet_cmd_solink = SOLINK($(TOOLSET)) $@
cmd_solink = $(LINK.$(TOOLSET)) -o $@ -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS)

quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
cmd_solink_module = $(LINK.$(TOOLSET)) -o $@ -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS)
ah  quiet_cmd_alink = LIBTOOL-STATIC $@
cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^)

quiet_cmd_link = LINK($(TOOLSET)) $@
cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS)

quiet_cmd_solink = SOLINK($(TOOLSET)) $@
cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS)

quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
cmd_solink_module = $(LINK.$(TOOLSET)) -bundle $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS)
aà  quiet_cmd_alink = AR($(TOOLSET)) $@
cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^)

quiet_cmd_alink_thin = AR($(TOOLSET)) $@
cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)

# Due to circular dependencies between libraries :(, we wrap the
# special "figure out circular dependencies" flags around the entire
# input list during linking.
quiet_cmd_link = LINK($(TOOLSET)) $@
quiet_cmd_link_host = LINK($(TOOLSET)) $@
cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS)
cmd_link_host = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS)

# Other shared-object link notes:
# - Set SONAME to the library filename so our binaries don't reference
# the local, absolute paths used on the link command-line.
quiet_cmd_solink = SOLINK($(TOOLSET)) $@
cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS)

quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS)
quiet_cmd_solink_module_host = SOLINK_MODULE($(TOOLSET)) $@
cmd_solink_module_host = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS)
a´  quiet_cmd_alink = AR($(TOOLSET)) $@
cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) -X32_64 crs $@ $(filter %.o,$^)

quiet_cmd_alink_thin = AR($(TOOLSET)) $@
cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) -X32_64 crs $@ $(filter %.o,$^)

quiet_cmd_link = LINK($(TOOLSET)) $@
cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS)

quiet_cmd_solink = SOLINK($(TOOLSET)) $@
cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS)

quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS)
a¥  quiet_cmd_alink = AR($(TOOLSET)) $@
cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^)

quiet_cmd_alink_thin = AR($(TOOLSET)) $@
cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)

quiet_cmd_link = LINK($(TOOLSET)) $@
cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS)

quiet_cmd_solink = SOLINK($(TOOLSET)) $@
cmd_solink = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) -Wl,DLL

quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@
cmd_solink_module = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) -Wl,DLL
a.	  # We borrow heavily from the kernel build setup, though we are simpler since
# we don't have Kconfig tweaking settings on us.

# The implicit make rules have it looking for RCS files, among other things.
# We instead explicitly write all the rules we care about.
# It's even quicker (saves ~200ms) to pass -r on the command line.
MAKEFLAGS=-r

# The source directory tree.
srcdir := %(srcdir)s
abs_srcdir := $(abspath $(srcdir))

# The name of the builddir.
builddir_name ?= %(builddir)s

# The V=1 flag on command line makes us verbosely print command lines.
ifdef V
  quiet=
else
  quiet=quiet_
endif

# Specify BUILDTYPE=Release on the command line for a release build.
BUILDTYPE ?= %(default_configuration)s

# Directory all our build output goes into.
# Note that this must be two directories beneath src/ for unit tests to pass,
# as they reach into the src/ directory for data with relative paths.
builddir ?= $(builddir_name)/$(BUILDTYPE)
abs_builddir := $(abspath $(builddir))
depsdir := $(builddir)/.deps

# Object output directory.
obj := $(builddir)/obj
abs_obj := $(abspath $(obj))

# We build up a list of every single one of the targets so we can slurp in the
# generated dependency rule Makefiles in one pass.
all_deps :=

%(make_global_settings)s

CC.target ?= %(CC.target)s
CFLAGS.target ?= $(CPPFLAGS) $(CFLAGS)
CXX.target ?= %(CXX.target)s
CXXFLAGS.target ?= $(CPPFLAGS) $(CXXFLAGS)
LINK.target ?= %(LINK.target)s
LDFLAGS.target ?= $(LDFLAGS)
AR.target ?= $(AR)

# C++ apps need to be linked with g++.
LINK ?= $(CXX.target)

# TODO(evan): move all cross-compilation logic to gyp-time so we don't need
# to replicate this environment fallback in make as well.
CC.host ?= %(CC.host)s
CFLAGS.host ?= $(CPPFLAGS_host) $(CFLAGS_host)
CXX.host ?= %(CXX.host)s
CXXFLAGS.host ?= $(CPPFLAGS_host) $(CXXFLAGS_host)
LINK.host ?= %(LINK.host)s
LDFLAGS.host ?= $(LDFLAGS_host)
AR.host ?= %(AR.host)s

# Define a dir function that can handle spaces.
# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions
# "leading spaces cannot appear in the text of the first argument as written.
# These characters can be put into the argument value by variable substitution."
empty :=
space := $(empty) $(empty)

# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces
replace_spaces = $(subst $(space),z ,$1)
unreplace_spaces = $(subst a  ,$(space),$1)
dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1)))

# Flags to make gcc output dependency info.  Note that you need to be
# careful here to use the flags that ccache and distcc can understand.
# We write to a dep file on the side first and then rename at the end
# so we can't end up with a broken dep file.
depfile = $(depsdir)/$(call replace_spaces,$@).d
DEPFLAGS = %(makedep_args)s -MF $(depfile).raw

# We have to fixup the deps output in a few ways.
# (1) the file output should mention the proper .o file.
# ccache or distcc lose the path to the target, so we convert a rule of
# the form:
#   foobar.o: DEP1 DEP2
# into
#   path/to/foobar.o: DEP1 DEP2
# (2) we want missing files not to cause us to fail to build.
# We want to rewrite
#   foobar.o: DEP1 DEP2 \
#               DEP3
# to
#   DEP1:
#   DEP2:
#   DEP3:
# so if the files are missing, they're just considered phony rules.
# We have to do some pretty insane escaping to get those backslashes
# and dollar signs past make, the shell, and sed at the same time.
# Doesn't work with spaces, but that's fine: .d files have spaces in
# their names replaced with other characters.
define fixup_dep
# The depfile may not exist if the input file didn't have any #includes.
touch $(depfile).raw
# Fixup path as in (1).
sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile)
# Add extra rules as in (2).
# We remove slashes and replace spaces with new lines;
# remove blank lines;
# delete the first line and append a colon to the remaining lines.
sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\
  grep -v '^$$'                             |\
  sed -e 1d -e 's|$$|:|'                     \
    >> $(depfile)
rm $(depfile).raw
endef

# Command definitions:
# - cmd_foo is the actual command to run;
# - quiet_cmd_foo is the brief-output summary of the command.

quiet_cmd_cc = CC($(TOOLSET)) $@
cmd_cc = $(CC.$(TOOLSET)) -o $@ $< $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c

quiet_cmd_cxx = CXX($(TOOLSET)) $@
cmd_cxx = $(CXX.$(TOOLSET)) -o $@ $< $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c
%(extra_commands)s
quiet_cmd_touch = TOUCH $@
cmd_touch = touch $@

quiet_cmd_copy = COPY $@
# send stderr to /dev/null to ignore messages when linking directories.
cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp %(copy_archive_args)s "$<" "$@")

%(link_commands)s

# Define an escape_quotes function to escape single quotes.
# This allows us to handle quotes properly as long as we always use
# use single quotes and escape_quotes.
escape_quotes = $(subst ','\'',$(1))
# This comment is here just to include a ' to unconfuse syntax highlighting.
# Define an escape_vars function to escape '$' variable syntax.
# This allows us to read/write command lines with shell variables (e.g.
# $LD_LIBRARY_PATH), without triggering make substitution.
escape_vars = $(subst $$,$$$$,$(1))
# Helper that expands to a shell command to echo a string exactly as it is in
# make. This uses printf instead of echo because printf's behaviour with respect
# to escape sequences is more portable than echo's across different shells
# (e.g., dash, bash).
exact_echo = printf '%%s\n' '$(call escape_quotes,$(1))'

# Helper to compare the command we're about to run against the command
# we logged the last time we ran the command.  Produces an empty
# string (false) when the commands match.
# Tricky point: Make has no string-equality test function.
# The kernel uses the following, but it seems like it would have false
# positives, where one string reordered its arguments.
#   arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
#                       $(filter-out $(cmd_$@), $(cmd_$(1))))
# We instead substitute each for the empty string into the other, and
# say they're equal if both substitutions produce the empty string.
# .d files contain aa   instead of spaces, take that into account.
command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\
                       $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1))))

# Helper that is non-empty when a prerequisite changes.
# Normally make does this implicitly, but we force rules to always run
# so we can check their command lines.
#   $? -- new prerequisites
#   $| -- order-only dependencies
prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?))

# Helper that executes all postbuilds until one fails.
define do_postbuilds
  @E=0;\
  for p in $(POSTBUILDS); do\
    eval $$p;\
    E=$$?;\
    if [ $$E -ne 0 ]; then\
      break;\
    fi;\
  done;\
  if [ $$E -ne 0 ]; then\
    rm -rf "$@";\
    exit $$E;\
  fi
endef

# do_cmd: run a command via the above cmd_foo names, if necessary.
# Should always run for a given target to handle command-line changes.
# Second argument, if non-zero, makes it do asm/C/C++ dependency munging.
# Third argument, if non-zero, makes it do POSTBUILDS processing.
# Note: We intentionally do NOT call dirx for depfile, since it contains z* for
# spaces already and dirx strips the a×   characters.
define do_cmd
$(if $(or $(command_changed),$(prereq_changed)),
  @$(call exact_echo,  $($(quiet)cmd_$(1)))
  @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))"
  $(if $(findstring flock,$(word %(flock_index)d,$(cmd_$1))),
    @$(cmd_$(1))
    @echo "  $(quiet_cmd_$(1)): Finished",
    @$(cmd_$(1))
  )
  @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile)
  @$(if $(2),$(fixup_dep))
  $(if $(and $(3), $(POSTBUILDS)),
    $(call do_postbuilds)
  )
)
endef

# Declare the "%(default_target)s" target first so it is the default,
# even though we don't have the deps yet.
.PHONY: %(default_target)s
%(default_target)s:

# make looks for ways to re-generate included makefiles, but in our case, we
# don't have a direct way. Explicitly telling make that it has nothing to do
# for them makes it go faster.
%%.d: ;

# Use FORCE_DO_CMD to force a target to run.  Should be coupled with
# do_cmd.
.PHONY: FORCE_DO_CMD
FORCE_DO_CMD:

aÔ  
quiet_cmd_objc = CXX($(TOOLSET)) $@
cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $<

quiet_cmd_objcxx = CXX($(TOOLSET)) $@
cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $<

# Commands for precompiled header files.
quiet_cmd_pch_c = CXX($(TOOLSET)) $@
cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
quiet_cmd_pch_cc = CXX($(TOOLSET)) $@
cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $<
quiet_cmd_pch_m = CXX($(TOOLSET)) $@
cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $<
quiet_cmd_pch_mm = CXX($(TOOLSET)) $@
cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $<

# gyp-mac-tool is written next to the root Makefile by gyp.
# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd
# already.
quiet_cmd_mac_tool = MACTOOL $(4) $<
cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@"

quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@
cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4)

quiet_cmd_infoplist = INFOPLIST $@
cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@"
c                 ó*  — t        t        j                  «       t        j                  ¬«      }| j                  d«       |D ]1  }| j                  d|z  «       | j                  dt        |   z  «       Œ3 | j                  d«       |D ]1  }| j                  d|z  «       | j                  dt        |   z  «       Œ3 | j                  d«       |D ]1  }| j                  d|z  «       | j                  dt        |   z  «       Œ3 | j                  d«       y )	N)Úkeyú1# Suffix rules, putting all outputs into $(obj).
z4$(obj).$(TOOLSET)/%%.o: $(srcdir)/%%%s FORCE_DO_CMD
z	@$(call do_cmd,%s,1)
z,
# Try building from generated source, too.
z<$(obj).$(TOOLSET)/%%.o: $(obj).$(TOOLSET)/%%%s FORCE_DO_CMD
ú
z1$(obj).$(TOOLSET)/%%.o: $(obj)/%%%s FORCE_DO_CMD
)Úsortedr5   ÚkeysÚstrÚlowerÚwrite)ÚwriterÚ
extensionsÚexts      r<   ÚWriteRootHeaderSuffixRulesr`     s  € ÜÔ+×0Ñ0Ó2¼¿	¹	ÔB€*à‡,�,ÐCÔDØò J€cØ
‡L�LÐHÈ3ÑNÔOØ
‡L�LÐ+Ô.CÀCÑ.HÑHÕIðJð 	‡,�,Ð?Ô@Øò J€cØ
‡L�LØGÈ#ÑMôOà
‡L�LÐ+Ô.CÀCÑ.HÑHÕIðJð 	‡,�,ˆtÔØò J€cØ
‡L�LÐEÈÑKÔLØ
‡L�LÐ+Ô.CÀCÑ.HÑHÕIðJð 	‡,�,ˆtÕr>   rV   z+# Try building from generated source, too.
a�  # "all" is a concatenation of the "all" targets from all the included
# sub-makefiles. This is just here to clarify.
all:

# Add in dependency-tracking rules.  $(all_deps) is the list of every single
# target in our tree. Only consider the ones with .d (dependency) info:
d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d))
ifneq ($(d_files),)
  include $(d_files)
endif
z/# This file is generated by gyp; do not edit.

ÚccÚcxx)ú.cú.ccú.cppú.cxxú.sú.Sc                 ó6   ‡ — ˆ fd„t         D «       D ]  }|sŒ y y)z:Return true if the file is compilable (should be in OBJS).c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w©N©Úendswith)Ú.0ÚeÚfilenames     €r<   ú	<genexpr>zCompilable.<locals>.<genexpr>J  s   øè ø€ ÒB qˆh×Ñ ×"ÑBùs   ƒTF)r5   )rp   Úress   ` r<   Ú
Compilablers   H  s#   ø€ ãBÔ,AÔBò €cÚ
Ùðð 
r>   c                 ó$   — | j                  d«      S )zAReturn true if the file is linkable (should be on the link line).ú.orl   ©rp   s    r<   ÚLinkablerw   P  s   € à	×	Ñ	˜4Ó	 Ð r>   c                 óL   — t         j                  j                  | «      d   dz   S )z1Translate a compilable filename to its .o target.r   ru   )rL   rM   Úsplitextrv   s    r<   ÚTargetrz   U  s!   € ä	�‰×	Ñ	˜(Ó	# AÑ	&¨Ñ	-Ð-r>   c                 ó2   — d| j                  dd«      z   dz   S )zÇQuotes an argument so that it will be interpreted literally by a POSIX
     shell. Taken from
     http://stackoverflow.com/questions/35817/whats-the-best-way-to-escape-ossystem-calls-in-python
     ú'z'\''©Úreplace©Úss    r<   ÚEscapeShellArgumentr�   Z  s   € ð
 
ˆq�y‰y˜˜gÓ&Ñ	&¨Ñ	,Ð,r>   c                 ó&   — | j                  dd«      S )zrMake has its own variable expansion syntax using $. We must escape it for
     string to be interpreted literally.ú$z$$r}   r   s    r<   ÚEscapeMakeVariableExpansionr„   b  s   € ð 
�‰�3˜Ó	Ðr>   c                 óR   — t        | «      } t        | «      } | j                  dd«      S )zBEscapes a CPP define so that it will reach the compiler unaltered.ú#z\#)r�   r„   r~   r   s    r<   ÚEscapeCppDefiner‡   h  s)   € ä˜!Ó€!Ü! !Ó$€!ð 
�‰�3˜Ó	Ðr>   c                 ó>   — d| v rd| j                  dd«      z   dz   } | S )zSTODO: Should this ideally be replaced with one or more of the above
     functions?ú"z\"r}   ©Ústrings    r<   ÚQuoteIfNecessaryrŒ   q  s*   € ð 	ˆF�]Ø�6—>‘> # uÓ-Ñ-°Ñ3€FØ	€-r>   c                 ó0   — t        j                  dd| «      S )zGConvert a string to a value that is acceptable as a make variable name.z[^a-zA-Z0-9_]Ú_)ÚreÚsubrŠ   s    r<   ÚStringToMakefileVariabler‘   y  s   € ä	�‰�  fÓ	-Ð-r>   c                 ób   — d| v r| S t         j                  j                  | «      r| S t        | z   S )z,Convert a path to its source directory form.ú$()rL   rM   ÚisabsÚsrcdir_prefix)rM   s    r<   Ú	Sourceifyr–     s.   € à	ˆT�\Ø€KÜ‡W�W‡]�]�4ÔØ€KÜ	˜Ñ	Ðr>   c                 ó&   — | j                  d|«      S )Nú r}   )r€   Úquotes     r<   ÚQuoteSpacesrš   ˆ  s   € Ø	
�‰�3˜Ó	Ðr>   c                 óê  — | j                  dd«      dk7  ryi }|D ]k  }t        j                  j                  |«      \  }}|dv }|sŒ,t        j                  j	                  |«      }|j                  |g «      j                  |«       Œm d}|j                  «       D ]/  \  }}	t        |	«      dkD  sŒ|d|›dd	j                  |	«      ›d
�z  }Œ1 |r%t        d| d   z  |z   dz   dz   «       t        d«      ‚y)z¡Makes sure if duplicate basenames are not specified in the source list.

  Arguments:
    spec: The target dictionary containing the properties of the target.
  ÚtypeNÚstatic_library)rc   rd   re   rf   r&   r'   rg   rh   r   é   ú  ú: r˜   rW   z<static library %s has several files with the same basename:
Útarget_namezlibtool on OS X will generatez warnings for them.z6Duplicate basenames in sources section, see list above)rH   rL   rM   ry   Úbasenamer/   ÚappendÚitemsÚlenrO   Úprintr   )
ÚspecÚall_sourcesÚ	basenamesÚsourceÚnamer_   Úis_compiled_filer¢   ÚerrorÚfiless
             r<   Ú_ValidateSourcesForOSXr¯   �  s  € ð 
‡X�Xˆf�dÓÐ/Ò/Ø
à€)Øò 6€fÜ—‘× Ñ  Ó(�I€Dˆ#Øð >ð >ÐáØÜ�w‰w×Ñ Ó%€HØ×Ñ˜ 2Ó&×-Ñ-¨fÕ5ð6ð €%Ø"Ÿ™Ó*ò :�o€h�Ü
ˆ5ƒz�Aƒ~Ùšx¨¯©°%­Ð9Ñ9�eð:ñ Ü	Ð
IØ
ˆ}Ñ
ñØ %ñ&Ø(GñHà
ñ ô !ô ÐKÓ
LÐLð	 r>   c                   óâ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zddefd„Z	 	 d#d„Z	 	 d$d„Zd„ Zd%d„Zd&d„Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#y)'ÚMakefileWriterz˜MakefileWriter packages up the writing of one target-specific foobar.mk.

  Its only real entry point is Write(), and is mostly used for namespacing.
  c           	      ó~  — || _         || _        i | _        i | _        i | _        t
        j                  «       D ]ƒ  }| j                  j                  |d|›dt
        |   ›d�i«       | j                  j                  |d|›dt
        |   ›d�i«       | j                  j                  |d|›dt
        |   ›d�i«       Œ… y )Nz,$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%z FORCE_DO_CMD
	@$(call do_cmd,z,1)
z4$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%z)$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%)r@   r9   Úsuffix_rules_srcdirÚsuffix_rules_objdir1Úsuffix_rules_objdir2r5   rY   r6   )Úselfr@   r9   r_   s       r<   Ú__init__zMakefileWriter.__init__»  sÎ   € Ø*€DÔØ€D„Kà!€DÔØ "€DÔØ "€DÔô %×)Ñ)Ó+ò +ˆà
×Ñ×%Ñ%¡sò Ô! #Ó&ð.(ð '*ô +ð ×Ñ×&Ñ&©ò Ô! #Ó&ð/(ð (*ô +ð ×Ñ×&Ñ&©ò Ô! #Ó&ð/(ð (*õ +ñ+r>   c                 ó–
  ‡ — t         j                  j                  |«       t        |d«      ‰ _        ‰ j                  j                  t        «       |‰ _        |‰ _        |d   ‰ _	        |d   ‰ _
        |d   ‰ _        t         j                  j                  ‰ j                  |«      ‰ _        ‰ j                  dk(  r%t         j                  j!                  |«      ‰ _        nd‰ _        ‰ j%                  |«      \  }}g }	g }
g }g }g }‰ j                  r-‰ j'                  |«      ‰ _        ‰ j+                  |«      ‰ _        n‰ j/                  |«      x‰ _        ‰ _        t1        |j3                  dd«      «      ‰ _        d	‰ _        ‰ j4                  s‰ j                  ‰ j6                  v r?t8        j                  j;                  ‰ j(                  «      ‰ _        ‰ j?                  «       }n‰ j(                  ‰ _        ‰ j(                  }‰ jA                  d
‰ j                  z   «       ‰ jA                  d‰ j                  z   «       d|v r‰ jC                  |d   |
|	||«       d|v r‰ jE                  |d   |
|	||«       d|v r‰ jG                  |d   |	|«       ‰ j                  r8|j3                  dg «      |z   }‰ jI                  ||«       ‰ jK                  |«       |j3                  dg «      |
z   }|�r½‰ j                  dk(  rtM        ||«       ‰ jO                  ||||	||t         j                  jQ                  ‰ j"                  ˆ fd„‰ jR                  «      «       |D �cg c]  }tU        |«      sŒ|‘Œ }}|�r7‰ jA                  tV        «       tY        |D �cg c]$  }t8        j                  j[                  |«      d   ‘Œ& c}«      }|D ]/  }|‰ j\                  v sŒ‰ jA                  ‰ j\                  |   «       Œ1 ‰ jA                  t^        «       |D ]/  }|‰ j`                  v sŒ‰ jA                  ‰ j`                  |   «       Œ1 |D ]/  }|‰ jb                  v sŒ‰ jA                  ‰ jb                  |   «       Œ1 ‰ jA                  d«       ‰ j                  r|je                  ‰ j,                  «       ‰ jg                  |||||z   ||	|«       |th        |<   ‰ j                  dv r‰ j,                  tj        |<   ‰ jl                  j3                  dd«      r‰ jo                  ‰ j                  ||«       ‰ j                  jq                  «        yc c}w c c}w )aŒ  The main entry point: writes a .mk file for a single target.

    Arguments:
      qualified_target: target we're generating
      base_path: path relative to source root we're building in, used to resolve
                 target-relative paths
      output_filename: output .mk file name to write
      spec, configs: gyp info
      part_of_all: flag indicating this target is part of 'all'
    Úwr¡   rœ   Útoolsetr   NÚstandalone_static_libraryr   )Ú
executableÚloadable_moduleÚshared_libraryzTOOLSET := z
TARGET := ÚactionsÚrulesÚcopiesÚmac_bundle_resourcesÚsourcesc                 ó8   •— t        ‰j                  | «      «      S rk   ©r–   Ú
Absolutify©Úpr¶   s    €r<   ú<lambda>z&MakefileWriter.Write.<locals>.<lambda>3  s   ø€ ¬Y°t·±ÀqÓ7IÓ-J€ r>   rž   z!# End of this set of suffix rules)r�   r¾   rA   )9r,   r-   ÚEnsureDirExistsÚopenÚfpr\   ÚheaderÚqualified_targetrM   Útargetrœ   rº   Úxcode_emulationÚIsMacBundler9   Úis_mac_bundleÚXcodeSettingsÚxcode_settingsÚComputeDepsÚComputeMacBundleOutputÚoutputÚComputeMacBundleBinaryOutputÚoutput_binaryÚComputeOutputÚboolrH   Úis_standalone_static_libraryÚ_INSTALLABLE_TARGETSrL   r¢   ÚaliasÚ_InstallableTargetInstallPathÚWriteLnÚWriteActionsÚ
WriteRulesÚWriteCopiesÚWriteMacBundleResourcesÚWriteMacInfoPlistr¯   ÚWriteSourcesÚMacPrefixHeaderÚPchifyrs   Ú#SHARED_HEADER_SUFFIX_RULES_COMMENT1Úsetry   r³   Ú#SHARED_HEADER_SUFFIX_RULES_COMMENT2r´   rµ   r£   ÚWriteTargetÚtarget_outputsÚtarget_link_depsr@   ÚWriteAndroidNdkModuleRuleÚclose)r¶   rÎ   Ú	base_pathÚoutput_filenamer§   ÚconfigsÚpart_of_allÚdepsÚ	link_depsÚextra_outputsÚextra_sourcesÚextra_link_depsÚextra_mac_bundle_resourcesÚmac_bundle_depsÚinstall_pathÚall_mac_bundle_resourcesr¨   ÚxrÃ   r€   r^   r_   s   `                     r<   ÚWritezMakefileWriter.WriteÖ  s¾  ø€ ô ‡J�J×Ñ˜Ô/ä�? CÓ(€D„Gà‡G�G‡M�M”&Ôà,€DÔØ€D„IØ�}Ñ%€D„KØ�V‘€D„IØ˜	‘?€D„Lä×,Ñ,×8Ñ8¸¿¹ÀdÓK€DÔØ‡{�{�eÒÜ×/Ñ/×=Ñ=¸dÓC€dÕà €dÔà×&Ñ& tÓ,�O€Dˆ)ð
 €MØ€MØ€OØ!#ÐØ€Oà×ÒØ×/Ñ/°Ó5€d„kØ×<Ñ<¸TÓB€dÕà)-×);Ñ);¸DÓ)AÐA€d„k�DÔ&ä(,Ø�‰Ð,¨aÓ0ó)2€DÔ%ð!3€DÔà×)Ò)Ø�	‰	�T×.Ñ.Ñ.Ü—7‘7×#Ñ# D§K¡KÓ0€d„jØ×7Ñ7Ó9�là—;‘;€d„jØ—[‘[€là‡L�L� §¡Ñ-Ô.Ø‡L�L� §¡Ñ+Ô,ð �DÑØ
×Ñ˜˜Y™¨¸Ø2°KôAð �$�Ø
‡o�o�d˜7‘m ]°MØ0°+ô?ð �4ÑØ
×Ñ�t˜H‘~ }°kÔBð ×Òà
�(‰(Ð)¨2Ó
.Ð1KÑ
Kð à
×"Ñ"Ð#;¸_ÔMØ
×Ñ˜_Ô-ð —(‘(˜9 bÓ)¨MÑ9€KÚØ	�‰˜Ò	ô 	˜t [Ô1Ø
×ÑØ
�4˜ mØ
˜;Ü
×
Ñ
×
-Ñ
-Ø×!Ñ!Ó#JØ�k‰kóôð (Ö9�q¬:°a­=’Ð9€gÐ9Ú	Ø�‰Ô8Ô9Ü¸'ÖB°Qœ"Ÿ'™'×*Ñ*¨1Ó-¨aÓ0ÒBÓCˆ
Øò 	8ˆCØ�D×,Ñ,Ò,Ø�L‰L˜×1Ñ1°#Ñ6Õ7ð	8ð 	�‰Ô8Ô9Øò 	9ˆCØ�D×-Ñ-Ò-Ø�L‰L˜×2Ñ2°3Ñ7Õ8ð	9ð ò 	9ˆCØ�D×-Ñ-Ò-Ø�L‰L˜×2Ñ2°3Ñ7Õ8ð	9ð 	�‰Ð8Ô9ð ×ÒØ
×
 Ñ
  ×!3Ñ!3Ô
4à×Ñ�T˜7 D¨/¸IÑ*EØ$ m°[ôBð (4„NÐ#Ñ$ð ‡y�yÐ8Ñ8Ø+/×+=Ñ+=ÔÐ'Ñ(ð ×Ñ×ÑÐ 5°tÔ<Ø
×$Ñ$ T§[¡[°+¸yÔIà‡G�G‡M�M…OùòG :ùò Cs   ÍUÍ)UÎ)Uc                 ó  — t         j                  j                  |«       t        |d«      | _        | j                  j                  t        «       | j                  dt        j                  j                  t        j                  j                  |«      |«      z  «       | j                  d«       | j                  d«       |rd|z   }| j                  d|›ddj                  |«      ›�«       | j                  j                  «        y)	a°  Write a "sub-project" Makefile.

    This is a small, wrapper Makefile that calls the top-level Makefile to build
    the targets from a single gyp file (i.e. a sub-project).

    Arguments:
      output_filename: sub-project Makefile name to write
      makefile_path: path to the top-level Makefile
      targets: list of "all" targets for this sub-project
      build_dir: build output directory, relative to the sub-project
    r¹   zexport builddir_name ?= %sz.PHONY: allzall:z -C z	$(MAKE)r˜   N)r,   r-   rÊ   rË   rÌ   r\   rÍ   rà   rL   rM   rO   Údirnamerð   )r¶   rò   Úmakefile_pathÚtargetsÚ	build_dirs        r<   ÚWriteSubMakezMakefileWriter.WriteSubMake[  s·   € ô ‡J�J×Ñ˜Ô/Ü�? CÓ(€D„GØ‡G�G‡M�M”&Ôð 	‡L�LÐ-Ü—‘—‘œbŸg™gŸo™o¨oÓ>À	ÓJñKô Là‡L�L�ÔØ‡L�L�ÔÙØ˜}Ñ,€mØ‡L‚L¢]°C·H±H¸WÔ4EÐFÔGØ‡G�G‡M�M…Or>   c                 ó–  — | j                  «       }|D �]�  }t        | j                  ›d|d   ›�«      }| j                  d|d   z  «       |d   }	|d   }
t	        «       }|
D ]8  }t
        j                  j                  |«      d   }|sŒ(|j                  |«       Œ: t        |j                  dd«      «      r||
z  }t        |j                  d	d«      «      r||
z  }|d
   }| j                  dk(  r-|D �cg c]"  }t        j                  j                  ||«      ‘Œ$ }}t        j                  j!                  |«      }d|v r| j                  d|›d|d   ›d�«       n| j                  d|›d|›d�«       t#        |«      dkD  rddj%                  |«      z  dz   |z   }dt'        | j                  xs d«      z  }|j)                  d| j*                  «      }|j)                  d| j*                  «      }| j                  d|›d|›|›�«       | j                  «        |
D �cg c]  }| j-                  |«      ‘Œ }
}| j                  dt/        |
d   «      z  «       | j                  dt/        |
d   «      z  «       | j1                  |
d   | j                  «       «       |	D ]  }d|vrŒJ d|z  «       ‚ |
D ]  }d|vrŒJ d|z  «       ‚ |
D �cg c]"  }t        j                  j                  ||«      ‘Œ$ }
}|	D �cg c]"  }t        j                  j                  ||«      ‘Œ$ }	}| j3                  |
t5        t&        t5        | j,                  |	«      «      ||¬«       d|z  }| j                  |›ddj%                  |
«      ›�«       |j7                  d|z  «       | j                  «        �Œ’ | j                  «        y c c}w c c}w c c}w c c}w )!a›  Write Makefile code for any 'actions' from the gyp input.

    extra_sources: a list that will be filled in with newly generated source
                   files, if any
    extra_outputs: a list that will be filled in with any outputs of these
                   actions (used to make other pieces dependent on these
                   actions)
    part_of_all: flag indicating this target is part of 'all'
    rŽ   Úaction_namez### Rules for action "%s":ÚinputsÚoutputsr   Úprocess_outputs_as_sourcesFÚ'process_outputs_as_mac_bundle_resourcesÚactionr   ÚmessageÚ
quiet_cmd_z
 = ACTION z $@zmkdir -p %sr˜   z; úcd %s; ú.ú	$(TARGET)Úcmd_zj = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; ú%s: obj := $(abs_obj)ú%s: builddir := $(abs_builddir)z3Spaces in action input filenames not supported (%s)z4Spaces in action output filenames not supported (%s))rô   Úcommandzaction_%s_outputsú := ú$(%s)N)ÚGetSortedXcodeEnvr‘   rÎ   rà   rê   rL   rM   ÚsplitÚaddÚintrH   r9   r,   rÐ   ÚExpandEnvVarsr-   ÚEncodePOSIXShellListr¥   rO   r–   r~   rÏ   rÆ   rš   ÚWriteSortedXcodeEnvÚ
WriteDoCmdÚmapr£   )r¶   r¿   rø   r÷   rú   rô   Úenvr  r«   r  r	  ÚdirsrD   ÚdirÚaction_commandsr  Ú	cd_actionÚoÚinputr×   ÚiÚoutputs_variables                         r<   rá   zMakefileWriter.WriteActionsv  s½  € ð ×
 Ñ
 Ó
"€CØó SˆÜ%°×1FÓ1FØ17¸Ò1Fð'Hó I€dà
‡l�lÐ/°&¸Ñ2GÑGÔHØ�hÑ€fØ�yÑ!€gô ‹U€dØò ˆ#Ü�g‰g�m‰m˜CÓ  Ñ#ˆÚØ
�(‰(�3�-ðô 
ˆV�Z‰ZÐ4°eÓ<Ô	=Ø˜Ñ ˆÜ	ˆV�Z‰ZÐAÀ5ÓIÔ	JØ" gÑ-Ð"ð ˜xÑ(€oØ	�‰˜Ò	à)8ö:Ø%ô ×.Ñ.×<Ñ<¸WÀcÕJð :ˆð :ä—
‘
×/Ñ/°Ó@€gØ	�fÑ	Ø�Š²d¸FÀ9Ó<MÐNÕOà�Š²dºDÐAÔBÜ	ˆT‹�QŠØ #§(¡(¨4£.Ñ0°4Ñ7¸'ÑAˆàœi¨¯	©	Ò(8°SÓ9Ñ9€ið
 —‘ ¨T¯[©[Ó9€gØ×#Ñ# K°·±Ó=€ið ‡l‚lò ™I¡wð	0ô 1ð
 ‡l�l„nØ-4Ö5¨�—‘ Õ#Ð5€gÐ5ð ‡l�lÐ*¬[¸À¹Ó-DÑDÔEØ
‡l�lÐ4´{À7È1Á:Ó7NÑNÔOØ
×Ñ˜w q™z¨4×+AÑ+AÓ+CÔDàò Lˆ%Ø˜%Òð 	LØAÀUÑJó	LÐðLð ò Nˆ&Ø˜&Ò ð 	NØBÀfÑLó	NÐ ðNð
 ELÖL¸q”×$Ñ$×2Ñ2°1°cÕ:ÐL€gÐLØCIÖJ¸a”×#Ñ#×1Ñ1°!°SÕ9ÐJ€fÐJà
‡o�o�gœs¤9¬c°$·/±/À6Ó.JÓKØ"-°tð ô =ð -¨tÑ3ÐØ
‡l�lÒ!1°3·8±8¸GÔ3DÐEÔFØ×Ñ˜7Ð%5Ñ5Ô6Ø
‡l�l†nðgSðj 	‡L�L…Nùò:ùò< 6ùò* MùÚJs   Ã4'N7ÈN<Ë'OË5'Oc                 ó^	  — | j                  «       }|D �]W  }t        | j                  ›d|d   ›�«      }d}	| j                  d|z  «       g }
|j	                  dg «      D �]º  }t        «       }t        j                  j                  |«      \  }}t        j                  j                  |«      \  }}|d   D �cg c]  }| j                  |||«      ‘Œ }}|D ]5  }t        j                  j                  |«      }|sŒ%|j                  |«       Œ7 t        |j	                  dd«      «      r||z  }t        |j	                  d	d«      «      r||z  }t        t        t        | j                   |g|j	                  d
g «      z   «      «      }d||	fz  g}|dk(  r|dgz  }|D �cg c]"  }t"        j$                  j'                  ||«      ‘Œ$ }}|D �cg c]"  }t"        j$                  j'                  ||«      ‘Œ$ }}|D �cg c]  }| j!                  |«      ‘Œ }}|
|z  }
| j                  d|d   z  «       | j                  d|d   z  «       | j)                  |||d||	fz  ¬«       t+        j,                  d«      }|D ]'  }t+        j.                  |d|«      }d|vrŒJ d|z  «       ‚ | j                  ddj1                  |«      z  «       |d   D �cg c]  }| j                  |||«      ‘Œ }}d}t3        |«      dkD  rddj1                  |«      z  }dt        | j                  xs d«      z  }| j4                  dk(  r-|D �cg c]"  }t"        j$                  j'                  ||«      ‘Œ$ }}t"        j6                  j9                  |«      }|j;                  d| j<                  «      }|j;                  d| j<                  «      }|j;                  d| j<                  «      }| j                  d|||	||dœz  «       | j                  d|	|d œz  «       | j                  «        |	d!z  }	�Œ½ d"|z  }| j?                  |
|«       |jA                  d#|z  «       | j                  d$|z  «       | j                  «        �ŒZ | j                  d%«       | j                  d«       y&c c}w c c}w c c}w c c}w c c}w c c}w )'a‚  Write Makefile code for any 'rules' from the gyp input.

    extra_sources: a list that will be filled in with newly generated source
                   files, if any
    extra_outputs: a list that will be filled in with any outputs of these
                   rules (used to make other pieces dependent on these rules)
    part_of_all: flag indicating this target is part of 'all'
    rŽ   Ú	rule_namer   z### Generated for rule %s:Úrule_sourcesr	  r
  Fr  r  z$(call do_cmd,%s_%d)Úresources_gritz@touch --no-create $@r  r  z%s_%d)r  z\$\([^ ]* \$<\)r   r˜   z/Spaces in rule filenames not yet supported (%s)úall_deps += %sr  zmkdir -p %s; r  r  r   r  z¡cmd_%(name)s_%(count)d = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; %(cd_action)s%(mkdirs)s%(action)s)r  r%  ÚcountÚmkdirsr«   z9quiet_cmd_%(name)s_%(count)d = RULE %(name)s_%(count)d $@)r/  r«   rž   zrule_%s_outputsr  z$### Finished generating for rule: %sz%### Finished generating for all rulesN)!r  r‘   rÎ   rà   rH   rê   rL   rM   r  ry   ÚExpandInputRootr  r  r  r   r–   rÆ   r,   rÐ   r  ÚWriteMakeRuler�   Úcompiler�   rO   r¥   r9   r-   r  r~   rÏ   Ú	WriteListr£   ) r¶   rÀ   rø   r÷   rú   rô   r!  Úruler«   r/  Úall_outputsÚrule_sourcer"  Úrule_source_dirnameÚrule_source_basenameÚrule_source_rootÚrule_source_extrD   r	  r#  r  r¿   r&  r(  Úvariables_with_spacesr×   Úacr  r0  r%  r  r)  s                                    r<   râ   zMakefileWriter.WriteRulesÚ  sà  € ð ×
 Ñ
 Ó
"€CØó pˆÜ%°×1FÓ1FØ15°kÒ1Bð'Dó E€dà€eØ
‡l�lÐ/°$Ñ6Ô7à€kàŸ™ .°"Ó5ó aˆ+Ü‹uˆÜ68·g±g·m±mÀKÓ6PÑ3Ð	Ð2ä�G‰G×ÑÐ1Ó2ñ 	,Ð	˜?ð
 # 9™oö/àð ×'Ñ'¨Ð-=Ø(;õ=ð /ˆð /ð ò 	ˆCÜ—‘—‘ Ó$ˆ#ÚØ�H‰H�S�Mð	ô ˆt�x‰xÐ4°eÓ<Ô=Ø
˜7Ñ
"ˆ-Üˆt�x‰xÐAÀ5ÓIÔJØ
$¨Ñ
/Ð
$Ü”Y¤ D§O¡O°k°]Ø$(§H¡H¨X°rÓ$:ñ6;ó !<ó =ˆà)¨T°5¨MÑ9Ð:ˆàÐ#Ò#ð Ð-Ð.Ñ
.ˆ'ð GNÖNÀ”3×&Ñ&×4Ñ4°Q¸Õ<ÐNˆÐNØEKÖLÀ”#×%Ñ%×3Ñ3°A°sÕ;ÐLˆÐLà/6Ö7¨!�4—?‘? 1Õ%Ð7ˆÐ7Ø�wÑˆð 	�‰Ð,¨w°q©zÑ9Ô:Ø�‰Ð6¸À¹ÑCÔDØ×Ñ˜7 F¨GØ#*¨d°E¨]Ñ#:ð 	ô 	<ô !#§
¡
Ð+=Ó >ÐØò 	KˆFÜ—6‘6Ð/°°VÓ<ˆ&Ø˜FÒ"ð KØ?À6ÑIóKÐ"ð	Kð 	�‰Ð%¨¯©°Ó(9Ñ9Ô:ð ! ™Nö,àð ×&Ñ& rÐ+;Ø':õ<ð ,ˆð ,ð ˆÜˆt‹9�qŠ=Ø" S§X¡X¨d£^Ñ3ˆ&Ø¤	¨$¯)©)Ò*:°sÓ ;Ñ;ˆ	ð
 �;‰;˜%Òà#)ö+Øô ×'Ñ'×5Ñ5°g¸sÕCð +ˆ&ð +ä—‘×0Ñ0°Ó8ˆØ—‘ ¨T¯[©[Ó9ˆØ×%Ñ% k°4·;±;Ó?ˆ	Ø—‘ ¨T¯[©[Ó9ˆð 	�‰ð2ð Ø ØØØñ5
ñ	
ô
	ð 	�‰ØGØØñK
ñ 
ô	ð
 	�‰ŒØ�‰
ŠðCaðF +¨TÑ1ÐØ
‡n�n�[Ð"2Ô3Ø×Ñ˜7Ð%5Ñ5Ô6à
‡l�lÐ9¸DÑ@ÔAØ
‡l�l†nðapðb 	‡L�LÐ8Ô9Ø‡L�L�ÕùòI/ùò4 OùÚLùâ7ùò(,ùò+s$   Â7RÆ'RÇ	'RÇ6R ËR%Ì7'R*c           
      ó  — | j                  d«       t        | j                  dz   «      }g }|D ]ú  }|d   D ]ð  }t        | j	                  |«      «      }t
        j                  j                  |«      d   }t        | j	                  t
        j                  j                  |d   |«      «      «      }	| j                  «       }
t        j                  j                  |	|
«      }	t        j                  j                  ||
«      }| j                  |	g|gd|«       |j                  |	«       Œò Œü | j                  |›ddj                  t        t         |«      «      ›�«       |j                  d	|z  «       | j                  «        y
)a  Write Makefile code for any 'copies' from the gyp input.

    extra_outputs: a list that will be filled in with any outputs of this action
                   (used to make other pieces dependent on this action)
    part_of_all: flag indicating this target is part of 'all'
    z### Generated for copy rule.Ú_copiesr®   rž   ÚdestinationÚcopyú = r˜   r  N)rà   r‘   rÎ   r–   rÆ   rL   rM   r  rO   r  r,   rÐ   r  r  r£   r   rš   )r¶   rÁ   r÷   rô   Úvariabler	  rA  rM   rp   r×   r!  s              r<   rã   zMakefileWriter.WriteCopiesZ  sI  € ð 	‡L�LÐ/Ô0ä'¨×(=Ñ(=À	Ñ(IÓJ€HØ€GØò ˆØ�w‘-ò ˆ$ä˜Ÿ™¨Ó.Ó/ˆÜ—7‘7—=‘= Ó& qÑ)ˆÜ˜4Ÿ?™?¬2¯7©7¯<©<¸¸]Ñ8KØ8@ó,Bó Có Dˆð ×$Ñ$Ó&ˆÜ×$Ñ$×2Ñ2°6¸3Ó?ˆÜ×"Ñ"×0Ñ0°°sÓ;ˆØ�‰˜˜ 4 &¨&°+Ô>Ø�‰�vÕñ)ðð, 	‡L�Lšh¨¯©´´[À'Ó1JÔ(KÐLÔMØ×Ñ˜ 8Ñ+Ô,Ø‡L�L…Nr>   c                 ó~  — | j                  d«       t        j                  j                  t        d   | j
                  t        t        t        | j                  |«      «      «      D ]U  \  }}t        j                  j                  |«      \  }}|dk7  sŒ.| j                  |g|gdd¬«       |j                  |«       ŒW y)z0Writes Makefile code for 'mac_bundle_resources'.z&### Generated for mac_bundle_resourcesr   z	.xcassetszmac_tool,,,copy-bundle-resourceT©rô   N)rà   r,   rÐ   ÚGetMacBundleResourcesr0   rÔ   r   r–   rÆ   rL   rM   ry   r  r£   )r¶   Ú	resourcesÚbundle_depsr×   rr   rŽ   r_   s          r<   rä   z&MakefileWriter.WriteMacBundleResources€  s§   € à‡L�LÐ9Ô:ä×*Ñ*×@Ñ@Ü# MÑ2°D×4GÑ4GÜŒI”s˜4Ÿ?™?¨IÓ6Ó7ó9ò #‰ˆ�ô �w‰w×Ñ Ó'�f€aˆØ	�Ó	à�‰˜˜ 3 %Ð)JØ$(ð 	ô 	*à×Ñ˜6Õ"ñ#r>   c                 óÆ  ‡ — t         j                  j                  t        d   ‰ j                  ˆ fd„«      \  }}}}|sy|rWdt
        j                  j                  |«      z   }‰ j                  ||dz   dt        ¬«       ‰ j                  |g|gdd	g«       |}‰ j                  |‰ j                  |¬
«      «       ‰ j                  |g|gdd¬«       |j                  |«       y)z0Write Makefile code for bundle Info.plist files.r   c                 ó8   •— t        ‰j                  | «      «      S rk   rÅ   rÇ   s    €r<   rÉ   z2MakefileWriter.WriteMacInfoPlist.<locals>.<lambda>“  s   ø€ ”)˜DŸO™O¨AÓ.Ó/€ r>   Nz$(obj).$(TOOLSET)/$(TARGET)/z: INFOPLIST_DEFINESú-D)Úquoterz$(call do_cmd,infoplist)z@plutil -convert xml1 $@ $@©Úadditional_settingszmac_tool,,,copy-info-plistTrE  )r,   rÐ   ÚGetMacInfoPlistr0   rÔ   rL   rM   r¢   r4  r‡   r2  r  r  r  r£   )r¶   rH  Ú
info_plistrD   ÚdefinesÚ	extra_envÚintermediate_plists   `      r<   rå   z MakefileWriter.WriteMacInfoPlist�  sù   ø€ ä*-×*=Ñ*=×*MÑ*MÜ# MÑ2°D×4GÑ4GÛ/ó+1Ñ'€J��W˜iñ ØÙà:Ü
�'‰'×
Ñ
˜:Ó
&ñ'Ðà
‡n�n�WÐ0Ð3HÑHÈ$Ü ð ô "à
×ÑÐ,Ð-°
¨|Ø%ð )ð*ô+ð
 &€jà×ÑØˆT×#Ñ#¸	Ð#ÓBôDà‡O�O�S�E˜J˜<Ð)EØ $ð ô &à×Ñ�sÕr>   c           
      ó2	  — t        |j                  «       «      D �]  }||   }	| j                  |	j                  d«      d|z  dt        ¬«       | j
                  dk(  rˆ| j                  j                  |«      }
| j                  j                  |«      }| j                  j                  |«      }| j                  j                  |«      }| j                  j                  |«      }n3|	j                  d«      }
|	j                  d«      }|	j                  d«      }| j                  d	«       | j                  |
d
|z  «       | j                  d«       | j                  |d|z  «       | j                  d«       | j                  |d|z  «       | j
                  dk(  rL| j                  d«       | j                  d|z  «       | j                  d«       | j                  d|z  «       |	j                  d«      }|r'|D �cg c]  }t        | j                  |«      «      ‘Œ }}| j                  |d|z  d¬«       �Œ t        t         |«      }|D �cg c]+  }| j#                  | j                  t%        |«      «      «      ‘Œ- }}| j                  |d«       |D ]  }d|vrŒJ d|z  «       ‚ | j                  d«       | j                  d«       | j                  «        |r| j'                  dg|dd¬«       |r| j'                  dg|d d¬«       |j)                  ||«      }|rC| j                  d!«       |D ]  \  }}}| j                  |›d"|›�«       Œ | j                  d#«       |rÚ|j+                  d«       | j                  d$«       | j                  d%«       | j                  d&|j-                  d'«      z  d(z   «       | j                  d)|j-                  d*«      z  d+z   «       | j
                  dk(  rL| j                  d,|j-                  d-«      z  d.z   «       | j                  d/|j-                  d0«      z  d1z   «       | j/                  |j1                  «       «       ||D �cg c]  }t3        |«      sŒ|‘Œ c}z  }| j                  «        y2c c}w c c}w c c}w )3a  Write Makefile code for any 'sources' from the gyp input.
    These are source files necessary to build the current target.

    configs, deps, sources: input from gyp.
    extra_outputs: a list of extra outputs this action should be dependent on;
                   used to serialize action/rules before compilation
    extra_link_deps: a list that will be filled in with any outputs of
                     compilation (to be used in link lines)
    part_of_all: flag indicating this target is part of 'all'
    rQ  zDEFS_%srK  )ÚprefixrL  r   ÚcflagsÚcflags_cÚ	cflags_ccz## Flags passed to all source files.z	CFLAGS_%sz# Flags passed to only C files.zCFLAGS_C_%sz!# Flags passed to only C++ files.zCFLAGS_CC_%sz"# Flags passed to only ObjC files.zCFLAGS_OBJC_%sz$# Flags passed to only ObjC++ files.zCFLAGS_OBJCC_%sÚinclude_dirszINCS_%sz-I)rU  ÚOBJSr˜   z-Spaces in object filenames not supported (%s)z?# Add to the list of files we specially track dependencies for.zall_deps += $(OBJS)z$(OBJS)z6Make sure our dependencies are built before any of us.T©ÚcommentÚ
order_onlyz1Make sure our actions/rules run before any of us.z:# Dependencies from obj files to their precompiled headersr    z%# End precompiled header dependencieszn# CFLAGS et al overrides must be target-local.
# See "Target-specific Variable Values" in the GNU Make manual.z$(OBJS): TOOLSET := $(TOOLSET)zD$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) %s Úcz/$(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE))zF$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) %s ra   z0$(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE))zG$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) %s ÚmzK$(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE))zI$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) %s ÚmmzM$(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE))N)rX   rY   r4  rH   r‡   r9   rÔ   Ú	GetCflagsÚ
GetCflagsCÚGetCflagsCCÚGetCflagsObjCÚGetCflagsObjCCrà   r–   rÆ   Úfilterrs   Ú	Objectifyrz   r2  ÚGetObjDependenciesr£   Ú
GetIncludeÚWritePchTargetsÚGetPchBuildCommandsrw   )r¶   ró   rõ   rÃ   r÷   rù   rô   Úprecompiled_headerÚ
confignameÚconfigrV  rW  rX  Úcflags_objcÚcflags_objccÚincludesÚincludeÚ
compilablerþ   ÚobjsÚobjÚpchdepsrª   Úgchs                           r<   ræ   zMakefileWriter.WriteSourcesª  sŒ  € ô ˜WŸ\™\›^Ó,ó Dˆ
Ø�zÑ"€fØ
‡n�n�V—Z‘Z 	Ó*¨I¸
Ñ,BÈ4Ü ð ô "ð 
�‰˜Ò	Ø×$Ñ$×.Ñ.¨zÓ:ˆØ×&Ñ&×1Ñ1°*Ó=ˆØ×'Ñ'×3Ñ3°JÓ?ˆ	Ø×)Ñ)×7Ñ7¸
ÓCˆØ×*Ñ*×9Ñ9¸*ÓE‰à—‘˜HÓ%ˆØ—:‘:˜jÓ)ˆØ—J‘J˜{Ó+ˆ	à
‡l�lÐ8Ô9Ø
‡n�n�V˜[¨:Ñ5Ô6Ø
‡l�lÐ4Ô5Ø
‡n�n�X˜}¨zÑ9Ô:Ø
‡l�lÐ6Ô7Ø
‡n�n�Y °Ñ ;Ô<Ø	�‰˜Ò	Ø�‰Ð9Ô:Ø�‰�{Ð$4°zÑ$AÔBØ�‰Ð;Ô<Ø�‰�|Ð%6¸Ñ%CÔDØ—‘˜NÓ+€hÙ	ØGOÖP¸G”I˜dŸo™o¨gÓ6Õ7ÐPˆÐPØ
‡n�n�X˜y¨:Ñ5¸d€nÖCð=Dô@ œ
 GÓ,€JØ@JÖK¸1ˆD�N‰N˜4Ÿ?™?¬6°!«9Ó5Õ6ÐK€DÐKØ‡N�N�4˜Ô àò BˆØ˜Š^ð BØ
9¸SÑ
@óBˆ^ðBð 	‡L�Lð %ô &à‡L�LÐ&Ô'Ø‡L�L„Nñ Ø
×Ñ˜)˜ dð$7à&*ð ô ,ñ Ø
×Ñ˜)˜ mð$7à&*ð ô ,ð
 !×3Ñ3°JÀÓF€GÙØ
‡l�lÐOÔPØ%ò ,Ñ
ˆ&�#�sØ�‰¢¡cÐ*Õ+ð,à
‡l�lÐ:Ô;áØ×Ñ˜YÔ'Ø
‡l�lð Cô Dð ‡l�lÐ3Ô4Ø
‡l�lð ð .×8Ñ8¸Ó=ñ>ð.ñ	.ô /ð ‡l�lð ð .×8Ñ8¸Ó>ñ?ð/ñ	/ô 0ð 
�‰˜Ò	Ø�‰ð ð 0×:Ñ:¸3Ó?ñ@ð3ñ	3ô 	4ð 	�‰ð ð 0×:Ñ:¸4Ó@ñAð4ñ	4ô 	5ð 	×ÑÐ+×?Ñ?ÓAÔBð ¨WÖI 6¼ÀÕ8HšÒIÑI€Oà‡L�L…Nùò] Qùò LùòP Js   Ç<!R
É0RÑRÑ0Rc           	      óh  — |sy|D ]ª  \  }}}}dddddœ|   }ddd	d
dœ|   }| j                  |›d|›d|›d�dz   |z   «       | j                  |›d|›d�«       | j                  d|z  «       | j                  d«       d|vs
J d|z  «       ‚| j                  d|z  «       | j                  d«       Œ¬ y)z,Writes make rules to compile prefix headers.Nz$(CFLAGS_C_$(BUILDTYPE))z$(CFLAGS_CC_$(BUILDTYPE))z4$(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE))z6$(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)))r^  ra   r_  r`  ÚGYP_PCH_CFLAGSÚGYP_PCH_CXXFLAGSÚGYP_PCH_OBJCFLAGSÚGYP_PCH_OBJCXXFLAGSr    r  r˜   zA$(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) ú FORCE_DO_CMDz	@$(call do_cmd,pch_%s,1)r   z*Spaces in gch filenames not supported (%s)r.  )rà   )r¶   Úpch_commandsrw  Ú	lang_flagÚlangr'  Úextra_flagsÚvar_names           r<   rj  zMakefileWriter.WritePchTargets&  sñ   € áØà'3ò Ñ#ˆˆY˜˜eà'Ø)ØCØFñ	ð
 	ñ€kð Ø Ø Ø#ñ	ð
 	ñ€hð ‡l�l¢cª8²YÐ?ð-ñ-ð ñ	ô  ð ‡l�lªC²Ð7Ô8Ø
‡l�lÐ/°$Ñ6Ô7Ø
‡l�l�2ÔØ˜‰^ð ?Ø
6¸#Ñ
=ó?ˆ^à
‡l�lÐ# cÑ)Ô*Ø
‡l�l�2Õñ3r>   c                 óH  — | j                   rJ ‚| j                  dk(  r(| j                  dv r| j                  j	                  «       S |d   }d}d}| j                  dk(  r|dd dk(  r|dd }d}d	}np| j                  d
v r$|dd dk(  r|dd }d}| j                  dk(  rd	}nAd}n>| j                  dk(  rd|z  }n)| j                  dk7  rt        dd| j                  d|f«       |j                  d|«      }|j                  d|«      }|j                  d«      }|rd|z   }||z   |z   S )z�Return the 'output basename' of a gyp spec.

    E.g., the loadable module 'foobar' in directory 'baz' will produce
      'libfoobar.so'
    r   ©r�   r¼   r¾   r½   r¡   r   r�   Né   r   r   )r½   r¾   r*   r+   Únonez%s.stampr¼   z,ERROR: What output file should be generated?rœ   rÏ   Úproduct_prefixÚproduct_nameÚproduct_extensionr  )rÒ   r9   rœ   rÔ   ÚGetExecutablePathr¦   rH   )r¶   r§   rÏ   Útarget_prefixÚ
target_extÚproduct_exts         r<   ÚComputeOutputBasenamez$MakefileWriter.ComputeOutputBasenameG  sY  € ð ×!Ò!Ð!Ð!à‡{�{�eÒ §	¡	ð .Mñ !Mà× Ñ ×2Ñ2Ó4Ð4à�-Ñ €FØ€MØ€JØ‡y�yÐ$Ò$Ø	��ˆ�uÒ	Ø˜˜�ˆØ€mØ�jØ	�‰Ð;Ñ	;Ø	��ˆ�uÒ	Ø˜˜�ˆØ€mØ	�‰˜Ò	Ø‰
à‰
Ø	�‰�fÒ	Ø˜FÑ"�fØ	�‰�lÒ	"ÜÐ;Ø�T—Y‘Y ¨&ð2ô 3ð —H‘HÐ-¨}Ó=€MØ�X‰X�n fÓ-€FØ—(‘(Ð.Ó/€KÙØ˜Ñ$€jà˜6Ñ! JÑ.Ð.r>   c                 ób   — | j                   dk(  xr | j                  dk(  xr | j                  dv S )NrÏ   r   r„  )rº   r9   rœ   ©r¶   s    r<   Ú_InstallImmediatelyz"MakefileWriter._InstallImmediatelyr  s?   € Ø�<‰<˜8Ñ#ò O¨¯©°uÑ(<ò OÀÇÁð OOð BOð Or>   c                 óP  — | j                   rJ ‚t        j                  j                  d| j                  z   | j                  «      }| j
                  dk(  s| j                  «       rd}|j                  d|«      }t        j                  j                  || j                  |«      «      S )z¢Return the 'output' (full output path) of a gyp spec.

    E.g., the loadable module 'foobar' in directory 'baz' will produce
      '$(obj)/baz/libfoobar.so'
    ú$(obj).r¼   r	   Úproduct_dir)	rÒ   rL   rM   rO   rº   rœ   r‘  rH   rŽ  ©r¶   r§   rM   s      r<   rÚ   zMakefileWriter.ComputeOutputw  s€   € ð ×!Ò!Ð!Ð!ä�7‰7�<‰<˜	 D§L¡LÑ0°$·)±)Ó<€DØ‡y�y�LÒ  D×$<Ñ$<Ô$>Ø€dØ�8‰8�M 4Ó(€DÜ�7‰7�<‰<˜˜d×8Ñ8¸Ó>Ó?Ð?r>   c                 ó    — | j                   sJ ‚t        d   }t        j                  j	                  || j
                  j                  «       «      S )zDReturn the 'output' (full output path) to a bundle output directory.r   )rÒ   r0   rL   rM   rO   rÔ   ÚGetWrapperNamer•  s      r<   rÖ   z%MakefileWriter.ComputeMacBundleOutput†  s?   € à×ÒÐÐÜ& }Ñ5€DÜ�7‰7�<‰<˜˜d×1Ñ1×@Ñ@ÓBÓCÐCr>   c                 ó„   — t         d   }t        j                  j                  || j                  j                  «       «      S )zAReturn the 'output' (full output path) to the binary in a bundle.r   )r0   rL   rM   rO   rÔ   rŠ  r•  s      r<   rØ   z+MakefileWriter.ComputeMacBundleBinaryOutput�  s0   € ä& }Ñ5€DÜ�7‰7�<‰<˜˜d×1Ñ1×CÑCÓEÓFÐFr>   c                 ót  — g }g }d|v rn|j                  |d   D �cg c]  }t        |   r	t        |   ‘Œ c}«       |d   D ]#  }|t        v sŒ|j                  t        |   «       Œ% |j                  |«       t        j
                  j                  |«      t        j
                  j                  |«      fS c c}w )zÛCompute the dependencies of a gyp spec.

    Returns a tuple (deps, link_deps), where each is a list of
    filenames that will need to be put in front of make for either
    building (deps) or linking (link_deps).
    Údependencies)Úextendrí   rî   r£   r,   r-   Úuniquer)r¶   r§   rõ   rö   Údeps        r<   rÕ   zMakefileWriter.ComputeDeps“  s·   € ð €DØ€IØ˜ÑØ
‡k�k°$°~Ñ2Fö +¨3Ü$ SÒ)ô " #Ó&ò +ô ,à�nÑ%ò 2ˆ#ØÔ"Ò"Ø
×
Ñ
Ô+¨CÑ0Õ
1ð2ð ‡k�k�)Ôô �J‰J×Ñ˜tÓ$¤c§j¡j×&8Ñ&8¸Ó&CÐDÐDùò+s   ›B5c                 óD   — | j                  | j                  g|dd¬«       y )Nz Build our special outputs first.Tr[  )r2  rÙ   )r¶   rÏ   r÷   s      r<   ÚWriteDependencyOnExtraOutputsz,MakefileWriter.WriteDependencyOnExtraOutputs©  s(   € Ø×Ñ˜×*Ñ*Ð+¨]Ø!CØ$(ð õ *r>   c                 óÂ  ‡ — ‰ j                  d«       |r1‰ j                  ‰ j                  |«       ‰ j                  ||dd¬«       i }‰ j                  dk7  �rt        |j                  «       «      D �]  }	||	   }
‰ j                  dk(  �r‰ j                  j                  |	t        d   ˆ fd„«      }t        j                  j                  ‰ j                  «      }‰ j                  j                  |	t!        t"        j                  j%                  t"        j                  j'                  |‰ j(                  «      «      «      t!        t"        j                  j%                  t"        j                  j'                  |‰ j                  «      «      «      «      }|rf|||	<   n`|
j+                  d	g «      }t-        d
„ |D «       «      r<|j/                  d‰ j0                  z  «       |j/                  d‰ j0                  z  «       |
j+                  dg «      }||D �cg c]  }d|z  ‘Œ	 c}z  }‰ j3                  |d|	z  «       ‰ j                  dk(  s�ŒØ‰ j3                  ‰ j                  j5                  |	«      d|	z  «       �Œ |j+                  d«      }|rIt        j                  j7                  |«      }‰ j                  dk(  r‰ j                  j9                  |«      }‰ j3                  |d«       ‰ j                  dt!        ‰ j                  «      z  «       ‰ j                  dt!        ‰ j                  «      z  «       ‰ j                  dk(  r'‰ j                  dt!        ‰ j                  «      z  «       g }‰ j                  dk(  rA|r|j/                  d«       |j;                  t        j<                  j?                  |«      «       |�rJ‰ jA                  ‰ j(                  ‰ jC                  «       «       |D ]N  }	‰ j                  t!        ‰ j(                  «      ›d|	›dt        j                  jE                  ||	   «      ›�«       ŒP |jG                  dt        j                  jE                  d‰ j                  g«      «       tI        |«      D ]%  \  }}|jK                  d«      rŒtM        |«      ||<   Œ' ‰ j                  dt!        ‰ j(                  «      z  «       ‰ j                  t!        ‰ j(                  «      ›ddj'                  |«      ›�«       ‰ jN                  rê‰ j                  ‰ j(                  |«       ‰ j3                  tQ        t         |«      d«       ‰ j                  d t!        ‰ j(                  «      z  «       ‰ j                  d!v r,‰ j                  d"‰ j                  jS                  «       z  «       |r‰ j                  d#«       g }‰ j                  d$«       ‰ j                  d%t!        ‰ j(                  «      z  «       |r+‰ jN                  rJ d&‰ jT                  z  «       ‚d'|vsJ d(«       ‚‰ j                  d)k(  rª‰ j                  t!        ‰ j                  «      ›d*dj'                  tQ        t         |«      «      ›�«       ‰ j0                  d+k(  r2‰ j                  d,k(  r#‰ jW                  ‰ j                  g|d-||¬.«       �nö‰ jW                  ‰ j                  g|d/||¬.«       �nÓ‰ j                  d0k(  ru|D ]  }d|vrŒJ d1|z  «       ‚ ‰ j                  d2vr/‰ jX                  s#‰ jW                  ‰ j                  g|d3||¬.«       �nr‰ jW                  ‰ j                  g|d4||¬.«       �nO‰ j                  d5k(  rh‰ j                  t!        ‰ j                  «      ›d*dj'                  tQ        t         |«      «      ›�«       ‰ jW                  ‰ j                  g|d6||¬.«       nØ‰ j                  d7k(  rw|D ]  }d|vrŒJ d8|z  «       ‚ ‰ j0                  d+k(  r1‰ j                  d,k(  r"‰ jW                  ‰ j                  g|d9||¬.«       nt‰ jW                  ‰ j                  g|d:||¬.«       nR‰ j                  dk(  r"‰ jW                  ‰ j                  g|d;||¬.«       n!t[        d<‰ j                  ‰ jT                  «       ‰ j(                  r‰ j(                  ‰ jT                  k7  rf‰ j                  ‰ j\                  vrN‰ j                  ‰ jT                  g‰ j(                  gd=d¬>«       |r!‰ j                  d?g‰ jT                  gd@d¬>«       ‰ j                  ‰ j\                  v s‰ jX                  �rq‰ j                  d5k(  rdA}n‰ j                  d0k(  rdB}nd)}‰ j_                  «       }‰ j(                  g}‰ j                  dk(  r8d'|vr4‰ j0                  dCk(  r%|‰ j(                  k(  sJ |›dD‰ j(                  ›�«       ‚‰ j                  ‰ jT                  g|gd=d¬>«       |‰ j(                  k7  rD‰ jN                  rJ ‚‰ jW                  |g‰ j(                  gdEdF|z  |¬G«       |j/                  |«       ‰ j(                  ‰ j`                  k7  r<‰ j`                  ‰ jT                  k7  r#‰ j                  ‰ j`                  g|dH|z  d¬>«       |r‰ j                  d?g|gdI|z  d¬>«       yJyJyJc c}w )Ka&  Write Makefile code to produce the final target of the gyp spec.

    spec, configs: input from gyp.
    deps, link_deps: dependency lists; see ComputeDeps()
    extra_outputs: any extra outputs that our target should depend on
    part_of_all: flag indicating this target is part of 'all'
    z### Rules for final target.z4Preserve order dependency of special output on deps.Tr[  r†  r   r   c                 ó8   •— t        ‰j                  | «      «      S rk   rÅ   rÇ   s    €r<   rÉ   z,MakefileWriter.WriteTarget.<locals>.<lambda>É  s   ø€ œ	 $§/¡/°!Ó"4Ó5€ r>   Úldflagsc              3   óJ   K  — | ]  }|j                  d «      xs d|v –— Œ y­w)r+   z.so.Nrl   )rn   r�  s     r<   rq   z-MakefileWriter.WriteTarget.<locals>.<genexpr>Ø  s%   è ø€ ÒF¸#�—‘˜eÓ$Ò5¨°#¨Ó5ÑFùs   ‚!#z-Wl,-rpath=\$$ORIGIN/lib.%s/z$-Wl,-rpath-link=\$(builddir)/lib.%s/Úlibrary_dirsz-L%sz
LDFLAGS_%szLIBTOOLFLAGS_%sÚ	librariesÚLIBSz*%s: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))z%s: LIBS := $(LIBS)z4%s: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE))z!$(TARGET_POSTBUILDS_$(BUILDTYPE))z: TARGET_POSTBUILDS_r  r   Úcdrƒ   r  z: POSTBUILDS := r˜   ÚBUNDLE_DEPSz%s: $(BUNDLE_DEPS))r¾   r½   z+	@$(call do_cmd,mac_package_framework,,,%s)z	@$(call do_postbuilds)z	@true  # No-op, used by testsz	@touch -c %szQPostbuilds for bundles should be done on the bundle, not the binary (target '%s')r”  z.Postbuilds do not work with custom product_dirr¼   z: LD_INPUTS := Úhostr(   Ú	link_host)Ú
postbuildsÚlinkr�   z2Spaces in alink input filenames not supported (%s))r   ÚopenbsdÚnetbsdÚwinÚ
alink_thinÚalinkr¾   Úsolinkr½   z3Spaces in module input filenames not supported (%s)Úsolink_module_hostÚsolink_moduleÚtouchzWARNING: no output forzAdd target alias)r\  ÚphonyÚallz!Add target alias to "all" target.zshared libraryzstatic libraryrÏ   z != rA  z Copy this to the %s output path.)r\  rô   z!Short alias for building this %s.zAdd %s to "all" target.N)1rà   rŸ  rÙ   r2  rœ   rX   rY   r9   rÔ   Ú
GetLdflagsr0   r,   r-   ÚInvertRelativePathrM   ÚAddImplicitPostbuildsrš   rL   rN   rO   r×   rH   Úanyr£   rº   r4  ÚGetLibtoolflagsrœ  ÚAdjustLibrariesr›  rÐ   ÚGetSpecPostbuildCommandsr  ÚGetSortedXcodePostbuildEnvr  ÚinsertÚ	enumerateÚ
startswithr�   rÒ   r   ÚGetFrameworkVersionrÏ   r  rÜ   r¦   rÝ   rß   rÞ   )r¶   r§   ró   rõ   rö   rH  r÷   rô   Útarget_postbuildsrm  rn  r¢  Úgyp_to_buildÚtarget_postbuildr¤  Úlibrary_dirr¥  r«  r(  Ú	postbuildÚlink_depÚ	file_descrü   Úinstallable_depss   `                       r<   rì   zMakefileWriter.WriteTarget¯  s
  ø€ ð 	‡L�LÐ.Ô/áØ
×(Ñ(¨×);Ñ);¸]ÔKØ
×Ñ˜¨ð#<à&*ð ô ,ð
 ÐØ‡y�y�FÓÜ˜wŸ|™|›~Ó.ó 9ˆ*Ø˜Ñ$ˆØ�;‰;˜%ÓØ×'Ñ'×2Ñ2°:Ü)¨-Ñ8Û5ó7ˆ'ô
 Ÿ™×6Ñ6°t·y±yÓAˆ,Ø!×0Ñ0×FÑFØÜœ"Ÿ'™'×*Ñ*¬2¯7©7¯<©<¸Ø8<¿¹ó,Eó Fó Gäœ"Ÿ'™'×*Ñ*¬2¯7©7¯<©<¸Ø8<×8JÑ8Jó,Ló Mó Nó	OÐ
ñ Ø,<Ð˜jÒ)à—J‘J˜y¨"Ó-ˆ'äÑFÀÔFÔFð �N‰NÐ:¸T¿\¹\ÑIÔJØ�N‰NÐBØŸ<™<ñ(ô )à—z‘z .°"Ó5ˆØ¸lÖK¨{�V˜kÓ)ÒKÑKˆØ�‰�w ¨zÑ 9Ô:Ø�;‰;˜%ÔØ
�.‰.˜×,Ñ,×<Ñ<¸ZÓHØ*¨ZÑ7ö9ð=9ð@ —(‘(˜;Ó'€iÙ	ä—J‘J×&Ñ& yÓ1ˆ	Ø�;‰;˜%ÒØ×)Ñ)×9Ñ9¸)ÓDˆ)Ø
‡n�n�Y Ô'Ø
‡l�lÐ?Ü
�d×(Ñ(Ó
)ñ*ô +à
‡l�lÐ(¬;°t×7IÑ7IÓ+JÑJÔKà	�‰˜Ò	Ø�‰ÐKÜ˜×*Ñ*Ó+ñ,ô 	-ð
 €JØ‡{�{�eÒÙ	Ø×ÑÐ=Ô>Ø×ÑÜ
×
Ñ
×
6Ñ
6°tÓ
<ô>ò ð ×Ñ˜tŸ{™{¨D×,KÑ,KÓ,MÔNà)ò Nˆ*Ø�‰Ü˜Ÿ™Õ%ÚÜ�Z‰Z×,Ñ,Ð->¸zÑ-JÔKðMõ 	NðNð ×Ñ˜œ3Ÿ:™:×:Ñ:¸DÀ$Ç)Á)Ð;LÓMÔNÜ# JÓ/ò 9‰,ˆ!ˆYØ×#Ñ# CÕ(Ü-¨iÓ8ˆ*�QŠ-ð9ð ‡l�lÐ4´{À4Ç;Á;Ó7OÑOÔPØ
‡l�lÜ
�d—k‘kÕ
" C§H¡H¨ZÔ$8ð:ô ;ð ×Òð ×(Ñ(¨¯©°mÔDð ‡n�n”Sœ kÓ2°MÔBØ
‡l�lÐ'¬+°d·k±kÓ*BÑBÔCð 
�‰Ð;Ñ	;Ø�‰ÐCØ×Ñ×3Ñ3Ó5ñ6ô 	7ñ
 
Ø�‰Ð/Ô0Ø€jð ‡l�lÐ4Ô5ð ‡l�lÐ#¤k°$·+±+Ó&>Ñ>Ô?áØ×#Ò#ð Ið ':Ø<@¿K¹Kñ'Hó IÐ#à $Ñ&ð  ð *ó  Ð&ð ‡y�y�LÒ Ø
‡l�lÜ
�d×(Ñ(Õ
)Ø
�(‰(”3”{ IÓ.Ô
/ð1ô 2ð 
�‰˜Ò	 D§K¡K°9Ò$<Ø�‰˜×+Ñ+Ð,¨i¸Ø#°
ð 	ö 	<ð 	�‰˜×+Ñ+Ð,¨i¸ÀØ#-ð 	ö 	/ð 
�‰Ð&Ò	&Øò Nˆ(Ø˜(Ò"ð 	NØ@ÀHÑLó	NÐ"ðNð �+‰+Ð@Ñ
@Ø
×
+Ò
+Ø�‰˜×+Ñ+Ð,¨i¸Ø#°
ð 	ö 	<ð 	�‰˜×+Ñ+Ð,¨i¸À+Ø#-ð 	ö 	/à	�‰Ð&Ò	&Ø
‡l�lÜ˜×*Ñ*Õ+Ø�H‰H”Sœ iÓ0Ô1ð3ô 4ð ‡o�o�t×)Ñ)Ð*¨I°xÀØ!+ð õ -à	�‰Ð'Ò	'Øò Oˆ(Ø˜(Ò"ð 	OØAÀXÑMó	OÐ"ðOð 
�‰˜Ò	 D§K¡K°9Ò$<Ø�‰˜×+Ñ+Ð,¨iÐ9MØ#°
ð 	õ 	<ð 	�‰Ø×ÑÐ  )¨_¸kØ!ð 	õ 	#ð 
�‰�fÒ	à
‡o�o�t×)Ñ)Ð*¨D°'¸;Ø!+ð õ -ô Ð$ d§i¡i°·±Ô=ð 
�Š˜Ÿ™¨¯©Ò3Ø	�‰˜$×3Ñ3Ñ	3Ø
×Ñ˜$Ÿ+™+˜¨¯©¨Ø!3¸Tð ô Cá	Ø×Ñ˜E˜7 T§[¡[ MØ%HØ#'ð 	ô 	)ð 	�	‰	�T×.Ñ.Ñ.Ø×)Ó)Ø	�‰Ð&Ò	&Ø$‰	Ø�9‰9Ð(Ò(Ø$‰	à ˆ	Ø×7Ñ7Ó9€lØŸ+™+˜ÐØ
�+‰+˜Ò
 }¸Ñ'<Ø
�,‰,˜(Ò
"à˜tŸ{™{Ò*ð 	'Ú˜$Ÿ+š+ð-'ó 	'Ð*ð ×Ñ˜$Ÿ+™+˜¨¨Ø!3¸Tð ô Cà	˜Ÿ™Ò	$Ø×%Ò%Ð%Ð%Ø�‰˜˜¨¯©¨°vØ"DØ!ñ#"Ø/:ð 	ô 	<ð 	×Ñ Ô-Ø	�‰˜Ÿ
™
Ò	" t§z¡z°T·[±[Ò'@Ø×Ñ˜DŸJ™J˜<Ð)9Ø%HØ$ñ&%Ø.2ð 	ô 	4ñ 
Ø×Ñ˜E˜7 \ NØ%>ÀÑ%JØ#'ð 	õ 	)ð 
ð9 	*ùòu Ls   ÈkNr   c                 ó°   — d}|r,|D �cg c]  } |||z   «      ‘Œ }}ddj                  |«      z   }| j                  j                  |›d|›d�«       yc c}w )z¸Write a variable definition that is a list of values.

    E.g. WriteList(['a','b'], 'foo', prefix='blah') writes out
         foo = blaha blahb
    but in a pretty-printed style.
    r   z \
	z :=z

N)rO   rÌ   r\   )r¶   Ú
value_listrC  rU  rL  ÚvaluesÚls          r<   r4  zMakefileWriter.WriteList›  sU   € ð €FÙØ0:Ö;¨1‘F˜6 A™:Õ&Ð;€jÐ;Ø˜9Ÿ>™>¨*Ó5Ñ5€fØ‡G�G‡M�M¢8ªVÐ4Õ5ùò <s   ‰Ac                 óâ   — d}|rd|vsJ ‚d}| j                  ||d|›|›d�g||d¬«       |D �cg c]  }t        |t        «      ‘Œ }}| j                  dd	j	                  |«      z  «       y
c c}w )zªWrite a Makefile rule that uses do_cmd.

    This makes the outputs dependent on the command line that was run,
    as well as support the V= make command line flag.
    r   ú,z,,1z$(call do_cmd,ú)T)r¿   r\  r  Úforcer.  r˜   N)r2  rš   ÚSPACE_REPLACEMENTrà   rO   )	r¶   r	  r  r  rô   r\  r«  Úsuffixr&  s	            r<   r  zMakefileWriter.WriteDoCmdª  s‰   € ð €FÙØ˜ÑÐÐØ€fØ×Ñ�w¡Ù;BÂFÐ"KÐ!LØ!(Ø!(Ø#ð	 ô %ð ;BÖB°QŒ{˜1Ô/Õ0ÐB€GÐBØ‡L�LÐ! C§H¡H¨WÓ$5Ñ5Õ6ùò Cs   ¯A,c	                 óð  — |D �	cg c]  }	t        |	«      ‘Œ }}	t        t         |«      }|r| j                  d|z   «       |r#| j                  ddj                  |«      z   «       |r| j                  d|d   z  «       |rdnd}
|r8| j                  dj                  |«      ›ddj                  |«      ›|
›�«       �nt	        |«      d	k(  r+| j                  |d   ›d
dj                  |«      ›|
›�«       nÏ|r|n| j
                  j                  d«      }t        j                  |«      j                  «       }d|z  }| j                  dj                  |«      ›d
|›�«       | j                  ddz  «       | j                  d›d
|›�«       | j                  |›d
dj                  |«      ›|
›�«       |j                  dd«       |r|D ]  }| j                  d|z  «       Œ | j                  «        yc c}	w )aÜ  Write a Makefile rule, with some extra tricks.

    outputs: a list of outputs for the rule (note: this is not directly
             supported by make; see comments below)
    inputs: a list of inputs for the rule
    actions: a list of shell commands to run for the rule
    comment: a comment to put in the Makefile above the rule (also useful
             for making this Python script's code self-documenting)
    order_only: if true, makes the dependency order-only
    force: if true, include FORCE_DO_CMD as an order-only dep
    phony: if true, the rule does not actually generate the named output, the
           output is just a name to run the rule
    command: (optional) command name to generate unambiguous labels
    z# z.PHONY: r˜   z%s: TOOLSET := $(TOOLSET)r   r}  r   z: | rž   r    zutf-8z%s.intermediatez	%sz@:z.INTERMEDIATEz$(call do_cmd,touch)N)rš   r   rà   rO   r¥   rÏ   ÚencodeÚhashlibÚsha1Ú	hexdigestrÀ  )r¶   r	  r  r¿   r\  r]  rÓ  r¶  r  r&  Úforce_appendÚ	cmdstringÚ	cmddigestÚintermediater  s                  r<   r2  zMakefileWriter.WriteMakeRuleÂ  s¯  € ð  (/Ö/ !Œ{˜1�~Ð/€GÐ/Ü”˜fÓ%€FáØ
‡l�l�4˜'‘>Ô"ÙØ
‡l�l�: §¡¨Ó 1Ñ1Ô2ÙØ
‡l�lÐ.°¸±Ñ;Ô<Ù&+‘?°€Láð ‡l�lØ—H‘H˜WÕ% s§x¡x°Ô'7¹ðGö Hä	ˆW‹˜Ò	à
‡l�l ¨£¨S¯X©X°fÔ-=¹|ÐLÕMñ &‘7¨4¯;©;×>Ñ>¸wÓG€iÜ—,‘,˜yÓ)×3Ñ3Ó5€iØ&¨)Ñ4€lØ
‡l�l˜sŸx™x¨Õ0±,Ð?Ô@Ø
‡l�l�6˜D‘=Ô!Ø
‡l�lš±Ð=Ô>Ø
‡l�lÚ  #§(¡(¨6Ô"2±LðBô Cà‡n�n�QÐ.Ô/áØò &ˆ&Ø�‰�V˜f‘_Õ%ð&à‡L�L…NùòW 0s   …G3c           	      óî  — | j                   dvry| j                  d«       | j                  d«       | j                  d|z   «       | j                  d«       | j                  d«       | j                  d«       | j                  d	«       d
d
d
dœ}d}|D ]D  }t        j                  j	                  |«      d   }||v sŒ*||xx   dz  cc<   ||   ||   kD  sŒC|}ŒF | j                  d|z   «       | j                  t        | j                  t        t        |«      «      d«       d„ }ddi}	i }
t        |
|	«       | j                   ||t        d   |
d   «      d«       | j                   ||t        d   t        d   «      d«       | j                   dk(  r| j                  d«       nA| j                   dk(  r| j                  d«       n | j                   dk(  r| j                  d«       | j                  «        y)aá  Write a set of LOCAL_XXX definitions for Android NDK.

    These variable definitions will be used by Android NDK but do nothing for
    non-Android applications.

    Arguments:
      module_name: Android NDK module name, which must be unique among all
          module names.
      all_sources: A list of source files (will be filtered by Compilable).
      link_deps: A list of link dependencies, which must be sorted in
          the order from dependencies to dependents.
    )r¼   r¾   r�   Nz/# Variable definitions for Android applicationszinclude $(CLEAR_VARS)zLOCAL_MODULE := ziLOCAL_CFLAGS := $(CFLAGS_$(BUILDTYPE)) $(DEFS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))z+LOCAL_CPPFLAGS := $(CFLAGS_CC_$(BUILDTYPE))zLOCAL_C_INCLUDES :=z/LOCAL_LDLIBS := $(LDFLAGS_$(BUILDTYPE)) $(LIBS)r   )rd   re   rf   re   rž   zLOCAL_CPP_EXTENSION := ÚLOCAL_SRC_FILESc                 óì   — g }| D ]l  }t         j                  j                  |«      }|j                  |«      sŒ4|j	                  |«      sŒF|j                  |t        |«      t        |«        «       Œn |S rk   )rL   rM   r¢   rÂ  rm   r£   r¥   )rõ   rU  rÕ  ÚmodulesÚfilepathrp   s         r<   ÚDepsToModulesz?MakefileWriter.WriteAndroidNdkModuleRule.<locals>.DepsToModules2  si   € Ø€gØò =ˆ(Ü—7‘7×#Ñ# HÓ-ˆØ×Ñ˜vÕ&¨8×+<Ñ+<¸VÕ+DØ
�.‰.˜¤# f£+¬s°6«{¨lÐ;Õ
<ð=ð €nr>   r9   r)   r   r   ÚLOCAL_SHARED_LIBRARIESr   r   ÚLOCAL_STATIC_LIBRARIESr¼   zinclude $(BUILD_EXECUTABLE)r¾   zinclude $(BUILD_SHARED_LIBRARY)r�   zinclude $(BUILD_STATIC_LIBRARY))rœ   rà   rL   rM   ry   r4  r   rÆ   rf  rs   r=   r0   )r¶   Úmodule_namer¨   rö   Úcpp_extÚdefault_cpp_extrp   r_   rä  r8   r7   s              r<   rï   z(MakefileWriter.WriteAndroidNdkModuleRule   sî  € ð ‡y�yÐJÑJØà‡L�LÐBÔCØ‡L�LÐ(Ô)Ø‡L�LÐ# kÑ1Ô2Ø‡L�Lð 	(ô 	)ð 	‡L�LÐ>Ô?Ø‡L�LÐ&Ô'Ø‡L�LÐBÔCð  ¨AÑ.€GØ€OØò  ˆÜ�G‰G×Ñ˜XÓ& qÑ)€cØ	�ŠØ�‹˜Ñ‹Ø�3‰<˜' /Ñ2Ó2Ø‰/ð ð 	‡L�LÐ*¨_Ñ<Ô=à‡N�N”3�t—‘¬¬z¸;Ó(GÓHØ$ô&ò
ð ˜Ð €FØÐÜÐ(¨&Ô1à‡N�NÙ�iÜ1Ð2EÑFØ'Ð(;Ñ<ó	>ð 	!ô	"ð
 	‡N�NÙ�iÜ1Ð2EÑFÜ1Ð2EÑFó	Hð 	!ô	"ð ‡y�y�LÒ Ø
‡l�lÐ0Õ1Ø	�‰Ð&Ò	&Ø
‡l�lÐ4Õ5Ø	�‰Ð&Ò	&Ø
‡l�lÐ4Ô5Ø‡L�L…Nr>   c                 ó@   — | j                   j                  |dz   «       y )NrW   )rÌ   r\   )r¶   Útexts     r<   rà   zMakefileWriter.WriteLnS  s   € Ø‡G�G‡M�M�$˜‘+Õr>   c                 ó¬   — t         j                  j                  | j                  dt        j
                  j                  d| j
                  «      d|«      S )Nz$(abs_builddir)z$(abs_srcdir)r   )r,   rÐ   r  rÔ   rL   rM   rO   )r¶   rN  s     r<   r  z MakefileWriter.GetSortedXcodeEnvW  sB   € Ü×Ñ×0Ñ0Ø×ÑÐ.Ü
�‰�‰�_ d§i¡iÓ0°.Øóð r>   c                 ób   — | j                   j                  dd«      }| j                  d|i¬«      S )NÚCHROMIUM_STRIP_SAVE_FILEr   rM  )rÔ   ÚGetPerTargetSettingr  )r¶   Ústrip_save_files     r<   r¿  z)MakefileWriter.GetSortedXcodePostbuildEnv^  sC   € ð ×)Ñ)×=Ñ=Ø" Bó(€Oð ×!Ñ!Ø7¸ÐIð "ó Kð Kr>   c                 ó\   — |D ]'  \  }}| j                  t        |«      ›d|›d|›�«       Œ) y )Nz	: export r  )rà   rš   )r¶   rÏ   r!  ÚkÚvs        r<   r  z"MakefileWriter.WriteSortedXcodeEnvi  s1   € Øò H‰ˆˆ1ð ‡l�l¬K¸Õ,?ÂÁAÐFÕGñHr>   c                 óx   — d|v r|j                  dd| j                  z  «      }d|vrd| j                  ›d|›�}|S )z,Convert a path to its output directory form.r“   ú$(obj)/z$(obj).%s/$(TARGET)/z$(obj)r“  z/$(TARGET)/)r~   rº   ©r¶   rM   s     r<   rg  zMakefileWriter.Objectifyt  s>   € àˆt�|Ø�\‰\˜)Ð%;¸d¿l¹lÑ%JÓK€dØ�tÒØ)-¯«±tÐ<€dØ€Kr>   c                 óž   — | j                  |«      }d|v r$|j                  dd| j                  ›d|›�«      }|S d| j                  ›d|›d|›�S )z:Convert a prefix header path to its output directory form.r“   rõ  r“  z/$(TARGET)/pch-ú/)rÆ   r~   rº   )r¶   rM   r€  s      r<   rè   zMakefileWriter.Pchify}  sR   € à�?‰?˜4Ó €DØˆt�|Ø�\‰\™)ØŸ<›<©ð&/ó 0€dà€kð ð /3¯l«lºDÁ$ÐGÐGr>   c                 óº   — d|v r|j                  d«      S t        j                  j                  t        j                  j	                  | j                  |«      «      S )zlConvert a subdirectory-relative path into a base-relative path.
    Skips over paths that contain variables.r“   rø  )ÚrstriprL   rM   rN   rO   rö  s     r<   rÆ   zMakefileWriter.Absolutify‡  sD   € ð ˆt�|ð �[‰[˜ÓÐÜ�7‰7×ÑœBŸG™GŸL™L¨¯©°DÓ9Ó:Ð:r>   c                 ó*   — d|vrd|vr|S |||dœz  }|S )Nr
   r   )Ú
INPUT_ROOTÚINPUT_DIRNAME© )r¶   ÚtemplateÚ	expansionr  rM   s        r<   r1  zMakefileWriter.ExpandInputRoot’  s3   € Ø˜xÑ'Ð,?ÀxÑ,OØ€oØØØ ñ
ñ 
€Dð €Kr>   c                 ó²   — | j                   dk(  r:| j                  dk7  s| j                  dk7  rd| j                  ›d| j                  ›�S d| j                  z   S )zCReturns the location of the final output for an installable target.r¾   r   rÏ   z$(builddir)/lib.rø  z$(builddir)/)rœ   r9   rº   rÞ   r�  s    r<   rß   z,MakefileWriter._InstallableTargetInstallPathœ  sM   € ð 	�	‰	Ð%Ò%Ø	�‰˜Ò	 §¡°Ò!9øð )-¯«°d·j²jÐAÐAØ˜DŸJ™JÑ&Ð&r>   )NF)NNFFFN)r   rk   )$Ú__name__Ú
__module__Ú__qualname__Ú__doc__r·   rÿ   r  rá   râ   rã   rä   rå   ræ   rj  rŽ  r‘  rÚ   rÖ   rØ   rÕ   rŸ  rì   rŒ   r4  r  r2  rï   rà   r  r¿  r  rg  rè   rÆ   r1  rß   rþ  r>   r<   r±   r±   µ  sØ   „ ñò
+ò6BòJò6aòH}ò@#òL#òò6zòxòB(/òVOò
@òDòGòEò,*òi)ðX ,0¸Ø'ó6ð GKØ!ó7ð0 BFØHLó;ò|PófóòKòHòòHò;òó	'r>   r±   c                 ó>  — | d   }| d   D �cg c],  }t         j                  j                  ||j                  «      ‘Œ. }}t         j                  j	                  | d   |j                  «      }|j                  t        j                  «      s t        j                  j                  d|«      }|j                  d|dj                  t        t        |«      «      t         j                  j                  |dgt        j                  |«      z   |z   «      dœz  «       y	c c}w )
z,Write the target to regenerate the Makefile.rB   Úbuild_files_argÚ
gyp_binaryr  z™quiet_cmd_regen_makefile = ACTION Regenerating $@
cmd_regen_makefile = cd $(srcdir); %(cmd)s
%(makefile_name)s: %(deps)s
	$(call do_cmd,regen_makefile)

r˜   z-fmake)Úmakefile_namerõ   ÚcmdN)r,   r-   ÚRelativePathrK   ÚFixIfRelativePathrÂ  rL   ÚseprM   rO   r\   r   r–   r  ÚRegenerateFlags)r8   Úroot_makefiler	  Úbuild_filesrB   rp   Úbuild_files_argsr  s           r<   ÚWriteAutoRegenerationRuler  ¨  s	  € ð �9Ñ€'à&,Ð->Ñ&?öAØ"ô —j‘j×-Ñ-¨h¸×8LÑ8LÕMð AÐð Aô �z‰z×+Ñ+¨F°<Ñ,@Ø,3×,@Ñ,@óB€*à	×	Ñ	œrŸv™vÔ	&Ü—‘—‘˜c :Ó.€Jà×Ñð,ð )Ø—(‘(œ3œy¨+Ó6Ó7Ü—‘×0Ñ0Ø  (Ð+Ü×(Ñ(¨Ó1ñ2à%ñ&ó'ñ/(ñ	(õ
)ùòAs   �1Dc                 óî   — |d   }|D ]k  }dg}|j                   r |j                   dk7  r|d|j                   fz  }|j                  d|z   «       t        d|›d|›�«       t        j                  |«       Œm y )NrB   Úmaker  z-Cz
BUILDTYPE=z
Building [z]: )rK   r£   r¦   Ú
subprocessÚ
check_call)ÚdataÚconfigurationsr8   rB   rn  Ú	argumentss         r<   ÚPerformBuildr  Á  s{   € Ø�9Ñ€'Øò %€fØ�€IØ×Ò × 4Ñ 4¸Ò ;Ø�4˜×-Ñ-Ð-Ñ-€iØ×Ñ�\ FÑ*Ô+Ý	¢©Ð
3Ô4Ü×Ñ˜)Õ$ñ%r>   c                 óê  ‡3— |d   Š3t         j                  j                  |«      }|j                  di «      }|j                  dd«      }|j                  dd «      }|j                  dd«      }ˆ3fd„}	d }
t	        | D �cg c]
  }||   d	   ‘Œ c}«      }| D ]  }||   }|d
   dk7  sŒ|d
   }
 n |
sd}
d}d‰3j
                  z   }t        j                  j                  ‰3j                  |«      }‰3j                  rat        j                  j                  ‰3j                  ‰3j                  |«      }t         j                  j                  |‰3j                  «      }dad}d}d}|||
|dt        d|||dœ
}|dk(  r!d}|j                  |dt        t         dœ«       n–|dk(  r|j                  dt"        i«       ny|dk(  rd}d}|j                  ||t$        dœ«       nV|dk(  r|j                  d dd!œ«       n<|d"k(  rd#}|j                  d$|i«       n!|d%k(  rd#}|j                  |t&        d dd&œ«       |j                  t)        d'd(«      t)        d)d*«      t)        d+d,«      t)        d-d.«      t)        d/d0«      t)        d1d2«      t)        d3d4«      t)        d5d6«      d7œ«       t         j                  j+                  | d8   «      \  }}}||   j                  d9g «      }i }|D ],  \  }}|j-                  d:«      sŒd;|z  ||d t/        d:«        <   Œ. d}|D ]¦  \  }}t1        j2                  d<|«      rŒ|d8   d=k7  rd;|z  }|j                  |«      }|r
|›d>|›�}||= |d?v rQ|d@|z  z  }|j5                  ddA«      }|t        j6                  v rt        j6                  |   }|dB|›dC|›dD�z  }|dEz  }Œœ||›dF|›dD�z  }Œ¨ ||d9<   t         j                  j9                  |«       t;        |dG«      }|j=                  t>        |z  «       |r|j=                  dH«       |D ]!  }|j=                  dI|z  «       tA        |«       Œ# t        j                  jC                  |«      } t         j                  jE                  || «       t	        «       }!|dJ   D ]9  }t         j                  jG                  | ||«      D ]  }|!jI                  |«       Œ Œ; t	        «       }"t	        «       }#| D �]ÿ  }$t         j                  j+                  |$«      \  }}}||   j                  d9g «      }%||%k(  sJ dK|%›dL|›�«       ‚|"jI                  t         j                  j                  |‰3j                  «      «       ||   dM   }&|&D ]¥  }'t         j                  j                  t         j                  jK                  |'|«      ‰3j                  «      }(t        j                  jM                  |(«      })|dN   r&|)jO                  |dN   «      r|"jI                  |)«       Œ•|"jI                  |(«       Œ§  |	||dz   |z   ‰3j
                  z   dOz   «      \  }*}+||$   }|dP   },|dk(  r#t         jP                  jS                  ||   |«       tU        ||«      }-|-jW                  |$|*|+||,|$|!v ¬Q«       t         j                  j                  |+t        j                  jC                  |«      «      }.|#jI                  |.«       �Œ t         j                  j                  ‰3jX                  t        jZ                  «       «      }/|"D �]
  }t        j                  j                  |/|«      }| D �cg c]  }|jO                  |«      r||!v r||   dR   ‘Œ! }0}|0sŒQ |	|t        j                  j]                  t        j                  j_                  |«      «      d8   dSz   «      \  }*}+t         j                  j                  t        j                  jC                  |«      t        j                  jC                  |+«      «      }1-ja                  |+|1|0|«       �Œ |j=                  dD«       tc        |#«      D ]A  }2|j=                  dT|2z   dUz   «       |j=                  dV|2z   dDz   «       |j=                  dE«       ŒC |j=                  dD«       |j                  dW«      s |j                  dXdY«      rte        ||||"«       |j=                  tf        «       |ji                  «        y c c}w c c}w )ZNrB   r@   rC   rD   rA   Údefault_targetr·  c                 ó  •— t         j                  j                  t        j                  j                  | «      ‰j                  «      }t        j                  j                  ‰j                  ||«      }‰j                  r6t        j                  j                  ‰j                  ‰j                  ||«      }t         j                  j                  t        j                  j                  | «      ‰j                  «      }||fS )z9Determine where to write a Makefile for a given gyp file.)
r,   r-   r  rL   rM   r  ÚdepthrO   rJ   rK   )Ú
build_fileÚ	base_namerñ   Úoutput_filerB   s       €r<   ÚCalculateMakefilePathz-GenerateOutput.<locals>.CalculateMakefilePathÔ  s±   ø€ ô —
‘
×'Ñ'¬¯©¯©¸
Ó(CØ(/¯©ó7€Iô —'‘'—,‘,˜wŸ}™}¨i¸ÓC€KØ×ÒÜ—G‘G—L‘LØ
�-‰-˜×1Ñ1°9¸ióI€kä—
‘
×'Ñ'¬¯©¯©¸
Ó(CØ(/×(<Ñ(<ó>€Ià�kÐ!Ð!r>   rº   Údefault_configurationÚDefaultr  ÚMakefilez
$(srcdir)/Úflockz-afz-MMDrž   r   )
r  Úbuilddirr#  r&  Úflock_indexÚlink_commandsÚextra_commandsÚsrcdirÚcopy_archive_argsÚmakedep_argsr   z./gyp-mac-tool flocké   )r&  r(  r)  r*  r(   r)  Úzosz-fPRz-qmakedep=gcc)r,  r-  r)  Úsolarisz./gyp-flock-tool flock)r&  r(  r­  z-pPRfr,  r*   )r,  r)  r&  r(  )Ú	CC_targetÚCCz$(CC))Ú	AR_targetÚARz$(AR))Ú
CXX_targetÚCXXz$(CXX))ÚLINK_targetÚLINKz$(LINK))ÚCC_hostr2  Úgcc)ÚAR_hostr4  Úar)ÚCXX_hostr6  zg++)Ú	LINK_hostr8  z$(CXX.host))z	CC.targetz	AR.targetz
CXX.targetzLINK.targetúCC.hostzAR.hostúCXX.hostz	LINK.hostr   Úmake_global_settingsÚ_wrapperz$(abspath %s)z
.*_wrapperrƒ   r˜   )r2  r?  r6  r@  z3ifneq (,$(filter $(origin %s), undefined default))
rŽ   rŸ   rB  rW   zendif
z ?= r¹   zU# Define LOCAL_PATH for build of Android applications.
LOCAL_PATH := $(call my-dir)

zTOOLSET := %s
r  z;make_global_settings needs to be the same for all targets. z vs. Úincluded_filesÚhome_dot_gypz.mkr  rE  r¡   z	.Makefilezmifeq ($(strip $(foreach prefix,$(NO_LOAD),\
    $(findstring $(join ^,$(prefix)),\
                 $(join ^,z)))),)
z
  include Ú
standaloneÚauto_regenerationT)5r,   r-   r.   rH   rê   rÕ  rL   rM   rO   rK   rJ   r  r•   ÚLINK_COMMANDS_LINUXr6   ÚLINK_COMMANDS_MACÚSHARED_HEADER_MAC_COMMANDSÚLINK_COMMANDS_ANDROIDÚLINK_COMMANDS_OS390ÚLINK_COMMANDS_AIXr   ÚParseQualifiedTargetrm   r¥   r�   Úmatchr~   ÚenvironrÊ   rË   r\   ÚSHARED_HEADERr`   r  ÚCopyToolÚ
AllTargetsr  ÚUnrelativePathÚabspathrÂ  rÐ   ÚMergeGlobalXcodeSettingsToSpecr±   rÿ   r  Úgetcwdry   r¢   r  rX   r  ÚSHARED_FOOTERrð   )4Útarget_listÚtarget_dictsr  r8   r9   r@   rQ   rA   r  r"  r#  rÏ   Útoolsetsr§   r+  r	  r  Úflock_commandÚcopy_archive_argumentsÚmakedep_argumentsÚheader_paramsr  rŽ   Úmake_global_settings_arrayÚwrappersrU   ÚvaluerA  ÚwrapperÚenv_keyr  rº   Ú	dest_pathÚneeded_targetsr  Úinclude_listrÎ   Úthis_make_global_settingsrC  Úincluded_fileÚrelative_include_fileÚabs_include_filerñ   r!  ró   r]   Úmkfile_rel_pathÚdepth_rel_pathÚgyp_targetsÚmakefile_rel_pathÚinclude_filerB   s4                                                      @r<   ÚGenerateOutputrp  Ì  s<	  ø€ Ø�9Ñ€'Ü�:‰:×Ñ Ó'€&Ø—J‘JÐ0°"Ó5€/Ø!×%Ñ% l°EÓ:€-Ø'×+Ñ+Ð,AÀ4ÓHÐØ"×&Ñ&Ð'7¸Ó?€.ô"ð( ÐÜÀÖL°f�,˜vÑ& yÓ1ÒLÓM€(Øò €fØ˜Ñ€DØÐ#Ñ$¨	Ó1Ø"Ð#:Ñ;ÐÙð	ñ
 
Ø%Ðà€&Ø˜wŸ~™~Ñ-€-Ü—'‘'—,‘,˜w×3Ñ3°]ÓC€-Ø×Òä—G‘G—L‘LØ×Ñ˜g×6Ñ6¸óG€Mä�Z‰Z×$Ñ$ V¨W×-EÑ-EÓF€FØ €Mà€-Ø ÐØÐà&ØØ4ØØÜ*ØØØ1Ø'ñ€-ð ˆu‚_Ø*€MØ×ÑØØÜ*Ü4ñ	õ ð �ÒØ×ÑØÔ.ðõ ð �‚Ø#ÐØ'ÐØ×ÑØ3Ø)Ü,ñõ ð
 �ÒØ×ÑØ)Øñõ ð �ÒØ$ÐØ×ÑØÐ3ðõ ð �‚Ø$ÐØ×ÑØ3Ü*Ø)Øñ	ô ð ×ÑÜ%Ð&9¸7ÓCÜ%Ð&9¸7ÓCÜ%Ð&;¸XÓFÜ%Ð&=¸yÓIÜ%Ð&7¸Ó?Ü%Ð&7¸Ó>Ü%Ð&9¸5ÓAÜ%Ð&;¸]ÓKñ	ô 	ô —Z‘Z×4Ñ4°[À±^ÓDÑ€*ˆa�Ø# JÑ/×3Ñ3Ð4JÈBÓOÐØ€(Ø.ò A�j€cˆ5Ø
‡|�|�JÕØ)8¸5Ñ)@€hˆsÐ$”S˜“_Ð$Ð%Ò&ðAð ÐØ.ò :�j€cˆ5Ü	‡x�x�˜cÔ"ØØˆQ�x�3‚Ø Ñ%€eØ�l‰l˜3Ó€GÙÚ ¡%Ð(€eØ
�3ˆ-Ø
Ð2Ñ2ØØ
@À3Ñ
FñHÐð —‘˜C Ó%€gØ	”B—J‘JÑ	Ü—
‘
˜7Ñ#ˆÙªs²EÐ:Ñ:ÐØ˜iÑ'Ñàªc²5Ð9Ñ9Ñð':ð. +?€-Ð&Ñ'ä‡*�*×Ñ˜]Ô+Ü�} cÓ*€-Ø×Ñ”m mÑ3Ô4ñ Ø×Ñð	ôð ò .€gØ×ÑÐ)¨GÑ3Ô4Ü˜}Õ-ð.ô
 �g‰g�o‰o˜mÓ,€)Ü‡*�*×Ñ�f˜iÔ(ô “5€.Ø˜=Ñ)ò !€jÜ—*‘*×'Ñ'¨°\À:ÓNò !ˆØ×Ñ˜Õ ñ!ð!ô “€+Ü“€,Ø%ó ,&ÐÜ"%§*¡*×"AÑ"AØó#Ñ€J�˜ð !% ZÑ 0× 4Ñ 4Ð5KÈRÓ PÐØ%Ð)BÒBñ ;â	"Ñ$8ð	:ó;ÐBð ‡O�O”C—J‘J×+Ñ+¨J¸×8LÑ8LÓMÔNØ˜*Ñ%Ð&6Ñ7€NØ'ò /ˆô "Ÿj™j×5Ñ5Ü
�*‰*×
#Ñ
# M°:Ó
>Ø
×
Ñ
ó Ðô Ÿ™Ÿ™Ð)>Ó?Ðð �Ò
 Ø
×
%Ñ
% f¨^Ñ&<Ô
=Ø�‰Ð(Õ)à�‰Ð-Õ.ð/ñ  3°:Ø�‰�wÑ §¡Ñ/°%Ñ7ó9Ñ€Iˆ{ð Ð(Ñ)€DØÐ#Ñ$€Gà�‚Ü	×Ñ×8Ñ8¸¸jÑ9IÈ4ÔPä˜O¨VÓ4€FØ
‡L�LÐ! 9¨k¸4ÀØ-°Ð?ð ô Aô
 —j‘j×-Ñ-¨kÜ.0¯g©g¯o©o¸mÓ.LóN€Oà×Ñ�_Ö%ðY,&ô^ —:‘:×*Ñ*¨7¯=©=¼"¿)¹)»+ÓF€.Øó '€jô —‘—‘˜n¨jÓ9€JØEPö -¸6Ø×'Ñ'¨
Ô3Ø˜^Ñ+ð   Ñ'¨Ó6ð -€Kð -ñ ØÙ2°:Ü
�‰×ÑœŸ™×)Ñ)¨*Ó5Ó6°qÑ9¸KÑGóIÑ€Iˆ{äŸ
™
×/Ñ/´·±·±ÀÓ0NÜ02·±·±ÀÓ0LóNÐà
×Ñ˜Ð%6¸Ø%ö'ð'ð( ×Ñ�dÔÜ˜\Ó*ò 
#€lð
 ×Ñð	%à'3ñ	4à6@ñ	AôBð ×Ñ˜ |Ñ3°dÑ:Ô;Ø×Ñ˜	Õ"ð
#ð ×Ñ�dÔà
×
Ñ
˜lÔ
+Ø
×
Ñ
Ð1°4Ô
8Ü˜f m°]ÀKÔPà×Ñ”mÔ$à×ÑÕùòW MùòP-s   Á>c+Ü=$c0)z\ )6Ú
__future__r   rL   r�   Úsysr  r,   Ú
gyp.commonÚgyp.xcode_emulationr   r   rØ  r0   Ú$generator_supports_multiple_toolsetsrI   r!   r"   r#   rP   r=   rR   rÔ  rG  rH  rJ  rL  rK  rP  rI  r`   ré   rë   rW  rÍ   r5   rs   rw   rz   r�   r„   r‡   rŒ   r‘   r•   r–   rš   r¯   rí   rî   Úobjectr±   r  r  rp  rþ  r>   r<   ú<module>rw     s
  ðõ0 &ã 	Û 	Û 
Û Û 
Û Û Ý )Ý ã ð ØØØØØ8Ø)ØØ%Ø+Ø$Ø"Ø#Ø&ñÐ ð$ (,Ð $ð ',Ð #ð /1Ð +Ø%'Ð "Ø$&Ð !ØÐ ò"AòJðB Ð ð"Ð ðHÐ ðÐ ð8Ð ð$Ð ð(H&ðP ):ñQH:ðP=ñQIðR "3ñSI3ðR_6ñShðP +ñQh+ðRMñSHMðR 6GñSIGðRJ)ñSJ)ðT ,=ñUJ=ðV!&ñWl€ð\Ð ò>ð((Ð #ð
(Ð #ð
€ð
€ð 	Ø	Ø
Ø
ØØñÐ òò!ò
.ò
-òòòò.ð
 €òóò
Mð@ €ð
 Ð ôp'�Vô p'òf')ò2%óHr>   