visual-5.12_release/0000777000175000017500000000000011243357450011455 500000000000000visual-5.12_release/configure0000755000175000017500000215643211243356546013322 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for Visual Python 5.12_release. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='Visual Python' PACKAGE_TARNAME='visual-python' PACKAGE_VERSION='5.12_release' PACKAGE_STRING='Visual Python 5.12_release' PACKAGE_BUGREPORT='visualpython-users@lists.sourceforge.net' ac_unique_file="src/core/arrow.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS PYTHONPATH BUILD_EXAMPLES_FALSE BUILD_EXAMPLES_TRUE visualexampledir BUILD_DOCS_FALSE BUILD_DOCS_TRUE visualdocdir GTHREAD_LIBS GTHREAD_CFLAGS GTK_LIBS GTK_CFLAGS FREETYPE2_LIBS FREETYPE2_CFLAGS PANGOFT2_LIBS PANGOFT2_CFLAGS LIBGLADEMM_LIBS LIBGLADEMM_CFLAGS PANGOMM_LIBS PANGOMM_CFLAGS GLIBMM_LIBS GLIBMM_CFLAGS GTKGLEXTMM_LIBS GTKGLEXTMM_CFLAGS WIN32_PYTHON_VERSION WIN32_SRCDIR WIN32_CWD PKG_CONFIG PYTHON_INCLUDES pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_PLATFORM PYTHON_VERSION PYTHON MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL host_os host_vendor host_cpu host build_os build_vendor build_cpu build am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_static enable_shared with_pic enable_fast_install with_gnu_ld enable_libtool_lock enable_maintainer_mode enable_docs with_html_dir enable_examples with_example_dir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP PKG_CONFIG GTKGLEXTMM_CFLAGS GTKGLEXTMM_LIBS GLIBMM_CFLAGS GLIBMM_LIBS PANGOMM_CFLAGS PANGOMM_LIBS LIBGLADEMM_CFLAGS LIBGLADEMM_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS FREETYPE2_CFLAGS FREETYPE2_LIBS GTK_CFLAGS GTK_LIBS GTHREAD_CFLAGS GTHREAD_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures Visual Python 5.12_release to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/visual-python] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of Visual Python 5.12_release:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-docs do not install html documentation --disable-examples do not install example programs Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-html-dir=PATH path to install html documentation default=pkgpythondir/docs --with-example-dir=PATH path to install demo programs default=pkgpythondir/examples Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility GTKGLEXTMM_CFLAGS C compiler flags for GTKGLEXTMM, overriding pkg-config GTKGLEXTMM_LIBS linker flags for GTKGLEXTMM, overriding pkg-config GLIBMM_CFLAGS C compiler flags for GLIBMM, overriding pkg-config GLIBMM_LIBS linker flags for GLIBMM, overriding pkg-config PANGOMM_CFLAGS C compiler flags for PANGOMM, overriding pkg-config PANGOMM_LIBS linker flags for PANGOMM, overriding pkg-config LIBGLADEMM_CFLAGS C compiler flags for LIBGLADEMM, overriding pkg-config LIBGLADEMM_LIBS linker flags for LIBGLADEMM, overriding pkg-config PANGOFT2_CFLAGS C compiler flags for PANGOFT2, overriding pkg-config PANGOFT2_LIBS linker flags for PANGOFT2, overriding pkg-config FREETYPE2_CFLAGS C compiler flags for FREETYPE2, overriding pkg-config FREETYPE2_LIBS linker flags for FREETYPE2, overriding pkg-config GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config GTHREAD_CFLAGS C compiler flags for GTHREAD, overriding pkg-config GTHREAD_LIBS linker flags for GTHREAD, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Visual Python configure 5.12_release generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Visual Python $as_me 5.12_release, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version="1.9" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=visual VERSION=5.12_release cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Compiling C and C++ code ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi if test "x$CC" != xcc; then { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -f conftest2.$ac_objext && { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -f conftest2.$ac_objext && { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } cat >>confdefs.h <<\_ACEOF #define NO_MINUS_C_MINUS_O 1 _ACEOF fi # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:$LINENO: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=no fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.2.6' macro_revision='1.3012' ltmain="$ac_aux_dir/ltmain.sh" { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed $as_unset ac_script || ac_script= if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test "${lt_cv_path_NM+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:5323: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:5326: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:5329: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$LINENO: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 6535 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:$LINENO: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} _lt_caught_CXX_error=yes; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8842: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8846: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:9181: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:9185: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:9286: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:9290: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:9341: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:9345: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 12154 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 12250 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5]* | *pgcpp\ [1-5]*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 $as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14270: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:14274: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14369: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14373: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14421: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14425: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 $as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: { $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Determine if we are on MS Windows or Apple OSX. # These and other VISUAL routines are found in acinclude.m4. { $as_echo "$as_me:$LINENO: checking for some Win32 platform" >&5 $as_echo_n "checking for some Win32 platform... " >&6; } case "$host" in *-*-mingw*|*-*-cygwin*) platform_win32=yes ;; *) platform_win32=no ;; esac { $as_echo "$as_me:$LINENO: result: $platform_win32" >&5 $as_echo "$platform_win32" >&6; } { $as_echo "$as_me:$LINENO: checking for some Mac OSX platform" >&5 $as_echo_n "checking for some Mac OSX platform... " >&6; } case "$host" in *-apple-darwin*) platform_osx=yes ;; *) platform_osx=no ;; esac { $as_echo "$as_me:$LINENO: result: $platform_osx" >&5 $as_echo "$platform_osx" >&6; } # Determine the location of Python and its directories if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:$LINENO: checking whether $PYTHON version >= 2.2" >&5 $as_echo_n "checking whether $PYTHON version >= 2.2... " >&6; } prog="import sys, string # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. minver = map(int, string.split('2.2', '.')) + [0, 0, 0] minverhex = 0 for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { { $as_echo "$as_me:$LINENO: error: too old" >&5 $as_echo "$as_me: error: too old" >&2;} { (exit 1); exit 1; }; } fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { $as_echo "$as_me:$LINENO: checking for a Python interpreter with version >= 2.2" >&5 $as_echo_n "checking for a Python interpreter with version >= 2.2... " >&6; } if test "${am_cv_pathless_PYTHON+set}" = set; then $as_echo_n "(cached) " >&6 else for am_cv_pathless_PYTHON in python python2.6 python2.5 python2.4 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys, string # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. minver = map(int, string.split('2.2', '.')) + [0, 0, 0] minverhex = 0 for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then break fi done fi { $as_echo "$as_me:$LINENO: result: $am_cv_pathless_PYTHON" >&5 $as_echo "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PYTHON+set}" = set; then $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then { { $as_echo "$as_me:$LINENO: error: no suitable Python interpreter found" >&5 $as_echo "$as_me: error: no suitable Python interpreter found" >&2;} { (exit 1); exit 1; }; } else { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if test "${am_cv_python_version+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; print sys.version[:3]"` fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if test "${am_cv_python_platform+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"` fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform if test $PYTHON_PLATFORM = "win32"; then PYTHON_PREFIX=`$PYTHON -c "from distutils import sysconfig; print sysconfig.PREFIX"` PYTHON_EXEC_PREFIX=`$PYTHON -c "from distutils import sysconfig; print sysconfig.EXEC_PREFIX"` else PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' fi { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if test "${am_cv_python_pythondir+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX').replace('\\\\\','/')" 2>/dev/null || echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if test "${am_cv_python_pyexecdir+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX').replace('\\\\\','/')" 2>/dev/null || echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"` fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi # Verify that Numeric prerequisites are available. py_mod_var=`echo numpy'_'array | sed 'y%./+-%__p_%'` { $as_echo "$as_me:$LINENO: checking for array in python module numpy" >&5 $as_echo_n "checking for array in python module numpy... " >&6; } if { as_var=py_cv_mod_$py_mod_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else if $PYTHON -c 'import numpy ; numpy.array' 1>&5 2>&5; then eval "py_cv_mod_$py_mod_var=yes" else eval "py_cv_mod_$py_mod_var=no" fi fi py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` if test "x$py_val" != xno; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define VISUAL_HAVE_NUMPY 1 _ACEOF visual_have_numpy="yes" numpyincludedir=${pythondir}/numpy/core/include else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } visual_have_numpy="no" fi if test $visual_have_numpy = "no"; then { { $as_echo "$as_me:$LINENO: error: The numpy module could not be found but is required. See numpy.sourceforge.net for downloads." >&5 $as_echo "$as_me: error: The numpy module could not be found but is required. See numpy.sourceforge.net for downloads." >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking for headers required to compile python extensions" >&5 $as_echo_n "checking for headers required to compile python extensions... " >&6; } PYTHON_INCLUDES=-I`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_inc()"` PYTHON_INCLUDES="$PYTHON_INCLUDES -I$numpyincludedir" save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then { $as_echo "$as_me:$LINENO: result: found" >&5 $as_echo "found" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: not found" >&5 $as_echo "not found" >&6; } { { $as_echo "$as_me:$LINENO: error: A suitable python interpreter was found, but you do not have the header files required for building C/C++ extensions to python, or another problem was encoutered when compiling a program that uses Python.h." >&5 $as_echo "$as_me: error: A suitable python interpreter was found, but you do not have the header files required for building C/C++ extensions to python, or another problem was encoutered when compiling a program that uses Python.h." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.err conftest.$ac_ext CPPFLAGS="$save_CPPFLAGS" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi if test $platform_win32 = yes; then # Some Windows-specific macros. The first two are used exclusively by the # .iss.in script # The current working directory, as a backslashified Win32 style path. WIN32_CWD=`pwd -W | sed -e "s/\\//\\\\\/g"` # The top-level source directory. WIN32_SRCDIR=`cd $srcdir ; pwd -W | sed -e "s/\\//\\\\\/g"` # The major.minor version of Python, with the "." stripped out. WIN32_PYTHON_VERSION=`echo $PYTHON_VERSION | sed -e "s/\.//"` fi # Check whether key libraries are available and give feedback. pkg_failed=no { $as_echo "$as_me:$LINENO: checking for GTKGLEXTMM" >&5 $as_echo_n "checking for GTKGLEXTMM... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GTKGLEXTMM_CFLAGS"; then pkg_cv_GTKGLEXTMM_CFLAGS="$GTKGLEXTMM_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkglextmm-1.2 >= 1.2\"") >&5 ($PKG_CONFIG --exists --print-errors "gtkglextmm-1.2 >= 1.2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTKGLEXTMM_CFLAGS=`$PKG_CONFIG --cflags "gtkglextmm-1.2 >= 1.2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GTKGLEXTMM_LIBS"; then pkg_cv_GTKGLEXTMM_LIBS="$GTKGLEXTMM_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkglextmm-1.2 >= 1.2\"") >&5 ($PKG_CONFIG --exists --print-errors "gtkglextmm-1.2 >= 1.2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTKGLEXTMM_LIBS=`$PKG_CONFIG --libs "gtkglextmm-1.2 >= 1.2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKGLEXTMM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtkglextmm-1.2 >= 1.2"` else GTKGLEXTMM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtkglextmm-1.2 >= 1.2"` fi # Put the nasty error message in config.log where it belongs echo "$GTKGLEXTMM_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: gtkglextmm 1.2 is required" >&5 $as_echo "$as_me: error: gtkglextmm 1.2 is required" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: gtkglextmm 1.2 is required" >&5 $as_echo "$as_me: error: gtkglextmm 1.2 is required" >&2;} { (exit 1); exit 1; }; } else GTKGLEXTMM_CFLAGS=$pkg_cv_GTKGLEXTMM_CFLAGS GTKGLEXTMM_LIBS=$pkg_cv_GTKGLEXTMM_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for GLIBMM" >&5 $as_echo_n "checking for GLIBMM... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GLIBMM_CFLAGS"; then pkg_cv_GLIBMM_CFLAGS="$GLIBMM_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glibmm-2.4\"") >&5 ($PKG_CONFIG --exists --print-errors "glibmm-2.4") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GLIBMM_CFLAGS=`$PKG_CONFIG --cflags "glibmm-2.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GLIBMM_LIBS"; then pkg_cv_GLIBMM_LIBS="$GLIBMM_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glibmm-2.4\"") >&5 ($PKG_CONFIG --exists --print-errors "glibmm-2.4") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GLIBMM_LIBS=`$PKG_CONFIG --libs "glibmm-2.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIBMM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glibmm-2.4"` else GLIBMM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glibmm-2.4"` fi # Put the nasty error message in config.log where it belongs echo "$GLIBMM_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: glibmm-2.4 is required" >&5 $as_echo "$as_me: error: glibmm-2.4 is required" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: glibmm-2.4 is required" >&5 $as_echo "$as_me: error: glibmm-2.4 is required" >&2;} { (exit 1); exit 1; }; } else GLIBMM_CFLAGS=$pkg_cv_GLIBMM_CFLAGS GLIBMM_LIBS=$pkg_cv_GLIBMM_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for PANGOMM" >&5 $as_echo_n "checking for PANGOMM... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$PANGOMM_CFLAGS"; then pkg_cv_PANGOMM_CFLAGS="$PANGOMM_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pangomm-1.4\"") >&5 ($PKG_CONFIG --exists --print-errors "pangomm-1.4") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PANGOMM_CFLAGS=`$PKG_CONFIG --cflags "pangomm-1.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$PANGOMM_LIBS"; then pkg_cv_PANGOMM_LIBS="$PANGOMM_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pangomm-1.4\"") >&5 ($PKG_CONFIG --exists --print-errors "pangomm-1.4") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PANGOMM_LIBS=`$PKG_CONFIG --libs "pangomm-1.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PANGOMM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "pangomm-1.4"` else PANGOMM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangomm-1.4"` fi # Put the nasty error message in config.log where it belongs echo "$PANGOMM_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: pangomm-1.4 is required" >&5 $as_echo "$as_me: error: pangomm-1.4 is required" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: pangomm-1.4 is required" >&5 $as_echo "$as_me: error: pangomm-1.4 is required" >&2;} { (exit 1); exit 1; }; } else PANGOMM_CFLAGS=$pkg_cv_PANGOMM_CFLAGS PANGOMM_LIBS=$pkg_cv_PANGOMM_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for LIBGLADEMM" >&5 $as_echo_n "checking for LIBGLADEMM... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LIBGLADEMM_CFLAGS"; then pkg_cv_LIBGLADEMM_CFLAGS="$LIBGLADEMM_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libglademm-2.4\"") >&5 ($PKG_CONFIG --exists --print-errors "libglademm-2.4") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBGLADEMM_CFLAGS=`$PKG_CONFIG --cflags "libglademm-2.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LIBGLADEMM_LIBS"; then pkg_cv_LIBGLADEMM_LIBS="$LIBGLADEMM_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libglademm-2.4\"") >&5 ($PKG_CONFIG --exists --print-errors "libglademm-2.4") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBGLADEMM_LIBS=`$PKG_CONFIG --libs "libglademm-2.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBGLADEMM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libglademm-2.4"` else LIBGLADEMM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libglademm-2.4"` fi # Put the nasty error message in config.log where it belongs echo "$LIBGLADEMM_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: libglademm-2.4 is required" >&5 $as_echo "$as_me: error: libglademm-2.4 is required" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: libglademm-2.4 is required" >&5 $as_echo "$as_me: error: libglademm-2.4 is required" >&2;} { (exit 1); exit 1; }; } else LIBGLADEMM_CFLAGS=$pkg_cv_LIBGLADEMM_CFLAGS LIBGLADEMM_LIBS=$pkg_cv_LIBGLADEMM_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for PANGOFT2" >&5 $as_echo_n "checking for PANGOFT2... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$PANGOFT2_CFLAGS"; then pkg_cv_PANGOFT2_CFLAGS="$PANGOFT2_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pangoft2\"") >&5 ($PKG_CONFIG --exists --print-errors "pangoft2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PANGOFT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$PANGOFT2_LIBS"; then pkg_cv_PANGOFT2_LIBS="$PANGOFT2_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pangoft2\"") >&5 ($PKG_CONFIG --exists --print-errors "pangoft2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PANGOFT2_LIBS=`$PKG_CONFIG --libs "pangoft2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PANGOFT2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "pangoft2"` else PANGOFT2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangoft2"` fi # Put the nasty error message in config.log where it belongs echo "$PANGOFT2_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: pangoft2 is required" >&5 $as_echo "$as_me: error: pangoft2 is required" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: pangoft2 is required" >&5 $as_echo "$as_me: error: pangoft2 is required" >&2;} { (exit 1); exit 1; }; } else PANGOFT2_CFLAGS=$pkg_cv_PANGOFT2_CFLAGS PANGOFT2_LIBS=$pkg_cv_PANGOFT2_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for FREETYPE2" >&5 $as_echo_n "checking for FREETYPE2... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$FREETYPE2_CFLAGS"; then pkg_cv_FREETYPE2_CFLAGS="$FREETYPE2_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"freetype2\"") >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_FREETYPE2_CFLAGS=`$PKG_CONFIG --cflags "freetype2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$FREETYPE2_LIBS"; then pkg_cv_FREETYPE2_LIBS="$FREETYPE2_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"freetype2\"") >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_FREETYPE2_LIBS=`$PKG_CONFIG --libs "freetype2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FREETYPE2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "freetype2"` else FREETYPE2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "freetype2"` fi # Put the nasty error message in config.log where it belongs echo "$FREETYPE2_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: freetype2 is required" >&5 $as_echo "$as_me: error: freetype2 is required" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: freetype2 is required" >&5 $as_echo "$as_me: error: freetype2 is required" >&2;} { (exit 1); exit 1; }; } else FREETYPE2_CFLAGS=$pkg_cv_FREETYPE2_CFLAGS FREETYPE2_LIBS=$pkg_cv_FREETYPE2_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi # Having checked various libraries individually, now repeat the check for the # whole set of them, and this information will be used for compilation and linking. pkg_failed=no { $as_echo "$as_me:$LINENO: checking for GTK" >&5 $as_echo_n "checking for GTK... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GTK_CFLAGS"; then pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2\"") >&5 ($PKG_CONFIG --exists --print-errors "gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GTK_LIBS"; then pkg_cv_GTK_LIBS="$GTK_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2\"") >&5 ($PKG_CONFIG --exists --print-errors "gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2"` else GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2"` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: gtkglextmm 1.2, pangoft2, glibmm-2.4, and pangomm-1.4 libglademm-2.4 are required on Unix-like systems" >&5 $as_echo "$as_me: error: gtkglextmm 1.2, pangoft2, glibmm-2.4, and pangomm-1.4 libglademm-2.4 are required on Unix-like systems" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: gtkglextmm 1.2, pangoft2, glibmm-2.4, and pangomm-1.4 libglademm-2.4 are required on Unix-like systems" >&5 $as_echo "$as_me: error: gtkglextmm 1.2, pangoft2, glibmm-2.4, and pangomm-1.4 libglademm-2.4 are required on Unix-like systems" >&2;} { (exit 1); exit 1; }; } else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for GTHREAD" >&5 $as_echo_n "checking for GTHREAD... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GTHREAD_CFLAGS"; then pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 >= 2.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GTHREAD_LIBS"; then pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0 >= 2.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gthread-2.0 >= 2.0"` else GTHREAD_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gthread-2.0 >= 2.0"` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: GThread 2.0+ is required on Unix-like systems" >&5 $as_echo "$as_me: error: GThread 2.0+ is required on Unix-like systems" >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: GThread 2.0+ is required on Unix-like systems" >&5 $as_echo "$as_me: error: GThread 2.0+ is required on Unix-like systems" >&2;} { (exit 1); exit 1; }; } else GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi # Enable documentation and visualdocdir if desired # Check whether --enable-docs was given. if test "${enable_docs+set}" = set; then enableval=$enable_docs; visual_build_docs=$enableval else visual_build_docs="yes" fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then withval=$with_html_dir; visual_htmldir=$withval else visual_htmldir="" fi { $as_echo "$as_me:$LINENO: checking where to install documentation" >&5 $as_echo_n "checking where to install documentation... " >&6; } if test "x$visual_htmldir" = "x" ; then visualdocdir=${pythondir}/$PACKAGE/docs else visualdocdir=$visual_htmldir fi { $as_echo "$as_me:$LINENO: result: $visualdocdir" >&5 $as_echo "$visualdocdir" >&6; } { $as_echo "$as_me:$LINENO: checking whether to install html documentation" >&5 $as_echo_n "checking whether to install html documentation... " >&6; } if test $visual_build_docs = "yes"; then BUILD_DOCS_TRUE= BUILD_DOCS_FALSE='#' else BUILD_DOCS_TRUE='#' BUILD_DOCS_FALSE= fi { $as_echo "$as_me:$LINENO: result: $visual_build_docs" >&5 $as_echo "$visual_build_docs" >&6; } # Enable demos and visualdemodir if desired # Check whether --enable-examples was given. if test "${enable_examples+set}" = set; then enableval=$enable_examples; visual_build_examples=$enableval else visual_build_examples="yes" fi # Check whether --with-example-dir was given. if test "${with_example_dir+set}" = set; then withval=$with_example_dir; visual_exampledir=$withval else visual_exampledir="" fi { $as_echo "$as_me:$LINENO: checking where to install example programs" >&5 $as_echo_n "checking where to install example programs... " >&6; } if test "x$visual_exampledir" = "x" ; then visualexampledir=${pythondir}/$PACKAGE/examples else visualexampledir=$visual_exampledir fi { $as_echo "$as_me:$LINENO: result: $visualexampledir" >&5 $as_echo "$visualexampledir" >&6; } { $as_echo "$as_me:$LINENO: checking whether to install example programs" >&5 $as_echo_n "checking whether to install example programs... " >&6; } if test $visual_build_examples = "yes"; then BUILD_EXAMPLES_TRUE= BUILD_EXAMPLES_FALSE='#' else BUILD_EXAMPLES_TRUE='#' BUILD_EXAMPLES_FALSE= fi { $as_echo "$as_me:$LINENO: result: $visual_build_examples" >&5 $as_echo "$visual_build_examples" >&6; } if test "x$PYTHONPATH" = "x" ; then python_path="\$PYTHONPATH" else python_path="$PYTHONPATH:\$PYTHONPATH" fi PYTHONPATH="$python_path" ac_config_files="$ac_config_files Makefile src/Makefile site-packages/visual/Makefile docs/Makefile examples/Makefile bin/vpython" ac_config_headers="$ac_config_headers include/config.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"BUILD_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_EXAMPLES_TRUE}" && test -z "${BUILD_EXAMPLES_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_EXAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"BUILD_EXAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by Visual Python $as_me 5.12_release, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ Visual Python config.status 5.12_release configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "site-packages/visual/Makefile") CONFIG_FILES="$CONFIG_FILES site-packages/visual/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "bin/vpython") CONFIG_FILES="$CONFIG_FILES bin/vpython" ;; "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in "$ac_file" | "$ac_file":* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for "$ac_file"" >`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi visual-5.12_release/config.guess0000755000175000017500000012753411104170121013705 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-01-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: visual-5.12_release/acinclude.m40000644000175000017500000002647111203441516013565 00000000000000 # I have modified the following code from the stock version found in Automake # 1.9.3, to translate backslashes into forward slashes for Window's sake. # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ AC_REQUIRE([VISUAL_CHECK_PLATFORM]) dnl Find a Python interpreter. Python versions prior to 1.5 are not dnl supported because the default installation locations changed from dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages dnl in 1.5. m4_define([_AM_PYTHON_INTERPRETER_LIST], [python python2.6 python2.5 python2.4]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then PYTHON=: AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT(yes)], [AC_MSG_ERROR(too old)]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. if test $PYTHON_PLATFORM = "win32"; then AC_SUBST([PYTHON_PREFIX], [`$PYTHON -c "from distutils import sysconfig; print sysconfig.PREFIX"`]) AC_SUBST([PYTHON_EXEC_PREFIX], [`$PYTHON -c "from distutils import sysconfig; print sysconfig.EXEC_PREFIX"`]) else AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) fi dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX').replace('\\\\\','/')" 2>/dev/null || echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX').replace('\\\\\','/')" 2>/dev/null || echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # A function that determins if we are on Windows or OSX, based on the host. # Copied from the official gtk+-2 configure.in AC_DEFUN([VISUAL_CHECK_PLATFORM], [ AC_MSG_CHECKING([for some Win32 platform]) case "$host" in *-*-mingw*|*-*-cygwin*) platform_win32=yes ;; *) platform_win32=no ;; esac AC_MSG_RESULT([$platform_win32]) AC_MSG_CHECKING([for some Mac OSX platform]) case "$host" in *-apple-darwin*) platform_osx=yes ;; *) platform_osx=no ;; esac AC_MSG_RESULT([$platform_osx]) ]) AC_DEFUN([VISUAL_DOCS], [ AC_REQUIRE([AM_PATH_PYTHON]) AC_ARG_ENABLE([docs], AC_HELP_STRING([--disable-docs], [do not install html documentation]), [visual_build_docs=$enableval], [visual_build_docs="yes"]) AC_ARG_WITH([html-dir], AC_HELP_STRING([--with-html-dir=PATH], [path to install html documentation default=pkgpythondir/docs]), [visual_htmldir=$withval], [visual_htmldir=""]) AC_MSG_CHECKING( where to install documentation) if test "x$visual_htmldir" = "x" ; then visualdocdir=${pythondir}/$PACKAGE/docs else visualdocdir=$visual_htmldir fi AC_SUBST( visualdocdir) AC_MSG_RESULT( $visualdocdir) AC_MSG_CHECKING( whether to install html documentation) AM_CONDITIONAL([BUILD_DOCS], test $visual_build_docs = "yes") AC_MSG_RESULT( $visual_build_docs) ]) AC_DEFUN([VISUAL_NUMERICLIBS], [ AC_REQUIRE([AM_PATH_PYTHON]) PY_CHECK_MOD( [numpy], [array], [ AC_DEFINE([VISUAL_HAVE_NUMPY], [1]) visual_have_numpy="yes" numpyincludedir=${pythondir}/numpy/core/include ], [visual_have_numpy="no"]) if test $visual_have_numpy = "no"; then AC_MSG_ERROR( [The numpy module could not be found but is required. See numpy.sourceforge.net for downloads.]) fi ]) AC_DEFUN([VISUAL_EXAMPLES], [ AC_REQUIRE([AM_PATH_PYTHON]) AC_ARG_ENABLE([examples], AC_HELP_STRING([--disable-examples], [do not install example programs]), [visual_build_examples=$enableval], [visual_build_examples="yes"]) AC_ARG_WITH([example-dir], AC_HELP_STRING([--with-example-dir=PATH], [path to install demo programs default=pkgpythondir/examples]), [visual_exampledir=$withval], [visual_exampledir=""]) AC_MSG_CHECKING( where to install example programs) if test "x$visual_exampledir" = "x" ; then visualexampledir=${pythondir}/$PACKAGE/examples else visualexampledir=$visual_exampledir fi AC_MSG_RESULT( $visualexampledir) AC_SUBST( visualexampledir) AC_MSG_CHECKING( whether to install example programs) AM_CONDITIONAL([BUILD_EXAMPLES], test $visual_build_examples = "yes") AC_MSG_RESULT( $visual_build_examples) ]) dnl Modified from pyautoconf to use the Automake-supplied macro AM_PATH_PYTHON dnl ---------------------------------------------------------------------- dnl These functions are used similar to AC_CHECK_LIB and associates. dnl PY_CHECK_MOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) dnl Check if a module containing a given symbol is visible to python. AC_DEFUN([PY_CHECK_MOD], [ AC_REQUIRE([AM_PATH_PYTHON]) py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ if $PYTHON -c 'import $1 ifelse([$2],[],,[; $1.$2])' 1>&AC_FD_CC 2>&AC_FD_CC; then eval "py_cv_mod_$py_mod_var=yes" else eval "py_cv_mod_$py_mod_var=no" fi ]) py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` if test "x$py_val" != xno; then AC_MSG_RESULT(yes) ifelse([$3], [],, [$3 ])dnl else AC_MSG_RESULT(no) ifelse([$4], [],, [$4 ])dnl fi ]) dnl a macro to check for ability to create python extensions dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) dnl function also defines PYTHON_INCLUDES AC_DEFUN([AM_CHECK_PYTHON_HEADERS], [ AC_REQUIRE([AM_PATH_PYTHON]) AC_MSG_CHECKING(for headers required to compile python extensions) dnl deduce PYTHON_INCLUDES (modified by Jonathan Brandmeyer to get the info dnl directly from Python itself). dnl The following loses backslashes on Windows and gives -Ic:Python25include, dnl but src/Makefile.in does produce the right include statement for Windows. PYTHON_INCLUDES=-I`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_inc()"` PYTHON_INCLUDES="$PYTHON_INCLUDES -I$numpyincludedir" AC_SUBST(PYTHON_INCLUDES) dnl check if the headers exist: save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" AC_TRY_CPP([#include ],dnl [AC_MSG_RESULT(found) $1],dnl [AC_MSG_RESULT(not found) $2]) CPPFLAGS="$save_CPPFLAGS" ]) visual-5.12_release/config.sub0000755000175000017500000010115311104170121013335 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-01-16' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: visual-5.12_release/ltmain.sh0000755000175000017500000073337611134064147013234 00000000000000# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print informational messages (default) # --version print version information # -h, --help print short or long help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-1ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION="2.2.6 Debian-2.2.6a-1ubuntu1" TIMESTAMP="" package_revision=1.3012 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/bin/grep -E"} : ${FGREP="/bin/grep -F"} : ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break case $1 in # Valid mode arguments: clean) ;; compile) ;; execute) ;; finish) ;; install) ;; link) ;; relink) ;; uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$mode' for more information." } # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" $ECHO "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $ECHO "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done $ECHO $ECHO "If you ever happen to want to link against installed libraries" $ECHO "in a given directory, LIBDIR, you must either use libtool, and" $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" $ECHO "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" $ECHO " during execution" fi if test -n "$runpath_var"; then $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" $ECHO " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $ECHO $ECHO "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" $ECHO "pages." ;; *) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac $ECHO "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$symtab_cflags $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # end: func_emit_wrapper_part2 # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # Path separators are also converted from $build format to # $host format. If ARG begins or ends with a path separator # character, it is preserved (but converted to $host format) # on output. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", tmp_pathspec)); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("Could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $ECHO $ECHO "*** Warning: Trying to link with static lib archive $deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because the file extensions .$libext of this argument makes me believe" $ECHO "*** that it is just a static archive that I should not use here." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) temp_rpath="$temp_rpath$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $ECHO $ECHO "*** And there doesn't seem to be a static archive available" $ECHO "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $ECHO $ECHO "*** Warning: This system can not link to static lib archive $lib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $ECHO "*** But as you try to build a module library, libtool will still create " $ECHO "*** a static module, that should work as long as the dlopening application" $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) func_dirname "$deplib" "" "." dir="$func_dirname_result" # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else $ECHO $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; then $ECHO "*** Warning: inter-library dependencies are not supported in this platform." else $ECHO "*** Warning: inter-library dependencies are not known to be supported." fi $ECHO "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $ECHO $ECHO "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" $ECHO "*** a static module, that should work as long as the dlopening" $ECHO "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $ECHO "*** The inter-library dependencies that have been dropped here will be" $ECHO "*** automatically added whenever a program is linked with this library" $ECHO "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $ECHO $ECHO "*** Since this library must not contain undefined symbols," $ECHO "*** because either the platform does not support them or" $ECHO "*** it was explicitly requested with -no-undefined," $ECHO "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" delfiles="$delfiles $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=$obj func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$oldobjs $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else $ECHO "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$newdlfiles $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result rmfiles="$rmfiles $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 visual-5.12_release/HACKING.txt0000644000175000017500000000444311163231143013172 00000000000000VPython CVS is maintained at cvs.sourceforge.net:/cvsroot/visualpython Anonymous access is via pserver, as user anonymous, empty password. Mainline development is taking place in the "vpython-core2" module. Set the version number appropriately in configure.ac, and in the first line of __init__.py. Windows and Mac builds are now special to them; see VCBuild/VCBuild.txt and MAC-OSX.txt. In site-packages/vidle the file "edit with vidle.reg" contains registry settings for enabling correct startup of VIDLE by right-clicking a .py file. These settings should be imposed by the VPython installer. If you do development of the Visual source code: A convenient development environment on Linux (and other platforms) is Eclipse. On Ubuntu Linux, the package manager version of Eclipse doesn't seem to work, due to issues with java licensing. The easy thing to do is simply to use the package manager to install java, but to download Eclipse from eclipse.org. If you use eclipse, choose "CVS Repositories". In the upper right corner of the CVS Repositories frame, click on the icon for "Add CVS Repository". Specify host as visualpython.cvs.sourceforge.net and path as /cvsroot/visualpython. Choose extssh as the connection type. For Linux: In src/gtk2 there is a simple non-autoconf makefile for Ubuntu 8 as of Nov. 2008. It is unlikely to be kept up to date, but it gives an example of the basic elements of what the rather complex autoconf machinery needs to produce. Makefile.in, configure, and the helper programs for them are not maintained in CVS. You will have to run the autogen.sh script after a fresh checkout to create configure. You need to execute "chmod +x autogen.sh" in order to be able to execute ./autogen.sh. The result of executing autogen.sh is to produce the following files: configure (from configure.ac and acinclude.m4) Makefile.in (from Makefile.am) aclocal.m4 config.guess, config.sub, ltmain.sh, missing The source distribution is built with "make dist-bzip2". "make bzip" is also supported. Please provide patches in unified diff format, as generated with $ cvs diff -u This project uses tabs for indentation in C++, and spaces in Python. We do not use a separate developer's mailing list, so please direct any development-related questions to visualpython-users@lists.sourceforge.net. visual-5.12_release/configure.ac0000644000175000017500000000613111243332661013655 00000000000000 # Process this file with Autoconf to produce a configure script AC_INIT( [Visual Python], [5.12_release], [visualpython-users@lists.sourceforge.net]) AM_INIT_AUTOMAKE( visual, 5.12_release) AC_CONFIG_SRCDIR(src/core/arrow.cpp) # Compiling C and C++ code AC_PROG_CC AM_PROG_CC_C_O AC_PROG_CPP AC_PROG_CXX AC_PROG_MAKE_SET AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_DISABLE_STATIC AC_PROG_LIBTOOL AM_MAINTAINER_MODE # Determine if we are on MS Windows or Apple OSX. # These and other VISUAL routines are found in acinclude.m4. VISUAL_CHECK_PLATFORM() # Determine the location of Python and its directories AM_PATH_PYTHON(2.2) # Verify that Numeric prerequisites are available. VISUAL_NUMERICLIBS() AM_CHECK_PYTHON_HEADERS([], [ AC_MSG_ERROR([A suitable python interpreter was found, but you do not have the header files required for building C/C++ extensions to python, or another problem was encoutered when compiling a program that uses Python.h.])]) PKG_PROG_PKG_CONFIG() if test $platform_win32 = yes; then # Some Windows-specific macros. The first two are used exclusively by the # .iss.in script # The current working directory, as a backslashified Win32 style path. AC_SUBST([WIN32_CWD], [`pwd -W | sed -e "s/\\//\\\\\/g"`]) # The top-level source directory. AC_SUBST([WIN32_SRCDIR], [`cd $srcdir ; pwd -W | sed -e "s/\\//\\\\\/g"`]) # The major.minor version of Python, with the "." stripped out. AC_SUBST([WIN32_PYTHON_VERSION], [`echo $PYTHON_VERSION | sed -e "s/\.//"`]) fi # Check whether key libraries are available and give feedback. PKG_CHECK_MODULES( GTKGLEXTMM, gtkglextmm-1.2 >= 1.2, , [AC_MSG_ERROR([gtkglextmm 1.2 is required])]) PKG_CHECK_MODULES( GLIBMM, glibmm-2.4, , [AC_MSG_ERROR([glibmm-2.4 is required])]) PKG_CHECK_MODULES( PANGOMM, pangomm-1.4, , [AC_MSG_ERROR([pangomm-1.4 is required])]) PKG_CHECK_MODULES( LIBGLADEMM, libglademm-2.4, , [AC_MSG_ERROR([libglademm-2.4 is required])]) PKG_CHECK_MODULES( PANGOFT2, pangoft2, , [AC_MSG_ERROR([pangoft2 is required])]) PKG_CHECK_MODULES( FREETYPE2, freetype2, , [AC_MSG_ERROR([freetype2 is required])]) # Having checked various libraries individually, now repeat the check for the # whole set of them, and this information will be used for compilation and linking. PKG_CHECK_MODULES( GTK, [gtkglextmm-1.2 >= 1.2 pangoft2 glibmm-2.4 pangomm-1.4 libglademm-2.4 freetype2], , [AC_MSG_ERROR([gtkglextmm 1.2, pangoft2, glibmm-2.4, and pangomm-1.4 libglademm-2.4 are required on Unix-like systems])]) AC_SUBST([GTK_LIBS]) AC_SUBST([GTK_CFLAGS]) PKG_CHECK_MODULES( GTHREAD, gthread-2.0 >= 2.0, , [AC_MSG_ERROR(GThread 2.0+ is required on Unix-like systems)]) AC_SUBST([GTHREAD_CFLAGS]) AC_SUBST([GTHREAD_LIBS]) # Enable documentation and visualdocdir if desired VISUAL_DOCS() # Enable demos and visualdemodir if desired VISUAL_EXAMPLES() if test "x$PYTHONPATH" = "x" ; then python_path="\$PYTHONPATH" else python_path="$PYTHONPATH:\$PYTHONPATH" fi AC_SUBST([PYTHONPATH], "$python_path") AC_CONFIG_FILES( Makefile src/Makefile site-packages/visual/Makefile docs/Makefile examples/Makefile bin/vpython) AM_CONFIG_HEADER( include/config.h) AC_OUTPUT()visual-5.12_release/NEWS.txt0000644000175000017500000001746310721607367012726 00000000000000This file was not kept up to date after June 2006, but there are brief summaries in the "Recent developments" section of vpython.org. Visual 4.beta2 ================================================================================ NEW FEATURES: * The Windows build is no longer dependent on Gtk+; it uses the Win32 API directly. Windows 98,ME,XP,2K are supported. Windows 95 is _not_ supported, and will not be for the forseeable future. The official Microsoft end of life date for Windows 98 and ME is coming soon (30 June 2006). Support by VPython for those versions of Windows is deprecated. This build depends on a third-party library, libsigc++, which is licensed under the GNU Lesser General Public License, version 2.1. (which was also the case for Gtk). To comply with the terms of this license, the source code for libsigc++ is available from our download site alongside the Windows package. * Ring objects support translucency. (but it is somewhat expensive) * Graphs of points utilize the new points object * (Actually present since 4.beta0) Label objects' text supports Unicode strings. On Linux/Unix, any unicode character supported by the selected font should be displayed correctly. This feature is not implemented for Windows. Additionally, the default text font for Linux is the system font (rather than courier), rendered using Freetype 2. * The colorsliders demo includes an alpha (opacity) slider * The gdots object uses the new points object for rendering cleaner point graphs BUGS FIXED: * Programs that track UI events should exit cleanly when the user closes a window, rather than hang. * A universe consiting of only one instance of a points, curve, convex, faces, or ellipsoid will be displayed properly. * Boxes with negative dimentions are rendered correctly * renderable.shininess = 1.0 is no longer a synonym for diabling shininess (shininess is maximized in this case) * Label object color properties are applied correctly * Copyright notices (license.txt and LIBSIGC_COPYING.txt) have been added to the Windows distribution. * (Linux/UNIX only) label.text returns a properly formed unicode string Visual 4.beta1.1 (this was not announced) ================================================================================ BUGS FIXED: * The Gtk+ libs in the Windows build were updated with less-stripped versions * Compiled object files were removed from the source tarball. Visual 4.beta1 ================================================================================ NEW FEATURES: * A new points object: class points(cvisual.renderable): property pos: Nx3 Numeric double array property color: Nx4 Numeric float array property size: double; the size of every point in the array, in either pixels or world-space units property type: "world" or "screen"; Defines whether a points object's size property is defined in world coordinates or screen coordinates property antialias: boolean; If true, points are rounded. otherwise, they are square. Caveats: if "GL_ARB_point_parameters" in scene.info(): then type = "world" will work. else: type is silently ignored and considered to be "screen" There is an implementation-defined size range for either round or square points, which is not easily visible to client programs at this time. Specifying a size outside this range will cause it to be sliently clamped internally to whatever range that the hardware supports. BUGS FIXED: * The Gtk runtime shipped with VPython on Windows uses the Gtk-Wimp (Windows native widgets) theme by default. * Several DLL's in the Gtk runtime have been fixed * Texture data of NxM is automatically interpreted as NxMx1 * Setting curve.blue works correctly * Thin curve's color is rendered correctly KNOWN ISSUES: * The Windows build will only run on Windows XP (Pro and Home) and 2000. Visual 4.beta0 ================================================================================ NEW FEATURES: * A menu bar with some simple functions * New mouse interaction mode "pan", selectable by the user * Most objects support an "alpha" color property, that controls transparency. This also makes foo.color a 4-tuple (RGBA) * Most objects support a "shininess" property, that controls specular highlighting (value between 0 and 1, exactly 0 or 1 disable it) * Most objects can have their lighting explicitly turned off (foo.lit = False) * Simple texturing support (see examples/textest.py) * Advanced lighting support, including spotlights, attenuation, and local (non-infinity) sources (no demo as yet, see help(light)) * Supports integration with other GUI toolkits, such as PyGTK, WxPython, PyObjC, etc (no demo yet) * frame.scale linearly scales all of the frame's children's dimensions Negative values are allowed. BUGS FIXED: * Translucent labels occlude each other in a spatially-correct way Visual 3.2.4 =============================================================================== BUGS FIXED: * Ensure that the last point of a curve is always rendered. * diff_angle with (0,0,0) vectors returns 0 instead of pi/2 * Documention corrected to state frame.objects includes only visible objects. * display.exit = 0 again works (only that window closes) Visual 3.2.1 =============================================================================== BUGS FIXED: * Fix an undefined reference error in cvisualmodule.so Visual 3.2.0 =============================================================================== NEW FEATURES: * New stereo mode: "crosseyed". It is just like 'passive', but reversed left-to-right. * Added the dependancy list for Genoo systems to INSTALL.txt. BUGS FIXED: * A crash that affected users of some NVIDIA Quadro video cards on Windows has been fixed. * Work around sizeof(float*) < sizeof(int) on AMD64 systems. Visual 3.1.1 =============================================================================== NEW FEATURES: * There is no longer a restriction on rotating past the up axis, such that the scene may be rotated upside-down under user control. * The MS Windows builds include packages for Python 2.3 and 2.4, upgrades Boost.Python to version 1.32, and adds Numarray 1.1.1. * The MS Windows installer has been componentized, and will respect an existing installation of Numeric or Numarray. BUGS FIXED: * A resource leak in the label object has been fixed. * configure option --with-gtkgl-prefix works correctly (only affects *nix and OSX users). * The bounds check for display.up and display.forward is more robust. * A crash in the free function rotate( vector, angle, axis) has been fixed. * Thin curve objects are rendered with the correct color in anaglyph stereo rendering modes. * The "vpython" script is working again. KNOWN ISSUES: * "make install" is broken on Windows. Use the generated MakeVPython.iss Inno Setup file to build an installer and run it. Visual 3.1.0 =============================================================================== NEW FEATURES: * This is the first release that has been produced from our new CVS layout. This enables a more deterministic release process that will reduce regressions. * Numarray support has been added. You can enable support for Numeric and Numarray in the same build, and select between them at runtime. See INSTALL.txt for details. BUGS FIXED: * The autotools support for MS Windows has been significantly improved. * Nx2 arrays are supported for convex.pos and faces.pos * faces.color is initialized in the correct order. This bug prevented you from initializing faces.color to an array in the constructor. * {primitive,frame}.rotate( pos=foo, origin=bar) works as expected. * The shutdown procedure is kinder to the shell when using Bash. * Several uninitialized value errors were fixed in the display class when using the GTK+ backend.visual-5.12_release/missing0000755000175000017500000002540611171043334012770 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2005-06-08.21 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case "$1" in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: visual-5.12_release/INSTALL.txt0000644000175000017500000003112111240557725013242 00000000000000The purpose of this file is to fully document the installation procedure for VPython from source on Linux. Specific installers for Windows and Mac are available at vpython.org. See HACKING.txt for details on how to do development work with the source code for Linux. Windows and Mac builds are now special to them; see VCBuild/VCBuild.txt and MAC-OSX.txt. Table of Contents: I: Prerequisites II: Configuration III: Building IV: Final Installation V: Troubleshooting I. Prerequisites: Most or all of these may be provided by your operating system distributor. In every case, you must have the "developer" version of the packages to ensure that the required header files are available. GNU g++ version 3.2.x or >= 3.3.1 (3.4.6 reccomended) (gcc.gnu.org). An implementation of OpenGL. The Boost C++ libraries version 1.31 and higher (1.33.1 reccomended) (www.boost.org). Note that 1.31 is required if you are using Python 2.3 or higher, and is recommended in any case due to getting much better error messages. 1.32.0 or higher is required if you want to use GNU G++ 3.4.0 or higher to build the suite. You need libboost-python-dev, libboost-signals-dev, and libboost-thread-dev. *** It is an unfortunate fact of life that the Boost libraries that *** deal with Python have names that do not reflect what version of *** Python they were built for and with. You have to be careful to *** install Boost Python libraries that were built for your version of Python. BUILDING BOOST The Boost libraries are extensions to C++. Among the libraries are python and thread libraries used by Visual. The python library makes connections between Python and C++. It is possible to build the Boost libraries needed by Visual from source. However, the process can take a long time, so precompiled files are available in the Developers section. See VCBuild.txt for Windows details. You also need the threadpool resource: sourceforge.net/projects/threadpool. If you are using the 1_35_0 Boost libraries, you can use version 0.2.4 which is included in the package (in dependencies). If you use a different version of the Boost libraries, you need to get an appropriate threadpool version and replace the files in "dependencies/threadpool/include". Copy into the include directory the contents of the boost directory in the threadpool package, which includes a directory named "threadpool" and a file "threadpool.hpp". Problem bulding; found this on the web: "Furthermore building pyrap with boost-1.37 and gcc-4.3.2 gave an error due to a missing include. The following patch has to be applied to boost:" In /usr/include (probably), change /boost/python/detail/translate_exception.hpp =================================================================== --- boost/python/detail/translate_exception.hpp (revision 50228) +++ boost/python/detail/translate_exception.hpp (working copy) @@ -9,6 +9,7 @@ # include # include +# include # include -------------------------------------- (That is, add "# include " after the statement "# include ".) Although the boost-1.39 file does not include , Visual nevertheless builds okay on a Mac using boost-1.39. Have not tried on other platforms. Python 2.2.x or 2.3.x or 2.4.x or 2.5.x (www.python.org), including the development (dev) package. numpy (numpy.sourceforge.net). On Ubuntu 7.10, the only package for numpy was for Python 2.4, even though it is Python 2.5 which is installed by default. So it was necessary to download numpy (www.scipy.org/Download). And it was also necessary to install the packages libboost-python-dev, libboost-signals-dev, and libboost-thread-dev before executing in the numpy folder "python setup.py install". The autoconf, automake, libtool, and pkg-config packages. Generically, key libraries are these: gtkmm (www.gtkmm.org), which depends on gtk2 (www.gtk.org) gtkglext and gtkglextmm 1.2.x (gtkglext.sourceforge.net) GTK2 (sometimes called GTK+) is a platform-independent library for creating graphical user interfaces. It is designed for programs written in C. GTKMM is a "wrapper" to make GTK2 accessible to programs written in C++. Here is a list of all the libraries involved. In many cases a library is automatically installed by a package manager when a requested library depends on it: For Ubuntu 8.04, installing libgtkglextmm-x11-dev brought in everything except for libglademm-2.4, which also must be installed. For Ubuntu 9.04: 1) automake gets autoconf 2) libgtkglextmm-x11-dev gets libatk1.0, libcairo2, libglib2.0, libgtk2.0, libgtkglext1, libgtkglextmm-x11-1.2, libpango1.0 3) libgtkmm-2.4-dev gets libcairomm-1.0, libglibmm-2.4, libpangomm-1.4, libsigc++-2.0 4) libglademm-2.4-dev gets the rest On Ubuntu 8.04, the packages are named (not including the "dev" part of the name): libgtk-2.0, libatk-1.0, atkmm-1.6, libsigc++-2.0, libgtkmm-2.4, gdkmm-2.4, libglib-2.0, libglibmm-2.4, libpango-1.0, pangomm-1.4, libfreetype2, libgtkglext1, libgtkglextmm-x11-1.2, libcairo2, libcairomm-1.0, libglade2, libglademm-2.4 Ubuntu 8.04 package manager doesn't list freetype2, (lib)atkmm, (lib)gdkmm, (lib)pangomm. But there exist these directories; maybe these components are now part of Ubuntu and so don't show up in the package manager. /usr/include/atkmm-1.6, /usr/lib/gdkmm-2.4, /usr/include/gdkmm-2.4. /usr/include/pangomm-1.4 On Ubuntu 7.10, the packages were named like this (not including "dev"): gtk-2.0, atk-1.0, atkmm-1.6, sigc++-2.0, gtkmm-2.4, gdkmm-2.4, glib-2.0, glibmm-2.4, pango-1.0, pangomm-1.4, freetype2, gtkglext-1.0, gtkglextmm-1.2, cairo, cairomm-1.0, libglade-2.0, libglademm-2.4 On Ubuntu 7.10, installing libgtkmm-2.4-dev and libglademm-2.4-dev installs most of these libraries, except for atkmm, gdkmm, pangomm, gtkglext, and gtkglextmm. There is a gtkglext1-dev package, but no gtkglextmm. For Ubuntu 7.10, I was unable to install gtkglextmm from source. But at packages.ubuntu.com/source/gtkglextmm, from the older "edgy" distribution get libgtkglextmm1c2a (allow the default package manager to process the download), then libgtkglextmm1-dev. To install gtkglextmm: 1) Download the bz2 file. 2) Unpack the file: tar -xjf gtkglextmm-1.2.0.tar.bz2 3) cd to the unpacked directory 4) ./configure 5) make 6) sudo make install II. Configuration It is NOT the case that simply running './configure' is likely to work, because Visual has to be linked to an appropriate Python, so read below. There have been significant changes in where 3rd-party software is stored on Ubuntu 9.04. You probably want to use /usr/bin/python2.6 but store the Visual module in /usr/local/lib/python2.6/site-packages. To configure, do this in a folder parallel to vpython-core2: PYTHON=/usr/bin/python ../vpython-core2/configure --prefix=/usr/local/lib You will also need to copy vpython-core2/src/gtk2/site-packages.pth to /usr/lib/python2.6/dist-packages to put /usr/local/lib/python2.6/site-packages on the Python search path. In src/gtk2 there is a simple non-autoconf makefile for Ubuntu 8 as of Nov. 2008. It is unlikely to be kept up to date, but it gives an example of the basic elements of what the rather complex autoconf machinery needs to produce. However, configure also provides a large number of options and is sensitive to several environment variables to properly configure VPython for unique use cases. Additionally, it is a good idea to build VPython in a directory separate from the source tree. Just run configure with the fully-qualified path to it, eg (from a directory alongside visual-2.9) `../visual-2.9/configure` Run `configure --help` for the complete list of options and brief descriptions. If you have multiple versions of Python installed, and the one named 'python' that is first on your PATH (identified with `which python`) is not the one you want to build Visual for, specify the correct interpreter by setting the PYTHON environment variable to the desired interpreter's full path. If you have multiple versions of GNU G++ installed, and the default is inadequate for VPython, specify the correct one by setting the CXX environment variable to its fully-qualified path. You should generally supply the --prefix option to cause Visual to be installed to the same prefix that Python is installed (default is /usr/local). On Linux, do this: which python Make a note of the prefix preceding /bin/python, typically /usr or /usr/local. It is useful to place the visual folder and a folder named "build" at the same level, and configure and make in the build folder by "cd build", then do this: (a) If prefix is /usr/local, execute ../visual-x.x.x/configure (b) If prefix is something else, and Visual can go into prefix/lib/python/site-packages, execute ../visual-x.x.x/configure --prefix=prefix (c) If you want to use a different version of Python than the one found with "which python", or (b) is not appropriate, specify both the particular Python and where to install Visual: PYTHON=/somewhere1/bin/python ../visual-x.x.x/configure --prefix=/somewhere2 If "somewhere1" and "somewhere2" are different, you must also add the "somewhere2" directory to Python's module search path. For details, at www.python.org read section 4.1 (Modifying Python's Search Path) in the section Installing Python Modules of the Python on-line documentation. Here is a specific example of case (c): PYTHON=/usr/bin/python ../visual-x.x.x/configure --prefix=/usr/local (This would make sense only if python has /usr/local/lib/site-packages on its search path.) If you are only building VPython once, you may pass the option --disable-dependancy-tracking to make the build itself go a little faster. If your GNOME libraries are installed in a non-standard location (such as /opt/gnome in SUSE), you must set the CPPFLAGS environment variable to -I/other_prefix/include to ensure that you pick up the gtkglarea header files. Another interesting configuration is to install VPython into a prefix other than the same prefix that Python is installed in. This may be useful to test your VPython programs with different versions of Visual on the same system simultaneously. After choosing an approprate prefix, such as /home/jonathan, run configure as normally but specify the PYTHONPATH environment variable to be [prefix]/lib/python2.5/site-packages, replacing python2.5 with python2.2 if that is your interpreter. You must create this PYTHONPATH directory if it does not already exist. III. Build Just run 'make'. Optionally, you may override the following variables by specifying them in the form VARIABLE=value as arguments to make: LDFLAGS, LIBS, CXXFLAGS, and CPPFLAGS affect options passed to the linker, compiler, and preprocessor, respectively. DESTDIR may be used to prepend DESTDIR to the 'prefix' specified when running configure. This option is mostly useful to binary redistributors of VPython. The makefiles support the following targets: all: (the default) compiles all the required software clean: deletes files created by the compiler distclean: deletes all files created by the configure and make programs. This option is useful if you want to start over from a clean source tree. install: copies all required files in the locations specified by configure install-strip: Performs the 'install' target and strips the final object files. It also makes getting a backtrace impossible on most platforms. IV. Install You must have write privileges to the installation directory to proceed. Unless you are installing into your home directory, that generally means becoming root with a program like `sudo` or `su`. Just run `sudo make install`. Alternatively, you may run 'make install-strip' to install a somewhat smaller executable. V: Troubleshooting The single most likely cause of an error in the build is that one or more develoment header files could not be found. VPython logs its configuration stage in config.log, and its build stage in src/build.log. If the build fails you must read src/build.log to see what happened. In the event that you cannot solve the problem, compress config.log and src/build.log and include them with your request for assistance to visualpython-users@lists.sourceforge.net. But before you do that, it is a good idea to read the archives of the mailing list since someone else has probably worked through your problem already. visual-5.12_release/Makefile.in0000644000175000017500000005433511243356545013454 00000000000000# Makefile.in generated by automake 1.9.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile for the top-level source directory srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @BUILD_EXAMPLES_TRUE@am__append_1 = examples @BUILD_DOCS_TRUE@am__append_2 = docs DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/bin/vpython.in \ $(top_srcdir)/configure $(top_srcdir)/include/config.h.in \ $(top_srcdir)/src/Makefile.in config.guess config.sub \ install-sh ltmain.sh missing py-compile subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = src/Makefile bin/vpython am__installdirs = "$(DESTDIR)$(bindir)" binSCRIPT_INSTALL = $(INSTALL_SCRIPT) SCRIPTS = $(bin_SCRIPTS) SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = site-packages/visual src examples docs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@ BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@ BUILD_EXAMPLES_FALSE = @BUILD_EXAMPLES_FALSE@ BUILD_EXAMPLES_TRUE = @BUILD_EXAMPLES_TRUE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ FREETYPE2_LIBS = @FREETYPE2_LIBS@ GLIBMM_CFLAGS = @GLIBMM_CFLAGS@ GLIBMM_LIBS = @GLIBMM_LIBS@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKGLEXTMM_CFLAGS = @GTKGLEXTMM_CFLAGS@ GTKGLEXTMM_LIBS = @GTKGLEXTMM_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADEMM_CFLAGS = @LIBGLADEMM_CFLAGS@ LIBGLADEMM_LIBS = @LIBGLADEMM_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PANGOMM_CFLAGS = @PANGOMM_CFLAGS@ PANGOMM_LIBS = @PANGOMM_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHONPATH = @PYTHONPATH@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WIN32_CWD = @WIN32_CWD@ WIN32_PYTHON_VERSION = @WIN32_PYTHON_VERSION@ WIN32_SRCDIR = @WIN32_SRCDIR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ visualdocdir = @visualdocdir@ visualexampledir = @visualexampledir@ AUTOMAKE_OPTIONS = foreign dist-bzip2 SUBDIRS = site-packages/visual src $(am__append_1) $(am__append_2) # Logic to distribute the header files and miscellaneous files. EXTRA_DIST = include HACKING.txt INSTALL.txt \ authors.txt license.txt NEWS.txt \ dependencies/Readme.txt dependencies/threadpool # Logic to install the "vpython" script bin_SCRIPTS = bin/vpython all: all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ cd $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) include/config.h: include/stamp-h1 @if test ! -f $@; then \ rm -f include/stamp-h1; \ $(MAKE) include/stamp-h1; \ else :; fi include/stamp-h1: $(top_srcdir)/include/config.h.in $(top_builddir)/config.status @rm -f include/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status include/config.h $(top_srcdir)/include/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f include/stamp-h1 touch $@ distclean-hdr: -rm -f include/config.h include/stamp-h1 src/Makefile: $(top_builddir)/config.status $(top_srcdir)/src/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ bin/vpython: $(top_builddir)/config.status $(top_srcdir)/bin/vpython.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ else :; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) $(mkdir_p) $(distdir)/bin $(distdir)/dependencies $(distdir)/include $(distdir)/src @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-exec-am: install-binSCRIPTS install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ check-am clean clean-generic clean-libtool clean-recursive \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-recursive distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binSCRIPTS install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-libtool \ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am dist-hook: rm -rf `find $(distdir)/include -name CVS` $(distdir)/include/config.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: visual-5.12_release/authors.txt0000644000175000017500000000112710410545650013614 00000000000000Original author of the Visual module: David Scherer Other members of the original design team at Carnegie Mellon: David Andersen Ruth Chabay Ari Heitner Ian Peters Bruce Sherwood Current maintainers: Jonathan Brandmeyer Bruce Sherwood Other contributors to the Visual module: Hugh Fisher (stereo code) Shaun Press (the pyramid and ellipsoid objects) John Zelle (stereo code) visual-5.12_release/Makefile.am0000644000175000017500000000123411203441516013416 00000000000000## Process this file with automake to produce Makefile.in # Makefile for the top-level source directory AUTOMAKE_OPTIONS = foreign dist-bzip2 SUBDIRS = site-packages/visual src # Logic to distribute the header files and miscellaneous files. EXTRA_DIST = include HACKING.txt INSTALL.txt \ authors.txt license.txt NEWS.txt \ dependencies/Readme.txt dependencies/threadpool dist-hook: rm -rf `find $(distdir)/include -name CVS` $(distdir)/include/config.h # Logic to install the "vpython" script bin_SCRIPTS = bin/vpython if BUILD_EXAMPLES SUBDIRS += examples endif ##if BUILD_VIDLE ##SUBDIRS += site-packages/vidle ##endif if BUILD_DOCS SUBDIRS += docs endif visual-5.12_release/license.txt0000644000175000017500000000535010410545677013564 00000000000000The Visual library is Copyright (c) 2000, 2001, 2002, 2003, 2004, and 2005 by David Scherer and others. See authors.txt for a complete list of contributors. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of the authors may not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --------------------------------------------------------------------- The following copyright notice applies to the files src/num_util* and include/num_util* which are distributed with Visual for the convenience of our users under the following terms: num_util is Copyright (c) 2003 by Rhys Goldstein, Chris Seymour and Phil Austin. Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. visual-5.12_release/install-sh0000755000175000017500000002202111171043334013363 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2005-05-14.22 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit $?;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit $?;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. test -n "$dir_arg$dstarg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then mkdircmd=: chmodcmd= else mkdircmd=$mkdirprog fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -d "$dstdir"; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` shift IFS=$oIFS pathcomp= while test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test -d "$pathcomp" || exit fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $mkdircmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit 1 } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } fi || { (exit 1); exit 1; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit 0 } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: visual-5.12_release/dependencies/0000777000175000017500000000000011243357447014111 500000000000000visual-5.12_release/dependencies/threadpool/0000777000175000017500000000000011240651125016235 500000000000000visual-5.12_release/dependencies/threadpool/COPYING0000644000175000017500000000033510774445303017217 00000000000000Copyright (c) 2005-2007 Philipp Henkel Use, modification, and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)visual-5.12_release/dependencies/threadpool/README0000644000175000017500000000042710774445303017046 00000000000000threadpool Copyright (c) 2005-2007 Philipp Henkel threadpool is a cross-platform C++ thread pool library and released under the Boost Software License. See doc/index.html for information on: - API documentation and a tutorial - External dependencies - Using threadpool visual-5.12_release/dependencies/threadpool/TODO0000644000175000017500000000210010774445303016644 00000000000000threadpool to-do items ====================== Documentation -------------------------------------------- - Source code documentation - Design rationale - Tutorial - Finish Quickstart Tutorial/Example Functionality -------------------------------------------- - Implement a size policy which dynamically increase/decrease the pool's size: - init with min/max threads - auto increase - auto decrease (using timed cleanup tasks) - Add some kind of deadline scheduler - Add futures to pool Examples -------------------------------------------- - Buffering Client Requests: Handle 'bursty' client traffic Some applications need more buffering than is provided by OS I/O subsystem Working on 'active' buffer for boost::iostreams buffer_filter which provides a dynamic amount of buffer objects. buffer_filter uses a threadpool with one thread which provides the buffers to consumer. (TODO Philipp) 2nd implemention step: Flexbile configuration: Buffer capacities can be configured according to - maximum number of requests - maximum number of bytes visual-5.12_release/dependencies/threadpool/include/0000777000175000017500000000000011240651125017660 500000000000000visual-5.12_release/dependencies/threadpool/include/threadpool/0000777000175000017500000000000011240651125022021 500000000000000visual-5.12_release/dependencies/threadpool/include/threadpool/detail/0000777000175000017500000000000011240651125023263 500000000000000visual-5.12_release/dependencies/threadpool/include/threadpool/detail/future.hpp0000644000175000017500000001056110774445303025237 00000000000000/*! \file * \brief TODO. * * TODO. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_DETAIL_FUTURE_IMPL_HPP_INCLUDED #define THREADPOOL_DETAIL_FUTURE_IMPL_HPP_INCLUDED #include "locking_ptr.hpp" #include #include #include #include #include #include #include #include namespace boost { namespace threadpool { namespace detail { template class future_impl { public: typedef Result const & result_type; //!< Indicates the functor's result type. typedef Result future_result_type; //!< Indicates the future's result type. typedef future_impl future_type; private: volatile bool m_ready; volatile future_result_type m_result; mutable mutex m_monitor; mutable condition m_condition_ready; volatile bool m_is_cancelled; volatile bool m_executing; public: public: future_impl() : m_ready(false) , m_is_cancelled(false) { } bool ready() const volatile { return m_ready; } void wait() const volatile { const future_type* self = const_cast(this); mutex::scoped_lock lock(self->m_monitor); while(!m_ready) { self->m_condition_ready.wait(lock); } } bool timed_wait(boost::xtime const & timestamp) const { const future_type* self = const_cast(this); mutex::scoped_lock lock(self->m_monitor); while(!m_ready) { if(!self->m_condition_ready.timed_wait(lock, timestamp)) return false; } return true; } result_type operator()() const volatile { wait(); /* if( throw_exception_ != 0 ) { throw_exception_( this ); } */ return *(const_cast(&m_result)); } void set_value(future_result_type const & r) volatile { locking_ptr lockedThis(*this, m_monitor); if(!m_ready && !m_is_cancelled) { lockedThis->m_result = r; lockedThis->m_ready = true; lockedThis->m_condition_ready.notify_all(); } } /* template void set_exception() // throw() { m_impl->template set_exception(); } template void set_exception( char const * what ) // throw() { m_impl->template set_exception( what ); } */ bool cancel() volatile { if(!m_ready || m_executing) { m_is_cancelled = true; return true; } else { return false; } } bool is_cancelled() const volatile { return m_is_cancelled; } void set_execution_status(bool executing) volatile { m_executing = executing; } }; template< template class Future, typename Function > class future_impl_task_func { public: typedef void result_type; //!< Indicates the functor's result type. typedef Function function_type; //!< Indicates the function's type. typedef typename result_of::type future_result_type; //!< Indicates the future's result type. typedef Future future_type; //!< Indicates the future's type. // The task is required to be a nullary function. BOOST_STATIC_ASSERT(function_traits::arity == 0); // The task function's result type is required not to be void. BOOST_STATIC_ASSERT(!is_void::value); private: function_type m_function; shared_ptr m_future; public: future_impl_task_func(function_type const & function, shared_ptr const & future) : m_function(function) , m_future(future) { } void operator()() { if(m_function) { m_future->set_execution_status(true); if(!m_future->is_cancelled()) { // TODO future exeception handling m_future->set_value(m_function()); } m_future->set_execution_status(false); // TODO consider exceptions } } }; } } } // namespace boost::threadpool::detail #endif // THREADPOOL_DETAIL_FUTURE_IMPL_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/detail/scope_guard.hpp0000644000175000017500000000175610774445303026226 00000000000000/*! \file * \brief TODO. * * TODO. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_DETAIL_SCOPE_GUARD_HPP_INCLUDED #define THREADPOOL_DETAIL_SCOPE_GUARD_HPP_INCLUDED #include namespace boost { namespace threadpool { namespace detail { // TODO documentation class scope_guard : private boost::noncopyable { function0 const m_function; bool m_is_active; public: scope_guard(function0 const & call_on_exit) : m_function(call_on_exit) , m_is_active(true) { } ~scope_guard() { if(m_is_active && m_function) { m_function(); } } void disable() { m_is_active = false; } }; } } } // namespace boost::threadpool::detail #endif // THREADPOOL_DETAIL_SCOPE_GUARD_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/detail/locking_ptr.hpp0000644000175000017500000000504710774445303026243 00000000000000/*! \file * \brief The locking_ptr is smart pointer with a scoped locking mechanism. * * The class is a wrapper for a volatile pointer. It enables synchronized access to the * internal pointer by locking the passed mutex. * locking_ptr is based on Andrei Alexandrescu's LockingPtr. For more information * see article "volatile - Multithreaded Programmer's Best Friend" by A. Alexandrescu. * * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_DETAIL_LOCKING_PTR_HPP_INCLUDED #define THREADPOOL_DETAIL_LOCKING_PTR_HPP_INCLUDED #include // Support for old boost::thread //********************************************** #include #ifndef BOOST_THREAD_MUTEX_HPP #include #endif //********************************************** namespace boost { namespace threadpool { namespace detail { /*! \brief Smart pointer with a scoped locking mechanism. * * This class is a wrapper for a volatile pointer. It enables synchronized access to the * internal pointer by locking the passed mutex. */ template class locking_ptr : private noncopyable { T* m_obj; //!< The instance pointer. Mutex & m_mutex; //!< Mutex is used for scoped locking. public: /// Constructor. locking_ptr(volatile T& obj, const volatile Mutex& mtx) : m_obj(const_cast(&obj)) , m_mutex(*const_cast(&mtx)) { // Lock mutex #ifndef BOOST_THREAD_MUTEX_HPP // Support for old boost::thread boost::detail::thread::lock_ops::lock(m_mutex); #else m_mutex.lock(); #endif } /// Destructor. ~locking_ptr() { // Unlock mutex #ifndef BOOST_THREAD_MUTEX_HPP // Support for old boost::thread boost::detail::thread::lock_ops::unlock(m_mutex); #else m_mutex.unlock(); #endif } /*! Returns a reference to the stored instance. * \return The instance's reference. */ T& operator*() const { return *m_obj; } /*! Returns a pointer to the stored instance. * \return The instance's pointer. */ T* operator->() const { return m_obj; } }; } } } // namespace boost::threadpool::detail #endif // THREADPOOL_DETAIL_LOCKING_PTR_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/detail/CVS/0000777000175000017500000000000011240651125023716 500000000000000visual-5.12_release/dependencies/threadpool/include/threadpool/detail/CVS/Entries0000644000175000017500000000035311240651125025167 00000000000000/future.hpp/1.1/Tue Apr 1 14:46:27 2008// /locking_ptr.hpp/1.1/Tue Apr 1 14:46:27 2008// /pool_core.hpp/1.1/Tue Apr 1 14:46:27 2008// /scope_guard.hpp/1.1/Tue Apr 1 14:46:27 2008// /worker_thread.hpp/1.1/Tue Apr 1 14:46:27 2008// visual-5.12_release/dependencies/threadpool/include/threadpool/detail/CVS/Root0000644000175000017500000000011111240651125024471 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/dependencies/threadpool/include/threadpool/detail/CVS/Repository0000644000175000017500000000010011240651125025723 00000000000000vpython-core2/dependencies/threadpool/include/threadpool/detail visual-5.12_release/dependencies/threadpool/include/threadpool/detail/worker_thread.hpp0000644000175000017500000000540110774445303026562 00000000000000/*! \file * \brief Thread pool worker. * * The worker thread instance is attached to a pool * and executes tasks of this pool. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_DETAIL_WORKER_THREAD_HPP_INCLUDED #define THREADPOOL_DETAIL_WORKER_THREAD_HPP_INCLUDED #include "scope_guard.hpp" #include #include #include #include #include namespace boost { namespace threadpool { namespace detail { /*! \brief Thread pool worker. * * A worker_thread represents a thread of execution. The worker is attached to a * thread pool and processes tasks of that pool. The lifetime of the worker and its * internal boost::thread is managed automatically. * * This class is a helper class and cannot be constructed or accessed directly. * * \see pool_core */ template class worker_thread : public enable_shared_from_this< worker_thread > , private noncopyable { public: typedef Pool pool_type; //!< Indicates the pool's type. private: shared_ptr m_pool; //!< Pointer to the pool which created the worker. shared_ptr m_thread; //!< Pointer to the thread which executes the run loop. /*! Constructs a new worker. * \param pool Pointer to it's parent pool. * \see function create_and_attach */ worker_thread(shared_ptr const & pool) : m_pool(pool) { assert(pool); } /*! Notifies that an exception occurred in the run loop. */ void died_unexpectedly() { m_pool->worker_died_unexpectedly(this->shared_from_this()); } public: /*! Executes pool's tasks sequentially. */ void run() { scope_guard notify_exception(bind(&worker_thread::died_unexpectedly, this)); while(m_pool->execute_task()) {} notify_exception.disable(); m_pool->worker_destructed(this->shared_from_this()); } /*! Joins the worker's thread. */ void join() { m_thread->join(); } /*! Constructs a new worker thread and attaches it to the pool. * \param pool Pointer to the pool. */ static void create_and_attach(shared_ptr const & pool) { shared_ptr worker(new worker_thread(pool)); if(worker) { worker->m_thread.reset(new boost::thread(bind(&worker_thread::run, worker))); } } }; } } } // namespace boost::threadpool::detail #endif // THREADPOOL_DETAIL_WORKER_THREAD_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/detail/pool_core.hpp0000644000175000017500000003314110774445303025705 00000000000000/*! \file * \brief Thread pool core. * * This file contains the threadpool's core class: pool. * * Thread pools are a mechanism for asynchronous and parallel processing * within the same process. The pool class provides a convenient way * for dispatching asynchronous tasks as functions objects. The scheduling * of these tasks can be easily controlled by using customized schedulers. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_POOL_CORE_HPP_INCLUDED #define THREADPOOL_POOL_CORE_HPP_INCLUDED #include "locking_ptr.hpp" #include "worker_thread.hpp" #include "../task_adaptors.hpp" #include #include #include #include #include #include #include #include #include /// The namespace threadpool contains a thread pool and related utility classes. namespace boost { namespace threadpool { namespace detail { /*! \brief Thread pool. * * Thread pools are a mechanism for asynchronous and parallel processing * within the same process. The pool class provides a convenient way * for dispatching asynchronous tasks as functions objects. The scheduling * of these tasks can be easily controlled by using customized schedulers. * A task must not throw an exception. * * A pool_impl is DefaultConstructible and NonCopyable. * * \param Task A function object which implements the operator 'void operator() (void) const'. The operator () is called by the pool to execute the task. Exceptions are ignored. * \param Scheduler A task container which determines how tasks are scheduled. It is guaranteed that this container is accessed only by one thread at a time. The scheduler shall not throw exceptions. * * \remarks The pool class is thread-safe. * * \see Tasks: task_func, prio_task_func * \see Scheduling policies: fifo_scheduler, lifo_scheduler, prio_scheduler */ template < typename Task, template class SchedulingPolicy, template class SizePolicy, template class SizePolicyController, template class ShutdownPolicy > class pool_core : public enable_shared_from_this< pool_core > , private noncopyable { public: // Type definitions typedef Task task_type; //!< Indicates the task's type. typedef SchedulingPolicy scheduler_type; //!< Indicates the scheduler's type. typedef pool_core pool_type; //!< Indicates the thread pool's type. typedef SizePolicy size_policy_type; //!< Indicates the sizer's type. //typedef typename size_policy_type::size_controller size_controller_type; typedef SizePolicyController size_controller_type; // typedef SizePolicy::size_controller size_controller_type; typedef ShutdownPolicy shutdown_policy_type;//!< Indicates the shutdown policy's type. typedef worker_thread worker_type; // The task is required to be a nullary function. BOOST_STATIC_ASSERT(function_traits::arity == 0); // The task function's result type is required to be void. BOOST_STATIC_ASSERT(is_void::type >::value); private: // Friends friend class worker_thread; #if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x580) // Tested with CC: Sun C++ 5.8 Patch 121018-08 2006/12/06 friend class SizePolicy; friend class ShutdownPolicy; #else friend class SizePolicy; friend class ShutdownPolicy; #endif private: // The following members may be accessed by _multiple_ threads at the same time: volatile size_t m_worker_count; volatile size_t m_target_worker_count; volatile size_t m_active_worker_count; private: // The following members are accessed only by _one_ thread at the same time: scheduler_type m_scheduler; scoped_ptr m_size_policy; // is never null bool m_terminate_all_workers; // Indicates if termination of all workers was triggered. std::vector > m_terminated_workers; // List of workers which are terminated but not fully destructed. private: // The following members are implemented thread-safe: mutable recursive_mutex m_monitor; mutable condition m_worker_idle_or_terminated_event; // A worker is idle or was terminated. mutable condition m_task_or_terminate_workers_event; // Task is available OR total worker count should be reduced. public: /// Constructor. pool_core() : m_worker_count(0) , m_target_worker_count(0) , m_active_worker_count(0) , m_terminate_all_workers(false) { pool_type volatile & self_ref = *this; m_size_policy.reset(new size_policy_type(self_ref)); m_scheduler.clear(); } /// Destructor. ~pool_core() { } /*! Gets the size controller which manages the number of threads in the pool. * \return The size controller. * \see SizePolicy */ size_controller_type size_controller() { return size_controller_type(*m_size_policy, this->shared_from_this()); } /*! Gets the number of threads in the pool. * \return The number of threads. */ size_t size() const volatile { return m_worker_count; } // TODO is only called once void shutdown() { ShutdownPolicy::shutdown(*this); } /*! Schedules a task for asynchronous execution. The task will be executed once only. * \param task The task function object. It should not throw execeptions. * \return true, if the task could be scheduled and false otherwise. */ bool schedule(task_type const & task) volatile { locking_ptr lockedThis(*this, m_monitor); if(lockedThis->m_scheduler.push(task)) { lockedThis->m_task_or_terminate_workers_event.notify_one(); return true; } else { return false; } } /*! Returns the number of tasks which are currently executed. * \return The number of active tasks. */ size_t active() const volatile { return m_active_worker_count; } /*! Returns the number of tasks which are ready for execution. * \return The number of pending tasks. */ size_t pending() const volatile { locking_ptr lockedThis(*this, m_monitor); return lockedThis->m_scheduler.size(); } /*! Removes all pending tasks from the pool's scheduler. */ void clear() volatile { locking_ptr lockedThis(*this, m_monitor); lockedThis->m_scheduler.clear(); } /*! Indicates that there are no tasks pending. * \return true if there are no tasks ready for execution. * \remarks This function is more efficient that the check 'pending() == 0'. */ bool empty() const volatile { locking_ptr lockedThis(*this, m_monitor); return lockedThis->m_scheduler.empty(); } /*! The current thread of execution is blocked until the sum of all active * and pending tasks is equal or less than a given threshold. * \param task_threshold The maximum number of tasks in pool and scheduler. */ void wait(size_t const task_threshold = 0) const volatile { const pool_type* self = const_cast(this); recursive_mutex::scoped_lock lock(self->m_monitor); if(0 == task_threshold) { while(0 != self->m_active_worker_count || !self->m_scheduler.empty()) { self->m_worker_idle_or_terminated_event.wait(lock); } } else { while(task_threshold < self->m_active_worker_count + self->m_scheduler.size()) { self->m_worker_idle_or_terminated_event.wait(lock); } } } /*! The current thread of execution is blocked until the timestamp is met * or the sum of all active and pending tasks is equal or less * than a given threshold. * \param timestamp The time when function returns at the latest. * \param task_threshold The maximum number of tasks in pool and scheduler. * \return true if the task sum is equal or less than the threshold, false otherwise. */ bool wait(xtime const & timestamp, size_t const task_threshold = 0) const volatile { const pool_type* self = const_cast(this); recursive_mutex::scoped_lock lock(self->m_monitor); if(0 == task_threshold) { while(0 != self->m_active_worker_count || !self->m_scheduler.empty()) { if(!self->m_worker_idle_or_terminated_event.timed_wait(lock, timestamp)) return false; } } else { while(task_threshold < self->m_active_worker_count + self->m_scheduler.size()) { if(!self->m_worker_idle_or_terminated_event.timed_wait(lock, timestamp)) return false; } } return true; } private: void terminate_all_workers(bool const wait) volatile { pool_type* self = const_cast(this); recursive_mutex::scoped_lock lock(self->m_monitor); self->m_terminate_all_workers = true; m_target_worker_count = 0; self->m_task_or_terminate_workers_event.notify_all(); if(wait) { while(m_worker_count > 0) { self->m_worker_idle_or_terminated_event.wait(lock); } for(typename std::vector >::iterator it = self->m_terminated_workers.begin(); it != self->m_terminated_workers.end(); ++it) { (*it)->join(); } self->m_terminated_workers.clear(); } } /*! Changes the number of worker threads in the pool. The resizing * is handled by the SizePolicy. * \param threads The new number of worker threads. * \return true, if pool will be resized and false if not. */ bool resize(size_t const worker_count) volatile { locking_ptr lockedThis(*this, m_monitor); if(!m_terminate_all_workers) { m_target_worker_count = worker_count; } else { return false; } if(m_worker_count <= m_target_worker_count) { // increase worker count while(m_worker_count < m_target_worker_count) { try { worker_thread::create_and_attach(lockedThis->shared_from_this()); m_worker_count++; m_active_worker_count++; } catch(thread_resource_error) { return false; } } } else { // decrease worker count lockedThis->m_task_or_terminate_workers_event.notify_all(); // TODO: Optimize number of notified workers } return true; } // worker died with unhandled exception void worker_died_unexpectedly(shared_ptr worker) volatile { locking_ptr lockedThis(*this, m_monitor); m_worker_count--; m_active_worker_count--; lockedThis->m_worker_idle_or_terminated_event.notify_all(); if(m_terminate_all_workers) { lockedThis->m_terminated_workers.push_back(worker); } else { lockedThis->m_size_policy->worker_died_unexpectedly(m_worker_count); } } void worker_destructed(shared_ptr worker) volatile { locking_ptr lockedThis(*this, m_monitor); m_worker_count--; m_active_worker_count--; lockedThis->m_worker_idle_or_terminated_event.notify_all(); if(m_terminate_all_workers) { lockedThis->m_terminated_workers.push_back(worker); } } bool execute_task() volatile { function0 task; { // fetch task pool_type* lockedThis = const_cast(this); recursive_mutex::scoped_lock lock(lockedThis->m_monitor); // decrease number of threads if necessary if(m_worker_count > m_target_worker_count) { return false; // terminate worker } // wait for tasks while(lockedThis->m_scheduler.empty()) { // decrease number of workers if necessary if(m_worker_count > m_target_worker_count) { return false; // terminate worker } else { m_active_worker_count--; lockedThis->m_worker_idle_or_terminated_event.notify_all(); lockedThis->m_task_or_terminate_workers_event.wait(lock); m_active_worker_count++; } } task = lockedThis->m_scheduler.top(); lockedThis->m_scheduler.pop(); } // call task function if(task) { task(); } //guard->disable(); return true; } }; } } } // namespace boost::threadpool::detail #endif // THREADPOOL_POOL_CORE_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/size_policies.hpp0000644000175000017500000000453410774445303025327 00000000000000/*! \file * \brief Size policies. * * This file contains size policies for thread_pool. A size * policy controls the number of worker threads in the pool. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_SIZE_POLICIES_HPP_INCLUDED #define THREADPOOL_SIZE_POLICIES_HPP_INCLUDED /// The namespace threadpool contains a thread pool and related utility classes. namespace boost { namespace threadpool { /*! \brief SizePolicyController which provides no functionality. * * \param Pool The pool's core type. */ template struct empty_controller { empty_controller(typename Pool::size_policy_type&, shared_ptr) {} }; /*! \brief SizePolicyController which allows resizing. * * \param Pool The pool's core type. */ template< typename Pool > class resize_controller { typedef typename Pool::size_policy_type size_policy_type; reference_wrapper m_policy; shared_ptr m_pool; //!< to make sure that the pool is alive (the policy pointer is valid) as long as the controller exists public: resize_controller(size_policy_type& policy, shared_ptr pool) : m_policy(policy) , m_pool(pool) { } bool resize(size_t worker_count) { return m_policy.get().resize(worker_count); } }; /*! \brief SizePolicy which preserves the thread count. * * \param Pool The pool's core type. */ template class static_size { reference_wrapper m_pool; public: static void init(Pool& pool, size_t const worker_count) { pool.resize(worker_count); } static_size(Pool volatile & pool) : m_pool(pool) {} bool resize(size_t const worker_count) { return m_pool.get().resize(worker_count); } void worker_died_unexpectedly(size_t const new_worker_count) { m_pool.get().resize(new_worker_count + 1); } // TODO this functions are not called yet void task_scheduled() {} void task_finished() {} }; } } // namespace boost::threadpool #endif // THREADPOOL_SIZE_POLICIES_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/future.hpp0000644000175000017500000000512710774445303023777 00000000000000/*! \file * \brief TODO. * * TODO. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_FUTURE_HPP_INCLUDED #define THREADPOOL_FUTURE_HPP_INCLUDED #include "detail/future.hpp" #include //#include "pool.hpp" //#include //#include namespace boost { namespace threadpool { /*! \brief Experimental. Do not use in production code. TODO. * * TODO Future * * \see TODO * */ template class future { private: shared_ptr > m_impl; public: typedef Result const & result_type; //!< Indicates the functor's result type. typedef Result future_result_type; //!< Indicates the future's result type. public: future() : m_impl(new detail::future_impl()) // TODO remove this { } // only for internal usage future(shared_ptr > const & impl) : m_impl(impl) { } bool ready() const { return m_impl->ready(); } void wait() const { m_impl->wait(); } bool timed_wait(boost::xtime const & timestamp) const { return m_impl->timed_wait(timestamp); } result_type operator()() // throw( thread::cancelation_exception, ... ) { return (*m_impl)(); } result_type get() // throw( thread::cancelation_exception, ... ) { return (*m_impl)(); } bool cancel() { return m_impl->cancel(); } bool is_cancelled() const { return m_impl->is_cancelled(); } }; template typename disable_if < is_void< typename result_of< Function() >::type >, future< typename result_of< Function() >::type > >::type schedule(Pool& pool, const Function& task) { typedef typename result_of< Function() >::type future_result_type; // create future impl and future shared_ptr > impl(new detail::future_impl); future res(impl); // schedule future impl pool.schedule(detail::future_impl_task_func(task, impl)); // return future return res; /* TODO if(pool->schedule(bind(&Future::run, future))) { return future; } else { // construct empty future return error_future; } */ } } } // namespace boost::threadpool #endif // THREADPOOL_FUTURE_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/pool_adaptors.hpp0000644000175000017500000000372010774445303025330 00000000000000/*! \file * \brief Pool adaptors. * * This file contains an easy-to-use adaptor similar to a smart * pointer for the pool class. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_POOL_ADAPTORS_HPP_INCLUDED #define THREADPOOL_POOL_ADAPTORS_HPP_INCLUDED #include namespace boost { namespace threadpool { // TODO convenience scheduling function /*! Schedules a Runnable for asynchronous execution. A Runnable is an arbitrary class with a run() * member function. This a convenience shorthand for pool->schedule(bind(&Runnable::run, task_object)). * \param * \param obj The Runnable object. The member function run() will be exectued and should not throw execeptions. * \return true, if the task could be scheduled and false otherwise. */ template bool schedule(Pool& pool, shared_ptr const & obj) { return pool->schedule(bind(&Runnable::run, obj)); } /*! Schedules a task for asynchronous execution. The task will be executed once only. * \param task The task function object. */ template typename enable_if < is_void< typename result_of< typename Pool::task_type() >::type >, bool >::type schedule(Pool& pool, typename Pool::task_type const & task) { return pool.schedule(task); } template typename enable_if < is_void< typename result_of< typename Pool::task_type() >::type >, bool >::type schedule(shared_ptr const pool, typename Pool::task_type const & task) { return pool->schedule(task); } } } // namespace boost::threadpool #endif // THREADPOOL_POOL_ADAPTORS_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/shutdown_policies.hpp0000644000175000017500000000364510774445303026232 00000000000000/*! \file * \brief Shutdown policies. * * This file contains shutdown policies for thread_pool. * A shutdown policy controls the pool's behavior from the time * when the pool is not referenced any longer. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_SHUTDOWN_POLICIES_HPP_INCLUDED #define THREADPOOL_SHUTDOWN_POLICIES_HPP_INCLUDED /// The namespace threadpool contains a thread pool and related utility classes. namespace boost { namespace threadpool { /*! \brief ShutdownPolicy which waits for the completion of all tasks * and the worker termination afterwards. * * \param Pool The pool's core type. */ template class wait_for_all_tasks { public: static void shutdown(Pool& pool) { pool.wait(); pool.terminate_all_workers(true); } }; /*! \brief ShutdownPolicy which waits for the completion of all active tasks * and the worker termination afterwards. * * \param Pool The pool's core type. */ template class wait_for_active_tasks { public: static void shutdown(Pool& pool) { pool.clear(); pool.wait(); pool.terminate_all_workers(true); } }; /*! \brief ShutdownPolicy which does not wait for any tasks or worker termination. * * This policy does not wait for any tasks. Nevertheless all active tasks will be processed completely. * * \param Pool The pool's core type. */ template class immediately { public: static void shutdown(Pool& pool) { pool.clear(); pool.terminate_all_workers(false); } }; } } // namespace boost::threadpool #endif // THREADPOOL_SHUTDOWN_POLICIES_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/task_adaptors.hpp0000644000175000017500000001037110774445303025321 00000000000000/*! \file * \brief Task adaptors. * * This file contains adaptors for task function objects. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_TASK_ADAPTERS_HPP_INCLUDED #define THREADPOOL_TASK_ADAPTERS_HPP_INCLUDED #include #include #include namespace boost { namespace threadpool { /*! \brief Standard task function object. * * This function object wraps a nullary function which returns void. * The wrapped function is invoked by calling the operator (). * * \see boost function library * */ typedef function0 task_func; /*! \brief Prioritized task function object. * * This function object wraps a task_func object and binds a priority to it. * prio_task_funcs can be compared using the operator < which realises a partial ordering. * The wrapped task function is invoked by calling the operator (). * * \see prio_scheduler * */ class prio_task_func { private: unsigned int m_priority; //!< The priority of the task's function. task_func m_function; //!< The task's function. public: typedef void result_type; //!< Indicates the functor's result type. public: /*! Constructor. * \param priority The priority of the task. * \param function The task's function object. */ prio_task_func(unsigned int const priority, task_func const & function) : m_priority(priority) , m_function(function) { } /*! Executes the task function. */ void operator() (void) const { if(m_function) { m_function(); } } /*! Comparison operator which realises a partial ordering based on priorities. * \param rhs The object to compare with. * \return true if the priority of *this is less than right hand side's priority, false otherwise. */ bool operator< (const prio_task_func& rhs) const { return m_priority < rhs.m_priority; } }; // prio_task_func /*! \brief Looped task function object. * * This function object wraps a boolean thread function object. * The wrapped task function is invoked by calling the operator () and it is executed in regular * time intervals until false is returned. The interval length may be zero. * Please note that a pool's thread is engaged as long as the task is looped. * */ class looped_task_func { private: function0 m_function; //!< The task's function. unsigned int m_break_s; //!< Duration of breaks in seconds. unsigned int m_break_ns; //!< Duration of breaks in nano seconds. public: typedef void result_type; //!< Indicates the functor's result type. public: /*! Constructor. * \param function The task's function object which is looped until false is returned. * \param interval The minimum break time in milli seconds before the first execution of the task function and between the following ones. */ looped_task_func(function0 const & function, unsigned int const interval = 0) : m_function(function) { m_break_s = interval / 1000; m_break_ns = (interval - m_break_s * 1000) * 1000 * 1000; } /*! Executes the task function. */ void operator() (void) const { if(m_function) { if(m_break_s > 0 || m_break_ns > 0) { // Sleep some time before first execution xtime xt; xtime_get(&xt, TIME_UTC); xt.nsec += m_break_ns; xt.sec += m_break_s; thread::sleep(xt); } while(m_function()) { if(m_break_s > 0 || m_break_ns > 0) { xtime xt; xtime_get(&xt, TIME_UTC); xt.nsec += m_break_ns; xt.sec += m_break_s; thread::sleep(xt); } else { thread::yield(); // Be fair to other threads } } } } }; // looped_task_func } } // namespace boost::threadpool #endif // THREADPOOL_TASK_ADAPTERS_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/CVS/0000777000175000017500000000000011240651125022454 500000000000000visual-5.12_release/dependencies/threadpool/include/threadpool/CVS/Entries0000644000175000017500000000054511240651125023730 00000000000000D/detail//// /future.hpp/1.1/Tue Apr 1 14:46:27 2008// /pool.hpp/1.1/Tue Apr 1 14:46:27 2008// /pool_adaptors.hpp/1.1/Tue Apr 1 14:46:27 2008// /scheduling_policies.hpp/1.1/Tue Apr 1 14:46:27 2008// /shutdown_policies.hpp/1.1/Tue Apr 1 14:46:27 2008// /size_policies.hpp/1.1/Tue Apr 1 14:46:27 2008// /task_adaptors.hpp/1.1/Tue Apr 1 14:46:27 2008// visual-5.12_release/dependencies/threadpool/include/threadpool/CVS/Root0000644000175000017500000000011111240651125023227 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/dependencies/threadpool/include/threadpool/CVS/Repository0000644000175000017500000000007111240651125024470 00000000000000vpython-core2/dependencies/threadpool/include/threadpool visual-5.12_release/dependencies/threadpool/include/threadpool/pool.hpp0000644000175000017500000001671410774445303023442 00000000000000/*! \file * \brief Thread pool core. * * This file contains the threadpool's core class: pool. * * Thread pools are a mechanism for asynchronous and parallel processing * within the same process. The pool class provides a convenient way * for dispatching asynchronous tasks as functions objects. The scheduling * of these tasks can be easily controlled by using customized schedulers. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_POOL_HPP_INCLUDED #define THREADPOOL_POOL_HPP_INCLUDED #include #include "detail/pool_core.hpp" #include "task_adaptors.hpp" #include "detail/locking_ptr.hpp" #include "scheduling_policies.hpp" #include "size_policies.hpp" #include "shutdown_policies.hpp" /// The namespace threadpool contains a thread pool and related utility classes. namespace boost { namespace threadpool { /*! \brief Thread pool. * * Thread pools are a mechanism for asynchronous and parallel processing * within the same process. The pool class provides a convenient way * for dispatching asynchronous tasks as functions objects. The scheduling * of these tasks can be easily controlled by using customized schedulers. * A task must not throw an exception. * * A pool is DefaultConstructible, CopyConstructible and Assignable. * It has reference semantics; all copies of the same pool are equivalent and interchangeable. * All operations on a pool except assignment are strongly thread safe or sequentially consistent; * that is, the behavior of concurrent calls is as if the calls have been issued sequentially in an unspecified order. * * \param Task A function object which implements the operator 'void operator() (void) const'. The operator () is called by the pool to execute the task. Exceptions are ignored. * \param SchedulingPolicy A task container which determines how tasks are scheduled. It is guaranteed that this container is accessed only by one thread at a time. The scheduler shall not throw exceptions. * * \remarks The pool class is thread-safe. * * \see Tasks: task_func, prio_task_func * \see Scheduling policies: fifo_scheduler, lifo_scheduler, prio_scheduler */ template < typename Task = task_func, template class SchedulingPolicy = fifo_scheduler, template class SizePolicy = static_size, template class SizePolicyController = resize_controller, template class ShutdownPolicy = wait_for_all_tasks > class thread_pool { typedef detail::pool_core pool_core_type; shared_ptr m_core; // pimpl idiom shared_ptr m_shutdown_controller; // If the last pool holding a pointer to the core is deleted the controller shuts the pool down. public: // Type definitions typedef Task task_type; //!< Indicates the task's type. typedef SchedulingPolicy scheduler_type; //!< Indicates the scheduler's type. /* typedef thread_pool pool_type; //!< Indicates the thread pool's type. */ typedef SizePolicy size_policy_type; typedef SizePolicyController size_controller_type; public: /*! Constructor. * \param initial_threads The pool is immediately resized to set the specified number of threads. The pool's actual number threads depends on the SizePolicy. */ thread_pool(size_t initial_threads = 0) : m_core(new pool_core_type) , m_shutdown_controller(static_cast(0), bind(&pool_core_type::shutdown, m_core)) { size_policy_type::init(*m_core, initial_threads); } /*! Gets the size controller which manages the number of threads in the pool. * \return The size controller. * \see SizePolicy */ size_controller_type size_controller() { return m_core->size_controller(); } /*! Gets the number of threads in the pool. * \return The number of threads. */ size_t size() const { return m_core->size(); } /*! Schedules a task for asynchronous execution. The task will be executed once only. * \param task The task function object. It should not throw execeptions. * \return true, if the task could be scheduled and false otherwise. */ bool schedule(task_type const & task) { return m_core->schedule(task); } /*! Returns the number of tasks which are currently executed. * \return The number of active tasks. */ size_t active() const { return m_core->active(); } /*! Returns the number of tasks which are ready for execution. * \return The number of pending tasks. */ size_t pending() const { return m_core->pending(); } /*! Removes all pending tasks from the pool's scheduler. */ void clear() { m_core->clear(); } /*! Indicates that there are no tasks pending. * \return true if there are no tasks ready for execution. * \remarks This function is more efficient that the check 'pending() == 0'. */ bool empty() const { return m_core->empty(); } /*! The current thread of execution is blocked until the sum of all active * and pending tasks is equal or less than a given threshold. * \param task_threshold The maximum number of tasks in pool and scheduler. */ void wait(size_t task_threshold = 0) const { m_core->wait(task_threshold); } /*! The current thread of execution is blocked until the timestamp is met * or the sum of all active and pending tasks is equal or less * than a given threshold. * \param timestamp The time when function returns at the latest. * \param task_threshold The maximum number of tasks in pool and scheduler. * \return true if the task sum is equal or less than the threshold, false otherwise. */ bool wait(xtime const & timestamp, size_t task_threshold = 0) const { return m_core->wait(timestamp, task_threshold); } }; /*! \brief Fifo pool. * * The pool's tasks are fifo scheduled task_func functors. * */ typedef thread_pool fifo_pool; /*! \brief Lifo pool. * * The pool's tasks are lifo scheduled task_func functors. * */ typedef thread_pool lifo_pool; /*! \brief Pool for prioritized task. * * The pool's tasks are prioritized prio_task_func functors. * */ typedef thread_pool prio_pool; /*! \brief A standard pool. * * The pool's tasks are fifo scheduled task_func functors. * */ typedef fifo_pool pool; } } // namespace boost::threadpool #endif // THREADPOOL_POOL_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool/scheduling_policies.hpp0000644000175000017500000001462610774445303026505 00000000000000/*! \file * \brief Task scheduling policies. * * This file contains some fundamental scheduling policies for the pool class. * A scheduling policy is realized by a task container which controls the access to * the tasks. Fundamentally the container determines the order the tasks are processed * by the thread pool. * The task containers need not to be thread-safe because they are used by the pool * in thread-safe way. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_SCHEDULING_POLICIES_HPP_INCLUDED #define THREADPOOL_SCHEDULING_POLICIES_HPP_INCLUDED #include #include #include "task_adaptors.hpp" namespace boost { namespace threadpool { /*! \brief SchedulingPolicy which implements FIFO ordering. * * This container implements a FIFO scheduling policy. * The first task to be added to the scheduler will be the first to be removed. * The processing proceeds sequentially in the same order. * FIFO stands for "first in, first out". * * \param Task A function object which implements the operator()(void). * */ template class fifo_scheduler { public: typedef Task task_type; //!< Indicates the scheduler's task type. protected: std::deque m_container; //!< Internal task container. public: /*! Adds a new task to the scheduler. * \param task The task object. * \return true, if the task could be scheduled and false otherwise. */ bool push(task_type const & task) { m_container.push_back(task); return true; } /*! Removes the task which should be executed next. */ void pop() { m_container.pop_front(); } /*! Gets the task which should be executed next. * \return The task object to be executed. */ task_type const & top() const { return m_container.front(); } /*! Gets the current number of tasks in the scheduler. * \return The number of tasks. * \remarks Prefer empty() to size() == 0 to check if the scheduler is empty. */ size_t size() const { return m_container.size(); } /*! Checks if the scheduler is empty. * \return true if the scheduler contains no tasks, false otherwise. * \remarks Is more efficient than size() == 0. */ bool empty() const { return m_container.empty(); } /*! Removes all tasks from the scheduler. */ void clear() { m_container.clear(); } }; /*! \brief SchedulingPolicy which implements LIFO ordering. * * This container implements a LIFO scheduling policy. * The last task to be added to the scheduler will be the first to be removed. * LIFO stands for "last in, first out". * * \param Task A function object which implements the operator()(void). * */ template class lifo_scheduler { public: typedef Task task_type; //!< Indicates the scheduler's task type. protected: std::deque m_container; //!< Internal task container. public: /*! Adds a new task to the scheduler. * \param task The task object. * \return true, if the task could be scheduled and false otherwise. */ bool push(task_type const & task) { m_container.push_front(task); return true; } /*! Removes the task which should be executed next. */ void pop() { m_container.pop_front(); } /*! Gets the task which should be executed next. * \return The task object to be executed. */ task_type const & top() const { return m_container.front(); } /*! Gets the current number of tasks in the scheduler. * \return The number of tasks. * \remarks Prefer empty() to size() == 0 to check if the scheduler is empty. */ size_t size() const { return m_container.size(); } /*! Checks if the scheduler is empty. * \return true if the scheduler contains no tasks, false otherwise. * \remarks Is more efficient than size() == 0. */ bool empty() const { return m_container.empty(); } /*! Removes all tasks from the scheduler. */ void clear() { m_container.clear(); } }; /*! \brief SchedulingPolicy which implements prioritized ordering. * * This container implements a scheduling policy based on task priorities. * The task with highest priority will be the first to be removed. * It must be possible to compare two tasks using operator<. * * \param Task A function object which implements the operator() and operator<. operator< must be a partial ordering. * * \see prio_thread_func * */ template class prio_scheduler { public: typedef Task task_type; //!< Indicates the scheduler's task type. protected: std::priority_queue m_container; //!< Internal task container. public: /*! Adds a new task to the scheduler. * \param task The task object. * \return true, if the task could be scheduled and false otherwise. */ bool push(task_type const & task) { m_container.push(task); return true; } /*! Removes the task which should be executed next. */ void pop() { m_container.pop(); } /*! Gets the task which should be executed next. * \return The task object to be executed. */ task_type const & top() const { return m_container.top(); } /*! Gets the current number of tasks in the scheduler. * \return The number of tasks. * \remarks Prefer empty() to size() == 0 to check if the scheduler is empty. */ size_t size() const { return m_container.size(); } /*! Checks if the scheduler is empty. * \return true if the scheduler contains no tasks, false otherwise. * \remarks Is more efficient than size() == 0. */ bool empty() const { return m_container.empty(); } /*! Removes all tasks from the scheduler. */ void clear() { while(!m_container.empty()) { m_container.pop(); } } }; } } // namespace boost::threadpool #endif // THREADPOOL_SCHEDULING_POLICIES_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/threadpool.hpp0000644000175000017500000000121710774445303022461 00000000000000/*! \file * \brief Main include. * * This is the only file you have to include in order to use the * complete threadpool library. * * Copyright (c) 2005-2007 Philipp Henkel * * Use, modification, and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * * http://threadpool.sourceforge.net * */ #ifndef THREADPOOL_HPP_INCLUDED #define THREADPOOL_HPP_INCLUDED #include "threadpool/future.hpp" #include "threadpool/pool.hpp" #include "threadpool/pool_adaptors.hpp" #include "threadpool/task_adaptors.hpp" #endif // THREADPOOL_HPP_INCLUDED visual-5.12_release/dependencies/threadpool/include/CVS/0000777000175000017500000000000011240651125020313 500000000000000visual-5.12_release/dependencies/threadpool/include/CVS/Entries0000644000175000017500000000010011240651125021552 00000000000000D/threadpool//// /threadpool.hpp/1.1/Tue Apr 1 14:46:27 2008// visual-5.12_release/dependencies/threadpool/include/CVS/Root0000644000175000017500000000011111240651125021066 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/dependencies/threadpool/include/CVS/Repository0000644000175000017500000000005611240651125022332 00000000000000vpython-core2/dependencies/threadpool/include visual-5.12_release/dependencies/threadpool/CHANGE_LOG0000644000175000017500000000671310774445303017543 00000000000000Change Log 0.2.4 (Stable) - Made threadpool compatible to boost::thread 1.35.x code base - Fixed compiler warning in scope_guard.hpp 0.2.3 (Development) - Implemented workaround for Sun C++ Pro compiler bug in pool_core - Removed subtask implementation (there was no demand for this feature) - Improved shutdown policies 0.2.2 (Development) - Refactored SizePolicy and added SizePolicyController - Moved policies into separate files - Fixed some compiler problems (GCC) - Implemented size_controller handling - Implemented two size policies: static_size and fixed_size - Refactored worker_thread handling, moved policies from pool_core to pool - Specialized schedule function for usage with futures - Added compile test project - Improved constness in pool core class - Fixed timed wait - Implemented futures (in progress) - Added result_type to all functors 0.2.1 (Development) - Pool base class (thread_pool) has now reference semantics - Large refactorings: Removed scoped_pool, reimplemented worker (now worker_thread) - Fixed odd resize behaviour. Now resize changes the number of threads immediately - Apply pimpl idiom on pool core class (to make the ugly scoped_pool class needless) - Introduced scheduling policies - Switched to policy-based design (PBD), inspired by Scott Meyers C++ workshop - Cosmetic code change: Replaced keyword 'class' with 'typename' in template definitions - Revised tutorials - New requirements: tasks functions should not and schedulers shall not throw exceptions 0.2.0 (Development) - Moved threadpool into the boost namespace: boost::threadpool - Used keyword volatile to indicate thread-safe member functions - Used volatile on primitve types were appropriate - Moved worker to detail directory - Fixed thread deletion - Extended wait functionality (waiting for idle threads was implemented) - Renamed 'join()' to 'wait()' as 'join' indicates the termination of thread. That was not the case in pool::join. - Changed internal container of lifo and fifo schedulers to improve efficiency. - Improved code reference documentation (source code browser) - Renamed thread_func into task_func - Added += operator to scoped_pool to ease scheduling of tasks - Refactored file structures and class names - Added a new task concept (named subtask) which allows the combination of sequential and parallel execution - Added new task adaptor for looped or timed tasks: looped_task_func - Introduced function clear() which can be used to remove all tasks from the pool and schedulers - New function pool::active() which returns the number of active tasks 0.1.8 (Development) - Fixed some compile errors which were reported by gcc - Wrote tutorial "Prioritized Tasks" 0.1.7 (Development) - Added Visual Studio 2005 project files for tutorial and examples 0.1.6 (Development) - Replaced task adaptor 'task' with boost::bind - Workers are unregistered from thread_group when they are terminated - Working on example boost::iostreams packet_filter 0.1.5 (Development) - Finished threadpool reference - Class pool_adaptor was replaced by smart_pool - Minor pool improvements - First tutorial page online 0.1.4 (Development) - Created the pool's homepage: http://threadpool.sourceforge.net - Improved documentation - Added build scripts 0.1.3 (Development) - First public release - Added mergesort example - Added tutorial - Implementation of threadpool core and related classesvisual-5.12_release/dependencies/threadpool/CVS/0000777000175000017500000000000011240651125016670 500000000000000visual-5.12_release/dependencies/threadpool/CVS/Entries0000644000175000017500000000033511240651125020141 00000000000000/CHANGE_LOG/1.1/Tue Apr 1 14:46:27 2008// /COPYING/1.1/Tue Apr 1 14:46:27 2008// /LICENSE_1_0.txt/1.1/Tue Apr 1 14:46:27 2008// /README/1.1/Tue Apr 1 14:46:27 2008// /TODO/1.1/Tue Apr 1 14:46:27 2008// D/include//// visual-5.12_release/dependencies/threadpool/CVS/Root0000644000175000017500000000011111240651125017443 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/dependencies/threadpool/CVS/Repository0000644000175000017500000000004611240651125020706 00000000000000vpython-core2/dependencies/threadpool visual-5.12_release/dependencies/threadpool/LICENSE_1_0.txt0000644000175000017500000000247210774445303020452 00000000000000Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. visual-5.12_release/dependencies/Readme.txt0000644000175000017500000000333511160234550015752 00000000000000Files in this directory are not part of the VPython project, are not maintained by us, but are included in CVS for the convenience of developers. Compiling the Boost libraries from source is a very lengthy process, which is why binaries of the static libraries are provided here. ----- Boost ----- The files in boost_files2.5.zip are a subset of the Boost library for Python 2.5 and should be extracted (into vpython-core2/dependencies/boost_files/) before building. After extraction, the folder boost_files should contain the following folders: boost: header files (valid for all platforms -- Windows, Mac, Linux) win_libs: static libraries for Windows mac_libs: static libraries for Intel Macs running OS X 10.5 and the following (currently missing): mac_ppc_104_lib: static libraries for PowerPC Macs running OS X 10.4 mac_ppc_105_lib: static libraries for PowerPC Macs running OS X 10.5 The Boost libraries can be found at www.boost.org; the BoostPro installer containing the Windows binary libraries is at www.boost-consulting.com. The files in boost_files2.6.zip are for Python 2.6. If you use these, you need to adjust the build project to refer to 2.6 instead of 2.5. ---------- threadpool ---------- From threadpool.sf.net. A very simple thread pooling library based on Boost.Thread (no platform dependent code). Might become part of boost someday. The version of threadpool must match the version of Boost. Go to http://sourceforge.net/projects/threadpool and choose Download, then click the threadpool link in the Package column. Click on the "clipboard" icon for each package to see what Boost version is required. As of March 2009, here is what one finds: 0.2.5 boost::thread 1.37 0.2.4 boost::thread 1.35 visual-5.12_release/src/0000777000175000017500000000000011243357450012244 500000000000000visual-5.12_release/src/Makefile.in0000644000175000017500000002756211107573105014235 00000000000000# This Makefile.in contains rules to build Visual Python on MS Windows with # MinGW, Apple OSX, and Unix-like systems. You must process this file with # config.status to produce the Makefile. # This Makefile uses the quiet approach currently favored by the Linux kernel # version 2.6 @SET_MAKE@ .PHONY: clean distclean distdir install depclean deps install-strip \ all uninstall .DEFAULT: all .SUFFIXES: LOGFILE = build.log # Programs determined by configure CXX = @CXX@ LIBTOOL = @LIBTOOL@ INSTALL = @INSTALL@ PYTHON = @PYTHON@ SHELL = @SHELL@ depcomp = $(SHELL) $(top_srcdir)/depcomp CXXDEPMODE = @CXXDEPMODE@ STRIP = @STRIP@ MKDIR = $(SHELL) $(top_srcdir)/install-sh -d # System configurable variables determined by configure PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ BOOST_INCLUDES = # @BOOST_INCLUDES@ # System configuration variables only found on Win32 # the two-part version string without the period. WIN32_PYTHON_VERSION = $(subst .,"",$(PYTHON_VERSION)) WIN32_LIBS = -lpython$(WIN32_PYTHON_VERSION) \ -lboost_python$(WIN32_PYTHON_VERSION) -lgdi32 -lopengl32 -lglu32 WIN32_CPPFLAGS = -mthreads -mms-bitfields -I$(top_srcdir)/include/win32 WIN32_CPPFLAGS = -mthreads -mms-bitfields \ -IC:/Python$(WIN32_PYTHON_VERSION)/include WIN32_LDFLAGS = -mthreads # Prevent using the broken Apple C preprocessor, # silence a warning from Python 2.3, which uses a long double for padding # in an inconvient place for Apple's GCC. OSX_CPPFLAGS = #-no-cpp-precomp -fno-common -Wno-long-double # System configuration variables for Unix-like systems GTK_LIBS = @GTK_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ -I$(top_srcdir)/include/gtk2 GTHREAD_LIBS = @GTHREAD_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ # Option flags for the compiler, constructed from the above. CVISUAL_CPPFLAGS = $(BOOST_INCLUDES) $(PYTHON_INCLUDES) -DHAVE_CONFIG_H \ -I$(top_srcdir)/dependencies/threadpool/include \ -I$(top_srcdir)/include -I$(top_builddir)/include LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ CXXFLAGS = @CXXFLAGS@ -ftemplate-depth-120 -DNDEBUG CPPFLAGS = @CPPFLAGS@ # Object file list. Since we are building a shared library with PIC code, we # follow the libtool convention of using a .lo extension. CVISUAL_OBJS = atomic_queue.lo displaylist.lo errors.lo extent.lo \ gl_extensions.lo gl_free.lo icososphere.lo \ quadric.lo render_manager.lo rgba.lo shader_program.lo texture.lo tmatrix.lo vector.lo \ arrow.lo axial.lo box.lo cone.lo cylinder.lo \ display_kernel.lo ellipsoid.lo frame.lo label.lo light.lo material.lo \ mouse_manager.lo mouseobject.lo primitive.lo pyramid.lo rectangular.lo \ renderable.lo ring.lo sphere.lo text.lo \ display.lo font_renderer.lo random_device.lo render_surface.lo timer.lo\ arrayprim.lo convex.lo curve.lo cvisualmodule.lo faces.lo num_util.lo \ numeric_texture.lo points.lo scalar_array.lo slice.lo \ vector_array.lo wrap_arrayobjects.lo wrap_display_kernel.lo \ wrap_primitive.lo wrap_rgba.lo wrap_vector.lo # Distribution file list. DISTFILES = linux-symbols.map osx-symbols.txt core gtk2 python win32 # The "soversion" for this iteration of Visual. CVISUAL_VERSION_INFO = 3:0:0 # Installation target locations pythondir = @pythondir@ pythonpkgdir = $(pythondir)/visual srcdir = @srcdir@ top_builddir = @top_builddir@ # The absolute path to the top build directory. top_builddir_abs = $(shell cd $(top_builddir) && pwd) top_srcdir = @top_srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ VPATH = $(srcdir) $(srcdir)/core $(srcdir)/core/util \ $(srcdir)/gtk2 $(srcdir)/python $(srcdir)/win32 ################################################################################ # The implementation of each rule, to be chosen below. # Linker rules for Win32 and OSX _WIN32_DLLRULE = $(CXX) -shared -s $(CVISUAL_LDFLAGS) $(LDFLAGS) -o $@ $^ \ $(CVISUAL_LIBS) $(LIBS) define WIN32_DLLRULE @echo Linking $@ ... @echo $(_WIN32_DLLRULE) >> $(LOGFILE) @$(_WIN32_DLLRULE) 2>> $(LOGFILE) endef # Why the -v flag, you might wonder? Because FSF GCC fails to properly parse # the -bundle and -bundle_loader options otherwise. # The strange line concerning libGL.dylib is due to changes that arrived with OSX 10.5. # In the words of Martin Costabel, "This should be a no-op (it tells the linker: # "When you are asked to load /System/..../libGL.dylib, then really load this library # and not another one with a similar name that you happen to fancy"), but it isn't. # On Leopard (10.5), it must be used whenever you link with /usr/X11/lib/libGL.dylib # (even indirectly, for example by linking with libgtkgl-2.0.dylib)." _OSX_SORULE = $(CXX) -v -bundle -bundle_loader $(PYTHON) \ $(CVISUAL_LDFLAGS) $(LDFLAGS) -o $@ $^ $(CVISUAL_LIBS) $(LIBS) \ -Wl,-exported_symbols_list,$(srcdir)/osx-symbols.txt \ -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib define OSX_SORULE$ @echo Linking $@ ... @echo $(_OSX_SORULE) >> $(LOGFILE) @$(_OSX_SORULE) 2>> $(LOGFILE) endef # Default compile rules to use when on Win32 or OSX. _DEFAULT_CXX_RULE = $(CXX) $(CVISUAL_CPPFLAGS) $(CPPFLAGS) $(CVISUAL_CXXFLAGS) \ $(CXXFLAGS) -MMD -MF $*.d -MT "$*.d $*.lo" -c -o $@ $< define DEFAULT_CXX_RULE @echo Compiling $< ... @echo $(_DEFAULT_CXX_RULE) >> $(LOGFILE) @$(_DEFAULT_CXX_RULE) 2>> $(LOGFILE) endef # Fall back on these rules when not on OSX or Win32. _LT_CXX_RULE = $(LIBTOOL) --mode=compile $(_DEFAULT_CXX_RULE) define LT_CXX_RULE @echo Compiling $< ... @echo $(_LT_CXX_RULE) >> $(LOGFILE) @$(_LT_CXX_RULE) 2>> $(LOGFILE) 1>&2 endef _LT_LINKRULE = $(LIBTOOL) --mode=link $(CXX) $(CVISUAL_LDFLAGS) \ $(LDFLAGS) $^ $(CVISUAL_LIBS) $(LIBS) -module \ -version-info $(CVISUAL_VERSION_INFO) -o $@ \ -Wl,--version-script=$(srcdir)/linux-symbols.map \ -rpath $(pythondir)/$(PLATFORM_TARGET) define LT_LINKRULE @echo Linking $@ ... @echo $(_LT_LINKRULE) >> $(LOGFILE) @$(_LT_LINKRULE) 2>> $(LOGFILE) 1>&2 endef # The installation rule for targets that don't use Libtool. _GENERIC_INSTALLRULE = $(INSTALL) $< $@ define GENERIC_INSTALLRULE @echo Installing $< to $@ @echo $(_GENERIC_INSTALLRULE) >> $(LOGFILE) @$(_GENERIC_INSTALLRULE) 2>> $(LOGFILE) 1>&2 endef # The installation rule for targets that do use Libtool. _LT_INSTALLRULE = $(LIBTOOL) --mode=install $(_GENERIC_INSTALLRULE) define LT_INSTALLRULE @echo Installing $< to $@ @echo $(_LT_INSTALLRULE) >> $(LOGFILE) @$(_LT_INSTALLRULE) 2>> $(LOGFILE) 1>&2 endef ################################################################################ # Select the actual ruleset, based on the PYTHON_PLATFORM ifeq ($(PYTHON_PLATFORM),win32) # Windows -- Only MinGW is directly supported. CXX_RULE = $(DEFAULT_CXX_RULE) LINK_RULE = $(WIN32_DLLRULE) CVISUAL_CPPFLAGS += $(WIN32_CPPFLAGS) $(GTK_CFLAGS) $(GTHREAD_CFLAGS) CVISUAL_LIBS += $(WIN32_LIBS) $(GTK_LIBS) $(GTHREAD_LIBS) -lboost_thread -lboost_signals CVISUAL_LDFLAGS += $(WIN32_LDFLAGS) PLATFORM_TARGET = cvisual.pyd PLATFORM_OBJS = winrate.lo INSTALL_RULE = $(GENERIC_INSTALLRULE) else # These options are common to both Linux and OSX. # The filter-out statement removes an extraneous flag brought in by # gmodule-2.0.pc on some platforms. This reduces the symbol table (and # size of the final binary) by about 1 MB, and makes Python's "import" go # _much_ faster at runtime. _FILTER_OUT = "-Wl,--export-dynamic" CVISUAL_CPPFLAGS += $(GTK_CFLAGS) $(GTHREAD_CFLAGS) $(PYTHON_INCLUDES) CVISUAL_CXXFLAGS += -fpic -DPIC PLATFORM_OBJS = rate.lo ifeq ($(PYTHON_PLATFORM),darwin) # Special rules for OSX CVISUAL_LIBS += $(filter-out $(_FILTER_OUT), $(GTK_LIBS) \ $(GTHREAD_LIBS) /sw/lib/libboost_python-mt.a -lboost_thread-mt -lboost_signals) CXX_RULE = $(DEFAULT_CXX_RULE) LINK_RULE = $(OSX_SORULE) PLATFORM_TARGET = cvisualmodule.so CVISUAL_CPPFLAGS += $(OSX_CPPFLAGS) INSTALL_RULE = $(GENERIC_INSTALLRULE) else # Libtoolish rules. These should apply to all POSIX-like systems. CVISUAL_LIBS += $(filter-out $(_FILTER_OUT), $(GTK_LIBS) \ $(GTHREAD_LIBS) -lboost_python -lboost_thread -lboost_signals) CXX_RULE = $(LT_CXX_RULE) LINK_RULE = $(LT_LINKRULE) PLATFORM_TARGET = cvisualmodule.la CVISUAL_LIBS += -lstdc++ INSTALL_RULE = $(LT_INSTALLRULE) endif endif # Create a dependency list from the object list. DEPS = $(subst .lo,.d,$(CVISUAL_OBJS) $(PLATFORM_OBJS)) # The pattern rules themselves. %.lo: %.cpp $(CXX_RULE) ################################################################################ # The targets. all: log_message $(top_builddir_abs)/site-packages/$(PLATFORM_TARGET) # This rule "installs" the built plugin to site-packages. This way, you can # test the build in-place immediately after building it and before installing # it. $(top_builddir_abs)/site-packages/$(PLATFORM_TARGET): $(PLATFORM_TARGET) $(INSTALL_RULE) $(PLATFORM_TARGET): $(CVISUAL_OBJS) $(PLATFORM_OBJS) $(LINK_RULE) log_message: @echo This is a quiet Makefile. If make exits with an error, check \ src/build.log to see the complete error message\(s\). In the event \ of an error that you cannot debug, please send a message to \ visualpython-users@lists.sourceforge.net, including the files config.log \ and src/build.log, requesting assistance. @echo "Spoken once" >> $@ clean: ifneq ($(PYTHON_PLATFORM),darwin) ifneq ($(PYTHON_PLATFORM),win32) $(LIBTOOL) --mode=clean rm -f $(CVISUAL_OBJS) $(PLATFORM_TARGET) \ $(PLATFORM_OBJS) $(LIBTOOL) --mode=uninstall rm -f \ $(top_builddir_abs)/site-packages/$(PLATFORM_TARGET) else -rm -f $(CVISUAL_OBJS) $(PLATFORM_TARGET) $(PLATFORM_OBJS) endif else -rm -f $(CVISUAL_OBJS) $(PLATFORM_TARGET) $(PLATFORM_OBJS) endif distclean: clean depclean -rm -f Makefile config.h $(LOGFILE) log_message deps: $(DEPS) depclean: -rm -f $(DEPS) install: $(DESTDIR)$(pythondir)/$(PLATFORM_TARGET) $(DESTDIR)$(pythondir)/$(PLATFORM_TARGET): $(PLATFORM_TARGET) $(MKDIR) $(DESTDIR)$(pythondir) $(INSTALL_RULE) # Strips the platform-specific plugin lib after installing it. install-strip: install @echo stripping $(DESTDIR)$(pythondir)/$(PLATFORM_TARGET) ... ifneq ($(PYTHON_PLATFORM),darwin) @echo $(STRIP) $(DESTDIR)$(pythondir)/$(PLATFORM_TARGET) >> $(LOGFILE) @$(STRIP) $(DESTDIR)$(pythondir)/$(PLATFORM_TARGET) 2>> $(LOGFILE) 1>&2 else # On OSX @echo $(STRIP) -x $(DESTDIR)$(pythondir)/$(PLATFORM_TARGET) >> $(LOGFILE) @$(STRIP) -x $(DESTDIR)$(pythondir)/$(PLATFORM_TARGET) 2>> $(LOGFILE) 1>&2 endif uninstall: ifneq ($(PYTHON_PLATFORM),darwin) ifneq ($(PYTHON_PLATFORM),win32) @# On Linux and other places that libtool actually works $(LIBTOOL) --mode=uninstall $(RM) $(pythondir)/$(PLATFORM_TARGET) else @# On Windows $(RM) $(pythondir)/$(PLATFORM_TARGET) endif else @# On OSX $(RM) $(pythondir)/$(PLATFORM_TARGET) endif # Use the compiler-generated dependency files. @AMDEP_TRUE@-include $(DEPS) # Magic for building the tarball. Taken directly from a Makefile.in generated # by Automake 1.9. distdir: @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done visual-5.12_release/src/core/0000777000175000017500000000000011240651151013164 500000000000000visual-5.12_release/src/core/ring.cpp0000644000175000017500000001171611107053640014552 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "ring.hpp" #include "util/displaylist.hpp" #include "util/errors.hpp" #include "util/gl_enable.hpp" #include #include using boost::scoped_array; namespace cvisual { bool ring::degenerate() { return radius == 0.0; } ring::ring() : thickness(0.0), model_rings(-1) { } ring::~ring() { } void ring::set_thickness( double t) { thickness = t; } double ring::get_thickness() { return thickness; } void ring::gl_pick_render( const view& scene) { gl_render(scene); } void ring::gl_render( const view& scene) { if (degenerate()) return; // Level of detail estimation. See sphere::gl_render(). // The number of subdivisions around the hoop's radial direction. double band_coverage = (thickness ? scene.pixel_coverage( pos, thickness) : scene.pixel_coverage(pos, radius*0.1)); if (band_coverage<0) band_coverage = 1000; int bands = static_cast( sqrt(band_coverage * 4.0) ); bands = clamp( 4, bands, 40); // The number of subdivions around the hoop's tangential direction. double ring_coverage = scene.pixel_coverage( pos, radius); if (ring_coverage<0) ring_coverage = 1000; int rings = static_cast( sqrt(ring_coverage * 4.0) ); rings = clamp( 4, rings, 80); if (model_rings != rings || model_bands != bands || model_radius != radius || model_thickness != thickness) { model_rings = rings; model_bands = bands; model_radius = radius; model_thickness = thickness; create_model( rings, bands, model ); } clear_gl_error(); { gl_enable_client vertex_array( GL_VERTEX_ARRAY); gl_enable_client normal_array( GL_NORMAL_ARRAY); gl_matrix_stackguard guard; model_world_transform( scene.gcf, vector(radius,radius,radius) ).gl_mult(); color.gl_set(opacity); glVertexPointer( 3, GL_FLOAT, 0, &model.vertex_pos[0] ); glNormalPointer( GL_FLOAT, 0, &model.vertex_normal[0] ); glDrawElements( GL_TRIANGLES, model.indices.size(), GL_UNSIGNED_SHORT, &model.indices[0] ); } check_gl_error(); return; } void ring::grow_extent( extent& world) { if (degenerate()) return; // TODO: Not perfectly accurate (a couple more circles would help) vector a = axis.norm(); double t = thickness ? thickness : radius * .1; world.add_circle( pos, a, radius + t ); world.add_circle( pos + a*t, a, radius ); world.add_circle( pos - a*t, a, radius ); world.add_body(); } void ring::create_model( int rings, int bands, class model& m ) { // In Visual 3, rendered thickness was (incorrectly) double what was documented. // The documentation said that thickness was the diameter of a cross section of // a solid part of the ring, but in fact ring.thickness was the radius of the // cross section. Presumably we have to maintain the incorrect Visual 3 behavior // and change the documentation. double scaled_radius = 1.0; double scaled_thickness = 0.2; if (thickness != 0.0) scaled_thickness = 2*thickness / radius; // First generate a circle of radius thickness in the xy plane if (bands > 80) throw std::logic_error("ring::create_model: More bands than expected."); vector circle[80]; circle[0] = vector(0,scaled_thickness*0.5,0); tmatrix rotator = rotation( 2.0 * M_PI / bands, vector( 0,0,1 ), vector( 0,0,0 ) ); for (int i = 1; i < bands; i ++) circle[i] = rotator * circle[i-1]; m.vertex_pos.resize( rings * bands ); m.vertex_normal.resize( rings * bands ); fvertex* vertexes = &m.vertex_pos[0]; fvertex* normals = &m.vertex_normal[0]; // ... and then sweep it in a circle around the x axis vector radial = vector(0,1,0); int i=0; rotator = rotation( 2.0 * M_PI / rings, vector( 1,0,0 ), vector( 0,0,0 ) ); for(int r=0; r=3 && is_button_down[2]) new_buttons[0] = new_buttons[1] = true; // If there's been more than one button change, impose an order, so that update() // only sees one change at a time // We choose the order so that the right button is down as much as possible, to // avoid spurious left button activity // Not relevant if there is a real (or emulated) button 2 (e.g. Mac option key) if (!new_buttons[2] && !buttons[2] && new_buttons[0] != buttons[0] && new_buttons[1] != buttons[1]) { int b = !new_buttons[1]; new_buttons[b] = !new_buttons[b]; update( new_buttons, cursor_client_x, cursor_client_y, new_shift, can_lock_mouse ); new_buttons[b] = !new_buttons[b]; } update( new_buttons, cursor_client_x, cursor_client_y, new_shift, can_lock_mouse ); } void mouse_manager::update( bool new_buttons[], int new_px, int new_py, bool new_shift[], bool can_lock_mouse ) { // Shift states are just passed directly to mouseobject mouse.set_shift( new_shift[0] ); mouse.set_ctrl( new_shift[1] ); mouse.set_alt( new_shift[2] ); mouse.set_command( new_shift[3] ); bool was_locked = locked; locked = (can_lock_mouse && display.zoom_is_allowed() && new_buttons[0] && new_buttons[1]) || (can_lock_mouse && display.spin_is_allowed() && new_buttons[1] && !new_buttons[0]); if (locked && !was_locked) { locked_px = new_px; locked_py = new_py; } if (new_buttons[1]) // handle spin or zoom if allowed display.report_camera_motion( (new_px - px), (new_py - py), new_buttons[0] ? display_kernel::MIDDLE : display_kernel::RIGHT ); // left_semidrag means that we've moved the mouse and so can't get a left click, but we aren't // necessarily actually dragging, because the movement might have occurred with the right button down. if (left_down && !left_dragging && (new_px != px || new_py != py)) left_semidrag = true; if (!left_down) left_semidrag = false; if (!display.spin_is_allowed()) { if (right_down && !right_dragging && (new_px != px || new_py != py)) right_semidrag = true; if (!right_down) right_semidrag = false; } if (!display.zoom_is_allowed()) { if (middle_down && !middle_dragging && (new_px != px || new_py != py)) middle_semidrag = true; if (!middle_down) middle_semidrag = false; } // In reporting with press_event etc., 1=left, 2=right, 3=middle if (!new_buttons[1]) { //< Ignore changes in the left button state while the right button is down! bool b = new_buttons[0]; if (b != left_down) { if (b) { if ( !buttons[0] ) //< Releasing the other button of a chord doesn't "press" the left mouse.push_event( press_event(1, mouse) ); else b = false; } else if ( left_dragging ) { mouse.push_event( drop_event(1, mouse) ); left_dragging = false; } else if ( left_semidrag ) { mouse.push_event( release_event(1, mouse) ); } else if (left_down) { mouse.push_event( click_event(1, mouse) ); } } if ( b && left_down && (new_px != px || new_py != py) && !left_dragging ) { mouse.push_event( drag_event(1, mouse) ); left_dragging = true; } left_down = b; } if (!display.spin_is_allowed() && !new_buttons[0]) { //< Ignore changes in the left button state while the right button is down! bool b = new_buttons[1]; if (b != right_down) { if (b) { if ( !buttons[1] ) //< Releasing the other button of a chord doesn't "press" the right mouse.push_event( press_event(2, mouse) ); else b = false; } else if ( right_dragging ) { mouse.push_event( drop_event(2, mouse) ); right_dragging = false; } else if ( right_semidrag ) { mouse.push_event( release_event(2, mouse) ); } else if (right_down) { mouse.push_event( click_event(2, mouse) ); } } if ( b && right_down && (new_px != px || new_py != py) && !right_dragging ) { mouse.push_event( drag_event(2, mouse) ); right_dragging = true; } right_down = b; } if (!display.zoom_is_allowed()) { bool b = (new_buttons[0] && new_buttons[1]); if (b != middle_down) { if (b) { if ( !(buttons[0] && buttons[1]) ) mouse.push_event( press_event(3, mouse) ); else b = false; } else if ( middle_dragging ) { mouse.push_event( drop_event(3, mouse) ); middle_dragging = false; } else if ( middle_semidrag ) { mouse.push_event( release_event(3, mouse) ); } else if (middle_down) { mouse.push_event( click_event(3, mouse) ); } } if ( b && middle_down && (new_px != px || new_py != py) && !middle_dragging ) { mouse.push_event( drag_event(3, mouse) ); middle_dragging = true; } middle_down = b; } px = new_px; py = new_py; for(int b=0; b<2; b++) buttons[b] = new_buttons[b]; } void mouse_manager::report_setcursor( int new_px, int new_py ) { px = new_px; py = new_py; } } // namespace cvisual visual-5.12_release/src/core/light.cpp0000644000175000017500000000046411064627315014730 00000000000000#include "light.hpp" namespace cvisual { void light::render_lights( view& v ) { ++v.light_count[0]; vertex p = get_vertex( v.gcf ); for(int d=0; d<4; d++) v.light_pos.push_back(p[d]); for(int d=0; d<3; d++) v.light_color.push_back(color[d]); v.light_color.push_back( 1.0 ); } } // namespace cvisual visual-5.12_release/src/core/arrow.cpp0000644000175000017500000001316011216341077014745 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "arrow.hpp" #include "util/errors.hpp" #include "util/gl_enable.hpp" #include "box.hpp" #include "pyramid.hpp" #include "material.hpp" namespace cvisual { bool arrow::degenerate() { return axis.mag() == 0.0; } arrow::arrow() : fixedwidth(false), headwidth(0), headlength(0), shaftwidth(0) { } arrow::arrow( const arrow& other) : primitive(other), fixedwidth( other.fixedwidth), headwidth( other.headwidth), headlength( other.headlength), shaftwidth( other.shaftwidth) { } arrow::~arrow() { } void arrow::set_headwidth( double hw) { headwidth = hw; } double arrow::get_headwidth() { if (headwidth) return headwidth; if (shaftwidth) return 2.0*shaftwidth; return 0.2*axis.mag(); } void arrow::set_headlength( double hl) { headlength = hl; } double arrow::get_headlength() { if (headlength) return headlength; if (shaftwidth) return 3.0*shaftwidth; return 0.3*axis.mag(); } void arrow::set_shaftwidth( double sw) { shaftwidth = sw; } double arrow::get_shaftwidth() { if (shaftwidth) return shaftwidth; return 0.1*axis.mag(); } void arrow::set_fixedwidth( bool fixed) { fixedwidth = fixed; } bool arrow::is_fixedwidth() { return fixedwidth; } void arrow::set_length( double l) { axis = axis.norm() * l; } double arrow::get_length() { return axis.mag(); } vector arrow::get_center() const { return (pos + axis)/2.0; } void arrow::gl_pick_render( const view& scene) { // TODO: material related stuff in this file really needs cleaning up! boost::shared_ptr m; m.swap(mat); gl_render(scene); m.swap(mat); } void arrow::gl_render( const view& scene) { if (degenerate()) return; init_model(); color.gl_set(opacity); double hl,hw,len,sw; effective_geometry( hw, sw, len, hl, 1.0 ); int model_material_loc = mat && mat->get_shader_program() ? mat->get_shader_program()->get_uniform_location( scene, "model_material" ) : -1; // Render the shaft and the head in back to front order (the shaft is in front // of the head if axis points away from the camera) int shaft = axis.dot( scene.camera - (pos + axis * (1-hl/len)) ) < 0; for(int part=0; part<2; part++) { gl_matrix_stackguard guard; model_world_transform( scene.gcf ).gl_mult(); if (part == shaft) { glScaled( len - hl, sw, sw ); glTranslated( 0.5, 0, 0 ); if (model_material_loc >= 0) { // TODO simplify tmatrix model_mat; double s = 1.0 / std::max( len, hw ); model_mat.translate( vector((len-hl)*s*0.5,0.5,0.5) ); model_mat.scale( vector((len-hl), sw, sw)*s ); mat->get_shader_program()->set_uniform_matrix( scene, model_material_loc, model_mat ); } shaft_model.gl_render(); } else { glTranslated( len - hl, 0, 0 ); glScaled( hl, hw, hw ); if (model_material_loc >= 0) { // TODO simplify tmatrix model_mat; double s = 1.0 / std::max( len, hw ); model_mat.translate( vector((len-hl)*s,0.5,0.5) ); model_mat.scale( vector(hl, hw, hw)*s ); mat->get_shader_program()->set_uniform_matrix( scene, model_material_loc, model_mat ); } pyramid::model.gl_render(); } } } void arrow::grow_extent( extent& world) { if (degenerate()) return; double hl, hw, len, sw; effective_geometry( hw, sw, len, hl, 1.0); vector x = axis.cross(up).norm() * 0.5; vector y = axis.cross(x).norm() * 0.5; vector base = pos + axis.norm()*(len-hl); for(int i=-1; i<=+1; i+=2) for(int j=-1; j<=+1; j+=2) { world.add_point( pos + x*(i*sw) + y*(j*sw) ); world.add_point( base + x*(i*hw) + y*(j*hw) ); } world.add_point( pos + axis); world.add_body(); } void arrow::get_material_matrix(const view& v, tmatrix& out) { // This work is done in gl_render, for shaft and head separately } void arrow::init_model() { if (!shaft_model) box::init_model(shaft_model, true); if (!pyramid::model) pyramid::init_model(); } PRIMITIVE_TYPEINFO_IMPL(arrow) void arrow::effective_geometry( double& eff_headwidth, double& eff_shaftwidth, double& eff_length, double& eff_headlength, double gcf) { // First calculate the actual geometry based on the specs for headwidth, // shaftwidth, shaftlength, and fixedwidth. This geometry is calculated // in world space and multiplied static const double min_sw = 0.02; // minimum shaftwidth static const double def_sw = 0.1; // default shaftwidth static const double def_hw = 2.0; // default headwidth multiplier. (x shaftwidth) static const double def_hl = 3.0; // default headlength multiplier. (x shaftwidth) // maximum fraction of the total arrow length allocated to the head. static const double max_headlength = 0.5; eff_length = axis.mag() * gcf; if (shaftwidth) eff_shaftwidth = shaftwidth * gcf; else eff_shaftwidth = eff_length * def_sw; if (headwidth) eff_headwidth = headwidth * gcf; else eff_headwidth = eff_shaftwidth * def_hw; if (headlength) eff_headlength = headlength * gcf; else eff_headlength = eff_shaftwidth * def_hl; if (fixedwidth) { if (eff_headlength > max_headlength * eff_length) eff_headlength = max_headlength * eff_length; } else { if (eff_shaftwidth < eff_length * min_sw) { double scale = eff_length * min_sw / eff_shaftwidth; eff_shaftwidth = eff_length * min_sw; eff_headwidth *= scale; eff_headlength *= scale; } if (eff_headlength > eff_length * max_headlength) { double scale = eff_length * max_headlength / eff_headlength; eff_headlength = eff_length * max_headlength; eff_headwidth *= scale; eff_shaftwidth *= scale; } } } } // !namespace cvisual visual-5.12_release/src/core/pyramid.cpp0000644000175000017500000000461511050446342015262 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "pyramid.hpp" #include "util/errors.hpp" #include "util/gl_enable.hpp" namespace cvisual { displaylist pyramid::model; PRIMITIVE_TYPEINFO_IMPL(pyramid) void pyramid::init_model() { // Note that this model is also used by arrow! model.gl_compile_begin(); float vertices[][3] = { {0, .5, .5}, {0,-.5, .5}, {0,-.5,-.5}, {0, .5,-.5}, {1, 0, 0} }; int triangle_indices[][3] = { {3, 0, 4}, // top {1, 2, 4}, // bottom {0, 1, 4}, // front {3, 4, 2}, // back {0, 3, 2}, // left (base) 1 {0, 2, 1}, // left (base) 2 }; float normals[][3] = { {1,2,0}, {1,-2,0}, {1,0,2}, {1,0,-2}, {-1,0,0}, {-1,0,0} }; glEnable(GL_CULL_FACE); glBegin( GL_TRIANGLES); // Inside for(int f=0; f<6; f++) { glNormal3f( -normals[f][0], -normals[f][1], -normals[f][2] ); for(int v=0; v<3; v++) glVertex3fv( vertices[ triangle_indices[f][2-v] ] ); } // Outside for(int f=0; f<6; f++) { glNormal3fv( normals[f] ); for(int v=0; v<3; v++) glVertex3fv( vertices[ triangle_indices[f][v] ] ); } glEnd(); glDisable(GL_CULL_FACE); model.gl_compile_end(); check_gl_error(); } void pyramid::gl_pick_render( const view& scene) { gl_render(scene); } void pyramid::gl_render( const view& scene) { if (!model) init_model(); color.gl_set(opacity); gl_matrix_stackguard guard; apply_transform( scene ); model.gl_render(); check_gl_error(); } void pyramid::grow_extent( extent& world_extent) { tmatrix orient = model_world_transform(); vector vwidth = orient * vector( 0, 0, width * 0.5); vector vheight = orient * vector( 0, height * 0.5, 0); world_extent.add_point( pos + axis); world_extent.add_point( pos + vwidth + vheight); world_extent.add_point( pos - vwidth + vheight); world_extent.add_point( pos + vwidth - vheight); world_extent.add_point( pos - vwidth - vheight); world_extent.add_body(); } vector pyramid::get_center() const { return pos + axis * 0.33333333333333; } void pyramid::get_material_matrix( const view&, tmatrix& out ) { out.translate( vector(0,.5,.5) ); vector scale( axis.mag(), height, width ); out.scale( scale * (1.0 / std::max(scale.x, std::max(scale.y, scale.z))) ); } } // !namespace cvisual visual-5.12_release/src/core/label.cpp0000644000175000017500000001545511112332334014672 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "label.hpp" #include "util/errors.hpp" #include "util/gl_enable.hpp" #include #include #include using boost::scoped_array; namespace cvisual { label::label() : pos(0, 0, 0), space(0), xoffset(0), yoffset(0), border(5), font_description(), // equivalent to label.font="sans" font_size(-1), // equivalent to label.height=13 (see text.cpp) box_enabled(true), line_enabled(true), linecolor( color), opacity(0.66f), text_changed(true) { } label::label( const label& other) : renderable( other), pos( other.pos.x, other.pos.y, other.pos.z), space( other.space), xoffset( other.xoffset), yoffset( other.yoffset), border( other.border), font_description( other.font_description), font_size( other.font_size), box_enabled( other.box_enabled), line_enabled( other.line_enabled), linecolor( other.linecolor), opacity( other.opacity), text( other.text), text_changed( true) { } label::~label() { } void label::set_pos( const vector& n_pos) { pos = n_pos; } shared_vector& label::get_pos() { return pos; } void label::set_x( double x) { pos.set_x( x); } double label::get_x() { return pos.x; } void label::set_y( double y) { pos.set_y( y); } double label::get_y() { return pos.y; } void label::set_z( double z) { pos.set_z( z); } double label::get_z() { return pos.z; } void label::set_color( const rgb& n_color) { color = n_color; } rgb label::get_color() { return color; } void label::set_red( float r) { color.red = r; } double label::get_red() { return color.red; } void label::set_green( float g) { color.green = g; } double label::get_green() { return color.green; } void label::set_blue( float b) { color.blue = b; } double label::get_blue() { return color.blue; } double label::get_opacity() { return opacity; } void label::set_opacity( float o) { opacity = o; } void label::set_text( const std::wstring& t ) { text = t; text_changed = true; } std::wstring label::get_text() { return text; } void label::set_space( double n_space) { space = n_space; } double label::get_space() { return space; } void label::set_xoffset( double n_xoffset) { xoffset = n_xoffset; } double label::get_xoffset() { return xoffset; } void label::set_yoffset( double n_yoffset) { yoffset = n_yoffset; } double label::get_yoffset() { return yoffset; } void label::set_border( double n_border) { border = n_border; } double label::get_border() { return border; } void label::set_font_family( const std::wstring& name) { font_description = name; text_changed = true; } std::wstring label::get_font_family() { return font_description; } void label::set_font_size( double n_size) { font_size = n_size; text_changed = true; } double label::get_font_size() { return font_size; } void label::render_box( bool enable) { box_enabled = enable; } bool label::has_box() { return box_enabled; } void label::render_line( bool enable) { line_enabled = enable; } bool label::has_line() { return line_enabled; } void label::set_linecolor( const rgb& n_color) { linecolor = n_color; } rgb label::get_linecolor() { return linecolor; } void label::grow_extent( extent& e) { e.add_point( pos ); } void label::gl_render( const view& scene) { if (text_changed) { boost::shared_ptr texmap_font = font::find_font( font_description, int(font_size)); if (text.empty()) text_layout = texmap_font->lay_out( L" " ); else text_layout = texmap_font->lay_out( text); text_changed = false; } // Compute the width of the text box. vector extents = text_layout->extent( scene ); double box_width = extents.x + 2.0*border; // Compute the positions of the text in the text box, and the height of the // text box. The text positions are relative to the lower left corner of // the text box. double box_height = border*2.0 + extents.y; vector text_pos( border, box_height - border); clear_gl_error(); vector label_pos = pos.scale(scene.gcfvec); tmatrix lst = tmatrix().gl_projection_get() * tmatrix().gl_modelview_get(); { tmatrix translate; translate.w_column( label_pos); lst = lst * translate; } vector origin = (lst * vertex(vector(), 1.0)).project(); rgb stereo_linecolor = linecolor; if (scene.anaglyph) if (scene.coloranaglyph) stereo_linecolor = linecolor.desaturate(); else stereo_linecolor = linecolor.grayscale(); displaylist list; list.gl_compile_begin(); { stereo_linecolor.gl_set(1.0f); // Zero out the existing matrices, rendering will be in screen coords. gl_matrix_stackguard guard; tmatrix identity; identity.gl_load(); glMatrixMode( GL_PROJECTION); { //< Zero out the projection matrix, too gl_matrix_stackguard guard2; identity.gl_load(); glTranslated( origin.x, origin.y, origin.z); glScaled( 2.0/scene.view_width, 2.0/scene.view_height, 1.0); // At this point, all furthur translations are in direction of label // space. if (space && (xoffset || yoffset)) { // Move the origin away from the body. vector space_offset = vector(xoffset, yoffset).norm() * std::fabs(space); glTranslated( space_offset.x, space_offset.y, space_offset.z); } // Optionally draw the line, and move the origin to the bottom left // corner of the text box. if (xoffset || yoffset) { if (line_enabled) { glBegin( GL_LINES); vector().gl_render(); vector(xoffset, yoffset).gl_render(); glEnd(); } if (std::fabs(xoffset) > std::fabs(yoffset)) { glTranslated( xoffset + ((xoffset > 0) ? 0 : -box_width), yoffset - box_height*0.5, 0); } else { glTranslated( xoffset - box_width*0.5, yoffset + ((yoffset > 0) ? 0 : -box_height), 0); } } else { glTranslated( -box_width*0.5, -box_height*0.5, 0.0); } if (opacity) { // Occlude objects behind the label. rgba( 0, 0, 0, opacity).gl_set(); glBegin( GL_QUADS); vector().gl_render(); vector( box_width, 0).gl_render(); vector( box_width, box_height).gl_render(); vector( 0, box_height).gl_render(); glEnd(); } if (box_enabled) { // Draw a box around the text. stereo_linecolor.gl_set(1.0f); glBegin( GL_LINE_LOOP); vector().gl_render(); vector( box_width, 0).gl_render(); vector( box_width, box_height).gl_render(); vector( 0, box_height).gl_render(); glEnd(); } // Render the text itself. color.gl_set(1.0f); text_layout->gl_render(scene, text_pos); } glMatrixMode( GL_MODELVIEW); } // Pops the matricies back off the stack list.gl_compile_end(); check_gl_error(); scene.screen_objects.insert( std::make_pair(pos, list)); } vector label::get_center() const { return pos; } } // !namespace cvisual visual-5.12_release/src/core/renderable.cpp0000644000175000017500000000545011065525614015724 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "material.hpp" namespace cvisual { // TODO: tan_hfov_x and tan_hfov_y must be revisited in the face of // nonuniform scaling. It may be more appropriate to describe the viewing // frustum in a different way entirely. view::view( const vector n_forward, vector n_center, int n_width, int n_height, bool n_forward_changed, double n_gcf, vector n_gcfvec, bool n_gcf_changed, gl_extensions& glext) : forward( n_forward), center(n_center), view_width( n_width), view_height( n_height), forward_changed( n_forward_changed), gcf( n_gcf), gcfvec( n_gcfvec), gcf_changed( n_gcf_changed), lod_adjust(0), anaglyph(false), coloranaglyph(false), tan_hfov_x(0), tan_hfov_y(0), screen_objects( z_comparator( forward)), glext(glext), enable_shaders(true) { for(int i=0; i m ) { mat = m; } shared_ptr renderable::get_material() { return mat; } bool renderable::translucent() { return opacity != 1.0 || (mat && mat->get_translucent()); } } // !namespace cvisual visual-5.12_release/src/core/box.cpp0000644000175000017500000000455611106630322014404 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "box.hpp" #include "util/errors.hpp" #include "util/gl_enable.hpp" namespace cvisual { displaylist box::model; void box::init_model( displaylist& model, bool skip_right_face ) { // Note that this model is also used by arrow! model.gl_compile_begin(); glEnable(GL_CULL_FACE); glBegin( GL_QUADS ); const float s = 0.5; float vertices[6][4][3] = { {{ +s, +s, +s }, { +s, -s, +s }, { +s, -s, -s }, { +s, +s, -s }}, // Right face {{ -s, +s, -s }, { -s, -s, -s }, { -s, -s, +s }, { -s, +s, +s }}, // Left face {{ -s, -s, +s }, { -s, -s, -s }, { +s, -s, -s }, { +s, -s, +s }}, // Bottom face {{ -s, +s, -s }, { -s, +s, +s }, { +s, +s, +s }, { +s, +s, -s }}, // Top face {{ +s, +s, +s }, { -s, +s, +s }, { -s, -s, +s }, { +s, -s, +s }}, // Front face {{ -s, -s, -s }, { -s, +s, -s }, { +s, +s, -s }, { +s, -s, -s }} // Back face }; float normals[6][3] = { { +1, 0, 0 }, { -1, 0, 0 }, { 0, -1, 0 }, { 0, +1, 0 }, { 0, 0, +1 }, { 0, 0, -1 } }; // Draw inside (reverse winding and normals) for(int f=skip_right_face; f<6; f++) { glNormal3f( -normals[f][0], -normals[f][1], -normals[f][2] ); for(int v=0; v<4; v++) glVertex3fv( vertices[f][3-v] ); } // Draw outside for(int f=skip_right_face; f<6; f++) { glNormal3fv( normals[f] ); for(int v=0; v<4; v++) glVertex3fv( vertices[f][v] ); } glEnd(); glDisable(GL_CULL_FACE); model.gl_compile_end(); check_gl_error(); } void box::gl_pick_render( const view& scene) { gl_render(scene); } void box::gl_render( const view& scene) { if (!model) init_model(model, false); color.gl_set(opacity); gl_matrix_stackguard guard; apply_transform( scene ); model.gl_render(); check_gl_error(); } void box::grow_extent( extent& e) { tmatrix tm = model_world_transform( 1.0, vector( axis.mag(), height, width ) * 0.5 ); e.add_box( tm, vector(-1,-1,-1), vector(1,1,1) ); e.add_body(); } void box::get_material_matrix(const view&, tmatrix& out) { out.translate( vector(.5,.5,.5) ); vector scale( axis.mag(), height, width ); out.scale( scale * (1.0 / std::max(scale.x, std::max(scale.y, scale.z))) ); } PRIMITIVE_TYPEINFO_IMPL(box) } // !namespace cvisualvisual-5.12_release/src/core/primitive.cpp0000644000175000017500000000706211050576531015630 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "primitive.hpp" #include "util/errors.hpp" #include #include //#ifndef _MSC_VER // This was needed when we used GTK2 on Windows #ifndef _WIN32 #include #endif #include namespace cvisual { tmatrix primitive::model_world_transform(double world_scale, const vector& object_scale) const { // Performs scale, rotation, translation, and world scale (gcf) transforms in that order. // ret = world_scale o translation o rotation o scale // Note that with the default parameters, only the rotation transformation is returned! Typical // usage should be model_world_transform( scene.gcf, my_size ); tmatrix ret; // A unit vector along the z_axis. vector z_axis = vector(0,0,1); if (std::fabs(axis.dot(up) / std::sqrt( up.mag2() * axis.mag2())) > 0.98) { // Then axis and up are in (nearly) the same direction: therefore, // try two other possible directions for the up vector. if (std::fabs(axis.norm().dot( vector(-1,0,0))) > 0.98) z_axis = axis.cross( vector(0,0,1)).norm(); else z_axis = axis.cross( vector(-1,0,0)).norm(); } else { z_axis = axis.cross( up).norm(); } vector y_axis = z_axis.cross(axis).norm(); vector x_axis = axis.norm(); ret.x_column( x_axis ); ret.y_column( y_axis ); ret.z_column( z_axis ); ret.w_column( pos * world_scale ); ret.w_row(); ret.scale( object_scale * world_scale ); return ret; } // For oblong objects whose center is not at "pos". vector primitive::get_center() const { return pos; } primitive::primitive() : axis(1,0,0), up(0,1,0), pos(0,0,0) { } primitive::primitive( const primitive& other) : renderable( other), axis(other.axis), up(other.up), pos(other.pos) { } primitive::~primitive() { } void primitive::rotate( double angle, const vector& _axis, const vector& origin) { tmatrix R = rotation( angle, _axis, origin); vector fake_up = up; if (!axis.cross( fake_up)) { fake_up = vector( 1,0,0); if (!axis.cross( fake_up)) fake_up = vector( 0,1,0); } { pos = R * pos; axis = R.times_v(axis); up = R.times_v(fake_up); } } void primitive::set_pos( const vector& n_pos) { pos = n_pos; } shared_vector& primitive::get_pos() { return pos; } void primitive::set_x( double x) { pos.set_x( x); } double primitive::get_x() { return pos.x; } void primitive::set_y( double y) { pos.set_y( y); } double primitive::get_y() { return pos.y; } void primitive::set_z( double z) { pos.set_z( z); } double primitive::get_z() { return pos.z; } void primitive::set_axis( const vector& n_axis) { axis = n_axis; } shared_vector& primitive::get_axis() { return axis; } void primitive::set_up( const vector& n_up) { up = n_up; } shared_vector& primitive::get_up() { return up; } void primitive::set_color( const rgb& n_color) { color = n_color; } void primitive::set_red( float r) { color.red = r; } double primitive::get_red() { return color.red; } void primitive::set_green( float g) { color.green = g; } double primitive::get_green() { return color.green; } void primitive::set_blue( float b) { color.blue = b; } double primitive::get_blue() { return color.blue; } void primitive::set_opacity( float a) { opacity = a; } double primitive::get_opacity() { return opacity; } rgb primitive::get_color() { return color; } PRIMITIVE_TYPEINFO_IMPL(primitive) } // !namespace cvisual visual-5.12_release/src/core/.cvsignore0000644000175000017500000000001710154665105015105 00000000000000.sconsign *.os visual-5.12_release/src/core/axial.cpp0000644000175000017500000000123211050446342014703 00000000000000#include "axial.hpp" namespace cvisual { axial::axial() : radius(1.0) { } axial::axial( const axial& other) : primitive( other), radius( other.radius) { } axial::~axial() { } void axial::set_radius( double r) { radius = r; } double axial::get_radius() { return radius; } void axial::get_material_matrix(const view&, tmatrix& out) { out.translate( vector(.0005,.5,.5) ); vector scale( axis.mag(), radius, radius ); out.scale( scale * (.999 / std::max(scale.x, scale.y*2)) ); // Undo the rotation inside quadric::render_cylinder() and ::render_disk(): out = out * rotation( +.5*M_PI, vector(0,1,0) ); // xxx performance } } // !namespace cvisual visual-5.12_release/src/core/frame.cpp0000644000175000017500000002213711243332661014710 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "frame.hpp" #include namespace cvisual { frame::frame() : pos( 0, 0, 0), axis( 1, 0, 0), up( 0, 1, 0) // Disable frame.scale in Visual 4.0 //scale( 1.0, 1.0, 1.0) { } frame::frame( const frame& other) : renderable( other), pos(other.pos.x, other.pos.y, other.pos.z), axis(other.axis.x, other.axis.y, other.axis.z), up(other.up.x, other.up.y, other.up.z) // scale(other.scale.x, other.scale.y, other.scale.z) { } frame::~frame() { } void frame::set_pos( const vector& n_pos) { pos = n_pos; } shared_vector& frame::get_pos() { return pos; } void frame::set_x( double x) { pos.set_x( x); } double frame::get_x() { return pos.x; } void frame::set_y( double y) { pos.set_y( y); } double frame::get_y() { return pos.y; } void frame::set_z( double z) { pos.set_z( z); } double frame::get_z() { return pos.z; } void frame::set_axis( const vector& n_axis) { axis = n_axis; } shared_vector& frame::get_axis() { return axis; } void frame::set_up( const vector& n_up) { up = n_up; } shared_vector& frame::get_up() { return up; } /* void frame::set_scale( const vector& n_scale) { scale = n_scale; } shared_vector& frame::get_scale() { return scale; } */ void frame::rotate( double angle, const vector& _axis, const vector& origin) { tmatrix R = rotation( angle, _axis, origin); vector fake_up = up; if (!axis.cross( fake_up)) { fake_up = vector( 1,0,0); if (!axis.cross( fake_up)) fake_up = vector( 0,1,0); } { pos = R * pos; axis = R.times_v( axis); up = R.times_v( fake_up); } } vector frame::world_zaxis() const { vector z_axis; if (std::fabs(axis.dot(up) / std::sqrt( up.mag2() * axis.mag2())) > 0.98) { if (std::fabs(axis.norm().dot( vector(-1,0,0))) > 0.98) z_axis = axis.cross( vector(0,0,1)).norm(); else z_axis = axis.cross( vector(-1,0,0)).norm(); } else { z_axis = axis.cross( up).norm(); } return z_axis; } vector frame::frame_to_world( const vector& p) const { vector z_axis = world_zaxis(); vector y_axis = z_axis.cross(axis).norm(); vector x_axis = axis.norm(); vector inworld = pos + p.x*x_axis + p.y*y_axis + p.z*z_axis; return inworld; } vector frame::world_to_frame( const vector& p) const { vector z_axis = world_zaxis(); vector y_axis = z_axis.cross(axis).norm(); vector x_axis = axis.norm(); vector v = p - pos; vector inframe = vector(v.dot(x_axis), v.dot(y_axis), v.dot(z_axis)); return inframe; } tmatrix frame::frame_world_transform( const double gcf) const { // Performs a reorientation transform. // ret = translation o reorientation tmatrix ret; vector z_axis = world_zaxis(); vector y_axis = z_axis.cross(axis).norm(); vector x_axis = axis.norm(); ret.x_column( x_axis); ret.y_column( y_axis); ret.z_column( z_axis); ret.w_column( pos * gcf); ret.w_row(); return ret; } tmatrix frame::world_frame_transform() const { // Performs a reorientation transform. // ret = translation o reorientation // ret = ireorientation o itranslation. // Robert Xiao pointed out that this was incorrect, and he proposed // replacing it with inverse(ret, frame_world_transform(1.0)). // However, comparison with Visual 3 showed that there were // simply minor errors to be fixed. tmatrix ret; vector z_axis = world_zaxis(); vector y_axis = z_axis.cross(axis).norm(); vector x_axis = axis.norm(); ret(0,0) = x_axis.x; ret(0,1) = x_axis.y; ret(0,2) = x_axis.z; ret(0,3) = -(pos * x_axis).sum(); ret(1,0) = y_axis.x; ret(1,1) = y_axis.y; ret(1,2) = y_axis.z; ret(1,3) = -(pos * y_axis).sum(); ret(2,0) = z_axis.x; ret(2,1) = z_axis.y; ret(2,2) = z_axis.z; ret(2,3) = -(pos * z_axis).sum(); ret.w_row(); return ret; } void frame::add_renderable( shared_ptr obj) { // Driven from visual/primitives.py set_visible if (!obj->translucent()) children.push_back( obj); else trans_children.push_back( obj); } void frame::remove_renderable( shared_ptr obj) { // Driven from visual/primitives.py set_visible if (!obj->translucent()) { std::remove( children.begin(), children.end(), obj); children.pop_back(); } else { std::remove( trans_children.begin(), trans_children.end(), obj); trans_children.pop_back(); } } std::vector > frame::get_objects() { std::vector > ret; get_children(ret); return ret; } shared_ptr frame::lookup_name( const unsigned int* name_top, const unsigned int* name_end) { assert( name_top < name_end); assert( *name_top < children.size() + trans_children.size()); using boost::dynamic_pointer_cast; shared_ptr ret; unsigned int size = 0; const_child_iterator i( children.begin()); const_child_iterator i_end( children.end()); while (i != i_end) { if (*name_top == size) { ret = *i.base(); break; } size++; ++i; } if (!ret) ret = trans_children[*(name_top) - size]; if (name_end - name_top > 1) { frame* ref_frame = dynamic_cast(ret.get()); assert( ref_frame != NULL); return ref_frame->lookup_name(name_top + 1, name_end); } else return ret; } vector frame::get_center() const { return pos; } void frame::gl_render( const view& v) { view local(v); local.apply_frame_transform(world_frame_transform()); tmatrix fwt = frame_world_transform(v.gcf); { gl_matrix_stackguard guard( fwt); child_iterator i(children.begin()); child_iterator i_end(children.end()); while (i != i_end) { if (i->translucent()) { // See display_kernel::draw(). trans_children.push_back( *i.base()); i = children.erase(i.base()); continue; } i->outer_render(local); i++; } // Perform a depth sort of the transparent children from forward to backward. if (!trans_children.empty()) { opacity = 0.5; //< TODO: BAD HACK } if (trans_children.size() > 1) std::stable_sort( trans_children.begin(), trans_children.end(), z_comparator( (pos*v.gcf - v.camera).norm())); for (trans_child_iterator i = trans_children.begin(); i != trans_child_iterator(trans_children.end()); ++i) { i->outer_render(local); } } typedef std::multimap::iterator screen_iterator; screen_iterator i( local.screen_objects.begin()); screen_iterator i_end( local.screen_objects.end()); // v.screen_objects.clear(); while (i != i_end) { v.screen_objects.insert( std::make_pair( fwt*i->first, i->second)); ++i; } } void frame::gl_pick_render( const view& scene) { // TODO: This needs to construct a valid local view! // Push name glPushName(0); { gl_matrix_stackguard guard( frame_world_transform(scene.gcf)); //gl_matrix_stackguard guard( frame_world_transform(1.0)); child_iterator i( children.begin()); child_iterator i_end( children.end()); // The unique integer to pass to OpenGL. unsigned int name = 0; while (i != i_end) { glLoadName(name); i->gl_pick_render( scene); ++i; ++name; } trans_child_iterator j( trans_children.begin()); trans_child_iterator j_end( trans_children.end()); while (j != j_end) { glLoadName(name); j->gl_pick_render(scene); ++j; ++name; } } // Pop name glPopName(); } void frame::grow_extent( extent& world) { extent local( world, frame_world_transform(1.0) ); child_iterator i( children.begin()); child_iterator i_end( children.end()); for (; i != i_end; ++i) { i->grow_extent( local); local.add_body(); } trans_child_iterator j( trans_children.begin()); trans_child_iterator j_end( trans_children.end()); for ( ; j != j_end; ++j) { j->grow_extent( local); local.add_body(); } } void frame::render_lights( view& world ) { // TODO: this is expensive, especially if there are no lights at all in the frame! view local( world ); local.apply_frame_transform(world_frame_transform()); child_iterator i( children.begin()); child_iterator i_end( children.end()); for (; i != i_end; ++i) i->render_lights( local ); trans_child_iterator j( trans_children.begin()); trans_child_iterator j_end( trans_children.end()); for ( ; j != j_end; ++j) j->render_lights( local ); // Transform lights back into scene if ( world.light_count[0] != local.light_count[0] ) { tmatrix fwt = frame_world_transform(world.gcf); world.light_pos.resize( local.light_pos.size() ); world.light_color.resize( local.light_color.size() ); for(int l = world.light_count[0]; l < local.light_count[0]; l++) { int li = l*4; vertex v( local.light_pos[li], local.light_pos[li+1], local.light_pos[li+2], local.light_pos[li+3] ); v = fwt * v; for(int d=0; d<4; d++) { world.light_pos[li+d] = v[d]; world.light_color[li+d] = local.light_color[li+d]; } } world.light_count[0] = local.light_count[0]; } } void frame::get_children( std::vector< boost::shared_ptr >& all ) { all.insert( all.end(), children.begin(), children.end() ); all.insert( all.end(), trans_children.begin(), trans_children.end() ); } void frame::outer_render(const cvisual::view& v) { gl_render(v); } } // !namespace cvisual visual-5.12_release/src/core/cylinder.cpp0000644000175000017500000000653211107053640015424 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "cylinder.hpp" #include "util/errors.hpp" #include "util/displaylist.hpp" #include "util/quadric.hpp" #include "util/gl_enable.hpp" namespace cvisual { bool cylinder::degenerate() { return !visible || radius == 0.0 || axis.mag() == 0.0; } // TODO: This model currently uses three-deep glPushMatrix() to run. It should // be reduced. static void render_cylinder_model( size_t n_sides, size_t n_stacks = 1) { quadric q; q.render_cylinder( 1.0, 1.0, n_sides, n_stacks); q.render_disk( 1.0, n_sides, 1, -1); // left end of cylinder gl_matrix_stackguard guard; glTranslatef( 1.0f, 0.0f, 0.0f); q.render_disk( 1.0, n_sides, 1, 1); // right end of cylinder } static displaylist cylinder_simple_model[6]; cylinder::cylinder() { } cylinder::cylinder( const cylinder& other) : axial( other) { } cylinder::~cylinder() { } void cylinder::init_model() { if (!cylinder_simple_model[0]) { clear_gl_error(); // The number of faces corrisponding to each level of detail. size_t n_faces[] = { 8, 16, 32, 64, 96, 188 }; size_t n_stacks[] = {1, 1, 3, 6, 10, 20 }; for (size_t i = 0; i < 6; ++i) { cylinder_simple_model[i].gl_compile_begin(); render_cylinder_model( n_faces[i], n_stacks[i]); cylinder_simple_model[i].gl_compile_end(); } check_gl_error(); } } void cylinder::set_length( double l) { axis = axis.norm() * l; } double cylinder::get_length() { return axis.mag(); } void cylinder::gl_pick_render( const view& scene) { if (degenerate()) return; init_model(); size_t lod = 2; clear_gl_error(); gl_matrix_stackguard guard; const double length = axis.mag(); model_world_transform( scene.gcf, vector( length, radius, radius ) ).gl_mult(); cylinder_simple_model[lod].gl_render(); check_gl_error(); } void cylinder::gl_render( const view& scene) { if (degenerate()) return; init_model(); clear_gl_error(); // See sphere::gl_render() for a description of the level of detail calc. double coverage = scene.pixel_coverage( pos, radius); int lod = 0; if (coverage < 0) lod = 5; else if (coverage < 10) lod = 0; else if (coverage < 25) lod = 1; else if (coverage < 50) lod = 2; else if (coverage < 196) lod = 3; else if (coverage < 400) lod = 4; else lod = 5; lod += scene.lod_adjust; if (lod < 0) lod = 0; else if (lod > 5) lod = 5; gl_matrix_stackguard guard; const double length = axis.mag(); model_world_transform( scene.gcf, vector( length, radius, radius ) ).gl_mult(); if (translucent()) { gl_enable cull_face( GL_CULL_FACE); color.gl_set(opacity); // Render the back half. glCullFace( GL_FRONT); cylinder_simple_model[lod].gl_render(); // Render the front half. glCullFace( GL_BACK); cylinder_simple_model[lod].gl_render(); } else { color.gl_set(opacity); cylinder_simple_model[lod].gl_render(); } // Cleanup. check_gl_error(); } void cylinder::grow_extent( extent& e) { if (degenerate()) return; vector a = axis.norm(); e.add_circle(pos, a, radius); e.add_circle(pos+axis, a, radius); e.add_body(); } vector cylinder::get_center() const { return pos + axis*0.5; } PRIMITIVE_TYPEINFO_IMPL(cylinder) } // !namespace cvisual visual-5.12_release/src/core/material.cpp0000644000175000017500000000376011104347575015423 00000000000000#include "material.hpp" namespace cvisual { material::material() : translucent(false) {} void material::set_textures( std::vector< boost::shared_ptr< texture > > tex ) { textures = tex; } std::vector< boost::shared_ptr< texture > > material::get_textures() { return textures; } void material::set_shader( const std::string& source ) { if (source.size()) shader.reset( new shader_program( source ) ); else shader.reset( NULL ); } std::string material::get_shader() { if (shader) return shader->get_source(); else return std::string(); } bool material::get_translucent() { return translucent; } void material::set_translucent( bool t ) { translucent = t; } apply_material::apply_material( const view& v, material* m, tmatrix& model_material ) : v(v), sp( v, m ? m->shader.get() : NULL ) { if (!m || !sp.ok()) return; char texa[] = "tex0"; for(size_t t=0; ttextures.size(); t++) { if (t && v.glext.ARB_multitexture) v.glext.glActiveTexture(GL_TEXTURE0 + t); m->textures[t]->gl_activate(v); if (m->shader && v.glext.ARB_shader_objects) { texa[3] = '0'+t; v.glext.glUniform1iARB( m->shader->get_uniform_location( v, texa ), t ); } if (!v.glext.ARB_multitexture) break; } // For compatibility, set the texture unit back if (m->textures.size() > 1 && v.glext.ARB_multitexture) v.glext.glActiveTexture(GL_TEXTURE0); int loc; if ( (loc = m->shader->get_uniform_location( v, "model_material" )) >= 0 ) { m->shader->set_uniform_matrix( v, loc, model_material ); } if ( (loc = m->shader->get_uniform_location( v, "light_count" )) >= 0 ) v.glext.glUniform1iARB( loc, v.light_count[0] ); if ( (loc = m->shader->get_uniform_location( v, "light_pos" )) >= 0 && v.light_count[0]) v.glext.glUniform4fvARB( loc, v.light_count[0], &v.light_pos[0] ); if ( (loc = m->shader->get_uniform_location( v, "light_color" )) >= 0 && v.light_count[0] ) v.glext.glUniform4fvARB( loc, v.light_count[0], &v.light_color[0] ); } apply_material::~apply_material() { } } // namespace cvisual visual-5.12_release/src/core/cone.cpp0000644000175000017500000001065611107053640014541 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "cone.hpp" #include "util/errors.hpp" #include "util/displaylist.hpp" #include "util/quadric.hpp" #include "util/gl_enable.hpp" #include #if 0 #include namespace cvisual { using boost::scoped_array; } #endif namespace cvisual { bool cone::degenerate() { return !visible || radius == 0.0 || axis.mag() == 0.0; } static void render_cone_model( size_t n_sides, size_t n_stacks = 1) { #if 0 // I've swapped out this algorithm for the GLU version, but I'm keeping it // around in case I need it for something else later. -JDB // A rotation matrix to generate the edge vertexes and normals. tmatrix rotator = rotation( -2 * M_PI / n_sides, vector( 1, 0, 0)); // A buffer to hold the last calculated ring. scoped_array vertexes( new vector[n_sides+1]); // Another buffer to hold the normal vectors (it is only initialized once, // and not overwritten later). scoped_array normals( new vector[n_sides+1]); // Render the base and calculate the normals and the first ring of vertexes. vertexes[0] = vector(0, 1, 0); normals[0] = vector(1,1,0).norm(); glBegin( GL_TRIANGLE_FAN); vector(-1, 0, 0).gl_normal(); vector( 0, 0, 0).gl_render(); for (size_t i = 0; i < n_sides; ++i) { normals[i+1] = rotator * normals[i]; vertexes[i+1] = rotator * vertexes[i]; vertexes[i].gl_render(); } vertexes[n_sides].gl_render(); glEnd(); // Render the body of the cone. double steps[] = { 0.3, 0.25, 0.2, 0.15, 0.1 }; for (size_t i = 0; i < 5; ++i) { glBegin( GL_TRIANGLE_STRIP); normals[0].gl_normal(); vertexes[0].gl_render(); vertexes[0] = vertexes[0] + vector(steps[i], -steps[i]); vertexes[0].gl_render(); for (size_t i = 1; i < n_sides+1; ++i) { normals[i].gl_normal(); vertexes[i].gl_render(); vertexes[i] = rotator * vertexes[i-1]; vertexes[i].gl_render(); } glEnd(); } #else quadric q; q.render_cylinder( 1.0, 0.0, 1.0, n_sides, n_stacks); q.render_disk( 1.0, n_sides, n_stacks * 2, -1); #endif } static displaylist cone_simple_model[6]; cone::cone() { } void cone::set_length( double l) { axis = axis.norm() * l; } double cone::get_length() { return axis.mag(); } void cone::init_model() { if (!cone_simple_model[0]) { clear_gl_error(); // The number of faces corrisponding to each level of detail. size_t n_faces[] = { 8, 16, 32, 46, 68, 90 }; size_t n_stacks[] = { 1, 2, 4, 7, 10, 14 }; for (size_t i = 0; i < 6; ++i) { cone_simple_model[i].gl_compile_begin(); render_cone_model( n_faces[i], n_stacks[i]); cone_simple_model[i].gl_compile_end(); } check_gl_error(); } } void cone::gl_pick_render( const view& scene) { if (degenerate()) return; init_model(); size_t lod = 2; clear_gl_error(); gl_matrix_stackguard guard; const double length = axis.mag(); model_world_transform( scene.gcf, vector( length, radius, radius ) ).gl_mult(); cone_simple_model[lod].gl_render(); check_gl_error(); } void cone::gl_render( const view& scene) { if (degenerate()) return; init_model(); clear_gl_error(); // See sphere::gl_render() for a description of the level of detail calc. double coverage = scene.pixel_coverage( pos, radius); int lod = 0; if (coverage < 0) lod = 5; else if (coverage < 10) lod = 0; else if (coverage < 30) lod = 1; else if (coverage < 90) lod = 2; else if (coverage < 250) lod = 3; else if (coverage < 450) lod = 4; else lod = 5; lod += scene.lod_adjust; if (lod < 0) lod = 0; else if (lod > 5) lod = 5; gl_matrix_stackguard guard; const double length = axis.mag(); model_world_transform( scene.gcf, vector( length, radius, radius ) ).gl_mult(); color.gl_set(opacity); if (translucent()) { gl_enable cull_face( GL_CULL_FACE); // Render the back half. glCullFace( GL_FRONT); cone_simple_model[lod].gl_render(); // Render the front half. glCullFace( GL_BACK); cone_simple_model[lod].gl_render(); } else { cone_simple_model[lod].gl_render(); } check_gl_error(); } void cone::grow_extent( extent& e) { if (degenerate()) return; e.add_circle( pos, axis.norm(), radius ); e.add_point( pos + axis); e.add_body(); } vector cone::get_center() const { return pos + axis/2.0; } PRIMITIVE_TYPEINFO_IMPL(cone) } // !namespace cvisual visual-5.12_release/src/core/util/0000777000175000017500000000000011240651151014141 500000000000000visual-5.12_release/src/core/util/displaylist.cpp0000644000175000017500000000252110776021527017135 00000000000000// Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/displaylist.hpp" #include "util/gl_free.hpp" #include "util/errors.hpp" #include "wrap_gl.hpp" #include #include #include using boost::lexical_cast; namespace cvisual { class displaylist_impl : boost::noncopyable { private: unsigned int handle; bool compiled; static void gl_free(unsigned int handle) { glDeleteLists( handle, 1 ); } public: displaylist_impl() : compiled(false) { handle = glGenLists(1); on_gl_free.connect( boost::bind(&displaylist_impl::gl_free, handle) ); glNewList( handle, GL_COMPILE ); } ~displaylist_impl() { compile_end(); on_gl_free.free( boost::bind(&displaylist_impl::gl_free, handle) ); } void compile_end() { if (!compiled) { glEndList(); compiled = true; } } void call() { glCallList( handle ); } operator bool() { return handle && compiled; } }; void displaylist::gl_compile_begin() { impl.reset( new displaylist_impl ); } void displaylist::gl_compile_end() { impl->compile_end(); } void displaylist::gl_render() const { impl->call(); } displaylist::operator bool() const { return impl && *impl; } } // !namespace cvisual visual-5.12_release/src/core/util/.cvsignore0000644000175000017500000000001710154665173016067 00000000000000*.os .sconsign visual-5.12_release/src/core/util/icososphere.cpp0000644000175000017500000001142610745516744017131 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/icososphere.hpp" #include "wrap_gl.hpp" #include "util/gl_enable.hpp" #include // sphmodel.h - Deep magic to generate sphere models // I generate spheres by subdividing an icosahedron, a Platonic // solid with 12 vertices and 20 sides, each an equilateral // triangle. Each triangle is subdivided into four, yielding // a figure with 80 sides, 320 sides, and so on. The complexity // is due to the fact that an 80-face "sphere" should have 42 // vertices, but a naiive algorithm will generate many more // (multiple vertices at the same spot). I avoid this with lots // of unmaintainable pointer goop. If you have to modify this // file significantly, just start over. I warned you! // --David Scherer #include #include namespace cvisual { namespace /* unnamed */ { const float SX = .525731112119133606F; const float SZ = .850650808352039932F; /* icosahedron model copied from the OpenGL programming guide */ const float vdata[12][3] = { {-SX, 0.0, SZ}, {SX, 0.0, SZ}, {-SX, 0.0,-SZ}, {SX, 0.0, -SZ}, {0.0, SZ, SX}, {0.0, SZ, -SX}, {0.0, -SZ, SX}, {0.0, -SZ, -SX}, {SZ, SX, 0.0}, {-SZ, SX, 0.0}, {SZ, -SX, 0.0}, {-SZ, -SX, 0.0} }; const int tindices[20][3] = { {0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1}, {8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3}, {7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6}, {6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} }; const int edges[30][2] = { /* 0 */ {0,1}, {0,4}, {0,6}, {0,9}, {0,11}, /* 5 */ {1,4}, {1,6}, {1,8}, {1,10}, /* 9 */ {2,3}, {2,5}, {2,7}, {2,9}, {2,11}, /* 14 */ {3,5}, {3,7}, {3,8}, {3,10}, /* 18 */ {4,5}, {4,8}, {4,9}, /* 21 */ {5,8}, {5,9}, /* 23 */ {6,7}, {6,10}, {6,11}, /* 26 */ {7,10}, {7,11}, /* 28 */ {8,10}, /* 29 */ {9,11} }; inline void normalize(float v[3]) { float n = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; float m = 1.0f / std::sqrt( n ); v[0] *= m; v[1] *= m; v[2] *= m; } inline float* avgptr( float* a, float* b) { return (float*)( long(a) + ((long(b)-long(a))>>1) ); } } // !namespace anonymous icososphere::icososphere( int depth) { int span = (1<> 10) << " Kbytes of geometry memory\n"; std::memset(verts.get(), 0, sizeof(float)*3*vertices); std::memcpy(verts.get(), vdata, sizeof(vdata)); for(int t=0; t<20; t++) { float *S[3], *E[3]; for(int e=0; e<3; e++) { int which; for(which = 0; which < 30; which++) { int f = (e+1)%3; if (edges[which][0] == tindices[t][e] && edges[which][1] == tindices[t][f]) { S[e] = verts.get() + 3*( 12 + which * (span-1) - 1); E[e] = S[e] + span*3; break; } else if (edges[which][1] == tindices[t][e] && edges[which][0] == tindices[t][f]) { E[e] = verts.get() + 3*( 12 + which * (span-1) - 1); S[e] = E[e] + span*3; break; } } } subdivide( span, verts.get()+3*tindices[t][0], verts.get()+3*tindices[t][1], verts.get()+3*tindices[t][2], S[0],S[1],S[2], E[2],E[0],E[1]); } } void icososphere::subdivide( int span, float* v1, float* v2, float *v3 , float* s1, float* s2, float* s3 , float* e1, float* e2, float* e3 ) { if (span > 1) { int span2 = span>>1; float *v12 = avgptr(s1,e2); float *v23 = avgptr(s2,e3); float *v31 = avgptr(s3,e1); float *s12 = newe(span2); float *e31 = s12 + span2*3; float *s23 = newe(span2); float *e12 = s23 + span2*3; float *s31 = newe(span2); float *e23 = s31 + span2*3; for(int i=0;i<3;i++) { v12[i] = v1[i] + v2[i]; v23[i] = v2[i] + v3[i]; v31[i] = v3[i] + v1[i]; } normalize(v12); normalize(v23); normalize(v31); subdivide( span2, v1, v12, v31 , s1, s12, v31 , e1, v12, e31); subdivide( span2, v2, v23, v12 , s2, s23, v12 , e2, v23, e12 ); subdivide( span2, v3, v31, v23 , s3, s31, v23 , e3, v31, e23 ); subdivide( span2, v12, v23, v31 , e12, e23, e31 , s12, s23, s31 ); } else { indices[ni++] = (v1-verts.get())/3; indices[ni++] = (v2-verts.get())/3; indices[ni++] = (v3-verts.get())/3; } } void icososphere::gl_render() { gl_enable_client vertexes( GL_VERTEX_ARRAY); gl_enable_client normals( GL_NORMAL_ARRAY); glVertexPointer( 3, GL_FLOAT, 3*sizeof(float), verts.get()); glNormalPointer( GL_FLOAT, 3*sizeof(float), verts.get()); glDrawElements( GL_TRIANGLES, ni, GL_UNSIGNED_INT, indices.get()); } } // !namespace cvisual visual-5.12_release/src/core/util/gl_extensions.cpp0000644000175000017500000000320111064022025017432 00000000000000#include "util/gl_extensions.hpp" #include "display_kernel.hpp" namespace cvisual { template void getPFN( PFN& func, display_kernel& d, const char* name ) { func = reinterpret_cast( d.getProcAddress( name ) ); if (!func) throw std::runtime_error( ("Unable to get extension function: " + (std::string)name + " even though the extension is advertised.").c_str() ); } gl_extensions::gl_extensions() { memset( this, 0, sizeof(this) ); } void gl_extensions::init( display_kernel& d ) { #define F( name ) getPFN( name, d, #name ) //printf("t: %p\n", &glBegin); //printf("%p\n", d.getProcAddress("glBegin")); if ( ARB_shader_objects = d.hasExtension( "GL_ARB_shader_objects" ) ) { F( glCreateProgramObjectARB ); F( glLinkProgramARB ); F( glUseProgramObjectARB ); F( glCreateShaderObjectARB ); F( glShaderSourceARB ); F( glCompileShaderARB ); F( glAttachObjectARB ); F( glDeleteObjectARB ); F( glGetHandleARB ); F( glUniform1iARB ); F( glUniformMatrix4fvARB ); F( glUniform4fvARB ); F( glGetUniformLocationARB ); F( glGetObjectParameterivARB ); F( glGetInfoLogARB ); } if ( EXT_texture3D = d.hasExtension( "GL_EXT_texture3D" ) ) { F( glTexImage3D ); F( glTexSubImage3D ); } else { #ifdef __APPLE__ // Supported natively but NOT as an extension EXT_texture3D = true; glTexImage3D = ::glTexImage3D; glTexSubImage3D = ::glTexSubImage3D; #endif } if ( ARB_multitexture = d.hasExtension( "GL_ARB_multitexture" ) ) { F( glActiveTexture ); } if ( ARB_point_parameters = d.hasExtension( "GL_ARB_point_parameters" ) ) { F( glPointParameterfvARB ); } } } // namespace cvisual visual-5.12_release/src/core/util/tmatrix.cpp0000644000175000017500000002607011064627315016267 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/tmatrix.hpp" #include #include namespace cvisual { void frustum( tmatrix& T, tmatrix& I, double l, double r, double b, double t, double n, double f ) throw() { T.x_column(2*n/(r-l),0,0); T.y_column(0,2*n/(t-b),0); T.z_column((r+l)/(r-l),(t+b)/(t-b),(f+n)/(n-f)); T.w_column(0,0,2*f*n/(n-f)); T.w_row(0,0,-1,0); I.x_column((r-l)/(2*n), 0, 0); I.y_column(0,(t-b)/(2*n),0); I.z_column(0,0,0); I.w_column((r+l)/(2*n),(t+b)/(2*n),-1); I.w_row(0,0,(n-f)/(2*f*n),(f+n)/(2*f*n)); } // A fully unrolled 4x4 matrix inverse. This algorithm was generated with GiNaC // It is 30-60% faster than a loop based implementation (specifically, the one // in SGI's libGLU), but only when run with full optimization. // (GCC 3.3, 800 MHz Crusoe processor) // Unoptimized: 14479 bytes, 25 usec // Optimized: 1843 bytes, 4 usec void inverse( tmatrix& dest, const tmatrix& src) { // Pull out this common subexpression for GCC's aid. This improves // performance dramaticly. double common = 1.0/(src(0,2)*src(3,0)*src(2,3)*src(1,1)-src(0,2)*src(3,0) *src(1,3)*src(2,1)+src(0,2)*src(1,0)*src(3,3)*src(2,1)+src(0,3)*src(3,1) *src(2,2)*src(1,0)+src(0,3)*src(1,1)*src(3,2)*src(2,0)+src(0,0)*src(2,2) *src(1,1)*src(3,3)-src(1,3)*src(0,1)*src(3,2)*src(2,0)+src(0,3)*src(3,0) *src(1,2)*src(2,1)+src(0,1)*src(2,3)*src(1,0)*src(3,2)-src(1,2)*src(0,0) *src(3,3)*src(2,1)-src(0,3)*src(3,0)*src(2,2)*src(1,1)-src(3,0)*src(1,2) *src(0,1)*src(2,3)-src(0,2)*src(3,1)*src(2,3)*src(1,0)-src(3,1)*src(1,3) *src(0,0)*src(2,2)-src(0,3)*src(3,1)*src(1,2)*src(2,0)-src(0,2)*src(1,1) *src(3,3)*src(2,0)-src(0,3)*src(1,0)*src(3,2)*src(2,1)+src(0,2)*src(3,1) *src(1,3)*src(2,0)+src(3,1)*src(1,2)*src(0,0)*src(2,3)-src(0,0)*src(2,3) *src(1,1)*src(3,2)+src(1,2)*src(0,1)*src(3,3)*src(2,0)+src(3,0)*src(1,3) *src(0,1)*src(2,2)-src(0,1)*src(2,2)*src(1,0)*src(3,3)+src(1,3)*src(0,0) *src(3,2)*src(2,1)); dest(0,0) = common*(-src(1,2)*(src(3,3)*src(2,1)-src(3,1)*src(2,3))-src(2,3) *src(1,1)*src(3,2)+src(1,3)*src(3,2)*src(2,1)-src(2,2)*(src(3,1) *src(1,3)-src(1,1)*src(3,3))); dest(0,1) = common*(src(0,2)*(src(3,3)*src(2,1)-src(3,1)*src(2,3))+src(0,3) *(src(3,1)*src(2,2)-src(3,2)*src(2,1))+(src(2,3)*src(3,2)-src(2,2) *src(3,3))*src(0,1)); dest(0,2) = common*(src(0,3)*(src(1,1)*src(3,2)-src(3,1)*src(1,2))+src(1,2) *src(0,1)*src(3,3)-src(1,3)*src(0,1)*src(3,2)+src(0,2)*(src(3,1) *src(1,3)-src(1,1)*src(3,3))); dest(0,3) = common*(-src(1,2)*src(0,1)*src(2,3)-(src(0,2)*src(2,1)-src(0,1) *src(2,2))*src(1,3)-src(0,3)*(src(2,2)*src(1,1)-src(1,2)*src(2,1)) +src(0,2)*src(2,3)*src(1,1)); dest(1,0) = common*(-src(1,3)*src(3,2)*src(2,0)+src(1,2)*(-src(3,0)*src(2,3) +src(3,3)*src(2,0))+src(2,3)*src(1,0)*src(3,2)+(src(3,0)*src(1,3) -src(1,0)*src(3,3))*src(2,2)); dest(1,1) = common*(-src(0,2)*(-src(3,0)*src(2,3)+src(3,3)*src(2,0)) -(src(2,3)*src(3,2)-src(2,2)*src(3,3))*src(0,0)-src(0,3)*(-src(3,2) *src(2,0)+src(3,0)*src(2,2))); dest(1,2) = common*(-src(0,3)*(src(1,0)*src(3,2)-src(3,0)*src(1,2))+src(1,3) *src(0,0)*src(3,2)-src(0,2)*(src(3,0)*src(1,3)-src(1,0)*src(3,3)) -src(1,2)*src(0,0)*src(3,3)); dest(1,3) = common*(-src(1,3)*src(0,0)*src(2,2)+src(1,2)*src(0,0)*src(2,3) +(src(2,2)*src(1,0)-src(1,2)*src(2,0))*src(0,3)+src(0,2)*(src(1,3) *src(2,0)-src(2,3)*src(1,0))); dest(2,0) = common*((src(1,0)*src(2,1)-src(1,1)*src(2,0))*src(3,3)+src(3,0) *(src(2,3)*src(1,1)-src(1,3)*src(2,1))+src(3,1)*(src(1,3)*src(2,0) -src(2,3)*src(1,0))); dest(2,1) = common*(src(3,1)*src(0,0)*src(2,3)-src(0,0)*src(3,3)*src(2,1) -src(0,3)*src(3,1)*src(2,0)-src(3,0)*src(0,1)*src(2,3)+src(0,3)*src(3,0) *src(2,1)+src(0,1)*src(3,3)*src(2,0)); dest(2,2) = common*(-src(0,3)*src(3,0)*src(1,1)-src(0,1)*src(1,0)*src(3,3) +src(3,0)*src(1,3)*src(0,1)-src(3,1)*src(1,3)*src(0,0)+src(0,3)*src(3,1) *src(1,0)+src(0,0)*src(1,1)*src(3,3)); dest(2,3) = common*(src(0,1)*src(2,3)*src(1,0)+src(0,3)*src(1,1)*src(2,0) -src(0,3)*src(1,0)*src(2,1)+src(1,3)*src(0,0)*src(2,1)-src(0,0)*src(2,3) *src(1,1)-src(1,3)*src(0,1)*src(2,0)); dest(3,0) = common*(src(1,1)*src(3,2)*src(2,0)+src(3,1)*src(2,2)*src(1,0) +src(3,0)*src(1,2)*src(2,1)-src(3,1)*src(1,2)*src(2,0)-src(3,0)*src(2,2) *src(1,1)-src(1,0)*src(3,2)*src(2,1)); dest(3,1) = common*(src(3,0)*src(0,1)*src(2,2)-src(0,1)*src(3,2)*src(2,0) -src(0,2)*src(3,0)*src(2,1)+src(0,0)*src(3,2)*src(2,1)-src(3,1)*src(0,0) *src(2,2)+src(0,2)*src(3,1)*src(2,0)); dest(3,2) = common*(-src(0,0)*src(1,1)*src(3,2)-src(3,0)*src(1,2)*src(0,1) -src(0,2)*src(3,1)*src(1,0)+src(3,1)*src(1,2)*src(0,0)+src(0,2)*src(3,0) *src(1,1)+src(0,1)*src(1,0)*src(3,2)); dest(3,3) = common*(src(0,0)*src(2,2)*src(1,1)-src(0,2)*src(1,1)*src(2,0) +src(1,2)*src(0,1)*src(2,0)+src(0,2)*src(1,0)*src(2,1)-src(1,2)*src(0,0) *src(2,1)-src(0,1)*src(2,2)*src(1,0)); return; } const tmatrix& tmatrix::identity() throw() { static const tmatrix t = tmatrix().ident(); return t; } tmatrix rotation( double angle, const vector& axis) { double c = std::cos(angle); double s = std::sin(angle); double ic = 1.0-c; double icxx = ic * axis.x * axis.x; double icxy = ic * axis.x * axis.y; double icxz = ic * axis.x * axis.z; double icyy = ic * axis.y * axis.y; double icyz = ic * axis.y * axis.z; double iczz = ic * axis.z * axis.z; tmatrix ret; ret.x_column( icxx + c, icxy + axis.z*s, icxz - axis.y*s ); ret.y_column( icxy - axis.z*s, icyy + c , icyz + axis.x*s ); ret.z_column( icxz + axis.y*s, icyz - axis.x*s, iczz + c ); ret.w_column(); ret.w_row(); return ret; } tmatrix rotation( double angle, const vector& axis, const vector& origin) { tmatrix ret = rotation(angle, axis.norm()); ret.w_column( origin - ret * origin); return ret; } #if 0 const tmatrix& tmatrix::operator*=( const tmatrix& other) { for (size_t row = 0; row < 4; ++row) { M[0][row] = } return *this; } #endif tmatrix tmatrix::operator*( const tmatrix& o) const { tmatrix ret; for (size_t col = 0; col < 4; ++col) { ret.M[col][0] = M[0][0]*o.M[col][0] + M[1][0]*o.M[col][1] + M[2][0]*o.M[col][2] + M[3][0]*o.M[col][3]; ret.M[col][1] = M[0][1]*o.M[col][0] + M[1][1]*o.M[col][1] + M[2][1]*o.M[col][2] + M[3][1]*o.M[col][3]; ret.M[col][2] = M[0][2]*o.M[col][0] + M[1][2]*o.M[col][1] + M[2][2]*o.M[col][2] + M[3][2]*o.M[col][3]; ret.M[col][3] = M[0][3]*o.M[col][0] + M[1][3]*o.M[col][1] + M[2][3]*o.M[col][2] + M[3][3]*o.M[col][3]; } return ret; } #if 0 // TODO: Reverse address me void tmatrix::invert_ortho(const tmatrix& A) throw() { // Precondition: w = Mv = Rv + t (R orthogonal) // Therefore: (M^-1)w = v = (R^T)Rv // = (R^T)(Rv+t - t) // = (R^T)(w-t) // = (R^T)w - (R^T)t x_column(A(0, 0), A(0, 1), A(0,2)); // row 0 y_column(A(1,0), A(1,1), A(1,2)); // row 1 z_column(A(2,0), A(2,1), A(2,2)); // row 2 w_column(-A(0,0)*A(0,3) - A(1,0)*A(1,3) - A(2,0)*A(2,3) , -A(0,1)*A(0,3) - A(1,1)*A(1,3) - A(2,1)*A(2,3) , -A(0,2)*A(0,3) - A(1,2)*A(1,3) - A(2,2)*A(2,3) ); w_row(); } #endif vector tmatrix::times_inv( const vector& v, double w) const throw() { double x = v.x - M[3][0]*w; double y = v.y - M[3][1]*w; double z = v.z - M[3][2]*w; return vector( M[0][0]*x + M[0][1]*y + M[0][2]*z, M[1][0]*x + M[1][1]*y + M[1][2]*z, M[2][0]*x + M[2][1]*y + M[2][2]*z ); } vector tmatrix::times_v( const vector& v) const throw() { return vector( M[0][0]*v.x + M[1][0]*v.y + M[2][0]*v.z, M[0][1]*v.x + M[1][1]*v.y + M[2][1]*v.z, M[0][2]*v.x + M[1][2]*v.y + M[2][2]*v.z ); } vector tmatrix::operator*( const vector& v) const throw() { return vector( M[0][0]*v.x + M[1][0]*v.y + M[2][0]*v.z + M[3][0], M[0][1]*v.x + M[1][1]*v.y + M[2][1]*v.z + M[3][1], M[0][2]*v.x + M[1][2]*v.y + M[2][2]*v.z + M[3][2] ); } vector tmatrix::origin() const throw() { return vector( M[3][0], M[3][1], M[3][2]); } /** multiplication by an arbirary vertex [x y z w] */ vertex tmatrix::operator*( const vertex& v) const throw() { return vertex( M[0][0]*v.x + M[1][0]*v.y + M[2][0]*v.z + M[3][0]*v.w, M[0][1]*v.x + M[1][1]*v.y + M[2][1]*v.z + M[3][1]*v.w, M[0][2]*v.x + M[1][2]*v.y + M[2][2]*v.z + M[3][2]*v.w, M[0][3]*v.x + M[1][3]*v.y + M[2][3]*v.z + M[3][3]*v.w ); } vertex tmatrix::project( const vector& v) const throw() { vertex o; o.x = M[0][0]*v.x + M[1][0]*v.y + M[2][0]*v.z + M[3][0]; o.y = M[0][1]*v.x + M[1][1]*v.y + M[2][1]*v.z + M[3][1]; o.z = M[0][2]*v.x + M[1][2]*v.y + M[2][2]*v.z + M[3][2]; o.w = M[0][3]*v.x + M[1][3]*v.y + M[2][3]*v.z + M[3][3]; return o; } void tmatrix::scale( const vector& v, const double w) { M[0][0] *= v.x; M[0][1] *= v.x; M[0][2] *= v.x; M[0][3] *= v.x; M[1][0] *= v.y; M[1][1] *= v.y; M[1][2] *= v.y; M[1][3] *= v.y; M[2][0] *= v.z; M[2][1] *= v.z; M[2][2] *= v.z; M[2][3] *= v.z; M[3][0] *= w; M[3][1] *= w; M[3][2] *= w; M[3][3] *= w; } void tmatrix::translate( const vector& v ) { M[3][0] += v.x * M[0][0] + v.y * M[1][0] + v.z * M[2][0]; M[3][1] += v.x * M[0][1] + v.y * M[1][1] + v.z * M[2][1]; M[3][2] += v.x * M[0][2] + v.y * M[1][2] + v.z * M[2][2]; M[3][3] += v.x * M[0][3] + v.y * M[1][3] + v.z * M[2][3]; } tmatrix& tmatrix::gl_modelview_get() { float m[4][4]; glGetFloatv( GL_MODELVIEW_MATRIX, m[0]); for (size_t i = 0; i < 4; ++i) for (size_t j = 0; j < 4; ++j) M[i][j] = static_cast(m[i][j]); return *this; } tmatrix& tmatrix::gl_texture_get() { float m[4][4]; glGetFloatv( GL_TEXTURE_MATRIX, m[0]); for (size_t i = 0; i < 4; ++i) for (size_t j = 0; j < 4; ++j) M[i][j] = static_cast(m[i][j]); return *this; } tmatrix& tmatrix::gl_projection_get() { float m[4][4]; glGetFloatv( GL_PROJECTION_MATRIX, m[0]); for (size_t i = 0; i < 4; ++i) for (size_t j = 0; j < 4; ++j) M[i][j] = static_cast(m[i][j]); return *this; } tmatrix& tmatrix::gl_color_get() { float m[4][4]; glGetFloatv( GL_COLOR_MATRIX, m[0]); for (size_t i = 0; i < 4; ++i) for (size_t j = 0; j < 4; ++j) M[i][j] = static_cast(m[i][j]); return *this; } std::string tmatrix::to_string() const { std::ostringstream formatter; formatter << "| " << M[0][0] << " " << M[1][0] << " " << M[2][0] << " " << M[3][0] << "|\n"; formatter << "| " << M[0][1] << " " << M[1][1] << " " << M[2][1] << " " << M[3][1] << "|\n"; formatter << "| " << M[0][2] << " " << M[1][2] << " " << M[2][2] << " " << M[3][2] << "|\n"; formatter << "| " << M[0][3] << " " << M[1][3] << " " << M[2][3] << " " << M[3][3] << "|\n"; return formatter.str(); } gl_matrix_stackguard::gl_matrix_stackguard( const tmatrix& m) { glPushMatrix(); m.gl_mult(); } } // !namespace cvisual visual-5.12_release/src/core/util/gl_free.cpp0000644000175000017500000000114610776022027016175 00000000000000#include "util/gl_free.hpp" namespace cvisual { gl_free_manager on_gl_free; boost::signal< void() >& gl_free_manager::on_shutdown() { static boost::signal< void() >* i = new boost::signal< void() >; return *i; } boost::signal< void() >& gl_free_manager::on_next_frame() { static boost::signal< void() >* i = new boost::signal< void() >; return *i; } void gl_free_manager::frame() { on_next_frame()(); on_next_frame().disconnect_all_slots(); } void gl_free_manager::shutdown() { on_next_frame()(); on_next_frame().disconnect_all_slots(); on_shutdown()(); on_shutdown().disconnect_all_slots(); } } visual-5.12_release/src/core/util/render_manager.cpp0000644000175000017500000000433510776734144017560 00000000000000#include "util/render_manager.hpp" #include "display.hpp" #include "util/errors.hpp" #include namespace cvisual { double render_manager::paint_displays( const std::vector< display* >& displays, bool swap_single_threaded ) { // If there are no active displays, poll at a reasonable rate. The platform driver // may turn off polling in this situation, which is fine. if (!displays.size()) return .030; static timer time; static boost::threadpool::pool* swap_thread_pool = NULL; // Most of the time spent in paint() will be holding the lock, and most of the time // holding the lock is spent in paint(). So we measure this time as an estimate of // how long per cycle we are holding the lock. double start = time.elapsed(); for(size_t d=0; dpaint(); double paint = time.elapsed() - start; if (swap_single_threaded) { for(size_t d=0; dswap(); } else { // Use a thread pool to call SwapBuffers for each display in a separate thread, since // at least with some drivers, it can block waiting for vertical retrace if (displays.size() > 1) { if (!swap_thread_pool) swap_thread_pool = new boost::threadpool::pool( displays.size()-1 ); else if ( swap_thread_pool->size() < displays.size() ) swap_thread_pool->size_controller().resize( displays.size()-1 ); for(size_t d=1; dschedule( boost::bind( &display::swap, displays[d] ) ); } displays[0]->swap(); if (displays.size() > 1) swap_thread_pool->wait(); } double swap = time.elapsed() - (start+paint); // We want to be holding the lock about half the time, so the next rendering cycle // should begin /paint/ seconds after painting finished /swap/ seconds ago. The minimum // of 5ms is to prevent absurd behavior if vertical retrace synchronization is disabled in // the driver, and to ensure that we have some time for event handling if painting is instant. double interval = std::max(.005, paint - swap); #if 0 // for debugging static double lasts = 0.0; printf("%0.3f (+%0.3f) %0.3f %0.3f %0.3f\n", start, start-lasts, paint, swap, interval); lasts = start; #endif return interval; } } // namespace cvisualvisual-5.12_release/src/core/util/shader_program.cpp0000644000175000017500000001220611107137734017567 00000000000000#include "util/shader_program.hpp" #include "util/errors.hpp" #include namespace cvisual { shader_program::shader_program( const std::string& source ) : source(source), program(-1) { } shader_program::~shader_program() { if (program > 0) on_gl_free.free( boost::bind( &shader_program::gl_free, glDeleteObjectARB, program ) ); } int shader_program::get_uniform_location( const view& v, const char* name ) { // TODO: change interface to cache the uniforms we actually want and avoid string comparisons if (program <= 0 || !v.glext.ARB_shader_objects) return -1; int& cache = uniforms[ name ]; if (cache == 0) cache = 2 + v.glext.glGetUniformLocationARB( program, name ); return cache - 2; } void shader_program::set_uniform_matrix( const view& v, int loc, const tmatrix& in ) { float matrix[16]; const double* in_p = in.matrix_addr(); for(int i=0; i<16; i++) matrix[i] = (float)in_p[i]; v.glext.glUniformMatrix4fvARB( loc, 1, false, matrix ); } void shader_program::realize( const view& v ) { if (program != -1) return; if ( !v.enable_shaders ) return; if ( !v.glext.ARB_shader_objects ) return; program = v.glext.glCreateProgramObjectARB(); check_gl_error(); compile( v, GL_VERTEX_SHADER_ARB, getSection("varying")+getSection("vertex") ); compile( v, GL_FRAGMENT_SHADER_ARB, getSection("varying")+getSection("fragment") ); v.glext.glLinkProgramARB( program ); // Check if linking succeeded GLint link_ok = 0; v.glext.glGetObjectParameterivARB( program, GL_OBJECT_LINK_STATUS_ARB, &link_ok ); if ( !link_ok ) { // Some drivers (incorrectly?) set the GL error in glLinkProgramARB() in this situation printf("!linkok\n"); clear_gl_error(); std::string infoLog; GLint length = 0; v.glext.glGetObjectParameterivARB( program, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length ); boost::scoped_array temp( new char[length+2] ); v.glext.glGetInfoLogARB( program, length+1, &length, &temp[0] ); infoLog.append( &temp[0], length ); // TODO: A way to report infoLog to the program? write_stderr( "VPython WARNING: errors in shader program:\n" + infoLog + "\n"); // Get rid of the program, since it can't be used without generating GL errors. We set // program to 0 instead of -1 so that binding it will revert to the fixed function pipeline, // and realize() won't be called again. v.glext.glDeleteObjectARB( program ); program = 0; return; } check_gl_error(); #ifdef __APPLE__ v.glext.glUseProgramObjectARB( program ); GLint gpuVertexProcessing=0; // OS X 10.4 wants a long CGLGetParameter(CGLGetCurrentContext(), kCGLCPGPUVertexProcessing, &gpuVertexProcessing); v.glext.glUseProgramObjectARB( 0 ); // gpuVertexProcessing=1 on MacBook Pro (GeForce); gpuVertexProcessing=0 on MacBook (no graphics) if (!gpuVertexProcessing) { write_stderr("Shader would be emulated in software; disabling.\n"); v.glext.glDeleteObjectARB( program ); program = 0; return; } #endif // TODO: It's probably not technically legal to call glext functions from on_gl_free callbacks, // since they might run in a different context, even though the program _handle_ is shared. Plus // this is kind of ugly. glDeleteObjectARB = v.glext.glDeleteObjectARB; on_gl_free.connect( boost::bind( &shader_program::gl_free, v.glext.glDeleteObjectARB, program ) ); } void shader_program::compile( const view& v, int type, const std::string& source ) { int shader = v.glext.glCreateShaderObjectARB( type ); const char* str = source.c_str(); GLint len = source.size(); v.glext.glShaderSourceARB( shader, 1, &str, &len ); v.glext.glCompileShaderARB( shader ); v.glext.glAttachObjectARB( program, shader ); v.glext.glDeleteObjectARB( shader ); } std::string shader_program::getSection( const std::string& name ) { /* Extract section beginning with \n[name]\n and ending with \n[ e.g. [vertex] void main() {} [fragment] void main() {} */ std::string section; std::string header = "\n[" + name + "]\n"; std::string source = "\n" + this->source; int p = 0; while ( (p = source.find( header, p )) != source.npos ) { p += header.size(); int end = source.find( "\n[", p ); if (end == source.npos) end = source.size(); section += source.substr( p, end-p ); p = end; } return section; } void shader_program::gl_free( PFNGLDELETEOBJECTARBPROC glDeleteObjectARB, int program ) { glDeleteObjectARB(program); } use_shader_program::use_shader_program( const view& v, shader_program& program ) : v(v) { init(&program); } use_shader_program::use_shader_program( const view& v, shader_program* program ) : v(v) { init(program); } void use_shader_program::init(shader_program* program) { m_ok = false; if (!program || !v.glext.ARB_shader_objects || !v.enable_shaders) { oldProgram = -1; return; } program->realize(v); // For now, nested shader invocations aren't supported. //oldProgram = v.glext.glGetHandleARB( GL_PROGRAM_OBJECT_ARB ); oldProgram = 0; v.glext.glUseProgramObjectARB( program->program ); check_gl_error(); m_ok = (program->program != 0); } use_shader_program::~use_shader_program() { if (oldProgram<0 || !v.glext.ARB_shader_objects) return; v.glext.glUseProgramObjectARB( oldProgram ); } } // namespace cvisual visual-5.12_release/src/core/util/quadric.cpp0000644000175000017500000000417211050446342016220 00000000000000// Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "wrap_gl.hpp" #include "util/quadric.hpp" #include "util/tmatrix.hpp" namespace cvisual { quadric::quadric() : q(0) { q = gluNewQuadric(); gluQuadricDrawStyle( q, GLU_FILL); gluQuadricNormals( q, GLU_SMOOTH); gluQuadricOrientation( q, GLU_OUTSIDE); } quadric::~quadric() { gluDeleteQuadric( q); } void quadric::set_draw_style( drawing_style style) { switch (style) { case POINT: gluQuadricDrawStyle( q, GLU_POINT); break; case LINE: gluQuadricDrawStyle( q, GLU_LINE); break; case FILL: gluQuadricDrawStyle( q, GLU_FILL); break; case SILHOUETTE: gluQuadricDrawStyle( q, GLU_SILHOUETTE); break; } } void quadric::set_normal_style( normal_style style) { switch (style) { case NONE: gluQuadricNormals( q, GLU_NONE); break; case FLAT: gluQuadricNormals( q, GLU_FLAT); break; case SMOOTH: gluQuadricNormals( q, GLU_SMOOTH); break; } } void quadric::set_orientation( orientation side) { if (side == OUTSIDE) gluQuadricOrientation( q, GLU_OUTSIDE); else gluQuadricOrientation( q, GLU_INSIDE); } void quadric::render_sphere( double radius, int slices, int stacks) { gluSphere( q, radius, slices, stacks); } void quadric::render_cylinder( double base_radius, double top_radius, double height, int slices, int stacks) { // GLU orients cylinders along the +z axis, and they must be // reoriented along the +x axis for VPython's convention of rendering along // the "axis" vector. gl_matrix_stackguard guard; glRotatef( 90, 0, 1, 0); gluCylinder( q, base_radius, top_radius, height, slices, stacks); } void quadric::render_cylinder( double radius, double height, int slices, int stacks) { gl_matrix_stackguard guard; glRotatef( 90, 0, 1, 0); gluCylinder( q, radius, radius, height, slices, stacks); } void quadric::render_disk( double radius, int slices, int rings, GLfloat rotation) { gl_matrix_stackguard guard; glRotatef( 90, 0, rotation, 0); gluDisk( q, 0.0, radius, slices, rings); } } // !namespace cvisual visual-5.12_release/src/core/util/vector.cpp0000644000175000017500000000740311077704261016100 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. // Most functions are inlined in the parent header. #include "util/vector.hpp" #include "util/tmatrix.hpp" #include #include #include namespace cvisual { vector vector::cross( const vector& v) const throw() { vector ret( this->y*v.z - this->z*v.y , this->z*v.x - this->x*v.z , this->x*v.y - this->y*v.x); return ret; } vector vector::norm( void) const throw() { double magnitude = mag(); if (magnitude) // This step ensures that vector(0,0,0).norm() returns vector(0,0,0) // instead of NaN magnitude = 1.0 / magnitude; return vector( x*magnitude, y*magnitude, z*magnitude); } // TODO: Figure out why this doesn't quite work... double vector::stable_mag(void) const { double ret = 0.0; double x1 = std::fabs(x); double x2 = std::fabs(y); double x3 = std::fabs(z); // sort the temporaries into descending order. if (x1 < x2) std::swap( x1, x2); if (x2 < x3) { std::swap(x2, x3); if (x1 < x2) std::swap( x1, x2); } if (x1 == 0.0) return 0.0; if (x2 == 0.0) return x1; // at this point, ret is equal to the length of an R2 vector. ret = x1 / std::cos( std::atan( x1/ x2)); if (x3 == 0.0) return ret; ret = ret / std::cos( std::atan( ret/x3)); return ret; } // Evaluate the determinant: // | x1, y1, z1 | // | x2, y2, z2 | // | x3, y3, z3 | double vector::dot_b_cross_c( const vector& b, const vector& c) const throw() { return ( this->x*(b.y*c.z - b.z*c.y) - this->y*(b.x*c.z - b.z*c.x) + this->z*(b.x*c.y - b.y*c.x) ); } /* Vector triple product. */ vector vector::cross_b_cross_c( const vector& b, const vector& c) const throw() { return (this->dot( c) * b - this->dot( b) * c); } // Vector projections double vector::comp( const vector& v) const throw() { return (this->dot( v) / v.mag()); } vector vector::proj( const vector& v) const throw() { return (this->dot( v)/v.mag2() * v); } double vector::diff_angle( const vector& v) const throw() { double magfirst = this->mag2(); double magsecond = v.mag2(); if (magfirst == 0.0 || magsecond == 0.0) return (double) 0.0; return std::acos( this->dot( v) / std::sqrt(magfirst*magsecond) ); } std::string vector::repr( void) const { std::stringstream ret; ret.precision( std::numeric_limits::digits10); // Since this function is intended to produce Python code that can be used to // rebuild this object, we use the full precision of the data type here. ret << "vector(" << x << ", " << y << ", " << z << ")"; return ret.str(); } vector vector::rotate( double angle, vector axis) throw() { tmatrix R = rotation( angle, axis.norm()); return R * *this; } double vector::py_getitem( int index) const { switch (index) { case -3: return x; case -2: return y; case -1: return z; case 0: return x; case 1: return y; case 2: return z; default: std::ostringstream s; s << "vector index out of bounds: " << index; throw std::out_of_range( s.str() ); } } void vector::py_setitem(int index, double value) { switch (index) { case -3: x = value; break; case -2: y = value; break; case -1: z = value; break; case 0: x = value; break; case 1: y = value; break; case 2: z = value; break; default: std::ostringstream s; s << "vector index out of bounds: " << index; throw std::out_of_range( s.str() ); } } bool vector::stl_cmp( const vector& v) const { if (this->x != v.x) { return this->x < v.x; } else if (this->y != v.y) { return this->y < v.y; } else return this->z < v.z; } } // !namespace cvisual visual-5.12_release/src/core/util/texture.cpp0000644000175000017500000000337011053110070016254 00000000000000// Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "wrap_gl.hpp" #include "util/texture.hpp" #include "util/errors.hpp" #include #include using boost::lexical_cast; namespace cvisual { texture::texture() : damaged(false), handle(0), have_opacity(false) { } texture::~texture() { if (handle) on_gl_free.free( boost::bind( &gl_free, handle ) ); } #if 0 texture::operator bool() const { return handle != 0; } #endif int texture::enable_type() const { return GL_TEXTURE_2D; } void texture::gl_activate(const view& v) { damage_check(); if (damaged) { gl_init(v); damaged = false; check_gl_error(); } if (!handle) return; glBindTexture( enable_type(), handle ); this->gl_transform(); check_gl_error(); } bool texture::has_opacity() const { return have_opacity; } void texture::set_handle( const view&, unsigned h ) { if (handle) on_gl_free.free( boost::bind( &gl_free, handle ) ); handle = h; on_gl_free.connect( boost::bind(&texture::gl_free, handle) ); VPYTHON_NOTE( "Allocated texture number " + lexical_cast(handle)); } void texture::gl_free(GLuint handle) { VPYTHON_NOTE( "Deleting texture number " + lexical_cast(handle)); glDeleteTextures(1, &handle); } void texture::gl_transform() { } void texture::damage_check() { } void texture::damage() { damaged = true; } size_t next_power_of_two(size_t arg) { size_t ret = 2; // upper bound of 28 chosen to limit memory growth to about 256MB, which is // _much_ larger than most supported textures while (ret < arg && ret < (1 << 28)) ret <<= 1; return ret; } } // !namespace cvisual visual-5.12_release/src/core/util/extent.cpp0000644000175000017500000001266711111112416016075 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/extent.hpp" #include #include #include #include #define QNAN (std::numeric_limits::quiet_NaN()) namespace cvisual { extent_data::extent_data(double tan_hfov) : mins(QNAN,QNAN,QNAN), maxs(QNAN,QNAN,QNAN), camera_z(0), buffer_depth(0) { cot_hfov = 1.0 / tan_hfov; sin_hfov = sin( atan(tan_hfov) ); cos_hfov = sqrt( 1 - sin_hfov*sin_hfov ); invsin_hfov = 1.0 / sin_hfov; } bool extent_data::is_empty() const { return !(mins.x == mins.x); } //< return isnan(mins.x) vector extent_data::get_center() const { if (is_empty()) return vector(); return (mins + maxs) * 0.5; } void extent_data::get_near_and_far( const vector& forward, double& nearest, double& farthest ) const { if (is_empty() || (mins == maxs)) { // The only way that this should happen is if the scene is empty. nearest = 1.0; farthest = 10.0; return; } double corners[] = { maxs.dot(forward), // front upper right vector( mins.x, mins.y, maxs.z).dot(forward), // front lower left vector( mins.x, maxs.y, maxs.z).dot(forward), // front upper left vector( maxs.x, mins.y, maxs.z).dot(forward), // front lower right vector( mins.x, maxs.y, mins.z).dot(forward), // back upper left vector( maxs.x, mins.y, mins.z).dot(forward), // back lower right vector( maxs.x, maxs.y, mins.z).dot(forward) // back upper right }; nearest = farthest = mins.dot(forward); // back lower left for (size_t i = 0; i < 7; ++i) { if (corners[i] < nearest) { nearest = corners[i]; } if (corners[i] > farthest) { farthest = corners[i]; } } } vector extent_data::get_range( vector center) const { if (is_empty()) return vector(0,0,0); return vector( std::max( fabs( center.x - mins.x), fabs( center.x - maxs.x)), std::max( fabs( center.y - mins.y), fabs( center.y - maxs.y)), std::max( fabs( center.z - mins.z), fabs( center.z - maxs.z))); } ////////////////////////////////// extent::extent( extent_data& data, const tmatrix& local_to_centered_world ) : data(data), l_cw( local_to_centered_world ), frame_depth(0) { } extent::extent( extent& parent, const tmatrix& local_to_parent ) : data( parent.data ), frame_depth(parent.frame_depth+1) { l_cw = parent.l_cw * local_to_parent; } extent::~extent() { } void extent::add_point( vector point) { point = l_cw * point; // std::min(a,NAN) is defined as (NAN #include #include #include #include "python/gil.hpp" namespace cvisual { void write_stderr( const std::string& message ) { python::gil_lock L; // though usually we already have it // TODO: Exception handling; in case of failure maybe print error to "real" stderr or a log file boost::python::import( "sys" ).attr( "stderr" ).attr( "write" )( message ); boost::python::import( "sys" ).attr( "stderr" ).attr( "flush" )(); } void write_critical( std::string file, int line, std::string function, std::string message) { std::ostringstream o; o << "VPython ***CRITICAL ERROR***: " << file << ":" << line << ": " << function << ": " << message << "\n"; write_stderr( o.str() ); return; } void write_warning( std::string file, int line, std::string function, std::string message) { std::ostringstream o; o << "VPython WARNING: " << file << ":" << line << ": " << function << ": " << message << "\n"; write_stderr( o.str() ); return; } void write_note( std::string file, int line, std::string message) { static bool enable = (bool)getenv( "VPYTHON_DEBUG"); if (!enable) return; std::ostringstream o; o << "VPython: " << file << ":" << line << ": " << message << "\n"; write_stderr( o.str() ); } void dump_glmatrix() { // TODO: set this up to write out a matrix with the same format for all of // the members. float M[4][4]; glGetFloatv( GL_MODELVIEW_MATRIX, M[0]); std::cout << "Modelview matrix status:\n"; std::cout << "| " << M[0][0] << " " << M[1][0] << " " << M[2][0] << " " << M[3][0] << "|\n"; std::cout << "| " << M[0][1] << " " << M[1][1] << " " << M[2][1] << " " << M[3][1] << "|\n"; std::cout << "| " << M[0][2] << " " << M[1][2] << " " << M[2][2] << " " << M[3][2] << "|\n"; std::cout << "| " << M[0][3] << " " << M[1][3] << " " << M[2][3] << " " << M[3][3] << "|\n"; glGetFloatv( GL_PROJECTION_MATRIX, M[0]); std::cout << "Projection matrix status:\n"; std::cout << "| " << M[0][0] << " " << M[1][0] << " " << M[2][0] << " " << M[3][0] << "|\n"; std::cout << "| " << M[0][1] << " " << M[1][1] << " " << M[2][1] << " " << M[3][1] << "|\n"; std::cout << "| " << M[0][2] << " " << M[1][2] << " " << M[2][2] << " " << M[3][2] << "|\n"; std::cout << "| " << M[0][3] << " " << M[1][3] << " " << M[2][3] << " " << M[3][3] << "|\n"; } void clear_gl_error_real() { #ifndef NDEBUG glGetError(); #endif } void check_gl_error_real( const char* file, int line) { #ifndef NDEBUG GLenum err_code = glGetError(); // Insert the manual cast from the unsigned char pointer to signed char // pointer type. if (err_code != GL_NO_ERROR) { std::ostringstream err; err << file << ":" << line << " " << (const char*)gluErrorString(err_code); throw gl_error( err.str().c_str(), err_code); } #endif } gl_error::gl_error( const char* msg, const GLenum err) : std::runtime_error(msg), error( err) { } gl_error::gl_error( const char* msg) : std::runtime_error(msg), error( GL_NO_ERROR) { } } // !namespace cvisual visual-5.12_release/src/core/util/atomic_queue.cpp0000644000175000017500000000234111135373730017250 00000000000000#include "util/atomic_queue.hpp" #include "python/gil.hpp" #include #include #include #include "util/errors.hpp" namespace cvisual { void atomic_queue_impl::push_notify() { empty = false; if (waiting) ready.notify_all(); } namespace { void xtime_increment( boost::xtime& time, int ms) { assert( ms < 100); time.nsec += ms * 1000000; if (time.nsec > 1000000000) { time.nsec -= 1000000000; time.sec += 1; } } } // !namespace (anon) void atomic_queue_impl::py_pop_wait( lock& L) { using python::gil_release; using python::gil_lock; // The following code is due to CL Cheung, to avoid a deadlock // between this routine waiting to regain the gil and the event // processing thread waiting to get the barrier lock L. The // symptom was Visual not responding after rapid keypresses. L.unlock(); { gil_release release; // I took the code to call Py_MakePendingCalls() out. The internet leads // me to believe that it is not necessary. For example, Python time.sleep() // doesn't do it. if (empty) { L.lock(); while (empty) { waiting = true; ready.wait(L); } L.unlock(); } waiting = false; } L.lock(); } } // !namespace cvisual visual-5.12_release/src/core/util/CVS/0000777000175000017500000000000011240651151014574 500000000000000visual-5.12_release/src/core/util/CVS/Entries0000644000175000017500000000126211240651151016045 00000000000000/.cvsignore/1.1/Sun Dec 5 20:07:23 2004// /atomic_queue.cpp/1.4/Tue Jan 20 16:12:08 2009// /displaylist.cpp/1.9/Sun Apr 6 01:11:51 2008// /errors.cpp/1.7/Tue Apr 1 15:00:40 2008// /extent.cpp/1.18/Wed Nov 19 22:37:02 2008// /gl_extensions.cpp/1.7/Tue Sep 16 21:24:37 2008// /gl_free.cpp/1.7/Sun Apr 6 01:15:03 2008// /icososphere.cpp/1.5/Wed Jan 23 01:52:36 2008// /quadric.cpp/1.8/Wed Aug 13 02:54:26 2008// /render_manager.cpp/1.4/Tue Apr 8 18:24:36 2008// /rgba.cpp/1.7/Tue Jan 30 12:57:38 2007// /shader_program.cpp/1.16/Fri Nov 14 00:01:32 2008// /texture.cpp/1.16/Wed Aug 20 21:44:24 2008// /tmatrix.cpp/1.9/Fri Sep 19 04:47:09 2008// /vector.cpp/1.10/Wed Oct 22 20:10:25 2008// visual-5.12_release/src/core/util/CVS/Root0000644000175000017500000000011111240651151015347 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/src/core/util/CVS/Repository0000644000175000017500000000003411240651151016607 00000000000000vpython-core2/src/core/util visual-5.12_release/src/core/util/rgba.cpp0000644000175000017500000000610210557640302015501 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/rgba.hpp" #include namespace cvisual { namespace { rgb desaturate( const rgb& c) { const float saturation = 0.5; // cut the saturation by this factor float h, s, v; rgb ret; float cmin, cmax, delta; int i; float f, p, q, t; // r,g,b values are from 0 to 1 // h = [0,360], s = [0,1], v = [0,1] // if s == 0, then arbitrarily set h = 0 cmin = c.red; if (c.green < cmin) { cmin = c.green; } if (c.blue < cmin) { cmin = c.blue; } cmax = c.red; if (c.green > cmax) { cmax = c.green; } if (c.blue > cmax) { cmax = c.blue; } v = cmax; // v delta = cmax - cmin; if (cmin == cmax) { // completely unsaturated; color is some gray // if r = g = b = 0, s = 0, v in principle undefined but set to 0 s = 0.0; h = 0.0; } else { s = delta / cmax; // s if (c.red == cmax) h = ( c.green - c.blue ) / delta; // between yellow & magenta else if (c.green == cmax) h = 2.0f + ( c.blue - c.red ) / delta; // between cyan & yellow else h = 4.0f + ( c.red - c.green ) / delta; // between magenta & cyan if (h < 0.0) h += 6.0; // make it 0 <= h < 6 } // unsaturate somewhat to make sure both eyes have something to see s *= saturation; if (s == 0.0) { // achromatic (grey) ret.red = ret.green = ret.blue = v; } else { i = static_cast( h); // h represents sector 0 to 5 f = h - i; // fractional part of h p = v * ( 1.0f - s ); q = v * ( 1.0f - s * f ); t = v * ( 1.0f - s * ( 1.0f - f ) ); switch (i) { case 0: ret.red = v; ret.green = t; ret.blue = p; break; case 1: ret.red = q; ret.green = v; ret.blue = p; break; case 2: ret.red = p; ret.green = v; ret.blue = t; break; case 3: ret.red = p; ret.green = q; ret.blue = v; break; case 4: ret.red = t; ret.green = p; ret.blue = v; break; default: // case 5: ret.red = v; ret.green = p; ret.blue = q; break; } } return ret; } rgb grayscale( const rgb& c) { // The constants 0.299, 0.587, and 0.114 are intended to account for the // relative intensity of each color to the human eye. static const float GAMMA = 2.5f; const float black = std::pow( 0.299f * std::pow( c.red, GAMMA) + 0.587f* std::pow( c.green, GAMMA) + 0.114f* std::pow( c.blue, GAMMA) , 1.0f/GAMMA); return rgb( black, black, black); } } // !namespace (unnamed) rgba rgba::desaturate() const { rgb ret = cvisual::desaturate( rgb(red, green, blue)); return rgba( ret.red, ret.green, ret.blue, opacity); } rgba rgba::grayscale() const { rgb ret = cvisual::grayscale( rgb(red, blue, green)); return rgba( ret.red, ret.green, ret.blue, opacity); } rgb rgb::desaturate() const { return cvisual::desaturate( *this); } rgb rgb::grayscale() const { return cvisual::grayscale( *this); } } // !namespace cvisual visual-5.12_release/src/core/mouseobject.cpp0000644000175000017500000001043411166017045016132 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "mouseobject.hpp" #include "display_kernel.hpp" #include "python/gil.hpp" #include namespace cvisual { static void init_event( int which, shared_ptr ret, const mouse_t& mouse) { ret->position = mouse.position; ret->pick = mouse.pick; ret->pickpos = mouse.pickpos; ret->cam = mouse.cam; ret->set_shift( mouse.is_shift()); ret->set_ctrl( mouse.is_ctrl()); ret->set_alt( mouse.is_alt()); ret->set_command( mouse.is_command()); switch (which) { case 1: ret->set_leftdown( true); break; case 2: ret->set_rightdown( true); break; case 3: ret->set_middledown( true); break; default: bool button_is_known = false; assert( button_is_known == true); } } shared_ptr press_event( int which, const mouse_t& mouse) { shared_ptr ret( new event());; ret->set_press( true); init_event( which, ret, mouse); return ret; } shared_ptr drop_event( int which, const mouse_t& mouse) { shared_ptr ret( new event());; ret->set_release( true); ret->set_drop( true); init_event( which, ret, mouse); return ret; } shared_ptr release_event( int which, const mouse_t& mouse) { shared_ptr ret( new event());; ret->set_release( true); init_event( which, ret, mouse); return ret; } shared_ptr click_event( int which, const mouse_t& mouse) { shared_ptr ret( new event());; ret->set_release( true); ret->set_click( true); init_event( which, ret, mouse); return ret; } shared_ptr drag_event( int which, const mouse_t& mouse) { shared_ptr ret( new event());; ret->set_drag( true); init_event( which, ret, mouse); return ret; } mousebase::~mousebase() { } /* Translate a button click code into a text string. */ std::string* mousebase::get_buttons() const { if (buttons.test( left)) return new std::string( "left"); else if (buttons.test( right)) return new std::string( "right"); else if (buttons.test( middle)) return new std::string( "middle"); else return 0; } /* Project the cursor's current location onto the plane specified by the normal * vector 'normal' and a perpendicular distance 'dist' from the origin. */ vector mousebase::project1( vector normal, double dist) { double ndc = normal.dot(cam) - dist; double ndr = normal.dot(get_ray()); double t = -ndc / ndr; vector v = cam + get_ray()*t; return v; } /* Project the cursor's current position onto the plane specified by the normal vector * 'normal' rooted at the position vector 'point'. */ vector mousebase::project2( vector normal, vector point) { double dist = normal.dot(point); double ndc = normal.dot(cam) - dist; double ndr = normal.dot(get_ray()); double t = -ndc / ndr; vector v = cam + get_ray()*t; return v; } shared_ptr mousebase::get_pick() { return pick; } /************** event implementation **************/ #if 0 shared_ptr event::create_press( shared_ptr pick, vector pickpos, modifiers buttonstate, display_kernel::mouse_button buttons) { shared_ptr ret( new event()); ret->pickpos = pickpos; ret->pick = pick; if (buttonstate & ctrl) ret->set_ctrl( true); if (buttonstate & shift) ret->set_shift( true); if (buttonstate & alt) ret->set_alt(); ret->set_press( true); ret->buttons = buttons; return ret; } #endif /************** mouseObject implementation **************/ mouse_t::~mouse_t() { } void mouse_t::clear_events( int i) { if (i != 0) { throw std::invalid_argument( "mouse.events can only be set to zero"); } events.clear(); return; } int mouse_t::num_events() const { return events.size(); } int mouse_t::num_clicks() const { return click_count; } shared_ptr mouse_t::pop_event() // this is scene.mouse.getevent() { shared_ptr ret = events.py_pop(); if (ret->is_click()) click_count--; return ret; } shared_ptr mouse_t::pop_click() // this is scene.mouse.getclick() { shared_ptr ret = events.py_pop(); while (!ret->is_click()) { ret = events.py_pop(); } click_count--; return ret; } void mouse_t::push_event( shared_ptr e) { if (e->is_click()) click_count++; events.push( e); } } // !namespace visual visual-5.12_release/src/core/ellipsoid.cpp0000644000175000017500000000351411116305342015573 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "ellipsoid.hpp" namespace cvisual { ellipsoid::ellipsoid() : height(1.0), width(1.0) { } void ellipsoid::set_length( double l) { if (l < 0) throw std::runtime_error( "length cannot be negative"); axis = axis.norm() * l; } double ellipsoid::get_length() { return axis.mag(); } void ellipsoid::set_height( double h) { if (h < 0) throw std::runtime_error( "height cannot be negative"); height = h; } double ellipsoid::get_height() { return height; } void ellipsoid::set_width( double w) { if (w < 0) throw std::runtime_error( "width cannot be negative"); width = w; } double ellipsoid::get_width() { return width; } vector ellipsoid::get_size() { return vector(axis.mag(), height, width); } void ellipsoid::set_size( const vector& s) { if (s.x < 0) throw std::runtime_error( "length cannot be negative"); if (s.y < 0) throw std::runtime_error( "height cannot be negative"); if (s.z < 0) throw std::runtime_error( "width cannot be negative"); axis = axis.norm() * s.x; height = s.y; width = s.z; } vector ellipsoid::get_scale() { return vector( axis.mag(), height, width)*0.5; } bool ellipsoid::degenerate() { return !visible || height == 0.0 || width == 0.0 || axis.mag() == 0.0; } void ellipsoid::grow_extent( extent& world) { if (degenerate()) return; //world.add_sphere( pos, std::max( width, std::max( height, axis.mag()))); // TODO: not accurate (overestimates extent) vector s = vector(axis.mag(),height,width)*0.5; world.add_box( model_world_transform(1.0), -s, s ); world.add_body(); } PRIMITIVE_TYPEINFO_IMPL(ellipsoid) } // !namespace cvisual visual-5.12_release/src/core/display_kernel.cpp0000644000175000017500000013636411202650523016626 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "display_kernel.hpp" #include "util/errors.hpp" #include "util/tmatrix.hpp" #include "util/gl_enable.hpp" #include "material.hpp" #include "frame.hpp" #include "text.hpp" #include "wrap_gl.hpp" #include #include #include #include #include #include #include namespace cvisual { shared_ptr display_kernel::selected; bool display_kernel::enable_shaders = true; //////////////////////////////////////////////////////////////// // Implementation of display_kernel::waitWhileAnyDisplayVisible() static mutex displays_visible_lock; static boost::condition displays_visible_condition; static int displays_visible = 0; void set_display_visible( display_kernel*, bool visible ) { lock L( displays_visible_lock ); if (visible) displays_visible++; else displays_visible--; displays_visible_condition.notify_all(); } void display_kernel::waitWhileAnyDisplayVisible() { python::gil_release gil; lock L( displays_visible_lock ); while ( displays_visible ) displays_visible_condition.wait( L ); } //////////////////////////////////////////////////////////////// static const display_kernel::EXTENSION_FUNCTION notImplemented = (display_kernel::EXTENSION_FUNCTION)-1; void display_kernel::enable_lights(view& scene) { scene.light_count[0] = 0; scene.light_pos.clear(); scene.light_color.clear(); std::list >::iterator i = layer_world.begin(); std::list >::iterator i_end = layer_world.end(); for(; i != i_end; ++i) (*i)->render_lights( scene ); std::vector >::iterator j = layer_world_transparent.begin(); std::vector >::iterator j_end = layer_world_transparent.end(); for(; j != j_end; ++j) (*j)->render_lights( scene ); tmatrix world_camera; world_camera.gl_modelview_get(); vertex p; // Clear modelview matrix since we are multiplying the light positions ourselves gl_matrix_stackguard guard; glLoadIdentity(); for(int i=0; i 1.0) { // Tall window *x = tan_hfov / aspect_ratio; *y = tan_hfov; } else { // Wide window *x = tan_hfov; *y = tan_hfov * aspect_ratio; } } vector display_kernel::calc_camera() { return camera; /* old scheme not necessary? double tan_hfov_x = 0.0; double tan_hfov_y = 0.0; tan_hfov( &tan_hfov_x, &tan_hfov_y); double cot_hfov = 1 / std::min(tan_hfov_x, tan_hfov_y); return (-forward.norm() * cot_hfov*user_scale).scale(range) + center; */ } display_kernel::display_kernel() : exit(true), visible(false), explicitly_invisible(false), fullscreen(false), title( "VPython" ), window_x(-1), window_y(-1), window_width(430), window_height(450), view_x(-1), view_y(-1), view_width(-1), view_height(-1), center(0, 0, 0), forward(0, 0, -1), internal_forward(0, 0, -1), up(0, 1, 0), forward_changed(true), fov( 60 * M_PI / 180.0), autoscale(true), autocenter(false), uniform(true), camera(0,0,0), user_scale(1.0), gcf(1.0), gcfvec(vector(1.0,1.0,1.0)), gcf_changed(false), ambient( 0.2f, 0.2f, 0.2f), show_toolbar( false), show_rendertime( false), last_time(0), background(0, 0, 0), //< Transparent black. spin_allowed(true), zoom_allowed(true), mouse_mode( ZOOM_ROTATE), stereo_mode( NO_STEREO), stereodepth( 0.0f), lod_adjust(0), realized(false), mouse( *this ), range_auto(0.0), range(0,0,0), world_extent(0.0) { } display_kernel::~display_kernel() { if (visible) set_display_visible( this, false ); } void display_kernel::report_closed() { if (visible) set_display_visible( this, false ); lock L( realize_lock ); realized = false; visible = false; explicitly_invisible = true; realize_condition.notify_all(); } void display_kernel::report_camera_motion( int dx, int dy, mouse_button button ) { // This stuff handles automatic movement of the camera in response to user // input. See also view_to_world_transform for how the affected variables // are used to actually position the camera. // Scaling conventions: // the full width of the widget rotates the scene horizontally by 120 degrees. // the full height of the widget rotates the scene vertically by 120 degrees. // the full height of the widget zooms the scene by a factor of 10 // Panning conventions: // The full height or width of the widget pans the scene by the eye distance. // Locking: // center and forward are already synchronized. The only variable that // remains to be synchronized is user_scale. // The vertical and horizontal fractions of the window's height that the // mouse has traveled for this event. // TODO: Implement ZOOM_ROLL modes. float vfrac = (float)dy / view_height; float hfrac = dx / ((stereo_mode == PASSIVE_STEREO || stereo_mode == CROSSEYED_STEREO) ? (view_width*0.5f) : view_width); // The amount by which the scene should be shifted in response to panning // motion. // TODO: Keep this synchronized with the eye_dist calc in // world_view_transform double tan_hfov_x = 0.0; double tan_hfov_y = 0.0; tan_hfov( &tan_hfov_x, &tan_hfov_y); double pan_rate = (center - calc_camera()).mag() * std::min( tan_hfov_x, tan_hfov_y); switch (button) { case NONE: case LEFT: break; case MIDDLE: switch (mouse_mode) { case FIXED: // Locked. break; case PAN: // Pan front/back. if (spin_allowed) center += pan_rate * vfrac * internal_forward.norm(); break; case ZOOM_ROLL: case ZOOM_ROTATE: // Zoom in/out. if (zoom_allowed) user_scale *= std::pow( 10.0f, vfrac); break; } break; case RIGHT: switch (mouse_mode) { case FIXED: case ZOOM_ROLL: break; case PAN: { // Pan up/down and left/right. // A vector pointing along the camera's horizontal axis. vector horiz_dir = internal_forward.cross(up).norm(); // A vector pointing along the camera's vertical axis. vector vert_dir = horiz_dir.cross(internal_forward).norm(); if (spin_allowed) { center += -horiz_dir * pan_rate * hfrac; center += vert_dir * pan_rate * vfrac; } break; } case ZOOM_ROTATE: { if (spin_allowed) { // Rotate // First perform the rotation about the up vector. tmatrix R = rotation( -hfrac * 2.0, up.norm()); internal_forward = R * internal_forward; // Then perform rotation about an axis orthogonal to up and forward. double vertical_angle = vfrac * 2.0; double max_vertical_angle = up.diff_angle(-internal_forward.norm()); // Over the top (or under the bottom) rotation if (!(vertical_angle >= max_vertical_angle || vertical_angle <= max_vertical_angle - M_PI)) { // Over the top (or under the bottom) rotation R = rotation( -vertical_angle, internal_forward.cross(up).norm()); forward = internal_forward = R*internal_forward; forward_changed = true; } } break; } } break; } } void display_kernel::report_resize( int win_x, int win_y, int win_w, int win_h, int v_x, int v_y, int v_w, int v_h ) { window_x = win_x; window_y = win_y; window_width = win_w; window_height = win_h; view_x = v_x; view_y = v_y; view_width = std::max(v_w,1); view_height = std::max(v_h,1); } void display_kernel::realize() { clear_gl_error(); if (!extensions) { using namespace std; VPYTHON_NOTE( "Querying the list of OpenGL extensions."); extensions.reset( new set()); istringstream strm( string( (const char*)(glGetString( GL_EXTENSIONS)))); copy( istream_iterator(strm), istream_iterator(), inserter( *extensions, extensions->begin())); vendor = std::string((const char*)glGetString(GL_VENDOR)); version = std::string((const char*)glGetString(GL_VERSION)); renderer = std::string((const char*)glGetString(GL_RENDERER)); // The test is a hack so that subclasses not bothering to implement getProcAddress just // don't get any extensions. if (getProcAddress("display_kernel::getProcAddress") != notImplemented) glext.init( *this ); } // Those features of OpenGL that are always used are set up here. // Depth buffer properties glClearDepth( 1.0); glEnable( GL_DEPTH_TEST); glDepthFunc( GL_LEQUAL); // Lighting model properties glShadeModel( GL_SMOOTH); // TODO: Figure out what the concrete costs/benefits of these commands are. // glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glHint( GL_POLYGON_SMOOTH_HINT, GL_NICEST); glHint( GL_LINE_SMOOTH_HINT, GL_NICEST); glHint( GL_POINT_SMOOTH_HINT, GL_NICEST); glEnable( GL_NORMALIZE); glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); glEnable( GL_COLOR_MATERIAL); glEnable( GL_BLEND ); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Ensures that fully transparent pixels don't write into the depth buffer, // ever. glEnable( GL_ALPHA_TEST); glAlphaFunc( GL_GREATER, 0.0); // FSAA. Doesn't seem to have much of an effect on my TNT2 card. Grrr. if ( hasExtension( "GL_ARB_multisample" ) ) { glEnable( GL_MULTISAMPLE_ARB); GLint n_samples, n_buffers; glGetIntegerv( GL_SAMPLES_ARB, &n_samples); glGetIntegerv( GL_SAMPLE_BUFFERS_ARB, &n_buffers); VPYTHON_NOTE( "Using GL_ARB_multisample extension: samples:" + boost::lexical_cast(n_samples) + " buffers: " + boost::lexical_cast(n_buffers)); } check_gl_error(); } // Set up matricies for transforms from world coordinates to view coordinates // Precondition: the OpenGL Modelview and Projection matrix stacks should be // at the bottom. // Postcondition: active matrix stack is GL_MODELVIEW, matrix stacks are at // the bottom. Viewing transformations have been applied. geometry.camera // is initialized. // whicheye: -1 for left, 0 for center, 1 for right. void display_kernel::world_to_view_transform( view& geometry, int whicheye, bool forpick) { // See http://www.stereographics.com/support/developers/pcsdk.htm for a // discussion regarding the design basis for the frustum offset code. // gcf scales the region encompassed by scene.range_* into a ROUGHLY 2x2x2 cube. // Note that this is NOT necessarily the entire world, since scene.range // can be changed. // This coordinate system is used for most of the calculations below. vector scene_center = center.scale(gcfvec); vector scene_up = up.norm(); vector scene_forward = internal_forward.norm(); // the horizontal and vertical tangents of half the field of view. double tan_hfov_x; double tan_hfov_y; tan_hfov( &tan_hfov_x, &tan_hfov_y); // The cotangent of half of the wider field of view. double cot_hfov; if (!uniform) // We force width to be 2.0 (range.x 1.0) cot_hfov = 1.0 / tan_hfov_x; else cot_hfov = 1.0 / std::max(tan_hfov_x, tan_hfov_y); // The camera position is chosen by the tightest of the enabled range_* modes. double cam_to_center_without_zoom = 1e150; /*if (range_sphere_radius) cam_to_center_without_zoom = std::min(cam_to_center_without_zoom, range_sphere_radius / sin( fov * 0.5 ) ); if (range_box_size.nonzero()) { if (range_unrotated) { cam_to_center_without_zoom = std::min(cam_to_center_without_zoom, std::max(range_box_size.x, range_box_size.y) * 0.5 * cot_hfov + range_box_size.z * 0.5); } else cam_to_center_without_zoom = std::min(cam_to_center_without_zoom, range_box_size.mag() * 0.5 / sin( fov * 0.5 ) ); }*/ if (range_auto) cam_to_center_without_zoom = std::min(cam_to_center_without_zoom, range_auto); if (range.nonzero()) cam_to_center_without_zoom = std::min(cam_to_center_without_zoom, range.x * cot_hfov / 1.02); if (cam_to_center_without_zoom >= 1e150) cam_to_center_without_zoom = 10.0 / sin( fov * 0.5 ); cam_to_center_without_zoom *= gcf * 1.02; // Position camera so that a sphere containing the box range will fit on the screen // OR a 2*user_scale cube will fit. The former is tighter for "non cubical" ranges // and the latter is tighter for cubical ones. /*double radius = range.mag() * gcf * user_scale; double cam_to_center_without_zoom = 1.02 * std::min( radius / sin( fov * 0.5 ), cot_hfov + 1.0 );*/ vector scene_camera = scene_center - cam_to_center_without_zoom*user_scale*scene_forward; double nearest, farthest; world_extent.get_near_and_far(internal_forward, nearest, farthest); // nearest and farthest points relative to scene.center when projected onto forward nearest = nearest*gcf; farthest = farthest*gcf; double cam_to_center = (scene_center - scene_camera).mag(); // Z buffer resolution is highly sensitive to nearclip - a "small" camera will have terrible z buffer // precision for distant objects. PLEASE don't fiddle with this unless you know what kind of // test cases you need to see the results, including at nonstandard fields of view and 24 bit // z buffers! // The equation for nearclip below is designed to give similar z buffer resolution at all fields of // view. It's a little weird, but seems to give acceptable results in all the cases I've been able // to test. // The other big design question here is the effect of "zoom" (user_scale) on the near clipping plane. // Most users will have the mental model that this moves the camera closer to the scene, rather than // scaling the scene up. There is actually a difference since the camera has a finite "size". // Unfortunately, following this model leads to a problem with zooming in a lot! The problem is // especially pronounced at tiny fields of view, which typically have an enormous camera very far away; // when you try to zoom in the big camera "crashes" into the tiny scene! So instead we use the // slightly odd model of scaling the scene, or equivalently making the camera smaller as you zoom in. double fwz = cam_to_center_without_zoom + 1.0; double nearclip = fwz * fwz / (100 + fwz) * user_scale; // TODO: nearclip = std::max( nearclip, (cam_to_center + nearest) * 0.95 ); //< ?? boost z buffer resolution if there's nothing close to camera? double farclip = (farthest + cam_to_center) * 1.05; //< actual maximum z in scene plus a little farclip = std::max( farclip, nearclip * 1.001 ); //< just in case everything is behind the camera! // Here is the stereodepth and eye offset machinery from Visual 3, where the docs claimed that // stereodepth=0 was the default (zero-parallax plane at screen surface; // stereodepth=1 moves the center of the scene to the screen surface; // stereodepth=2 moves the back of the scene to the screen surface: /* double farclip = cotfov + ext; double nearclip = 0.0; if ((cam - display->c_center).mag() < display->c_extent.mag()) { // Then the camera is within the scene. Pick a value that looks OK. nearclip = 0.015; } else { nearclip = cotfov - ext*1.5; if (nearclip < 0.01*farclip) nearclip = 0.01*farclip; } double R = nearclip*hfov; double T = nearclip*vfov; double fl = 0.5*ext + ext*stereodepth + nearclip; //focal length double eyeOffset = eyesign*fl/60.0; // eye separation 1/30 of focallength double eyeOffset1 = eyeOffset * (nearclip/fl); frustum(proj, iproj, -R-eyeOffset1, R-eyeOffset1, -T, T, nearclip, farclip); */ // A multiple of the number of cam_to_center's away from the camera to place // the zero-parallax plane. // The distance from the camera to the zero-parallax plane. double focallength = cam_to_center+0.5*stereodepth; // Translate camera left/right 2% of the viewable width of the scene at // the distance of its center. //double camera_stereo_offset = tan_hfov_x * cam_to_center * 0.02; double camera_stereo_offset = tan_hfov_x * focallength * 0.02; vector camera_stereo_delta = camera_stereo_offset * up.cross( scene_camera).norm() * whicheye; scene_camera += camera_stereo_delta; scene_center += camera_stereo_delta; // The amount to translate the frustum to the left and right. double frustum_stereo_offset = camera_stereo_offset * nearclip / focallength * whicheye; // Finally, the OpenGL transforms based on the geometry just calculated. clear_gl_error(); // Position the camera. glMatrixMode( GL_MODELVIEW); glLoadIdentity(); #if 0 // Enable this to peek at the actual scene geometry. int max_proj_stack_depth = -1; int max_mv_stack_depth = -1; int proj_stack_depth = -1; int mv_stack_depth = -1; glGetIntegerv( GL_MAX_PROJECTION_STACK_DEPTH, &max_proj_stack_depth); glGetIntegerv( GL_MAX_MODELVIEW_STACK_DEPTH, &max_mv_stack_depth); glGetIntegerv( GL_PROJECTION_STACK_DEPTH, &proj_stack_depth); glGetIntegerv( GL_MODELVIEW_STACK_DEPTH, &mv_stack_depth); std::cerr << "scene_geometry: camera:" << scene_camera << " true camera:" << camera << std::endl << " center:" << scene_center << " true center:" << center << std::endl << " forward:" << scene_forward << " true forward:" << forward << std::endl << " up:" << scene_up << " range:" << range << " gcf:" << gcf << std::endl << " nearclip:" << nearclip << " nearest:" << nearest << std::endl << " farclip:" << farclip << " farthest:" << farthest << std::endl << " user_scale:" << user_scale << std::endl << " cot_hfov:" << cot_hfov << " tan_hfov_x:" << tan_hfov_x << std::endl << " tan_hfov_y: " << tan_hfov_y << std::endl << " window_width:" << window_width << " window_height:" << window_height << std::endl << " max_proj_depth:" << max_proj_stack_depth << " current_proj_depth:" << proj_stack_depth << std::endl << " max_mv_depth:" << max_mv_stack_depth << " current_mv_depth:" << mv_stack_depth << std::endl; world_extent.dump_extent(); std::cerr << std::endl; #endif gluLookAt( scene_camera.x, scene_camera.y, scene_camera.z, scene_center.x, scene_center.y, scene_center.z, scene_up.x, scene_up.y, scene_up.z); tmatrix world_camera; world_camera.gl_modelview_get(); inverse( geometry.camera_world, world_camera ); //vector scene_range = range * gcf; //glScaled( 1.0/scene_range.x, 1.0/scene_range.y, 1.0/scene_range.z); // Establish a parallel-axis asymmetric stereo projection frustum. glMatrixMode( GL_PROJECTION); if (!forpick) glLoadIdentity(); if (whicheye == 1) { frustum_stereo_offset = -frustum_stereo_offset; } else if (whicheye == 0) { frustum_stereo_offset = 0; } if (nearclip<=0 || farclip<=nearclip || tan_hfov_x<=0 || tan_hfov_y<=0) { std::ostringstream msg; msg << "VPython degenerate projection: " << nearclip << " " << farclip << " " << tan_hfov_x << " " << tan_hfov_y; VPYTHON_CRITICAL_ERROR( msg.str()); std::exit(1); } glFrustum( -nearclip * tan_hfov_x + frustum_stereo_offset, nearclip * tan_hfov_x + frustum_stereo_offset, -nearclip * tan_hfov_y, nearclip * tan_hfov_y, nearclip, farclip ); glMatrixMode( GL_MODELVIEW); check_gl_error(); // The true camera position, in world space. camera = scene_camera/gcf; // Finish initializing the view object. geometry.camera = camera; geometry.tan_hfov_x = tan_hfov_x; geometry.tan_hfov_y = tan_hfov_y; // The true viewing vertical direction is not the same as what is needed for // gluLookAt(). geometry.up = internal_forward.cross_b_cross_c(up, internal_forward).norm(); } // Calculate a new extent for the universe, adjust gcf, center, and world_scale // as required. void display_kernel::recalc_extent(void) { double tan_hfov_x; double tan_hfov_y; tan_hfov( &tan_hfov_x, &tan_hfov_y ); double tan_hfov = std::max(tan_hfov_x, tan_hfov_y); while (1) { //< Might have to do this twice for autocenter world_extent = extent_data( tan_hfov ); tmatrix l_cw; l_cw.translate( -center ); extent ext( world_extent, l_cw ); world_iterator i( layer_world.begin()); world_iterator end( layer_world.end()); while (i != end) { i->grow_extent( ext); ++i; } world_trans_iterator j( layer_world_transparent.begin()); world_trans_iterator j_end( layer_world_transparent.end()); while (j != j_end) { j->grow_extent( ext); ++j; } if (autocenter) { vector c = world_extent.get_center() + center; if ( (center-c).mag2() > (center.mag2() + c.mag2()) * 1e-6 ) { // Change center and recalculate extent (since camera_z depends on center) center = c; continue; } } break; } if (autoscale && uniform) { double r = world_extent.get_camera_z(); if (r > range_auto) range_auto = r; else if ( 3.0*r < range_auto ) range_auto = 3.0*r; } // Rough scale calculation for gcf. Doesn't need to be exact. // TODO: If extent and range are very different in scale, we are using extent to drive // gcf. Both options have pros and cons. double mr = world_extent.get_range(vector(0,0,0)).mag(); double scale = mr ? 1.0 / mr : 1.0; if (!uniform && range.nonzero()) { gcf_changed = true; gcf = 1.0/range.x; double width = (stereo_mode == PASSIVE_STEREO || stereo_mode == CROSSEYED_STEREO) ? view_width*0.5 : view_width; gcfvec = vector(1.0/range.x, (view_height/width)/range.y, 0.1/range.z); } else { // TODO: Instead of changing gcf so much, we could change it only when it is 2x // off, to aid primitives whose caching may depend on gcf (but are there any?) if (gcf != scale) { gcf = scale; gcf_changed = true; } gcfvec = vector(gcf,gcf,gcf); } } void display_kernel::implicit_activate() { if (!visible && !explicitly_invisible) set_visible( true ); } void display_kernel::add_renderable( shared_ptr obj) { // Driven from visual/primitives.py set_visible if (!obj->translucent()) layer_world.push_back( obj); else layer_world_transparent.push_back( obj); if (!obj->is_light()) implicit_activate(); } void display_kernel::remove_renderable( shared_ptr obj) { // Driven from visual/primitives.py set_visible if (!obj->translucent()) { std::remove( layer_world.begin(), layer_world.end(), obj); layer_world.pop_back(); } else { std::remove( layer_world_transparent.begin(), layer_world_transparent.end(), obj); layer_world_transparent.pop_back(); } } bool display_kernel::draw( view& scene_geometry, int whicheye, bool anaglyph, bool coloranaglyph) { // Set up the base modelview and projection matricies world_to_view_transform( scene_geometry, whicheye); // Render all opaque objects in the world space layer enable_lights(scene_geometry); world_iterator i( layer_world.begin()); world_iterator i_end( layer_world.end()); while (i != i_end) { if (i->translucent()) { // The color of the object has become transparent when it was not // initially. Move it to the transparent layer. The penalty for // being rendered in the transparent layer when it is opaque is only // a small speed hit when it has to be sorted. Therefore, that case // is not tested at all. (TODO Untrue-- rendering opaque objects in transparent // layer makes it possible to have opacity artifacts with a single convex // opaque objects, provided other objects in the scene were ONCE transparent) layer_world_transparent.push_back( *i.base()); i = layer_world.erase(i.base()); continue; } i->outer_render( scene_geometry); ++i; } // Perform a depth sort of the transparent world from back to front. if (layer_world_transparent.size() > 1) std::stable_sort( layer_world_transparent.begin(), layer_world_transparent.end(), z_comparator( internal_forward.norm())); // Render translucent objects in world space. world_trans_iterator j( layer_world_transparent.begin()); world_trans_iterator j_end( layer_world_transparent.end()); while (j != j_end) { j->outer_render( scene_geometry ); ++j; } // Render all objects in screen space. disable_lights(); gl_disable depth_test( GL_DEPTH_TEST); typedef std::multimap::iterator screen_iterator; screen_iterator k( scene_geometry.screen_objects.begin()); screen_iterator k_end( scene_geometry.screen_objects.end()); while ( k != k_end) { k->second.gl_render(); ++k; } scene_geometry.screen_objects.clear(); return true; } // Renders the entire scene. bool display_kernel::render_scene(void) { // TODO: Exception handling? if (!realized) { realize(); lock L(realize_lock); realized = true; realize_condition.notify_all(); } double start_time, cycle; if (show_rendertime) { start_time = render_timer.elapsed(); cycle = start_time - last_time; last_time = start_time; } try { recalc_extent(); view scene_geometry( internal_forward.norm(), center, view_width, view_height, forward_changed, gcf, gcfvec, gcf_changed, glext); scene_geometry.lod_adjust = lod_adjust; scene_geometry.enable_shaders = enable_shaders; clear_gl_error(); on_gl_free.frame(); glClearColor( background.red, background.green, background.blue, 0); // Control which type of stereo to perform. switch (stereo_mode) { case NO_STEREO: scene_geometry.anaglyph = false; scene_geometry.coloranaglyph = false; glViewport( 0, 0, view_width, view_height); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); draw(scene_geometry, 0); break; case ACTIVE_STEREO: scene_geometry.anaglyph = false; scene_geometry.coloranaglyph = false; glViewport( 0, 0, view_width, view_height); glDrawBuffer( GL_BACK_LEFT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); draw( scene_geometry, -1); glDrawBuffer( GL_BACK_RIGHT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); draw( scene_geometry, 1); break; case REDBLUE_STEREO: // Red channel scene_geometry.anaglyph = true; scene_geometry.coloranaglyph = false; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glViewport( 0, 0, view_width, view_height); glColorMask( GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE); draw( scene_geometry, -1, true, false); // Blue channel glColorMask( GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE); glClear( GL_DEPTH_BUFFER_BIT); draw( scene_geometry, 1, true, false); // Put everything back glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); break; case REDCYAN_STEREO: // Red channel scene_geometry.anaglyph = true; scene_geometry.coloranaglyph = true; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glViewport( 0, 0, view_width, view_height); glColorMask( GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE); draw( scene_geometry, -1, true, true); // Green and Blue channels glColorMask( GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE); glClear( GL_DEPTH_BUFFER_BIT); draw( scene_geometry, 1, true, true); // Put everything back glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); break; case YELLOWBLUE_STEREO: // Red and green channels scene_geometry.anaglyph = true; scene_geometry.coloranaglyph = true; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glViewport( 0, 0, view_width, view_height); glColorMask( GL_TRUE, GL_TRUE, GL_FALSE, GL_TRUE); draw( scene_geometry, -1, true, true); // Blue channel glColorMask( GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE); glClear( GL_DEPTH_BUFFER_BIT); draw( scene_geometry, 1, true, true); // Put everything back glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); break; case GREENMAGENTA_STEREO: // Green channel scene_geometry.anaglyph = true; scene_geometry.coloranaglyph = true; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glViewport( 0, 0, view_width, view_height); glColorMask( GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE); draw( scene_geometry, -1, true, true); // Red and blue channels glColorMask( GL_TRUE, GL_FALSE, GL_TRUE, GL_TRUE); glClear( GL_DEPTH_BUFFER_BIT); draw( scene_geometry, 1, true, true); // Put everything back glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); break; case PASSIVE_STEREO: { // Also handle viewport modifications. scene_geometry.view_width = view_width/2; scene_geometry.anaglyph = false; scene_geometry.coloranaglyph = false; int stereo_width = int(scene_geometry.view_width); // Left eye glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glViewport( 0, 0, stereo_width, view_height ); draw( scene_geometry, -1); // Right eye glViewport( stereo_width+1, 0, stereo_width, view_height); draw( scene_geometry, 1); break; } case CROSSEYED_STEREO: { // Also handle viewport modifications. scene_geometry.view_width = view_width/2; scene_geometry.anaglyph = false; scene_geometry.coloranaglyph = false; int stereo_width = int(scene_geometry.view_width); // Left eye glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glViewport( 0, 0, stereo_width, view_height); draw( scene_geometry, 1); // Right eye glViewport( stereo_width+1, 0, stereo_width, view_height ); draw( scene_geometry, -1); break; } } if (show_rendertime) { double render_time = render_timer.elapsed()-start_time, flush_time = -1; #if 0 //< Only for performance measurement; disable in shipping code glFinish(); flush_time = render_timer.elapsed() - start_time - render_time; #endif std::wostringstream render_msg; render_msg.precision(3); // render time does not include pick time, which may be negligible render_msg << "cycle: " << int(1000*cycle) << " render: " << int(1000*(render_time)); if (flush_time>=0) render_msg << " flush: " << int(1000*flush_time); glColor3f( 1.0f - background.red, 1.0f-background.green, 1.0f-background.blue); glMatrixMode( GL_PROJECTION); glPushMatrix(); glLoadIdentity(); gluOrtho2D( 0, view_width, 0, view_height); glMatrixMode( GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); { gl_disable depth_test(GL_DEPTH_TEST); boost::shared_ptr default_font = font::find_font(); boost::shared_ptr lay_out = default_font->lay_out( render_msg.str()); lay_out->gl_render( scene_geometry, vector(5, lay_out->extent( scene_geometry ).y + 3)); } glPopMatrix(); glMatrixMode( GL_PROJECTION); glPopMatrix(); glMatrixMode( GL_MODELVIEW); } // Cleanup check_gl_error(); gcf_changed = false; forward_changed = false; } catch (gl_error e) { std::ostringstream msg; msg << "OpenGL error: " << e.what() << ", aborting.\n"; VPYTHON_CRITICAL_ERROR( msg.str()); std::exit(1); } if (show_rendertime) { render_time = render_timer.elapsed()-start_time; } // TODO: Can we delay picking until the Python program actually wants one of these attributes? mouse.get_mouse().cam = camera; boost::tie( mouse.get_mouse().pick, mouse.get_mouse().pickpos, mouse.get_mouse().position) = pick( mouse.get_x(), mouse.get_y() ); on_gl_free.frame(); return true; } boost::tuple< shared_ptr, vector, vector> display_kernel::pick( int x, int y, float d_pixels) { using boost::scoped_array; shared_ptr best_pick; vector pickpos; vector mousepos; try { clear_gl_error(); // Notes: // culled polygons don't count. glRasterPos() does count. // Allocate a selection buffer of uints. Format for returned hits is: // {uint32: n_names}{uint32: minimunm depth}{uint32: maximum depth} // {unit32[n_names]: name_stack} // n_names is the depth of the name stack at the time of the hit. // minimum and maximum depth are the minimum and maximum values in the // depth buffer scaled between 0 and 2^32-1. (source is [0,1]) // name_stack is the full contents of the name stack at the time of the // hit. size_t hit_buffer_size = std::max( (layer_world.size()+layer_world_transparent.size())*4, world_extent.get_select_buffer_depth()); // Allocate an exception-safe buffer for the GL to talk back to us. scoped_array hit_buffer( new unsigned int[hit_buffer_size]); // unsigned int hit_buffer[hit_buffer_size]; // Allocate a std::vector > to lookup names // as they are rendered. std::vector > name_table; // Pass the name stack to OpenGL with glSelectBuffer. glSelectBuffer( hit_buffer_size, (GLuint*)hit_buffer.get()); // Enter selection mode with glRenderMode glRenderMode( GL_SELECT); glClear( GL_DEPTH_BUFFER_BIT); // Clear the name stack with glInitNames(), raise the height of the name // stack with glPushName() exactly once. glInitNames(); glPushName(0); // Initialize the picking matrix. GLint viewport_bounds[4] = { 0, 0, view_width, view_height }; glMatrixMode( GL_PROJECTION); glLoadIdentity(); gluPickMatrix( (float)x, (float)(view_height - y), d_pixels, d_pixels, viewport_bounds); view scene_geometry( internal_forward.norm(), center, view_width, view_height, forward_changed, gcf, gcfvec, gcf_changed, glext); scene_geometry.lod_adjust = lod_adjust; world_to_view_transform( scene_geometry, 0, true); // Iterate across the world, rendering each body for picking. std::list >::iterator i = layer_world.begin(); std::list >::iterator i_end = layer_world.end(); while (i != i_end) { glLoadName( name_table.size()); name_table.push_back( *i); { (*i)->gl_pick_render( scene_geometry); } ++i; } std::vector >::iterator j = layer_world_transparent.begin(); std::vector >::iterator j_end = layer_world_transparent.end(); while (j != j_end) { glLoadName( name_table.size()); name_table.push_back( *j); { (*j)->gl_pick_render( scene_geometry); } ++j; } // Return the name stack to the bottom with glPopName() exactly once. glPopName(); // Exit selection mode, return to normal rendering rendering. (collects // the number of hits at this time). size_t n_hits = glRenderMode( GL_RENDER); check_gl_error(); // Lookup the name to get the shared_ptr associated with it. // The farthest point away in the depth buffer. double best_pick_depth = 1.0; unsigned int* hit_record = hit_buffer.get(); unsigned int* const hit_buffer_end = hit_buffer.get() + hit_buffer_size; while (n_hits > 0 && hit_record < hit_buffer_end) { unsigned int n_names = hit_record[0]; if (hit_record + 3 + n_names > hit_buffer_end) break; double min_hit_depth = static_cast(hit_record[1]) / 0xffffffffu; if (min_hit_depth < best_pick_depth) { best_pick_depth = min_hit_depth; best_pick = name_table[*(hit_record+3)]; if (n_names > 1) { // Then the picked object is the child of a frame. frame* ref_frame = dynamic_cast(best_pick.get()); assert(ref_frame != NULL); best_pick = ref_frame->lookup_name( hit_record + 4, hit_record + 3 + n_names); } } hit_record += 3 + n_names; n_hits--; } if (hit_record > hit_buffer_end) VPYTHON_CRITICAL_ERROR( "More objects were picked than could be reported by the GL." " The hit buffer size was too small."); tmatrix modelview; modelview.gl_modelview_get(); tmatrix projection; projection.gl_projection_get(); gluUnProject( x, view_height - y, best_pick_depth, modelview.matrix_addr(), projection.matrix_addr(), viewport_bounds, &pickpos.x, &pickpos.y, &pickpos.z); // TODO: Replace the calls to gluUnProject() with own tmatrix inverse // and such for optimization vector tcenter; gluProject( center.x*gcf, center.y*gcf, center.z*gcf, modelview.matrix_addr(), projection.matrix_addr(), viewport_bounds, &tcenter.x, &tcenter.y, &tcenter.z); gluUnProject( x, view_height - y, tcenter.z, modelview.matrix_addr(), projection.matrix_addr(), viewport_bounds, &mousepos.x, &mousepos.y, &mousepos.z); } catch (gl_error e) { std::ostringstream msg; msg << "OpenGL error: " << e.what() << ", aborting.\n"; VPYTHON_CRITICAL_ERROR( msg.str()); std::exit(1); } return boost::make_tuple( best_pick, pickpos / gcf, mousepos / gcf); } void display_kernel::gl_free() { VPYTHON_NOTE( "Releasing GL resources"); try { clear_gl_error(); on_gl_free.shutdown(); check_gl_error(); } catch (gl_error& error) { VPYTHON_CRITICAL_ERROR( "Caught OpenGL error during shutdown: " + std::string(error.what()) + "; Continuing with the shutdown."); } VPYTHON_NOTE( "GL resource release complete"); } void display_kernel::allow_spin(bool b) { spin_allowed = b; } bool display_kernel::spin_is_allowed(void) const { return spin_allowed; } void display_kernel::allow_zoom(bool b) { zoom_allowed = b; } bool display_kernel::zoom_is_allowed(void) const { return zoom_allowed; } void display_kernel::set_up( const vector& n_up) { if (n_up == vector()) throw std::invalid_argument( "Up cannot be zero."); vector v = n_up.norm(); if (v.cross(internal_forward) == vector()) { // if internal_forward parallel to new up, move it away from new up if (v.cross(forward) == vector()) { // old internal_forward was not parallel to old up internal_forward = (forward - 0.0001*up).norm(); } else { internal_forward = forward; } } up = v; } shared_vector& display_kernel::get_up() { return up; } void display_kernel::set_forward( const vector& n_forward) { if (n_forward == vector()) throw std::invalid_argument( "Forward cannot be zero."); vector v = n_forward.norm(); if (v.cross(up) == vector()) { // if new forward parallel to up, move internal_forward away from up // old internal_forward was not parallel to up internal_forward = ( v.dot(up)*up + 0.0001*up.cross(internal_forward.cross(up)) ).norm(); } else { // since new forward not parallel to up, new forward is okay internal_forward = v; } forward = v; forward_changed = true; } shared_vector& display_kernel::get_forward() { return forward; } void display_kernel::set_scale( const vector& n_scale) { if (n_scale.x == 0.0 || n_scale.y == 0.0 || n_scale.z == 0.0) throw std::invalid_argument( "The scale of each axis must be non-zero."); vector n_range = vector( 1.0/n_scale.x, 1.0/n_scale.y, 1.0/n_scale.z); set_range( n_range ); } vector display_kernel::get_scale() { if (autoscale || !range.nonzero()) throw std::logic_error("Reading .scale and .range is not supported when autoscale is enabled."); return vector( 1.0/range.x, 1.0/range.y, 1.0/range.z ); } void display_kernel::set_center( const vector& n_center) { center = n_center; } shared_vector& display_kernel::get_center() { return center; } void display_kernel::set_fov( double n_fov) { if (n_fov == 0.0) throw std::invalid_argument( "Orthogonal projection is not supported."); else if (n_fov < 0.0 || n_fov >= M_PI) throw std::invalid_argument( "attribute visual.display.fov must be between 0.0 and math.pi " "(exclusive)"); fov = n_fov; } double display_kernel::get_fov() { return fov; } void display_kernel::set_lod(int n_lod) { if (n_lod > 0 || n_lod < -6 ) throw std::invalid_argument( "attribute visual.display.lod must be between -6 and 0"); lod_adjust = n_lod; } int display_kernel::get_lod() { return lod_adjust; } void display_kernel::set_uniform( bool n_uniform) { uniform = n_uniform; } bool display_kernel::is_uniform() { return uniform; } void display_kernel::set_background( const rgb& n_background) { background = n_background; } rgb display_kernel::get_background() { return background; } void display_kernel::set_foreground( const rgb& n_foreground) { foreground = n_foreground; } rgb display_kernel::get_foreground() { return foreground; } void display_kernel::set_autoscale( bool n_autoscale) { if (!n_autoscale && autoscale) { // Autoscale is disabled, but range_auto remains // set to the current autoscaled scene, until and unless // range is set explicitly. recalc_extent(); range = vector(0,0,0); } autoscale = n_autoscale; } bool display_kernel::get_autoscale() { return autoscale; } bool display_kernel::get_autocenter() { return autocenter; } void display_kernel::set_autocenter( bool n_autocenter) { autocenter = n_autocenter; } void display_kernel::set_show_rendertime( bool show) { show_rendertime = show; } bool display_kernel::is_showing_rendertime() { return show_rendertime; } void display_kernel::set_ambient_f( float a) { ambient = rgb( a, a, a); } void display_kernel::set_ambient( const rgb& a) { ambient = a; } rgb display_kernel::get_ambient() { return ambient; } void display_kernel::set_range_d( double r) { set_range( vector(r,r,r) ); } void display_kernel::set_range( const vector& n_range) { if (n_range.x == 0.0 || n_range.y == 0.0 || n_range.z == 0.0) throw std::invalid_argument( "attribute visual.display.range may not be zero."); autoscale = false; range = n_range; range_auto = 0.0; } vector display_kernel::get_range() { if (autoscale || !range.nonzero()) throw std::logic_error("Reading .scale and .range is not supported when autoscale is enabled."); return range; } float display_kernel::get_stereodepth() { return stereodepth; } void display_kernel::set_stereodepth( float n_stereodepth) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); else stereodepth = n_stereodepth; } void display_kernel::set_stereomode( std::string mode) { if (mode == "nostereo") stereo_mode = NO_STEREO; else if (mode == "active") stereo_mode = ACTIVE_STEREO; else if (mode == "passive") stereo_mode = PASSIVE_STEREO; else if (mode == "crosseyed") stereo_mode = CROSSEYED_STEREO; else if (mode == "redblue") stereo_mode = REDBLUE_STEREO; else if (mode == "redcyan") stereo_mode = REDCYAN_STEREO; else if (mode == "yellowblue") stereo_mode = YELLOWBLUE_STEREO; else if (mode == "greenmagenta") stereo_mode = GREENMAGENTA_STEREO; else throw std::invalid_argument( "Unimplemented or invalid stereo mode"); } std::string display_kernel::get_stereomode() { switch (stereo_mode) { case NO_STEREO: return "nostereo"; case ACTIVE_STEREO: return "active"; case PASSIVE_STEREO: return "passive"; case CROSSEYED_STEREO: return "crosseyed"; case REDBLUE_STEREO: return "redblue"; case REDCYAN_STEREO: return "redcyan"; case YELLOWBLUE_STEREO: return "yellowblue"; case GREENMAGENTA_STEREO: return "greenmagenta"; default: // Not strictly required, this just silences a warning about control // reaching the end of a non-void funciton. return "nostereo"; } } std::vector > display_kernel::get_objects() const { std::vector > ret; ret.insert( ret.end(), layer_world.begin(), layer_world.end() ); ret.insert( ret.end(), layer_world_transparent.begin(), layer_world_transparent.end() ); // ret[i]->get_children appends the immediate children of ret[i] to ret. Since // ret.size() keeps increasing, we keep going until we have all the objects in the tree. for(size_t i=0; iget_children(ret); return ret; } std::string display_kernel::info() { if (!extensions) return std::string( "Renderer inactive.\n"); else { std::string s; s += "OpenGL renderer active.\n Vendor: " + vendor + "\n Version: " + version + "\n Renderer: " + renderer + "\n Extensions: "; // this->extensions is a list of extensions std::ostringstream buffer; std::copy( extensions->begin(), extensions->end(), std::ostream_iterator( buffer, "\n")); s += buffer.str(); return s; } } void display_kernel::set_x( float n_x) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); else window_x = (int)n_x; } float display_kernel::get_x() { return (float)window_x; } void display_kernel::set_y( float n_y) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); else window_y = (int)n_y; } float display_kernel::get_y() { return (float)window_y; } void display_kernel::set_width( float w) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); else window_width = (int)w; } float display_kernel::get_width() { return (float)window_width; } void display_kernel::set_height( float h) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); else window_height = (int)h; } float display_kernel::get_height() { return (float)window_height; } void display_kernel::set_visible( bool vis) { if (!vis) explicitly_invisible = true; if (vis != visible) { visible = vis; set_display_visible( this, visible ); activate( vis ); // Wait for (in)activation to complete python::gil_release gil; VPYTHON_NOTE( "display_kernel::set_visible -- did gil_release gil"); lock L( realize_lock ); VPYTHON_NOTE( "display_kernel::set_visible -- executed lock"); VPYTHON_NOTE( "display_kernel::set_visible -- next, enter while loop"); while ( realized != vis ) { VPYTHON_NOTE( "display_kernel::set_visible - waiting1"); realize_condition.wait( L ); VPYTHON_NOTE( "display_kernel::set_visible - waiting2"); } VPYTHON_NOTE( "display_kernel::set_visible - finished"); } } bool display_kernel::get_visible() { return visible; } void display_kernel::set_title( std::string n_title) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); else title = n_title; } std::string display_kernel::get_title() { return title; } bool display_kernel::is_fullscreen() { return fullscreen; } void display_kernel::set_fullscreen( bool fs) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); else fullscreen = fs; } bool display_kernel::get_exit() { return exit; } void display_kernel::set_exit(bool b) { exit = b; } bool display_kernel::is_showing_toolbar() { return show_toolbar; } void display_kernel::set_show_toolbar( bool fs) { if (visible) throw std::runtime_error( "Cannot change parameters of an active window"); show_toolbar = fs; } cursor_object* display_kernel::get_cursor() { implicit_activate(); return &cursor; } mouse_t* display_kernel::get_mouse() { implicit_activate(); return &mouse.get_mouse(); } atomic_queue* display_kernel::get_kb() { implicit_activate(); return &keys; } void display_kernel::set_selected( shared_ptr d ) { selected = d; } shared_ptr display_kernel::get_selected() { return selected; } bool display_kernel::hasExtension( const std::string& ext ) { return extensions->find( ext ) != extensions->end(); } display_kernel::EXTENSION_FUNCTION display_kernel::getProcAddress( const char* x ) { if ( !strcmp(x, "display_kernel::getProcAddress" ) ) return notImplemented; return NULL; } } // !namespace cvisual visual-5.12_release/src/core/sphere.cpp0000644000175000017500000000617211107137734015110 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "sphere.hpp" #include "util/quadric.hpp" #include "util/errors.hpp" #include "util/icososphere.hpp" #include "util/gl_enable.hpp" #include namespace cvisual { displaylist sphere::lod_cache[6]; sphere::sphere() { } sphere::sphere( const sphere& other) : axial(other) { } sphere::~sphere() { } void sphere::gl_pick_render( const view& geometry) { if (degenerate()) return; init_model(); clear_gl_error(); gl_matrix_stackguard guard; model_world_transform( geometry.gcf, get_scale() ).gl_mult(); lod_cache[0].gl_render(); check_gl_error(); } void sphere::gl_render( const view& geometry) { if (degenerate()) return; init_model(); clear_gl_error(); // coverage is the radius of this sphere in pixels: double coverage = geometry.pixel_coverage( pos, radius); int lod = 0; if (coverage < 0) // Behind the camera, but still visible. lod = 4; else if (coverage < 30) lod = 0; else if (coverage < 100) lod = 1; else if (coverage < 500) lod = 2; else if (coverage < 5000) lod = 3; else lod = 4; lod += geometry.lod_adjust; // allow user to reduce level of detail if (lod > 5) lod = 5; else if (lod < 0) lod = 0; gl_matrix_stackguard guard; model_world_transform( geometry.gcf, get_scale() ).gl_mult(); color.gl_set(opacity); if (translucent()) { // Spheres are convex, so we don't need to sort gl_enable cull_face( GL_CULL_FACE); // Render the back half (inside) glCullFace( GL_FRONT ); lod_cache[lod].gl_render(); // Render the front half (outside) glCullFace( GL_BACK ); lod_cache[lod].gl_render(); } else { // Render a simple sphere. lod_cache[lod].gl_render(); } check_gl_error(); } void sphere::grow_extent( extent& e) { e.add_sphere( pos, radius); e.add_body(); } void sphere::init_model() { if (lod_cache[0]) return; clear_gl_error(); quadric sph; lod_cache[0].gl_compile_begin(); sph.render_sphere( 1.0, 13, 7); lod_cache[0].gl_compile_end(); lod_cache[1].gl_compile_begin(); sph.render_sphere( 1.0, 19, 11); lod_cache[1].gl_compile_end(); lod_cache[2].gl_compile_begin(); sph.render_sphere( 1.0, 35, 19); lod_cache[2].gl_compile_end(); lod_cache[3].gl_compile_begin(); sph.render_sphere( 1.0, 55, 29); lod_cache[3].gl_compile_end(); lod_cache[4].gl_compile_begin(); sph.render_sphere( 1.0, 70, 34); lod_cache[4].gl_compile_end(); // Only for the very largest bodies. lod_cache[5].gl_compile_begin(); sph.render_sphere( 1.0, 140, 69); lod_cache[5].gl_compile_end(); check_gl_error(); } vector sphere::get_scale() { return vector( radius, radius, radius); } bool sphere::degenerate() { return !visible || radius == 0.0; } void sphere::get_material_matrix(const view&, tmatrix& out) { out.translate( vector(.5,.5,.5) ); vector scale = get_scale(); out.scale( scale * (.5 / std::max(scale.x, std::max(scale.y, scale.z))) ); } PRIMITIVE_TYPEINFO_IMPL(sphere) } // !namespace cvisual visual-5.12_release/src/core/CVS/0000777000175000017500000000000011240651150013616 500000000000000visual-5.12_release/src/core/CVS/Entries0000644000175000017500000000167511243332661015105 00000000000000/.cvsignore/1.1/Sun Dec 5 20:06:29 2004// /arrow.cpp/1.32/Thu Jun 18 04:27:43 2009// /axial.cpp/1.4/Wed Aug 13 02:54:26 2008// /box.cpp/1.33/Wed Nov 12 19:38:58 2008// /cone.cpp/1.23/Thu Nov 13 16:36:48 2008// /cylinder.cpp/1.22/Thu Nov 13 16:36:48 2008// /display_kernel.cpp/1.102/Wed May 13 23:01:39 2009// /ellipsoid.cpp/1.14/Fri Dec 5 20:11:14 2008// /frame.cpp/1.37/Thu Aug 20 20:44:33 2009// /label.cpp/1.43/Sun Nov 23 19:54:04 2008// /light.cpp/1.1/Fri Sep 19 04:47:09 2008// /material.cpp/1.11/Wed Nov 5 16:53:17 2008// /mouse_manager.cpp/1.14/Thu May 14 23:53:03 2009// /mouseobject.cpp/1.16/Sun Apr 5 02:57:41 2009// /primitive.cpp/1.17/Wed Aug 13 15:27:21 2008// /pyramid.cpp/1.18/Wed Aug 13 02:54:26 2008// /rectangular.cpp/1.6/Fri Dec 5 20:11:14 2008// /renderable.cpp/1.31/Sun Sep 21 20:16:12 2008// /ring.cpp/1.35/Thu Nov 13 16:36:48 2008// /sphere.cpp/1.34/Fri Nov 14 00:01:32 2008// /text.cpp/1.9/Tue Dec 23 17:30:16 2008// D/util//// visual-5.12_release/src/core/CVS/Root0000644000175000017500000000011111240651150014371 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/src/core/CVS/Repository0000644000175000017500000000002711240651150015633 00000000000000vpython-core2/src/core visual-5.12_release/src/core/text.cpp0000644000175000017500000001271511124220050014565 00000000000000#include "text.hpp" #include "font_renderer.hpp" #include "util/gl_enable.hpp" #include "util/errors.hpp" #include "boost/algorithm/string.hpp" namespace cvisual { using std::wstring; typedef std::map< std::pair, boost::shared_ptr > fontcache_t; fontcache_t font_cache; font::font( font_renderer* fr ) : renderer(fr) {} boost::shared_ptr font::find_font( const wstring& desc, int height ) { if (height <= 0) height = 13; std::vector fonts; if (desc.size()) boost::split( fonts, desc, boost::is_any_of(L",") ); // normalize font names for(size_t i=0; i real_fonts; for(size_t i=0; i& f = font_cache[ std::make_pair( fonts[i], height) ]; if (!f) { f.reset( new font( new font_renderer( fonts[i], height ) ) ); f->self = f; } if ( f->renderer->ok() ) return f; } throw std::logic_error( "Platform font_renderer doesn't recognize required generic font names." ); } boost::shared_ptr font::lay_out( const wstring& text ) { shared_ptr me( self ); return boost::shared_ptr( new layout( me, text ) ); } layout::layout( const boost::shared_ptr& font, const wstring& text ) : tx( font, text ) { } vector layout::extent( const view& v ) { tx.gl_activate(v); //< a little tacky return vector( tx.width, tx.height ); } void layout::gl_render( const view& v, const vector& pos_ll ) { gl_enable enTex( tx.enable_type() ); tx.gl_activate(v); glTranslated( pos_ll.x, pos_ll.y, pos_ll.z ); if (tx.internal_format == GL_ALPHA) { // Simple antialiasing glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); draw_quad(); } else { // For color antialiasing, we want to render "spectral alpha", i.e. // framebuffer = framebuffer * (1-texture) + color * texture // OpenGL doesn't support spectral alpha, so we do it in two passes: // framebuffer = framebuffer * (1-texture) // framebuffer = framebuffer + color * texture glBlendFunc( GL_ZERO, GL_ONE_MINUS_SRC_COLOR ); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); draw_quad(); glBlendFunc( GL_ONE, GL_ONE ); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); draw_quad(); } glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); check_gl_error(); } void layout::draw_quad() { glBegin(GL_QUADS); for(int i=0; i<4; i++) { glTexCoord2d( tx.tcoord[i].x, tx.tcoord[i].y ); tx.coord[i].gl_render(); } glEnd(); } layout_texture::layout_texture( const boost::shared_ptr& _font, const wstring& _text ) : text_font(_font), text(_text) { damage(); } layout_texture::~layout_texture() { } void layout_texture::gl_init( const view& v ) { int type = enable_type(); gl_enable tex( type ); GLuint handle; glGenTextures(1, &handle); set_handle( v, handle ); glBindTexture(type, handle); // No filtering - we want the exact pixels from the texture glTexParameteri( type, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri( type, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // Calls this->set_image() text_font->renderer->gl_render_to_texture( v, text, *this ); } void layout_texture::set_image( int width, int height, int gl_internal_format, int gl_format, int gl_type, int alignment, void* data ) { int bottom_up = height < 0; if (height < 0) height = -height; int type = enable_type(); int tx_width, tx_height; double tc_x, tc_y; if ( type == GL_TEXTURE_2D ) { tx_width = next_power_of_two( width ); tx_height = next_power_of_two( height ); tc_x = (double)width / tx_width; tc_y = (double)height / tx_height; } else { assert( false ); // TODO: Rectangular texture support } glPixelStorei( GL_UNPACK_ALIGNMENT, alignment ); glPixelStorei( GL_UNPACK_ROW_LENGTH, width ); check_gl_error(); /*{ std::ostringstream os; os << "glTexImage2D( " << type << ", 0, " << gl_internal_format << ", " << tx_width << ", " << tx_height << ", 0, " << gl_format << ", " << gl_type << ", NULL );\n"; write_stderr( os.str() ); }*/ glTexImage2D( type, 0, gl_internal_format, tx_width, tx_height, 0, gl_format, gl_type, NULL ); check_gl_error(); glTexSubImage2D(type, 0, 0, 0, width, height, gl_format, gl_type, data); check_gl_error(); glPixelStorei( GL_UNPACK_ALIGNMENT, 4 ); glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); this->width = width; this->height = height; this->internal_format = gl_internal_format; coord[0] = vector(); coord[1] = vector(0, -height); coord[2] = vector(width, -height); coord[3] = vector(width, 0); for(int i=0; i<4; i++) coord[i] -= vector(.001, .001); // mask artifacts when rendering origin is exactly at a pixel center tcoord[0^bottom_up] = vector(); tcoord[1^bottom_up] = vector(0, tc_y); tcoord[2^bottom_up] = vector(tc_x, tc_y); tcoord[3^bottom_up] = vector(tc_x, 0); } } // namespace cvisualvisual-5.12_release/src/osx-symbols.txt0000644000175000017500000000001510437640672015221 00000000000000_initcvisual visual-5.12_release/src/linux-symbols.map0000644000175000017500000000006610432371462015504 00000000000000CVISUAL_0_0 { global: initcvisual; local: *; }; visual-5.12_release/src/python/0000777000175000017500000000000011240651152013556 500000000000000visual-5.12_release/src/python/wrap_display_kernel.cpp0000644000175000017500000002602411202650523020237 00000000000000// This file requires 182 MB to compile (optimizing). // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "display_kernel.hpp" // Apparently check gets defined somewhere in including display.hpp #include "mouseobject.hpp" #include "util/errors.hpp" #include "python/gil.hpp" #include #include #include #include #include #include #include #include #include #include // Must include display.hpp late because on the Mac it includes Carbon.h // which defines "check" which causes trouble in boost/python/extract.hpp #include "display.hpp" namespace cvisual { // The callback function that is invoked from the display class when // shutting-down. Prior to Jan. 23, 2008, force_py_exit locked and posted // a callback to exit, but this failed if the program was sitting // at scene.mouse.getclick(). Simply calling exit directly seems // to work fine. static void force_py_exit(void) { python::gil_lock gil; VPYTHON_NOTE("Exiting"); std::exit(0); } namespace py = boost::python; template < class Seq > struct container_to_tuple { static PyObject* convert( const Seq& items) { PyObject* p = PyTuple_New( items.size() ); int index = 0; for( typename Seq::const_iterator item = items.begin(); item != items.end(); ++item, ++index ) { py::object o( *item ); Py_INCREF(o.ptr()); PyTuple_SET_ITEM(p, index, o.ptr()); } return p; } }; // I must not know how to use Boost.Python yet, because I need this: class py_base_display_kernel : public display_kernel {}; // A display implemented in python (e.g. to use PyOpenGL or PyObjC) class py_display_kernel : public py_base_display_kernel { public: PyObject* self; py_display_kernel( PyObject* self ) : self(self) {} // Delegates key display_kernel virtual methods to Python virtual void activate( bool active ) { boost::python::call_method( self, "_activate", active ); } virtual EXTENSION_FUNCTION getProcAddress( const char* name ) { return (EXTENSION_FUNCTION)boost::python::call_method( self, "_getProcAddress", name ); } intptr_t base_getProcAddress( const char* name ) { return (intptr_t)display_kernel::getProcAddress(name); } // Utility methods for Python subclasses bool report_mouse_state(py::object is_button_down, int cursor_client_x, int cursor_client_y, py::object shift_state, bool can_lock_mouse ) { int button_len = boost::python::len( is_button_down ); boost::scoped_array buttons( new bool[button_len] ); for(int b = 0; b( is_button_down[b] ); int shift_len = boost::python::len( shift_state ); boost::scoped_array shift( new bool[shift_len] ); for(int b=0; b( shift_state[b] ); mouse.report_mouse_state( button_len, &buttons[0], cursor_client_x, cursor_client_y, shift_len, &shift[0], can_lock_mouse ); return mouse.is_mouse_locked(); } }; namespace { boost::python::object get_buttons( const mousebase* This) { std::string* ret = This->get_buttons(); if (ret) { boost::python::object py_ret( *ret); delete ret; return py_ret; } else { return boost::python::object(); } } template boost::python::object test_state( const mousebase* This) { if ((This->*f)()) { return get_buttons(This); } else return boost::python::object(); } using namespace boost::python; BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS( pick_overloads, display_kernel::pick, 2, 3) BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS( mousebase_project_partial_overloads, mousebase::project2, 1, 2) } // !namespace (unnamed) void wrap_display_kernel(void) { using boost::noncopyable; py::class_( "_display_kernel", no_init) // Functions for the internal use of renderable and light classes. .def( "add_renderable", &display_kernel::add_renderable) .def( "remove_renderable", &display_kernel::remove_renderable) .add_property( "up", py::make_function( &display_kernel::get_up, py::return_internal_reference<>()), &display_kernel::set_up) .add_property( "forward", py::make_function( &display_kernel::get_forward, py::return_internal_reference<>()), &display_kernel::set_forward) .add_property( "scale", &display_kernel::get_scale, &display_kernel::set_scale) .add_property( "center", py::make_function( &display_kernel::get_center, py::return_internal_reference<>()), &display_kernel::set_center) .add_property( "fov", &display_kernel::get_fov, &display_kernel::set_fov) .add_property( "stereodepth", &display_kernel::get_stereodepth, &display_kernel::set_stereodepth) .add_property( "lod", &display_kernel::get_lod, &display_kernel::set_lod) .add_property( "uniform", &display_kernel::is_uniform, &display_kernel::set_uniform) .add_property( "background", &display_kernel::get_background, &display_kernel::set_background) .add_property( "foreground", &display_kernel::get_foreground, &display_kernel::set_foreground) .add_property( "autoscale", &display_kernel::get_autoscale, &display_kernel::set_autoscale) .add_property( "autocenter", &display_kernel::get_autocenter, &display_kernel::set_autocenter) .add_property( "stereo", &display_kernel::get_stereomode, &display_kernel::set_stereomode) .add_property( "show_rendertime", &display_kernel::is_showing_rendertime, &display_kernel::set_show_rendertime) .add_property( "userspin", &display_kernel::spin_is_allowed, &display_kernel::allow_spin) .add_property( "userzoom", &display_kernel::zoom_is_allowed, &display_kernel::allow_zoom) .def( "info", &display_kernel::info) .add_property( "x", &display_kernel::get_x, &display_kernel::set_x) .add_property( "y", &display_kernel::get_y, &display_kernel::set_y) .add_property( "width", &display_kernel::get_width, &display_kernel::set_width) .add_property( "height", &display_kernel::get_height, &display_kernel::set_height) .add_property( "title", &display_kernel::get_title, &display_kernel::set_title) .add_property( "fullscreen", &display_kernel::is_fullscreen, &display_kernel::set_fullscreen) // Omit toolbar for now; not yet available on Windows or Mac //.add_property( "toolbar", &display_kernel::is_showing_toolbar, // &display_kernel::set_show_toolbar) .add_property( "visible", &display_kernel::get_visible, &display_kernel::set_visible) .add_property( "exit", &display_kernel::get_exit, &display_kernel::set_exit) .add_property( "cursor", py::make_function( &display_kernel::get_cursor, py::return_internal_reference<>())) .add_property( "kb", py::make_function( &display_kernel::get_kb, py::return_internal_reference<>())) .add_property( "mouse", py::make_function( &display_kernel::get_mouse, py::return_internal_reference<>())) .def( "set_selected", &display_kernel::set_selected) .staticmethod( "set_selected") .def( "get_selected", &display_kernel::get_selected) .staticmethod( "get_selected") .def( "_set_ambient", &display_kernel::set_ambient_f) .def( "_set_ambient", &display_kernel::set_ambient) .def( "_get_ambient", &display_kernel::get_ambient) .def( "_set_range", &display_kernel::set_range_d) .def( "_set_range", &display_kernel::set_range) .def( "_get_range", &display_kernel::get_range) .def( "_get_objects", &display_kernel::get_objects) .def_readwrite( "enable_shaders", &display_kernel::enable_shaders) ; class_, noncopyable> ( "display_kernel") // Default implementations of key override methods .def( "_getProcAddress", &py_display_kernel::base_getProcAddress ) // Functions for extending this type in Python. .def( "render_scene", &display_kernel::render_scene ) .def( "report_resize", &display_kernel::report_resize ) .def( "report_mouse_state", &py_display_kernel::report_mouse_state ) .def( "report_closed", &display_kernel::report_closed ) .def( "pick", &display_kernel::pick, pick_overloads( py::args( "x", "y", "pixels"))) ; typedef atomic_queue kb_object; py::class_< kb_object, noncopyable>( "kb_object", no_init) .def( "getkey", &kb_object::py_pop, "Returns the next key press value.") .add_property( "keys", &kb_object::size) ; py::class_< cursor_object, noncopyable>( "cursor_object", no_init) .add_property( "visible", &cursor_object::get_visible, &cursor_object::set_visible) ; py::class_, noncopyable>( "display") ; py::def( "_set_dataroot", &display::set_dataroot); py::to_python_converter< std::vector >, container_to_tuple< std::vector > > >(); // Free functions for exiting the system. // These are undocumented at the moment, and are only used internally. def( "waitclose", &display_kernel::waitWhileAnyDisplayVisible, "Blocks until all of the Displays are closed by the user."); gui_main::on_shutdown.connect( &force_py_exit ); class_( "clickbase", no_init) .def( "project", &mousebase::project2, mousebase_project_partial_overloads( args("normal", "point"))) .def( "project", &mousebase::project1, args("normal", "d"), "project the mouse pointer to the plane specified by the normal " "vector 'normal' that is either:\n-'d' distance away from the origin" " ( click.project( normal=vector, d=scalar)), or\n-includes the " "point 'point' ( click.project( normal=vector, point=vector))\n" "or passes through the origin ( click.project( normal=vector)).") .add_property( "pos", &mousebase::get_pos) .add_property( "pick", &mousebase::get_pick) .add_property( "pickpos", &mousebase::get_pickpos) .add_property( "camera", &mousebase::get_camera) .add_property( "ray", &mousebase::get_ray) .add_property( "button", &get_buttons) .add_property( "press", &test_state<&mousebase::is_press>) .add_property( "release", &test_state<&mousebase::is_release>) .add_property( "click", &test_state<&mousebase::is_click>) .add_property( "drag", &test_state<&mousebase::is_drag>) .add_property( "drop", &test_state<&mousebase::is_drop>) .add_property( "shift", &mousebase::is_shift) .add_property( "alt", &mousebase::is_alt) .add_property( "ctrl", &mousebase::is_ctrl) ; class_< event, boost::shared_ptr, bases, noncopyable> ( "click_object", "An event generated from mouse actions.", no_init) ; class_< mouse_t, boost::shared_ptr, bases, noncopyable> ( "mouse_object", "This class provides access to the mouse.", no_init) .def( "getclick", &mouse_t::pop_click) .add_property( "clicked", &mouse_t::num_clicks) .def( "getevent", &mouse_t::pop_event) .add_property( "events", &mouse_t::num_events, &mouse_t::clear_events) ; } } // !namespace cvisual; visual-5.12_release/src/python/num_util.cpp0000644000175000017500000002104211067210666016041 00000000000000// Copyright 2006 Phil Austin (http://www.eos.ubc.ca/personal/paustin) // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #define IMPORT_ARRAY #include "python/num_util.hpp" #include #include /* num_util.h and num_util.cpp were obtained from: * http://www.eos.ubc.ca/research/clouds/num_util.html on 2003-12-17 under the * terms and conditions of the Boost license version 1.0. num_util was written * by Rhys Goldstein, Chris Seymour and Phil Austin. * Questions or comments about num_util should be directed to Phil Austin at * paustin@eos.ubs.ca. */ /* Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ namespace { const char* rcsid = "$Id: num_util.cpp,v 1.9 2008/09/26 16:45:42 dscherer Exp $"; } // Local function prototypes using namespace boost::python; namespace cvisual { namespace python { static int rank(const numeric::array& arr); } } // !namespace cvisual::python namespace cvisual{ namespace python { static bool arrayapi_initialized = false; void init_numpy() { import_array(); arrayapi_initialized = true; } size_t typesize( NPY_TYPES t) { size_t result = 0; switch (t) { case NPY_BYTE: result = sizeof (char); break; case NPY_UBYTE: result = sizeof (unsigned char); break; case NPY_SHORT: result = sizeof (short); break; case NPY_INT: result = sizeof (int); break; case NPY_LONG: result = sizeof (long); break; case NPY_FLOAT: result = sizeof (float); break; case NPY_DOUBLE: result = sizeof (double); break; case NPY_CFLOAT: result = sizeof (float)*2; break; case NPY_CDOUBLE: result = sizeof (double)*2; break; default: bool type_is_recognized = false; assert( type_is_recognized == true); } return result; } typedef KindStringMap::value_type KindStringMapEntry; KindStringMapEntry kindStringMapEntries[] = { KindStringMapEntry(NPY_CHAR, "NPY_CHAR"), KindStringMapEntry(NPY_UBYTE, "NPY_UBYTE"), KindStringMapEntry(NPY_BYTE, "NPY_BYTE"), KindStringMapEntry(NPY_SHORT, "NPY_SHORT"), KindStringMapEntry(NPY_INT, "NPY_INT"), KindStringMapEntry(NPY_LONG, "NPY_LONG"), KindStringMapEntry(NPY_FLOAT, "NPY_FLOAT"), KindStringMapEntry(NPY_DOUBLE, "NPY_DOUBLE"), KindStringMapEntry(NPY_CFLOAT, "NPY_CFLOAT"), KindStringMapEntry(NPY_CDOUBLE,"NPY_CDOUBLE"), KindStringMapEntry(NPY_OBJECT, "NPY_OBJECT"), KindStringMapEntry(NPY_NTYPES, "NPY_NTYPES"), KindStringMapEntry(NPY_NOTYPE ,"NPY_NOTYPE") }; typedef KindCharMap::value_type KindCharMapEntry; KindCharMapEntry kindCharMapEntries[] = { KindCharMapEntry(NPY_CHAR, 'c'), KindCharMapEntry(NPY_UBYTE, 'b'), KindCharMapEntry(NPY_BYTE, '1'), KindCharMapEntry(NPY_SHORT, 's'), KindCharMapEntry(NPY_INT, 'i'), KindCharMapEntry(NPY_LONG, 'l'), KindCharMapEntry(NPY_FLOAT, 'f'), KindCharMapEntry(NPY_DOUBLE, 'd'), KindCharMapEntry(NPY_CFLOAT, 'F'), KindCharMapEntry(NPY_CDOUBLE,'D'), KindCharMapEntry(NPY_OBJECT, 'O') }; typedef KindTypeMap::value_type KindTypeMapEntry; KindTypeMapEntry kindTypeMapEntries[] = { KindTypeMapEntry('c',NPY_CHAR), KindTypeMapEntry('b',NPY_UBYTE), KindTypeMapEntry('1',NPY_BYTE), KindTypeMapEntry('s',NPY_SHORT), KindTypeMapEntry('i',NPY_INT), KindTypeMapEntry('l',NPY_LONG), KindTypeMapEntry('f',NPY_FLOAT), KindTypeMapEntry('d',NPY_DOUBLE), KindTypeMapEntry('F',NPY_CFLOAT), KindTypeMapEntry('D',NPY_CDOUBLE), KindTypeMapEntry('O',NPY_OBJECT) }; int numStringEntries = sizeof(kindStringMapEntries)/sizeof(KindStringMapEntry); int numCharEntries = sizeof(kindCharMapEntries)/sizeof(KindCharMapEntry); int numTypeEntries = sizeof(kindTypeMapEntries)/sizeof(KindTypeMapEntry); using namespace boost::python; static KindStringMap kindstrings(kindStringMapEntries, kindStringMapEntries + numStringEntries); static KindCharMap kindchars(kindCharMapEntries, kindCharMapEntries + numCharEntries); static KindTypeMap kindtypes(kindTypeMapEntries, kindTypeMapEntries + numTypeEntries); //Create a Numeric array with dimensions dimens and Numeric type t numeric::array makeNum(const std::vector& dimens, NPY_TYPES t){ object obj(handle<>(PyArray_SimpleNew(dimens.size(), const_cast(&dimens[0]), t))); return extract(obj); } NPY_TYPES type(numeric::array arr){ return NPY_TYPES (PyArray_TYPE(arr.ptr())); } void check_type(numeric::array arr, NPY_TYPES expected_type){ NPY_TYPES actual_type = type(arr); if (actual_type != expected_type) { std::ostringstream stream; stream << "expected Numeric type " << kindstrings[expected_type] << ", found Numeric type " << kindstrings[actual_type] << std::ends; PyErr_SetString(PyExc_TypeError, stream.str().c_str()); throw_error_already_set(); } return; } // Return the number of dimensions static int rank(const numeric::array& arr) { if(!PyArray_Check(arr.ptr())){ PyErr_SetString(PyExc_ValueError, "expected a PyArrayObject"); throw_error_already_set(); } return PyArray_NDIM(arr.ptr()); // return ((PyArrayObject*) arr.ptr())->nd; } //Return the number of dimensions //int rank(numeric::array arr){ // //std::cout << "inside rank" << std::endl; // if(!PyArray_Check(arr.ptr())){ // PyErr_SetString(PyExc_ValueError, "expected a PyArrayObject"); // throw_error_already_set(); // } // return PyArray_NDIM(arr.ptr()); //} std::vector shape(numeric::array arr){ std::vector out_dims; if(!PyArray_Check(arr.ptr())){ PyErr_SetString(PyExc_ValueError, "expected a PyArrayObject"); throw_error_already_set(); } npy_intp* dims_ptr = PyArray_DIMS(arr.ptr()); int the_rank = rank(arr); for (int i = 0; i < the_rank; i++){ out_dims.push_back(*(dims_ptr + i)); } return out_dims; } bool iscontiguous(numeric::array arr) { // return arr.iscontiguous(); return PyArray_ISCONTIGUOUS(arr.ptr()); } void check_contiguous(numeric::array arr) { if (!iscontiguous(arr)) { PyErr_SetString(PyExc_RuntimeError, "expected a contiguous array"); throw_error_already_set(); } return; } //char* //data(const numeric::array& arr) //{ // if(!PyArray_Check(arr.ptr())){ // PyErr_SetString(PyExc_ValueError, "expected a PyArrayObject"); // throw_error_already_set(); // } // return ((PyArrayObject*) arr.ptr())->data; //} char* data(const numeric::array& arr){ if(!PyArray_Check(arr.ptr())){ PyErr_SetString(PyExc_ValueError, "expected a PyArrayObject"); throw_error_already_set(); } return PyArray_BYTES(arr.ptr()); } //static char* //data_impl_numeric(const numeric::array& arr) //{ // return ((PyArrayObject*) arr.ptr())->data; //} //Return a clone of this array with a new type numeric::array astype(numeric::array arr, NPY_TYPES t){ return (numeric::array) arr.astype(type2char(t)); } std::string type2string(NPY_TYPES t_type){ return kindstrings[t_type]; } char type2char(NPY_TYPES t_type){ return kindchars[t_type]; } NPY_TYPES char2type(char e_type){ return kindtypes[e_type]; } } } //cvisual python visual-5.12_release/src/python/arrayprim.cpp0000644000175000017500000001431311107137734016215 00000000000000#include "python/arrayprim.hpp" #include "python/slice.hpp" namespace cvisual { namespace python { using boost::python::object; using boost::python::make_tuple; using boost::python::tuple; template arrayprim_array::arrayprim_array() : array(NULL), length(0), allocated(256) { std::vector dims(2); dims[0] = allocated; dims[1] = 3; array::operator=( makeNum( dims, (NPY_TYPES)type_npy_traits::npy_type ) ); } template void arrayprim_array::set_length( size_t new_len ) { using cvisual::python::slice; size_t old_len = length; if (new_len < old_len ) { // Shrink, keeping the last points (for retain) //(*this)[ slice(0,new_len) ] = (*this)[ slice(old_len-new_len,old_len) ]; // Avoid array operations because they release the lock. memmove( data(0), data(old_len-new_len), sizeof(CTYPE) * new_len * 3 ); } if (!old_len && allocated) old_len = 1; // The very first point is meaningful even when length is 0; that's how an empty curve can have a color if (new_len > allocated) { // Expand allocated size, keeping old_len points std::vector dims(2); dims[0] = 2*(new_len-1); dims[1] = 3; array n_arr = makeNum( dims, (NPY_TYPES)type_npy_traits::npy_type ); std::memcpy( cvisual::python::data(n_arr), data(0), sizeof(CTYPE) * old_len * dims[1] ); array::operator=( n_arr ); // doesn't actually copy allocated = dims[0]; } if (new_len > old_len) { // Broadcast the last meaningful point over the new points (*this)[ slice( old_len, new_len ) ] = (*this)[ slice( old_len-1, old_len ) ]; } length = new_len; } template class arrayprim_array; template class arrayprim_array; //////////////////////////////// arrayprim::arrayprim() : count(0) { double* pos_i = pos.data(0); for(int i=0; i<3; i++) pos_i[i] = 0; } void arrayprim::set_length( size_t new_len ) { pos.set_length(new_len); count = new_len; } object arrayprim::get_pos() { return pos[all()]; } void arrayprim::set_pos( const double_array& n_pos ) { std::vector dims = shape( n_pos ); if (dims.size() == 1 && !dims[0]) { // e.g. pos = () set_length(0); return; } if (dims.size() != 2) { throw std::invalid_argument( "pos must be an Nx3 array"); } if (dims[1] == 2) { set_length( dims[0] ); pos[make_tuple(all(), slice(0,2))] = n_pos; pos[make_tuple(all(), 2)] = 0.0; return; } else if (dims[1] == 3) { set_length( dims[0] ); pos[all()] = n_pos; return; } else { throw std::invalid_argument( "pos must be an Nx3 array"); } } void arrayprim::set_pos_v( const vector& npos ) { set_length(1); pos[all()] = npos; } void arrayprim::set_x( const double_array& arg ) { if (shape(arg).size() != 1) throw std::invalid_argument("x must be a 1D array."); set_length( shape(arg)[0] ); pos[make_tuple( all(), 0)] = arg; } void arrayprim::set_y( const double_array& arg ) { if (shape(arg).size() != 1) throw std::invalid_argument("y must be a 1D array."); set_length( shape(arg)[0] ); pos[make_tuple( all(), 1)] = arg; } void arrayprim::set_z( const double_array& arg ) { if (shape(arg).size() != 1) throw std::invalid_argument("z must be a 1D array."); set_length( shape(arg)[0] ); pos[make_tuple( all(), 2)] = arg; } void arrayprim::set_x_d( const double x) { if (!count) set_length(1); pos[make_tuple( all(), 0)] = x; } void arrayprim::set_y_d( const double y) { if (!count) set_length(1); pos[make_tuple( all(), 1)] = y; } void arrayprim::set_z_d( const double z) { if (!count) set_length(1); pos[make_tuple( all(), 2)] = z; } void arrayprim::append( const vector& npos, int retain ) { if (retain >= 0 && count >= (size_t)retain) set_length(retain); // shifts arrays set_length( count+1); double* last_pos = pos.data( count-1 ); last_pos[0] = npos.x; last_pos[1] = npos.y; last_pos[2] = npos.z; } //////////////////////////////// arrayprim_color::arrayprim_color() { double* color_i = color.data(0); for(int i=0; i<3; i++) color_i[i] = 1.f; } void arrayprim_color::set_length( size_t new_len ) { color.set_length(new_len); arrayprim::set_length( new_len ); } object arrayprim_color::get_color() { return color[all()]; } void arrayprim_color::set_color( const double_array& n_color) { std::vector dims = shape(n_color); if (dims.size() == 1 && dims[0] == 3) { // A single color, broadcast across the entire (used) array. int npoints = (count) ? count : 1; color[slice( 0, npoints)] = n_color; return; } if (dims.size() == 2 && dims[1] == 3) { // An RGB chunk of color set_length(dims[0]); color[all()] = n_color; return; } throw std::invalid_argument( "color must be an Nx3 array"); } void arrayprim_color::set_red( const double_array& arg ) { if (shape(arg).size() != 1) throw std::invalid_argument("red must be a 1D array."); set_length( shape(arg)[0] ); color[make_tuple( all(), 0)] = arg; } void arrayprim_color::set_green( const double_array& arg ) { if (shape(arg).size() != 1) throw std::invalid_argument("green must be a 1D array."); set_length( shape(arg)[0] ); color[make_tuple( all(), 1)] = arg; } void arrayprim_color::set_blue( const double_array& arg ) { if (shape(arg).size() != 1) throw std::invalid_argument("blue must be a 1D array."); set_length( shape(arg)[0] ); color[make_tuple( all(), 2)] = arg; } void arrayprim_color::set_red_d( const double arg ) { int npoints = count ? count : 1; color[make_tuple(slice(0,npoints), 0)] = arg; } void arrayprim_color::set_green_d( const double arg ) { int npoints = count ? count : 1; color[make_tuple(slice(0,npoints), 1)] = arg; } void arrayprim_color::set_blue_d( const double arg ) { int npoints = count ? count : 1; color[make_tuple(slice(0,npoints), 2)] = arg; } void arrayprim_color::append( const vector& npos, const rgb& ncolor, int retain ) { append( npos, retain ); double* last_color = color.data( count-1 ); last_color[0] = ncolor.red; last_color[1] = ncolor.green; last_color[2] = ncolor.blue; } void arrayprim_color::append_rgb( const vector& npos, double red, double green, double blue, int retain) { append( npos, retain ); double* last_color = color.data( count-1 ); if (red != -1) last_color[0] = red; if (green != -1) last_color[1] = green; if (blue != -1) last_color[2] = blue; } } } // namespace cvisual::python visual-5.12_release/src/python/numeric_texture.cpp0000644000175000017500000002321411104430055017416 00000000000000// Copyright (c) 2006 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "python/numeric_texture.hpp" #include "util/gl_enable.hpp" #include "util/errors.hpp" #include "renderable.hpp" #include #include #include #include #include namespace cvisual { namespace python { namespace { GLenum gl_type_name( NPY_TYPES t) { switch (t) { case NPY_BYTE: return GL_BYTE; case NPY_UBYTE: return GL_UNSIGNED_BYTE; case NPY_SHORT: return GL_SHORT; case NPY_INT: return GL_INT; case NPY_FLOAT: return GL_FLOAT; default: return 1; } } boost::crc_32_type engine; } // !namespace (anonymous) numeric_texture::numeric_texture() : texdata(0), data_width(0), data_height(0), data_depth(0), data_channels(0), data_type(NPY_NOTYPE), data_textype( 0), data_mipmapped(true), data_antialias(false), data_clamp(false), tex_width(0), tex_height(0), tex_depth(0), tex_channels(0), tex_type(NPY_NOTYPE), tex_textype( 0), tex_mipmapped(true), tex_antialias(false), tex_clamp(false) { } numeric_texture::~numeric_texture() { } int numeric_texture::enable_type() const { return data_depth ? GL_TEXTURE_3D_EXT : GL_TEXTURE_2D; } bool numeric_texture::degenerate() const { return data_width == 0 || data_height == 0 || data_channels == 0 || data_type == NPY_NOTYPE; } bool numeric_texture::should_reinitialize(void) const { return ( data_channels != tex_channels || data_mipmapped != tex_mipmapped || data_clamp != tex_clamp || data_type != tex_type || ( !tex_mipmapped && (next_power_of_two(data_width) != tex_width || next_power_of_two(data_height) != tex_height || next_power_of_two(data_depth) != tex_depth) ) || ( tex_mipmapped && (data_width != tex_width || data_height != tex_height || data_depth != tex_depth) ) ); } void numeric_texture::gl_init( const view& v ) { if (degenerate()) return; int type = data_depth ? GL_TEXTURE_3D_EXT : GL_TEXTURE_2D; if (type == GL_TEXTURE_3D_EXT && !v.glext.EXT_texture3D) return; GLuint handle = get_handle(); if (!handle) { glGenTextures(1, &handle); set_handle( v, handle ); } glBindTexture(type, handle); if (data_mipmapped) { glTexParameteri( type, GL_TEXTURE_MIN_FILTER, data_antialias ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST); glTexParameteri( type, GL_TEXTURE_MAG_FILTER, data_antialias ? GL_LINEAR : GL_NEAREST); } else { glTexParameteri( type, GL_TEXTURE_MIN_FILTER, data_antialias ? GL_LINEAR : GL_NEAREST); glTexParameteri( type, GL_TEXTURE_MAG_FILTER, data_antialias ? GL_LINEAR : GL_NEAREST); } tex_antialias = data_antialias; glTexParameteri( type, GL_TEXTURE_WRAP_S, data_clamp ? GL_CLAMP : GL_REPEAT ); glTexParameteri( type, GL_TEXTURE_WRAP_T, data_clamp ? GL_CLAMP : GL_REPEAT ); glTexParameteri( type, GL_TEXTURE_WRAP_R, data_clamp ? GL_CLAMP : GL_REPEAT ); tex_clamp = data_clamp; check_gl_error(); // Something is damaged. Either the texture must be reinitialized // or just its data has changed. bool reinitialize = should_reinitialize(); GLenum internal_format; if (!data_textype) { switch (data_channels) { case 1: internal_format = GL_LUMINANCE; break; case 2: internal_format = GL_LUMINANCE_ALPHA; break; case 3: internal_format = GL_RGB; break; case 4: internal_format = GL_RGBA; break; default: // Won't ever happen internal_format = GL_RGB; } } else { internal_format = data_textype; switch (data_textype) { case GL_LUMINANCE: if (data_channels != 1) throw std::invalid_argument( "Specify luminance data with single values."); break; case GL_ALPHA: if (data_channels != 1) throw std::invalid_argument( "Specify opacity data with single values."); break; case GL_LUMINANCE_ALPHA: if (data_channels != 2) throw std::invalid_argument( "Specify luminance and opacity data with double values, [luminance,opacity]."); break; case GL_RGB: if (data_channels != 3) throw std::invalid_argument( "Specify RGB data with triple values, [r,g,b]."); break; case GL_RGBA: if (data_channels != 4) throw std::invalid_argument( "Specify RGB_opacity data with quadruple values, [r,g,b,opacity]."); break; case 0: default: // Won't ever happen break; } } tex_textype = internal_format; glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); if (data_mipmapped && !data_depth) { tex_width = data_width; tex_height = data_height; tex_depth = data_depth; tex_channels = data_channels; tex_type = data_type; tex_textype = data_textype; tex_mipmapped = true; gluBuild2DMipmaps( type, internal_format, tex_width, tex_height, internal_format, gl_type_name(tex_type), data(texdata)); } else { if (reinitialize) { tex_width = next_power_of_two(data_width); tex_height = next_power_of_two(data_height); tex_depth = data_depth ? next_power_of_two(data_depth) : 1; tex_channels = data_channels; tex_textype = data_textype; tex_type = data_type; tex_mipmapped = false; #ifdef __APPLE__ // Work around a bug in macbook pro nvidia drivers' glTexSubImage3D // GL_TEXTURE_STORAGE_HINT_APPLE = GL_STORAGE_CACHED_APPLE // See http://www.mailinglistarchive.com/mac-opengl@lists.apple.com/msg03035.html glTexParameteri(GL_TEXTURE_3D, 0x85BC, 0x85BE); #endif if (type == GL_TEXTURE_3D_EXT) { v.glext.glTexImage3D( type, 0, internal_format, tex_width, tex_height, tex_depth, 0, internal_format, gl_type_name(tex_type), NULL ); } else { glTexImage2D( type, 0, internal_format, tex_width, tex_height, 0, internal_format, gl_type_name( tex_type), NULL ); } } if (type == GL_TEXTURE_3D_EXT) { v.glext.glTexSubImage3D( type, 0, 0, 0, 0, data_width, data_height, data_depth, internal_format, gl_type_name(tex_type), data(texdata)); } else { glTexSubImage2D( type, 0, 0, 0, data_width, data_height, internal_format, gl_type_name(tex_type), data(texdata)); } } check_gl_error(); } void numeric_texture::gl_transform(void) { if (degenerate()) return; glMatrixMode( GL_TEXTURE); glLoadIdentity(); if (data_width != tex_width || data_height != tex_height) { float x_scale = float(data_width) / tex_width; float y_scale = float(data_height) / tex_height; glScalef( x_scale, y_scale, 1); } glMatrixMode( GL_MODELVIEW); } void numeric_texture::set_data( boost::python::numeric::array data) { namespace py = boost::python; if (data == py::object() && texdata != py::object()) { throw std::invalid_argument( "Cannot nullify a texture by assigning its data to None"); } NPY_TYPES t = type(data); if (t == NPY_CFLOAT || t == NPY_CDOUBLE || t == NPY_OBJECT || t == NPY_NOTYPE) throw std::invalid_argument( "Invalid texture data type"); std::vector dims = shape( data); if (dims.size() < 2 || dims.size() > 4) { throw std::invalid_argument( "Texture data must be NxMxC or NxM (or NxMxZxC for volume texture)"); } if (t == NPY_DOUBLE) { data = astype( data, NPY_FLOAT); t = NPY_FLOAT; } else if (t == NPY_LONG) { data = astype( data, NPY_INT); t = NPY_INT; } else { // Make a copy, so the user can't mutate the texture in place (it's just too expensive // to check for changes; we make the user assign to texture.data again) data = py::extract( data.copy() ); } int channels = dims.size() >= 3 ? dims.back() : 1; if (channels < 1 || channels > 4) { throw std::invalid_argument( "Texture data must be NxMxC, where C is between 1 and 4 (inclusive)"); } damage(); texdata = data; data_width = dims[1]; data_height = dims[0]; if (dims.size() == 4) data_depth = dims[2]; else data_depth = 0; data_channels = channels; have_opacity = ( data_channels == 2 || data_channels == 4 || (data_channels == 1 && data_textype == GL_ALPHA) ); data_type = t; } boost::python::numeric::array numeric_texture::get_data() { // Return a copy, so the user can't mutate the texture in place (it's just too expensive // to check for changes; we make the user assign to texture.data again) return boost::python::extract< boost::python::numeric::array >( texdata.copy() ); } void numeric_texture::set_type( std::string requested_type) { GLenum req_type = 0; if (requested_type == "luminance") req_type = GL_LUMINANCE; else if (requested_type == "opacity") req_type = GL_ALPHA; else if (requested_type == "luminance_opacity") req_type = GL_LUMINANCE_ALPHA; else if (requested_type == "rgb") req_type = GL_RGB; else if (requested_type == "rgbo") req_type = GL_RGBA; else if (requested_type == "auto") req_type = 0; else throw std::invalid_argument( "Unknown texture type"); data_textype = req_type; if (req_type == GL_RGBA || req_type == GL_ALPHA || req_type == GL_LUMINANCE_ALPHA) have_opacity = true; damage(); } std::string numeric_texture::get_type() const { switch (data_textype) { case GL_LUMINANCE: return std::string( "luminance"); case GL_ALPHA: return std::string( "opacity"); case GL_LUMINANCE_ALPHA: return std::string( "luminance_opacity"); case GL_RGB: return std::string( "rgb"); case GL_RGBA: return std::string( "rgbo"); case 0: default: return std::string( "auto"); } } void numeric_texture::set_mipmapped( bool m) { damage(); data_mipmapped = m; } bool numeric_texture::is_mipmapped(void) { return data_mipmapped; } void numeric_texture::set_antialias( bool aa) { damage(); data_antialias = aa; } bool numeric_texture::is_antialiased( void) { return data_antialias; } } } // !namespace cvisual::python visual-5.12_release/src/python/slice.cpp0000644000175000017500000000133410107527032015276 00000000000000#include "python/slice.hpp" // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. using namespace boost::python; namespace cvisual { namespace python { slice::slice() : object( detail::new_reference( PySlice_New( NULL, NULL, NULL))) { } object slice::start() { return object( detail::borrowed_reference( ((PySliceObject*)this->ptr())->start)); } object slice::stop() { return object( detail::borrowed_reference( ((PySliceObject*)this->ptr())->stop)); } object slice::step() { return object( detail::borrowed_reference( ((PySliceObject*)this->ptr())->step)); } } } // !namespace cvisual::python visual-5.12_release/src/python/num_util_impl_numarray.cpp0000644000175000017500000001062710432124303020772 00000000000000/** This file contains the implementation of the Numeric back-end. */ #include "python/num_util_impl.hpp" #ifdef VISUAL_HAVE_NUMARRAY # define libnumeric_UNIQUE_SYMBOL visual_libnumeric_API # define libnumarray_UNIQUE_SYMBOL visual_libnumarray_API # include # include // Local function prototypes using namespace boost::python; namespace cvisual { namespace python { static int rank(const numeric::array& arr); static PyArray_TYPES type(array_types); static array_types type( char); static char type2char( array_types); } } // !namespace visual #endif // !VISUAL_HAVE_NUMERIC #include #include namespace cvisual { namespace python { // True when the PyArray_API pointers have been initialized. static bool arrayapi_initialized = false; void init_numarray_impl() { #ifdef VISUAL_HAVE_NUMARRAY import_libnumeric(); import_libnumarray(); arrayapi_initialized = true; #else throw std::runtime_error( "This build of Visual does not support Numarray." ); #endif } #if VISUAL_HAVE_NUMARRAY static PyArray_TYPES type( array_types t) { switch (t) { case char_t: return PyArray_CHAR; case uchar_t: return PyArray_UBYTE; case schar_t: return PyArray_SBYTE; case short_t: return PyArray_SHORT; case int_t: return PyArray_INT; case long_t: return PyArray_LONG; case float_t: return PyArray_FLOAT; case double_t: return PyArray_DOUBLE; case cfloat_t: return PyArray_CFLOAT; case cdouble_t: return PyArray_CDOUBLE; case object_t: return PyArray_OBJECT; default: bool type_is_recognized = false; assert( type_is_recognized == true); } } static array_types type( char t) { switch (t) { case 'c': return char_t; case 'b': return uchar_t; case '1': return schar_t; case 's': return short_t; case 'i': return int_t; case 'l': return long_t; case 'f': return float_t; case 'd': return double_t; case 'F': return cfloat_t; case 'D': return cdouble_t; case 'O': return object_t; default: bool type_is_recognized = false; assert( type_is_recognized == true); } } static char type2char( array_types t) { switch (t) { case char_t: return 'c'; case uchar_t: return 'b'; case schar_t: return '1'; case short_t: return 's'; case int_t: return 'i'; case long_t: return 'l'; case float_t: return 'f'; case double_t: return 'd'; case cfloat_t: return 'F'; case cdouble_t: return 'D'; case object_t: return 'O'; default: return 0; } } static numeric::array makeNum_impl_numeric(std::vector dimens, array_types t) { // assert( arrayapi_initialized); object obj(handle<>(PyArray_FromDims(dimens.size(), &dimens[0], type(t)))); return extract(obj); } static array_types type_impl_numeric(numeric::array arr) { return type(arr.typecode()); } // Return the number of dimensions static int rank(const numeric::array& arr) { return ((PyArrayObject*) arr.ptr())->nd; } static std::vector shape_impl_numeric(numeric::array arr) { std::vector out_dims; int* dims_ptr = ((PyArrayObject*) arr.ptr())->dimensions; int the_rank = rank(arr); for (int i = 0; i < the_rank; i++){ out_dims.push_back(*(dims_ptr + i)); } return out_dims; } static bool iscontiguous_impl_numeric(numeric::array arr) { assert( arrayapi_initialized); return PyArray_ISCONTIGUOUS((PyArrayObject*)arr.ptr()); } static char* data_impl_numeric(const numeric::array& arr) { return ((PyArrayObject*) arr.ptr())->data; } static numeric::array astype_impl_numeric(numeric::array arr, array_types t) { return (numeric::array) arr.astype(type2char(t)); } #endif // !VISUAL_HAVE_NUMARRAY void use_numarray_impl() { #ifdef VISUAL_HAVE_NUMARRAY if (!arrayapi_initialized) init_numarray_impl(); makeNum_impl = makeNum_impl_numeric; type_impl = type_impl_numeric; shape_impl = shape_impl_numeric; iscontiguous_impl = iscontiguous_impl_numeric; data_impl = data_impl_numeric; astype_impl = astype_impl_numeric; numeric::array::set_module_and_type( "numarray", "NDArray"); #else throw std::runtime_error( "This build of Visual does not have support for Numarray"); #endif } } } // !namespace cvisual::python visual-5.12_release/src/python/.cvsignore0000644000175000017500000000001710154665313015477 00000000000000*.os .sconsign visual-5.12_release/src/python/points.cpp0000644000175000017500000001701511126514260015517 00000000000000#include "python/points.hpp" #include "python/num_util.hpp" #include "python/slice.hpp" #include "util/sorted_model.hpp" #include "util/errors.hpp" #include "util/gl_enable.hpp" #include "wrap_gl.hpp" #include #include #include #include namespace cvisual { namespace python { using boost::python::make_tuple; using boost::python::object; points::points() : size_units(PIXELS), points_shape(ROUND), size( 5.0) { } void points::set_size( float size) { this->size = size; } void points::set_points_shape( const std::string& n_type) { if (n_type == "round") { points_shape = ROUND; } else if (n_type == "square") { points_shape = SQUARE; } else throw std::invalid_argument( "Unrecognized shape type"); } std::string points::get_points_shape( void) { switch (points_shape) { case ROUND: return "round"; case SQUARE: return "square"; default: return ""; } } void points::set_size_units( const std::string& n_type) { if (n_type == "pixels") { size_units = PIXELS; } else if (n_type == "world") { size_units = WORLD; } else throw std::invalid_argument( "Unrecognized coordinate type"); } std::string points::get_size_units( void) { switch (size_units) { case PIXELS: return "pixels"; case WORLD: return "world"; default: return ""; } } bool points::degenerate() const { return count == 0; } struct point_coord { vector center; mutable rgb color; inline point_coord( const vector& p, const rgb& c) : center( p), color(c) {} }; void points::gl_render( const view& scene) { if (degenerate()) return; std::vector translucent_points; typedef std::vector::iterator translucent_iterator; std::vector opaque_points; typedef std::vector::iterator opaque_iterator; const double* pos_i = pos.data(); const double* pos_end = pos.end(); const double* color_i = color.data(); const double* color_end = color.end(); // First classify each point based on whether or not it is translucent if (points_shape == ROUND) { // Every point must be depth sorted for ( ; pos_i < pos_end && color_i < color_end; pos_i += 3, color_i += 3) { translucent_points.push_back( point_coord( vector(pos_i), rgb(color_i))); } } else { // Only translucent points need to be depth-sorted for ( ; pos_i < pos_end && color_i < color_end; pos_i += 3, color_i += 3) { if (0) // opacity not done translucent_points.push_back( point_coord( vector(pos_i), rgb(color_i))); else opaque_points.push_back( point_coord( vector(pos_i), rgb(color_i))); } } // Now conditionally apply transformations for gcf and anaglyph color // Needs work // if (translucent_points.size()) // renderable::color.opacity = 0.5; if (scene.gcf != 1.0 || (scene.gcfvec[0] != scene.gcfvec[1])) { for (opaque_iterator i = opaque_points.begin(); i != opaque_points.end(); ++i) { i->center = (i->center).scale(scene.gcfvec); } for (translucent_iterator i = translucent_points.begin(); i != translucent_points.end(); ++i) { i->center = (i->center).scale(scene.gcfvec); } } if (scene.anaglyph) { if (scene.coloranaglyph) { for (opaque_iterator i = opaque_points.begin(); i != opaque_points.end(); ++i) { i->color = i->color.desaturate(); } for (translucent_iterator i = translucent_points.begin(); i != translucent_points.end(); ++i) { i->color = i->color.desaturate(); } } else { for (opaque_iterator i = opaque_points.begin(); i != opaque_points.end(); ++i) { i->color = i->color.grayscale(); } for (translucent_iterator i = translucent_points.begin(); i != translucent_points.end(); ++i) { i->color = i->color.grayscale(); } } } // Sort the translucent points if (!translucent_points.empty()) { std::stable_sort( translucent_points.begin(), translucent_points.end(), face_z_comparator(scene.forward)); } clear_gl_error(); if (points_shape == ROUND) glEnable( GL_POINT_SMOOTH); if (size_units == WORLD && scene.glext.ARB_point_parameters) { // This is simpler and more robust than what was here before, but it's still // a little tacky and probably not perfectly general. I'm not sure that it // should work with stereo frustums, but I can't find a case where it's // obviously wrong. // However, note that point attenuation (regardless of parameters) isn't a // correct perspective calculation, because it divides by distance, not by Z. // Points not at the center of the screen will be too small, particularly // at high fields of view. This is in addition to the implementation limits // on point size, which will be a problem when points get too big or close. tmatrix proj; proj.gl_projection_get(); // Projection matrix vector p = (proj * vertex(.5,0,1,1)).project(); // eye coordinates .5,0,1 -> window coordinates // At an eye z of 1, a sphere of world-space diameter 1 is p.x * scene.view_width pixels wide, // so a sphere of world-space diameter (size*scene.gcf) is double point_radius_at_z_1 = size * scene.gcf * p.x * scene.view_width; float attenuation_eqn[] = { 0.0f, 0.0f, 1.0f / (float)(point_radius_at_z_1*point_radius_at_z_1) }; scene.glext.glPointParameterfvARB( GL_POINT_DISTANCE_ATTENUATION_ARB, attenuation_eqn); glPointSize( 1 ); } else if (size_units == PIXELS) { // Restore to default (aka, disable attenuation) if (scene.glext.ARB_point_parameters) { float attenuation_eqn[] = {1.0f, 0.0f, 0.0f}; scene.glext.glPointParameterfvARB( GL_POINT_DISTANCE_ATTENUATION_ARB, attenuation_eqn); } if (points_shape == ROUND) { glPointSize( size ); } else { glPointSize( size ); } } // Finish GL state prep gl_disable ltg( GL_LIGHTING); gl_enable_client v( GL_VERTEX_ARRAY); gl_enable_client c( GL_COLOR_ARRAY); // Render opaque points (if any) if (opaque_points.size()) { const std::ptrdiff_t chunk = 256; opaque_iterator begin = opaque_points.begin(); opaque_iterator end = opaque_points.end(); while (begin < end) { std::ptrdiff_t block = std::min( chunk, end - begin); glColorPointer( 3, GL_FLOAT, sizeof(point_coord), &begin->color.red); glVertexPointer( 3, GL_DOUBLE, sizeof(point_coord), &begin->center.x); glDrawArrays( GL_POINTS, 0, block); begin += block; } } // Render translucent points (if any) if (!translucent_points.empty()) { const std::ptrdiff_t chunk = 256; translucent_iterator begin = translucent_points.begin(); translucent_iterator end = translucent_points.end(); while (begin < end) { std::ptrdiff_t block = std::min( chunk, end - begin); glColorPointer( 3, GL_FLOAT, sizeof(point_coord), &begin->color.red); glVertexPointer( 3, GL_DOUBLE, sizeof(point_coord), &begin->center.x); glDrawArrays( GL_POINTS, 0, block); begin += block; } } if (!(points_shape == ROUND)) { glDisable( GL_POINT_SMOOTH); } check_gl_error(); } vector points::get_center() const { if (degenerate() || points_shape != ROUND) return vector(); vector ret; const double* pos_i = pos.data(); for(int i=0; i #include #include #include #include #include #include #define PY_ARRAY_UNIQUE_SYMBOL visual_PyArrayHandle #define NO_IMPORT_ARRAY #include namespace cvisual { namespace python { /*********************** scalar_array implementation ***********************/ scalar_array::scalar_array( const boost::python::list& sequence) : data( boost::python::extract( sequence.attr("__len__")())) { int s_i = 0; for ( iterator i = data.begin(); i != data.end(); ++i, ++s_i) { *i = boost::python::extract( sequence[s_i]); } } scalar_array::scalar_array( const boost::python::numeric::array& sequence) : data( ((PyArrayObject*)sequence.ptr())->dimensions[0]) { const PyArrayObject* seq_ptr = (PyArrayObject*)sequence.ptr(); if (!( seq_ptr->nd == 1 && seq_ptr->descr->type_num == PyArray_DOUBLE)) { throw std::invalid_argument( "Must construct a scalar_array from a " "one-dimensional array of type Float64"); } const double* seq_i = (const double*)seq_ptr->data; iterator i = this->begin(); for ( ; i != this->end(); ++i, ++seq_i) { *i = *seq_i; } } // Convert to a Numeric.array boost::python::handle scalar_array::as_array() const { int dims[] = { this->size() }; boost::python::handle<> ret( PyArray_FromDims( 1, dims, PyArray_DOUBLE)); PyArrayObject* ret_ptr = (PyArrayObject*)ret.get(); double* r_i = (double*)ret_ptr->data; const_iterator i = this->begin(); for ( ; i != this->end(); ++i, ++r_i) { *r_i = *i; } return ret; } void scalar_array::append( double s) { data.push_back( s); } void scalar_array::prepend( double s) { data.push_front( s); } void scalar_array::head_clip() { data.pop_front(); } void scalar_array::head_crop( int i_) { if (i_ < 0) throw std::invalid_argument( "Cannot crop a negative amount."); size_t i = (size_t)i_; if (i >= data.size()) throw std::out_of_range( "Cannot crop greater than the array's length."); iterator begin = data.begin(); data.erase( begin, begin+i); } void scalar_array::tail_clip() { data.pop_back(); } void scalar_array::tail_crop( int i_) { if (i_ < 0) throw std::invalid_argument( "Cannot crop a negative amount."); size_t i = (size_t)i_; if (i >= data.size()) throw std::out_of_range( "Cannot crop greater than the array's length."); iterator end = data.end(); data.erase( end-i, end); } scalar_array scalar_array::operator*( double s) const { scalar_array ret( data.size()); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = *i * s; } return ret; } scalar_array scalar_array::operator*( const scalar_array& s) const { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array multiplication."); scalar_array ret( data.size()); const_iterator s_i = s.begin(); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++s_i, ++r_i) { *r_i = *i * *s_i; } return ret; } vector_array scalar_array::operator*( const vector_array& v) const { if (data.size() != v.data.size()) throw std::out_of_range( "Incompatible array multiplication."); vector_array ret( data.size()); vector_array::iterator r_i = ret.begin(); vector_array::const_iterator v_i = v.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++v_i) { *r_i = *i * *v_i; } return ret; } vector_array scalar_array::operator*( const vector& v) const { vector_array ret( data.size()); vector_array::iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i) { *r_i = v * *i; } return ret; } const scalar_array& scalar_array::operator*=( double s) { for (iterator i = data.begin(); i != data.end(); ++i) { *i *= s; } return *this; } const scalar_array& scalar_array::operator*=( const scalar_array& s) { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array multiplication."); const_iterator s_i = s.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++s_i) { *i *= *s_i; } return *this; } scalar_array scalar_array::operator/( double s) const { scalar_array ret( data.size()); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = *i / s; } return ret; } scalar_array scalar_array::operator/( const scalar_array& s) const { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array division."); scalar_array ret( data.size()); const_iterator s_i = s.begin(); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++s_i, ++r_i) { *r_i = *i / *s_i; } return ret; } const scalar_array& scalar_array::operator/=( double s) { for (iterator i = data.begin(); i != data.end(); ++i) { *i /= s; } return *this; } const scalar_array& scalar_array::operator/=( const scalar_array& s) { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array division."); const_iterator s_i = s.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++s_i) { *i *= *s_i; } return *this; } scalar_array scalar_array::operator+( const scalar_array& s) const { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array addition."); scalar_array ret( data.size()); iterator r_i = ret.begin(); const_iterator s_i = s.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++s_i, ++r_i) { *r_i = *s_i + *i; } return *this; } scalar_array scalar_array::operator+( double s) const { scalar_array ret( data.size()); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = *i + s; } return ret; } const scalar_array& scalar_array::operator+=( double s) { for (iterator i = data.begin(); i != data.end(); ++i) { *i += s; } return *this; } const scalar_array& scalar_array::operator+=( const scalar_array& s) { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array addition."); const_iterator s_i = s.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++s_i) { *i += *s_i; } return *this; } scalar_array scalar_array::operator-( const scalar_array& s) const { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array subtraction."); scalar_array ret( data.size()); iterator r_i = ret.begin(); const_iterator s_i = s.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++s_i, ++r_i) { *r_i = *i - *s_i; } return ret; } scalar_array scalar_array::operator-( double s) const { scalar_array ret( data.size()); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = *i - s; } return ret; } const scalar_array& scalar_array::operator-=( double s) { for (iterator i = data.begin(); i != data.end(); ++i) { *i -= s; } return *this; } const scalar_array& scalar_array::operator-=( const scalar_array& s) { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible array subtraction."); const_iterator s_i = s.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++s_i) { *i -= *s_i; } return *this; } scalar_array scalar_array::operator-() const { scalar_array ret( data.size()); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = - *i; } return ret; } void scalar_array::py_setitem( int index, double value) { if (index < 0) // Negative indexes are counted from the end of the array. index += data.size(); data.at(index) = value; } double scalar_array::py_getitem( int index) { if (index < 0) index += data.size(); return data.at(index); } double scalar_array::sum() const { double ret = 0.0; for ( const_iterator i = data.begin(); i != data.end(); ++i) { ret += *i; } return ret; } void wrap_scalar_array() { using namespace boost::python; scalar_array (scalar_array::* truediv_self)( const scalar_array&) const = &scalar_array::operator/; const scalar_array& (scalar_array::* itruediv_self)( const scalar_array&) = &scalar_array::operator/=; scalar_array (scalar_array::* truediv_double)( double) const = &scalar_array::operator/; const scalar_array& (scalar_array::* itruediv_double)( double) = &scalar_array::operator/=; class_( "scalar_array", init< optional >( args( "size", "fill" ) )) .def( init()) .def( init()) .def( self + self) .def( self + other()) .def( self += self) .def( self += other()) .def( self - self) .def( self - other()) .def( self -= self) .def( self -= other()) .def( self * self) .def( self * other()) .def( self * other()) .def( self *= self) .def( self *= other()) .def( self * other()) .def( self / self) .def( self / other()) .def( self /= self) .def( self /= other()) // in-place division by single element. .def( "__truediv__", truediv_self) .def( "__truediv__", truediv_double) .def( "__itruediv__", itruediv_double, return_value_policy()) .def( "__itruediv__", itruediv_self, return_value_policy()) .def( -self) .def( "__iter__", iterator()) .def( "__len__", &scalar_array::size) .def( "__getitem__", &scalar_array::py_getitem) .def( "__setitem__", &scalar_array::py_setitem) .def( "append", &scalar_array::append) .def( "prepend", &scalar_array::prepend) .def( "head_clip", &scalar_array::head_clip) .def( "head_crop", &scalar_array::head_crop) .def( "tail_clip", &scalar_array::tail_clip) .def( "tail_crop", &scalar_array::tail_crop) .def( "sum", &scalar_array::sum, "Returns the sum of all elements in the array.") .def( "as_array", &scalar_array::as_array, "Returns a new self.__len__() x 1 Numeric.array from this scalar_array.") ; } } } // !namespace cvisual::python visual-5.12_release/src/python/wrap_arrayobjects.cpp0000644000175000017500000001537311126513662017736 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. // This file currently requires 144 MB to compile (optimizing). #include "python/curve.hpp" #include "python/faces.hpp" #include "python/convex.hpp" #include "python/points.hpp" #include "python/num_util.hpp" #include #include #include #include # namespace cvisual { namespace { using namespace boost::python; BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS( faces_smooth_shade, python::faces::smooth_shade, 0, 1) } using python::double_array; struct double_array_from_python { double_array_from_python() { boost::python::converter::registry::push_back( &convertible, &construct, boost::python::type_id< double_array >()); } static void* convertible(PyObject* obj_ptr) { using namespace boost::python; // TODO: We are supposed to determine if construct will succeed. But // this is difficult and expensive for arbitrary sequences. So we // assume that anything that looks like a sequence will convert and // throw an exception later. This limits overload resolution, but // most of our functions taking arrays have no overloads. // Legend has it that numpy arrays don't satisfy PySequence_Check so /// we check if len(x) succeeds. if ( PySequence_Size(obj_ptr) < 0 ) { PyErr_Clear(); return NULL; } // Strings have length but definitely don't convert to double_array! if ( PyString_Check(obj_ptr) || PyUnicode_Check(obj_ptr) ) return NULL; return obj_ptr; } static void construct( PyObject* _obj, boost::python::converter::rvalue_from_python_stage1_data* data) { using namespace boost::python; void* storage = ( (boost::python::converter::rvalue_from_python_storage*) data)->storage.bytes; Py_INCREF(_obj); PyObject* arr = PyArray_FromAny(_obj, PyArray_DescrFromType(NPY_DOUBLE), 0, 0, NPY_ENSUREARRAY|NPY_CONTIGUOUS|NPY_ALIGNED, NULL); if (!arr) throw std::invalid_argument("Object cannot be converted to array."); new (storage) double_array( handle<>(arr) ); data->convertible = storage; } }; void wrap_arrayobjects() { using namespace boost::python; using python::curve; double_array_from_python(); // TODO: the arrprim inheritance hierarchy could be exposed here; for now I've left the duplication here // to make it easy to control exactly what goes in the API for each array primitive, but arguably they // should be as similar as possible! void (curve::*append_v_rgb_retain)( const vector&, const rgb&, int ) = &curve::append; void (curve::*append_v_retain)( const vector&, int ) = &curve::append; class_ >( "curve") .def( init()) .add_property( "radius", &curve::get_radius, &curve::set_radius) // AKA thickness. .def( "get_color", &curve::get_color) .def( "set_color", &curve::set_color) .def( "set_red", &curve::set_red_d) .def( "set_red", &curve::set_red) .def( "set_green", &curve::set_green_d) .def( "set_green", &curve::set_green) .def( "set_blue", &curve::set_blue_d) .def( "set_blue", &curve::set_blue) .def( "get_pos", &curve::get_pos) .def( "set_pos", &curve::set_pos) .def( "set_pos", &curve::set_pos_v) .def( "set_x", &curve::set_x_d) .def( "set_x", &curve::set_x) .def( "set_y", &curve::set_y_d) .def( "set_y", &curve::set_y) .def( "set_z", &curve::set_z_d) .def( "set_z", &curve::set_z) .def( "append", append_v_rgb_retain, ( arg("pos"), arg("color"), arg("retain")=-1 ) ) .def( "append", append_v_retain, ( arg("pos"), arg("retain")=-1 ) ) .def( "append", &curve::append_rgb, ( arg("pos"), arg("red")=-1, arg("green")=-1, arg("blue")=-1, arg("retain")=-1 ) ) ; using python::points; void (points::*pappend_v_r)( const vector&, const rgb&, int ) = &points::append; void (points::*pappend_v)( const vector&, int ) = &points::append; class_ >( "points") .def( init()) .add_property( "size", &points::get_size, &points::set_size) .add_property( "shape", &points::get_points_shape, &points::set_points_shape) .add_property( "size_units", &points::get_size_units, &points::set_size_units) .def( "get_color", &points::get_color) // The order of set_color specifications matters. //.def( "set_color", &points::set_color_t) .def( "set_color", &points::set_color) .def( "set_red", &points::set_red_d) .def( "set_red", &points::set_red) .def( "set_green", &points::set_green_d) .def( "set_green", &points::set_green) .def( "set_blue", &points::set_blue_d) .def( "set_blue", &points::set_blue) .def( "get_pos", &points::get_pos) .def( "set_pos", &points::set_pos) .def( "set_pos", &points::set_pos_v) .def( "set_x", &points::set_x_d) .def( "set_x", &points::set_x) .def( "set_y", &points::set_y_d) .def( "set_y", &points::set_y) .def( "set_z", &points::set_z_d) .def( "set_z", &points::set_z) .def( "append", pappend_v_r, (arg("pos"), arg("color"), arg("retain")=-1)) .def( "append", &points::append_rgb, (arg("pos"), arg("red")=-1, arg("green")=-1, arg("blue")=-1, arg("retain")=-1)) .def( "append", pappend_v, (arg("pos"), arg("retain")=-1)) ; using python::faces; void (faces::* append_all_vectors)(const vector&, const vector&, const rgb&) = &faces::append; void (faces::* append_default_color)(const vector&, const vector&) = &faces::append; class_ >("faces") .def( init()) .def( "get_pos", &faces::get_pos) .def( "set_pos", &faces::set_pos) .def( "get_normal", &faces::get_normal) .def( "set_normal", &faces::set_normal_v) .def( "set_normal", &faces::set_normal) .def( "get_color", &faces::get_color) .def( "set_color", &faces::set_color) //.def( "set_color", &faces::set_color_t) .def( "smooth_shade", &faces::smooth_shade, faces_smooth_shade( args("doublesided"), "Average normal vectors at coincident vertexes.")) .def( "append", &faces::append_rgb, (arg("pos"), arg("normal"), arg("red")=-1, arg("green")=-1, arg("blue")=-1)) .def( "append", append_default_color, ( arg("pos"), arg("normal") )) .def( "append", append_all_vectors, (arg("pos"), arg("normal"), arg("color"))) ; using python::convex; void (convex::* append_convex)(const vector&) = &convex::append; class_ >( "convex") .def( init()) .def( "append", append_convex, (arg("pos")), "Append a point to the surface in O(n) time.") .add_property( "color", &convex::get_color, &convex::set_color) .def( "set_pos", &convex::set_pos) .def( "get_pos", &convex::get_pos) ; } } // !namespace cvisual visual-5.12_release/src/python/convex.cpp0000644000175000017500000001057211107137734015514 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "python/convex.hpp" #include "python/slice.hpp" #include "util/gl_enable.hpp" #include "util/errors.hpp" #include #include namespace cvisual { namespace python { convex::jitter_table convex::jitter; long convex::checksum() const { boost::crc_32_type engine; engine.process_block( pos.data(), pos.end() ); return engine.checksum(); } bool convex::degenerate() const { return count < 3; } void convex::recalc() { hull.clear(); const double* pos_i = pos.data(); // A face from the first, second, and third vectors. hull.push_back( face( vector(pos_i), vector(pos_i+3), vector(pos_i+3*2))); // The reverse face from the first, third, and second vectors. hull.push_back( face( vector(pos_i), vector(pos_i+3*2), vector(pos_i+3))); // The remainder of the possible faces. for (size_t i = 3; i < count; ++i) { add_point( i, vector(pos_i + i*3)); } // Calculate extents min_extent = max_extent = vector( pos_i ); for(size_t i=1; i max_extent[j]) max_extent[j] = *pos_i; pos_i++; } last_checksum = checksum(); } void convex::add_point( size_t n, vector pv) { double m = pv.mag(); pv.x += m * jitter.v[(n ) & jitter.mask]; pv.y += m * jitter.v[(n+1) & jitter.mask]; pv.z += m * jitter.v[(n+2) & jitter.mask]; std::vector hole; for (size_t f=0; f::iterator h = hole.begin(); h != hole.end(); ++h) { if (*h == E) { *h = hole.back(); hole.pop_back(); boundary = false; break; } } if (boundary) { hole.push_back(E); } } // remove hull[f] hull[f] = hull.back(); hull.pop_back(); } else f++; } // Now add the boundary of the hole to the hull. If pv was inside // the hull, the hole will be empty and nothing happens here. for (std::vector::const_iterator h = hole.begin(); h != hole.end(); ++h) { hull.push_back(face(h->v[0], h->v[1], pv)); } } convex::convex() : last_checksum(0) { } void convex::set_color( const rgb& n_color) { color = n_color; } rgb convex::get_color() { return color; } void convex::gl_render( const view& scene) { if (degenerate()) return; long check = checksum(); if (check != last_checksum) { recalc(); last_checksum = check; } glShadeModel(GL_FLAT); gl_enable cull_face( GL_CULL_FACE); color.gl_set(1.0); glBegin(GL_TRIANGLES); for (std::vector::const_iterator f = hull.begin(); f != hull.end(); ++f) { f->normal.gl_normal(); (f->corner[0] * scene.gcf).gl_render(); (f->corner[1] * scene.gcf).gl_render(); (f->corner[2] * scene.gcf).gl_render(); } glEnd(); glShadeModel( GL_SMOOTH); } vector convex::get_center() const { if (degenerate()) return vector(); vector ret; for (std::vector::const_iterator f = hull.begin(); f != hull.end(); ++f) { ret += f->center; } ret /= hull.empty() ? 1 : hull.size(); return ret; } void convex::gl_pick_render( const view& scene) { gl_render( scene); } void convex::grow_extent( extent& world) { if (degenerate()) return; long check = checksum(); if (check != last_checksum) { recalc(); } assert( hull.size() != 0); for (std::vector::const_iterator f = hull.begin(); f != hull.end(); ++f) { world.add_point( f->corner[0]); world.add_point( f->corner[1]); world.add_point( f->corner[2]); } world.add_body(); } void convex::get_material_matrix( const view& v, tmatrix& out ) { out.translate( vector(.5,.5,.5) ); out.scale( vector(1,1,1) * (.999 / (v.gcf * std::max(max_extent.x-min_extent.x, std::max(max_extent.y-min_extent.y, max_extent.z-min_extent.z)))) ); out.translate( -.5 * v.gcf * (min_extent + max_extent) ); } } } // !namespace cvisual::python visual-5.12_release/src/python/wrap_vector.cpp0000644000175000017500000002721111072165102016532 00000000000000// This file currently requires 137 MB to compile (optimizing). // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/vector.hpp" #include #include #include #include #include #include #include #include #include #include #include #include "python/num_util.hpp" namespace cvisual { namespace py = boost::python; using namespace cvisual::python; using py::numeric::array; using py::object; using py::extract; //AS add using py::allow_null; // Operations on Numeric arrays namespace { void validate_array( const array& arr) { std::vector dims = shape(arr); if (type(arr) != NPY_DOUBLE) { throw std::invalid_argument( "Array must be of type Float64."); } if (!iscontiguous(arr)) { throw std::invalid_argument( "Array must be contiguous." "(Did you pass a slice?)"); } if (dims.size() != 2) { if (dims.size() == 1 && dims[0] == 3) return; else throw std::invalid_argument( "Array must be Nx3 in shape."); } if (dims[1] != 3) { throw std::invalid_argument( "Array must be Nx3 in shape."); } } // Numeric doens't support the Sequence protocol, so I have to use this hack // instead. // 2008/2/16 BAS asks, "What is the situation with numpy?" Should look into this. inline int length(boost::python::object seq) { int ret = PySequence_Size( seq.ptr()); if (ret == -1) { boost::python::throw_error_already_set(); } return ret; } } // !namespace anonymous vector tovector( py::object arr) { switch (length(arr)) { case 2: return vector( extract(arr[0]), extract(arr[1])); case 3: return vector( extract(arr[0]), extract(arr[1]), extract(arr[2])); default: throw std::invalid_argument("Vectors must have length 2 or 3"); } } object mag_a( const array& arr) { validate_array( arr); std::vector dims = shape(arr); // Magnitude of a flat 3-length array if (dims.size() == 1 && dims[0] == 3) { return object( vector( extract(arr[0]), extract(arr[1]), extract(arr[2])).mag()); } std::vector rdims(1); rdims[0] = dims[0]; array ret = makeNum( rdims); for (int i = 0; i< rdims[0]; ++i) { ret[i] = tovector(arr[i]).mag(); } return ret; } object mag2_a( const array& arr) { validate_array( arr); std::vector dims = shape(arr); if (dims.size() == 1 && dims[0] == 3) { // Returns an object of type float. return object( vector( extract(arr[0]), extract(arr[1]), extract(arr[2])).mag2()); } std::vector rdims(1); rdims[0] = dims[0]; array ret = makeNum( rdims); for (int i = 0; i < rdims[0]; ++i) { ret[i] = tovector(arr[i]).mag2(); } // Returns an object of type Numeric.array. return ret; } object norm_a( const array& arr) { validate_array( arr); std::vector dims = shape(arr); if (dims.size() == 1 && dims[0] == 3) { // Returns a float return object( vector( extract(arr[0]), extract(arr[1]), extract(arr[2])).norm()); } array ret = makeNum(dims); for (int i = 0; i < dims[0]; ++i) { ret[i] = tovector(arr[i]).norm(); } // Returns a Numeric.array return ret; } array dot_a( const array& arg1, const array& arg2) { validate_array( arg1); validate_array( arg2); std::vector dims1 = shape(arg1); std::vector dims2 = shape(arg2); if (dims1 != dims2) { throw std::invalid_argument( "Array shape mismatch."); } std::vector dims_ret(1); dims_ret[0] = dims1[0]; array ret = makeNum( dims_ret); const double* arg1_i = (double*)data(arg1); const double* arg2_i = (double*)data(arg2); for ( int i = 0; i < dims1[0]; ++i, arg1_i +=3, arg2_i += 3) { ret[i] = vector(arg1_i).dot( vector(arg2_i)); } return ret; } array cross_a_a( const array& arg1, const array& arg2) { validate_array( arg1); validate_array( arg2); std::vector dims1 = shape(arg1); std::vector dims2 = shape(arg2); if (dims1 != dims2) { throw std::invalid_argument( "Array shape mismatch."); } array ret = makeNum( dims1); const double* arg1_i = (double*)data(arg1); const double* arg2_i = (double*)data(arg2); double* ret_i = (double*)data(ret); double* const ret_stop = ret_i + 3*dims1[0]; for ( ; ret_i < ret_stop; ret_i += 3, arg1_i += 3, arg2_i += 3) { vector ret = vector(arg1_i).cross( vector( arg2_i)); ret_i[0] = ret.get_x(); ret_i[1] = ret.get_y(); ret_i[2] = ret.get_z(); } return ret; } array cross_a_v( const array& arg1, const vector& arg2) { validate_array( arg1); std::vector dims = shape( arg1); array ret = makeNum( dims); const double* arg1_i = (double*)data( arg1); double* ret_i = (double*)data( ret); double* const ret_stop = ret_i + 3*dims[0]; for ( ; ret_i < ret_stop; ret_i += 3, arg1_i += 3) { vector ret = vector( arg1_i).cross( arg2); ret_i[0] = ret.get_x(); ret_i[1] = ret.get_y(); ret_i[2] = ret.get_z(); } return ret; } array cross_v_a( const vector& arg1, const array& arg2) { validate_array( arg2); std::vector dims = shape( arg2); array ret = makeNum( dims); const double* arg2_i = (double*)data( arg2); double* ret_i = (double*)data( ret); double* const ret_stop = ret_i + 3*dims[0]; for ( ; ret_i < ret_stop; ret_i += 3, arg2_i += 3) { vector ret = arg1.cross( vector( arg2_i)); ret_i[0] = ret.get_x(); ret_i[1] = ret.get_y(); ret_i[2] = ret.get_z(); } return ret; } namespace { using namespace boost::python; BOOST_PYTHON_FUNCTION_OVERLOADS( free_rotate, rotate, 2, 3 ) BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS( vector_rotate, vector::rotate, 1, 2) } // !namespace anonymous struct vector_from_seq { vector_from_seq() { py::converter::registry::push_back( &convertible, &construct, py::type_id()); } static void* convertible( PyObject* obj) { using py::handle; using py::allow_null; object o( handle<>( borrowed(obj) ) ); int obj_size = PyObject_Length(obj); if (obj_size < 0) { PyErr_Clear(); return 0; } if (obj_size != 2 && obj_size != 3) return 0; for(int i=0; i(o[i]).check()) return 0; return obj; } static void construct( PyObject* _obj, py::converter::rvalue_from_python_stage1_data* data) { using namespace boost::python; object obj = object(handle<>(borrowed(_obj))); void* storage = ( (boost::python::converter::rvalue_from_python_storage*) data)->storage.bytes; int obj_size = PyObject_Length(_obj); switch (obj_size) { case 1: new (storage) vector( py::extract(obj[0])); break; case 2: new (storage) vector( py::extract( obj[0]), py::extract( obj[1])); break; case 3: default: // Will probably trigger an exception if it is the default // case. new (storage) vector( py::extract( obj[0]), py::extract( obj[1]), py::extract( obj[2])); } data->convertible = storage; } }; py::tuple vector_as_tuple( const vector& v) { return py::make_tuple( v.x, v.y, v.z); } vector vector_pos( const vector& v) { return v; } void wrap_vector() { // Numeric versions for some of the above // TODO: round out the set. def( "mag", mag_a); def( "dot", dot_a); def( "cross", cross_a_a); def( "cross", cross_a_v); def( "cross", cross_v_a); def( "mag2", mag2_a); def( "norm", norm_a); // Free functions for vectors py::def( "det3",a_dot_b_cross_c, "The determinant of the matrix of 3 vectors."); py::def( "cross3",a_cross_b_cross_c, "The vector triple product."); py::def( "dot", dot, "The dot product between two vectors."); py::def( "cross", cross, "The cross product between two vectors."); py::def( "mag", mag, "The magnitude of a vector."); py::def( "mag2", mag2, "A vector's magnitude squared."); py::def( "norm", norm, "Returns the unit vector of its argument."); py::def( "comp", comp, "The scalar projection of arg1 to arg2."); py::def( "proj", proj, "The vector projection of arg1 to arg2."); py::def( "diff_angle", diff_angle, "The angle between two vectors, in radians."); py::def( "rotate", rotate, free_rotate( args("vector", "angle", "axis"), "Rotate a vector about an axis vector through an angle.") ); //AS added throw() vector (vector::* truediv)( double) const throw()= &vector::operator/; const vector& (vector::* itruediv)( double) throw() = &vector::operator/=; // The vector class, constructable from 0, one, two or three doubles. py::class_("vector", py::init< py::optional >()) // Explicit copy. .def( init()) // member variables. .add_property( "x", &vector::get_x, &vector::set_x) .add_property( "y", &vector::get_y, &vector::set_y) .add_property( "z", &vector::get_z, &vector::set_z) // Member functions masquerading as properties. .add_property( "mag", &vector::mag, &vector::set_mag) .add_property( "mag2", &vector::mag2, &vector::set_mag2) // Member functions .def( "dot", &vector::dot, "The dot product of this vector and another.") .def( "cross", &vector::cross, "The cross product of this vector and another.") .def( "norm", &vector::norm, "The unit vector of this vector.") .def( "comp", &vector::comp, "The scalar projection of this vector onto another.") .def( "proj", &vector::proj, "The vector projection of this vector onto another.") .def( "diff_angle", &vector::diff_angle, "The angle between this vector " "and another, in radians.") .def( "clear", &vector::clear, "Zero the state of this vector. Potentially " "useful for reusing a temporary variable.") .def( "rotate", &vector::rotate, vector_rotate( "Rotate this vector about " "the specified axis through the specified angle, in radians", args( "angle", "axis"))) .def( "__abs__", &vector::mag, "Return the magnitude of this vector.") .def( "__pos__", vector_pos, "Return an unmodified copy of this vector.") // Some support for the sequence protocol. .def( "__len__", &vector::py_len) .def( "__getitem__", &vector::py_getitem) .def( "__setitem__", &vector::py_setitem) // Use this to quickly convert vector's to tuples. .def( "astuple", vector_as_tuple, "Convert this vector to a tuple. " "Same as tuple(vector), but much faster.") // Member operators .def( -self) .def( self + self) .def( self += self) .def( self - self) .def( self -= self) .def( self * double()) .def( self *= double()) .def( self / double()) .def( self /= double()) .def( double() * self) .def( self == self ) .def( self != self ) // This doesn't work either (NPY_FLOAT not recognized as a type): //.def( other() * self) // Suggestion from Jonathan Brandmeyer, which doesn't compile: //.def( "__mul__", &vector::operator*(double), "Multiply vector times scalar") //.def( "__rmul__", &operator*(const double&, const vector&), "Multiply scalar times vector") // Same as self / double, when "from __future__ import division" is in effect. .def( "__itruediv__", itruediv, return_value_policy()) // Same as self /= double, when "from __future__ import division" is in effect. .def( "__truediv__", truediv) .def( self_ns::str(self)) // Support ">>> print foo" .def( "__repr__", &vector::repr) // Support ">>> foo" ; // Pass a sequence to some functions that expect type visual::vector. vector_from_seq(); } } // !namespace cvisual visual-5.12_release/src/python/vector_array.cpp0000644000175000017500000007253011023042131016673 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "python/vector_array.hpp" #include "python/scalar_array.hpp" #include #include #include #include #include #include #include #include #include #include #include #include // TODO: Figure out what to do with this... #define PY_ARRAY_UNIQUE_SYMBOL visual_PyArrayHandle #define NO_IMPORT_ARRAY #include #include #include namespace cvisual {namespace python { vector_array::vector_array( const boost::python::list& sequence) : data( boost::python::extract( sequence.attr("__len__")())) { iterator i = data.begin(); for (int s_i = 0; s_i < sequence.attr("__len__")(); ++s_i, ++i) { boost::python::extract v_extractor( sequence[s_i]); if (v_extractor.check()) { *i = v_extractor(); } else { boost::python::object elem = sequence[s_i]; *i = vector(); switch (boost::python::extract(elem.attr("__len__")())) { case 3: i->z = boost::python::extract(elem[2]); case 2: i->y = boost::python::extract(elem[1]); i->x = boost::python::extract(elem[0]); default: throw std::invalid_argument( "Can only construct a vector from a " "sequence of 2 or 3 doubles."); } } } } vector_array::vector_array( boost::python::numeric::array sequence) : data( ((PyArrayObject*)sequence.ptr())->dimensions[0]) { const PyArrayObject* seq_ptr = (const PyArrayObject*)sequence.ptr(); if (!( seq_ptr->nd == 2 && seq_ptr->dimensions[1] == 3 && seq_ptr->descr->type_num == PyArray_DOUBLE)) { throw std::invalid_argument( "Must construct a vector_array from an Nx3 array of type Float64."); } const double* seq_i = (const double*)seq_ptr->data; iterator i = this->begin(); for (; i != this->end(); ++i, seq_i += 3) { *i = vector( seq_i[0], seq_i[1], seq_i[2]); } } void vector_array::append( const vector& v) { data.push_back( v); } void vector_array::append( const vector_array& va) { data.insert( data.end(), va.data.begin(), va.data.end()); } void vector_array::prepend( const vector& v) { data.push_front( v); } void vector_array::head_clip() { data.pop_front(); } void vector_array::head_crop( int i_) { if (i_ < 0) throw std::invalid_argument( "Cannot crop a negative amount."); size_t i = (size_t)i_; if (i >= data.size()) throw std::invalid_argument( "Cannot crop greater than the array's length."); iterator begin = data.begin(); data.erase( begin, begin+i); } void vector_array::tail_clip() { data.pop_back(); } void vector_array::tail_crop( int i_) { if (i_ < 0) throw std::invalid_argument( "Cannot crop a negative amount."); size_t i = (size_t)i_; if (i >= data.size()) throw std::invalid_argument( "Cannot crop greater than the array's length."); iterator end = data.end(); data.erase( end-i, end); } vector_array vector_array::operator*( double s) const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = *i * s; } return ret; } // Possibly dangerous, this provides block multiplication elementwise, not to be // confused with dot() or cross(). vector_array vector_array::operator*( vector v) const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { vector v_i = *i; *r_i = vector( v_i[0]*v[0], v_i[1]*v[1], v_i[2]*v[2]); } return ret; } vector_array vector_array::operator*( const scalar_array& s) const { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible vector array multiplication."); vector_array ret( data.size()); scalar_array::const_iterator s_i = s.begin(); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++s_i) { *r_i = *i * *s_i; } return ret; } vector_array vector_array::operator/( double s) const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = *i / s; } return ret; } vector_array vector_array::operator/( const scalar_array& s) const { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible vector array division."); vector_array ret( data.size()); scalar_array::const_iterator s_i = s.begin(); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++s_i) { *r_i = *i / *s_i; } return ret; } vector_array vector_array::operator-() const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = -(*i); } return ret; } const vector_array& vector_array::operator*=( double s) { for (iterator i = data.begin(); i != data.end(); ++i) { *i *= s; } return *this; } const vector_array& vector_array::operator*=( const scalar_array& s) { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible vector array multiplication."); scalar_array::const_iterator s_i = s.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++s_i) { *i *= *s_i; } return *this; } const vector_array& vector_array::operator/=( double s) { for (iterator i = data.begin(); i != data.end(); ++i) { *i /= s; } return *this; } const vector_array& vector_array::operator/=( const scalar_array& s) { if (data.size() != s.data.size()) throw std::out_of_range( "Incompatible vector array multiplication."); scalar_array::const_iterator s_i = s.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++s_i) { *i /= *s_i; } return *this; } vector_array vector_array::operator+( const vector& v) const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = *i + v; } return ret; } vector_array vector_array::operator+( const vector_array& v) const { if (data.size() != v.data.size()) throw std::out_of_range( "Incompatible vector array addition."); vector_array ret( data.size()); iterator r_i = ret.data.begin(); const_iterator v_i = v.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++v_i) { *r_i = *i + *v_i; } return ret; } vector_array vector_array::operator-( const vector& v) const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i ) { *r_i = *i - v; } return ret; } vector_array vector_array::operator-( const vector_array& v) const { if (data.size() != v.data.size()) throw std::out_of_range( "Incompatible vector array subtraction."); vector_array ret( data.size()); iterator r_i = ret.data.begin(); const_iterator v_i = v.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++v_i) { *r_i = *i + *v_i; } return ret; } const vector_array& vector_array::operator+=( const vector& v) { for (iterator i = data.begin(); i != data.end(); ++i) { *i += v; } return *this; } const vector_array& vector_array::operator+=( const vector_array& v) { if (data.size() != v.data.size()) throw std::out_of_range( "Incompatible vector array addition."); const_iterator v_i = v.data.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++v_i) { *i += *v_i; } return *this; } const vector_array& vector_array::operator-=( const vector& v) { for (iterator i = data.begin(); i != data.end(); ++i) { *i -= v; } return *this; } const vector_array& vector_array::operator-=( const vector_array& v) { if (data.size() != v.data.size()) throw std::out_of_range( "Incompatible vector array subtraction."); const_iterator v_i = v.data.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++v_i) { *i -= *v_i; } return *this; } vector_array vector_array::cross( const vector& v) { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->cross(v); } return ret; } vector_array vector_array::cross( const vector_array& v) { if (v.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array types." ); vector_array ret( data.size()); iterator r_i = ret.data.begin(); const_iterator v_i = v.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++v_i) { *r_i = i->cross( *v_i); } return ret; } vector_array vector_array::norm() const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->norm(); } return ret; } vector_array vector_array::fabs() const { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->fabs(); } return ret; } vector_array vector_array::proj( const vector& v) { vector_array ret( data.size()); iterator r_i = ret.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->proj( v); } return ret; } vector_array vector_array::proj( const vector_array& v) { if (v.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array types." ); vector_array ret( data.size()); iterator r_i = ret.data.begin(); const_iterator v_i = v.data.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++v_i) { *r_i = i->proj( *v_i); } return ret; } scalar_array vector_array::mag() const { scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); for ( const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->mag(); } return ret; } scalar_array vector_array::mag2() const { scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); for ( const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->mag2(); } return ret; } void vector_array::rotate( const double& d, vector axis) { for (iterator i = data.begin(); i != data.end(); ++i) { i->rotate( d, axis); } } vector& vector_array::py_getitem( int index) { if (index < 0) { // Negative indexes are counted from the end of the array in Python. index += data.size(); } return data.at(index); } void vector_array::py_setitem( int index, vector value) { if (index < 0) index += data.size(); data.at(index) = value; } scalar_array vector_array::dot( const vector& v) { scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); for ( const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->dot( v); } return ret; } scalar_array vector_array::dot( const vector_array& v) { if (v.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array types." ); scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); const_iterator v_i = v.begin(); for ( const_iterator i = data.begin(); i != data.end(); ++i, ++r_i, ++v_i) { *r_i = i->dot( *v_i); } return ret; } scalar_array vector_array::comp( const vector& v) { scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->comp( v); } return ret; } scalar_array vector_array::comp( const vector_array& v) { if ( data.size() != v.data.size() ) throw std::out_of_range( "Incompatible array scalar projection."); scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); const_iterator v_i = v.begin(); for (const_iterator i = data.begin(); i !=data.end(); ++i, ++v_i, ++r_i) { *r_i = i->comp( *v_i); } return ret; } scalar_array vector_array::get_x() const { scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->get_x(); } return ret; } scalar_array vector_array::get_y() const { scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->get_y(); } return ret; } scalar_array vector_array::get_z() const { scalar_array ret( data.size()); scalar_array::iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = i->get_z(); } return ret; } void vector_array::set_x( const scalar_array& x) { if (data.empty()) { // In case we are building this thing up from single columns data = std::deque( x.size()); } if (x.data.size() != data.size()) throw std::out_of_range( "Incompatible array assignment."); scalar_array::const_iterator x_i = x.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++x_i) { i->set_x( *x_i); } } void vector_array::set_y( const scalar_array& y) { if (data.empty()) { // In case we are building this thing up from single columns data = std::deque( y.size()); } if (y.data.size() != data.size()) throw std::out_of_range( "Incompatible array assignment."); scalar_array::const_iterator y_i = y.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++y_i) { i->set_y( *y_i); } } void vector_array::set_z( const scalar_array& z) { if (data.empty()) { // In case we are building this thing up from single columns data = std::deque( z.size()); } if (z.data.size() != data.size()) throw std::out_of_range( "Incompatible array assignment."); scalar_array::const_iterator z_i = z.begin(); for (iterator i = data.begin(); i != data.end(); ++i, ++z_i) { i->set_z( *z_i); } } void vector_array::set_x( const boost::python::list& sequence) { this->set_x( scalar_array( sequence)); } void vector_array::set_y( const boost::python::list& sequence) { this->set_y( scalar_array( sequence)); } void vector_array::set_z( const boost::python::list& sequence) { this->set_z( scalar_array( sequence)); } vector vector_array::sum() const { vector ret; for (const_iterator i = data.begin(); i != data.end(); ++i) { ret += *i; } return ret; } // Evaluate expression vector - vector_array vector_array vector_array::lhs_sub( const vector& v) const { vector_array ret( data.size()); iterator r_i = ret.begin(); for ( const_iterator i = data.begin(); i != data.end(); ++i, ++r_i) { *r_i = v - *i; } return ret; } vector_array vector_array::operator>=( const double& s) const { vector_array ret( data.size()); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i, ++r_i) { *r_i = vector( (i->x >= s) ? 1.0: 0.0 , (i->y >= s) ? 1.0: 0.0 , (i->z >= s) ? 1.0: 0.0); } return ret; } vector_array vector_array::operator>=( const scalar_array& s) const { if (s.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array to scalar_array comparison." ); vector_array ret( data.size()); iterator r_i = ret.begin(); scalar_array::const_iterator s_i = s.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i, ++r_i, ++s_i) { *r_i = vector( (i->x >= *s_i) ? 1.0: 0.0 , (i->y >= *s_i) ? 1.0: 0.0 , (i->z >= *s_i) ? 1.0: 0.0); } return ret; } vector_array vector_array::operator>=( const vector_array& v) const { if (v.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array to vector_array comparison" ); vector_array ret( data.size()); iterator r_i = ret.begin(); const_iterator v_i = v.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i, ++r_i, ++v_i) { *r_i = vector( (i->x >= v_i->x) ? 1.0: 0.0 , (i->y >= v_i->y) ? 1.0: 0.0 , (i->z >= v_i->z) ? 1.0: 0.0); } return ret; } vector_array vector_array::operator<=( const double& s) const { vector_array ret( data.size()); iterator r_i = ret.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i, ++r_i) { *r_i = vector( (i->x <= s) ? 1.0: 0.0 , (i->y <= s) ? 1.0: 0.0 , (i->z <= s) ? 1.0: 0.0); } return ret; } vector_array vector_array::operator<=( const scalar_array& s) const { if (s.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array comparison." ); vector_array ret( data.size()); iterator r_i = ret.begin(); scalar_array::const_iterator s_i = s.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i, ++r_i, ++s_i) { *r_i = vector( (i->x <= *s_i) ? 1.0: 0.0 , (i->y <= *s_i) ? 1.0: 0.0 , (i->z <= *s_i) ? 1.0: 0.0); } return ret; } vector_array vector_array::operator<=( const vector_array& v) const { if (v.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array comparison." ); vector_array ret( data.size()); iterator r_i = ret.begin(); const_iterator v_i = v.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i, ++r_i, ++v_i) { *r_i = vector( (i->x <= v_i->x) ? 1.0: 0.0 , (i->y <= v_i->y) ? 1.0: 0.0 , (i->z <= v_i->z) ? 1.0: 0.0); } return ret; } vector_array vector_array::operator*( const vector_array& v) const { if (v.data.size() != data.size()) throw std::out_of_range( "Incompatible vector_array multiplication." ); vector_array ret( data.size()); iterator r_i = ret.begin(); const_iterator v_i = v.begin(); for (const_iterator i = data.begin(); i!= data.end(); ++i, ++r_i, ++v_i) { *r_i = vector( (i->x * v_i->x) , (i->y * v_i->y) , (i->z * v_i->z)); } return ret; } void vector_array::set_x( boost::python::numeric::array x) { this->set_x( scalar_array( x)); } void vector_array::set_y( boost::python::numeric::array y) { this->set_y( scalar_array( y)); } void vector_array::set_z( boost::python::numeric::array z) { this->set_z( scalar_array( z)); } void vector_array::set_x( double x) { this->set_x( scalar_array( size(), x)); } void vector_array::set_y( double y) { this->set_y( scalar_array( size(), y)); } void vector_array::set_z( double z) { this->set_z( scalar_array( size(), z)); } boost::python::handle vector_array::as_array() const { // Make space for the returned array int dims[] = {size(), 3}; boost::python::handle<> ret( PyArray_FromDims( 2, dims, PyArray_DOUBLE)); // A direct pointer to the PyArrayObject PyArrayObject* ret_ptr = (PyArrayObject *)ret.get(); // Iterable pointers to copy the data. double* r_i = (double *) ret_ptr->data; const_iterator i = this->begin(); // Copy the data. for (; i != this->end(); ++i, r_i += 3) { r_i[0] = i->get_x(); r_i[1] = i->get_y(); r_i[2] = i->get_z(); } return ret; } // This algorithm is failing to recognize all of the collisions... boost::python::list sphere_collisions( const vector_array& pos, const scalar_array& radius) { if (pos.size() != radius.size()) throw std::out_of_range( "Unequal array lengths."); assert( pos.size()); boost::python::list ret; vector_array::const_iterator pos_i = pos.begin(); scalar_array::const_iterator r_i = radius.begin(); // In spite of using two iterators and a counter, this is a two-pointer // search: i, and j. for ( int i = 0; pos_i != pos.end(); ++pos_i, ++r_i, ++i) { vector_array::const_iterator pos_j = pos_i + 1; scalar_array::const_iterator r_j = r_i + 1; for ( int j = i+1; pos_j != pos.end(); ++pos_j, ++r_j, ++j) { // If the magnitude of the differential distance is smaller // than the radius between them, a collision! if ((*pos_i - *pos_j).mag() < (*r_i + *r_j)) { // A collision ret.append( boost::python::make_tuple( i, j)); } } } return ret; } // Return a list of integers for those spheres which have collided with // the plane specified by a normal vector 'normal' and point on the plane 'origin' boost::python::list sphere_to_plane_collisions( const vector_array& pos , const scalar_array& radius , vector normal , vector origin) { boost::python::list ret; vector_array::const_iterator p_i = pos.begin(); scalar_array::const_iterator r_i = radius.begin(); for( int i = 0; p_i != pos.end(); ++p_i, ++r_i, ++i) { // Compute the scalar projection of a vector from the origin to pos // to the normal vector of the plane. double dist = (*p_i - origin).comp( normal); if ( dist < *r_i) { ret.append( i); } } return ret; } /************************ python interface code ******************************/ namespace { BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS( vector_array_rotate, vector_array::rotate, 1, 2) } void wrap_vector_array() { using namespace boost::python; // For the uninitiated (and sane), these are member function pointers. // They have the following syntax: // return-type (class-type::* pointer-name)(argument-list) = &class-type::member-function; vector_array (vector_array::* proj_vector)(const vector&) = &vector_array::proj; vector_array (vector_array::* proj_vector_array)( const vector_array&) = &vector_array::proj; vector_array (vector_array::* cross_vector)(const vector&) = &vector_array::cross; vector_array (vector_array::* cross_vector_array)(const vector_array&) = &vector_array::cross; scalar_array (vector_array::* dot_vector)(const vector&) = &vector_array::dot; scalar_array (vector_array::* dot_vector_array)(const vector_array&) = &vector_array::dot; scalar_array (vector_array::* comp_vector) (const vector&) = &vector_array::comp; scalar_array (vector_array::* comp_vector_array)(const vector_array&) = &vector_array::comp; void (vector_array::* append_vector)(const vector&) = &vector_array::append; void (vector_array::* prepend_vector)(const vector&) = &vector_array::prepend; // Overloaded setters for 'x', 'y', and 'z' properties void (vector_array::* set_x_s)(const scalar_array&) = &vector_array::set_x; void (vector_array::* set_x_n)(numeric::array) = &vector_array::set_x; void (vector_array::* set_x_d)(double) = &vector_array::set_x; void (vector_array::* set_y_s)(const scalar_array&) = &vector_array::set_y; void (vector_array::* set_y_n)(numeric::array) = &vector_array::set_y; void (vector_array::* set_y_d)(double) = &vector_array::set_y; void (vector_array::* set_z_s)(const scalar_array&) = &vector_array::set_z; void (vector_array::* set_z_n)(numeric::array) = &vector_array::set_z; void (vector_array::* set_z_d)(double) = &vector_array::set_z; vector_array (vector_array::* truediv_double)( double) const = &vector_array::operator/; vector_array (vector_array::* truediv_scalar_array)(const scalar_array&) const = &vector_array::operator/; const vector_array& (vector_array::* itruediv_double)(double) = &vector_array::operator/=; const vector_array& (vector_array::* itruediv_scalar_array)(const scalar_array&) = &vector_array::operator/=; class_ vector_array_wrapper( "vector_array", init< optional >( args("size", "fill"))); vector_array_wrapper.def( init()) .def( init()) .def( self * double()) .def( double() * self) .def( self * other()) .def( other() * self) .def( self * other()) .def( other() * self) .def( self * other()) .def( self / double()) .def( self / other()) .def( -self) .def( self *= double()) .def( self *= other()) .def( self /= double()) .def( self /= other()) .def( self + self) .def( self + other()) .def( other() + self) .def( self - self) .def( self - other()) .def( other() - self) .def( self += self) .def( self += other()) .def( self -= self) .def( self -= other()) .def( self >= self) .def( self >= other()) .def( self >= other()) .def( self <= self) .def( self <= other()) .def( self <= other()) .def( "__truediv__", truediv_double) .def( "__truediv__", truediv_scalar_array) .def( "__itruediv__", itruediv_double, return_value_policy()) .def( "__itruediv__", itruediv_scalar_array, return_value_policy()) .def( "proj", proj_vector) .def( "proj", proj_vector_array, "Returns a vector_array of vector projections of this array" " to a vector, or another vector_array of identical length.") .def( "cross", cross_vector) .def( "cross", cross_vector_array, "Returns a vector_array of cross products of this array" " and a vector, or another vector_array of identical length.") .def( "size", &vector_array::size, "Get the number of elements in the array.") .def( "rotate", &vector_array::rotate, vector_array_rotate( args("angle", "axis"), "Rotate a vector_array about an axis vector through an angle.")) .def( "append", append_vector, "Add an element to the end of the array.") .def( "prepend", prepend_vector, "Add an element to the beginning of the array.") .def( "head_clip", &vector_array::head_clip, "Remove an element from the beginning of the arrray.") .def( "head_crop", &vector_array::head_crop, "Remove n elements from the beginning of the array.") .def( "tail_clip", &vector_array::tail_clip, "Remove an element from the end of the array.") .def( "tail_crop", &vector_array::tail_crop, "Remove n elements from the end of the array.") .def( "dot", dot_vector) .def( "dot", dot_vector_array, "Returns a scalar_array of dot products of this array" " and a vector, or another vector_array of identical length.") .def( "comp", comp_vector) .def( "comp", comp_vector_array, "Returns a scalar_array of scalar projections of this array" " to a vector, or another vector_array of identical length.") .def( "mag", &vector_array::mag, "Returns a scalar_array of the magnitudes of every element in this array.") .def( "mag2", &vector_array::mag2, "Equivalant to x.mag() * x.mag(), but faster.") .def( "norm", &vector_array::norm, "Returns a vector_array of the unit vectors of this array.") .def( "abs", &vector_array::fabs, "Returns a vector_array of absolute values of the vectors in the array.") // Fancy C++ -> python iterator access .def( "__iter__", iterator()) .def( "__len__", &vector_array::size) .def( "__getitem__", &vector_array::py_getitem, return_internal_reference<>(), "Index this array by a single integer.\n" "Returns a reference to the indexed vector.") .def( "__setitem__", &vector_array::py_setitem) .def( "get_x", &vector_array::get_x) .def( "set_x", set_x_s) .def( "set_x", set_x_n) .def( "set_x", set_x_d) .def( "get_y", &vector_array::get_y) .def( "set_y", set_y_s) .def( "set_y", set_y_n) .def( "set_y", set_y_d) .def( "get_z", &vector_array::get_z) .def( "set_z", set_z_s) .def( "set_z", set_z_n) .def( "set_z", set_z_d) .def( "sum", &vector_array::sum, "Returns the sum of all elements in the array.") .def( "as_array", &vector_array::as_array, "Create a self.__len__() x 3 Numeric.array from this vector_array.") ; vector_array_wrapper.add_property( "x", vector_array_wrapper.attr("get_x"), vector_array_wrapper.attr("set_x")); vector_array_wrapper.add_property( "y", vector_array_wrapper.attr("get_y"), vector_array_wrapper.attr("set_y")); vector_array_wrapper.add_property( "z", vector_array_wrapper.attr("get_z"), vector_array_wrapper.attr("set_z")); def( "sphere_intercollisions", &sphere_collisions, args( "pos", "radius"), "Evaluate collisions between spheres with centers == pos, and radii == radius.\n" "Returns a list of two-integer tuple indexes.\n" "The indexes corrispond to collision pairs indexed by pos."); def( "sphere_to_plane_collisions", &sphere_to_plane_collisions , args( "pos", "radius", "normal", "origin") , "Evaluate collisions between spheres with centers == pos, and radii == radius with\n" "a plane specified by a normal vector == normal, and a point on the plane == origin.\n" "Returns a list of integers corrisponding to colliding spheres' indexed into pos." ); } }} // !namespace cvisual::python visual-5.12_release/src/python/faces.cpp0000644000175000017500000001443311107116223015261 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "python/faces.hpp" #include #include #include "wrap_gl.hpp" #include "python/slice.hpp" #include "util/gl_enable.hpp" using boost::python::numeric::array; namespace cvisual { namespace python { bool faces::degenerate() const { return count < 3; } faces::faces() { double* k = normal.data(); k[0] = k[1] = k[2] = 0.0; } void faces::set_length(size_t new_len) { normal.set_length(new_len); arrayprim_color::set_length(new_len); } void faces::append_rgb( const vector& nv_pos, const vector& nv_normal, float red, float green, float blue) { arrayprim_color::append_rgb( nv_pos, red, green, blue ); double* n = normal.data(count-1); n[0] = nv_normal.x; n[1] = nv_normal.y; n[2] = nv_normal.z; } void faces::append( const vector& nv_pos, const vector& nv_normal, const rgb& nv_color) { arrayprim_color::append( nv_pos, nv_color ); double* n = normal.data(count-1); n[0] = nv_normal.x; n[1] = nv_normal.y; n[2] = nv_normal.z; } void faces::append( const vector& nv_pos, const vector& nv_normal) { arrayprim_color::append( nv_pos ); double* n = normal.data(count-1); n[0] = nv_normal.x; n[1] = nv_normal.y; n[2] = nv_normal.z; } // Define an ordering for the stl-sorting criteria. struct stl_cmp_vector { //AS added "const" to allow template match for VC++ build bool operator()( const vector& lhs, const vector& rhs) const { if (lhs.x < rhs.x) return true; else if (lhs.x > rhs.x) return false; else if (lhs.y < rhs.y) return true; else if (lhs.y > rhs.y) return false; else if (lhs.z < rhs.z) return true; else return false; } }; void faces::smooth_shade(bool doublesided) { if (shape(pos) != shape(normal)) throw std::invalid_argument( "Dimension mismatch between pos and normal."); // positions -> normals std::map< const vector, vector, stl_cmp_vector> vertices; std::map< const vector, vector, stl_cmp_vector> vertices_backface; const double* pos_i = pos.data(); double* norm_i = normal.data(); const double* pos_end = pos.end(); for ( ; pos_i < pos_end; pos_i+=3, norm_i+=3) { // If there isn't a normal at the specified position, it will be default // initialized to zero. If there already is one, it will be returned. if (doublesided) { if (vertices[vector(pos_i)].dot( vector(norm_i)) >= 0.0) { vertices[vector(pos_i)] += vector(norm_i); } else { vertices_backface[vector(pos_i)] += vector(norm_i); } } else { vertices[vector(pos_i)] += vector(norm_i); } } pos_i = pos.data(); norm_i = normal.data(); vector tmp; for ( ; pos_i < pos_end; pos_i+=3, norm_i+=3) { if (doublesided) { if (vertices[vector(pos_i)].dot( vector(norm_i)) >= 0.0) { tmp = vertices[vector(pos_i)].norm(); } else { tmp = vertices_backface[vector(pos_i)].norm(); } } else { tmp = vertices[vector(pos_i)].norm(); } norm_i[0] = tmp.get_x(); norm_i[1] = tmp.get_y(); norm_i[2] = tmp.get_z(); } } boost::python::object faces::get_normal() { return normal[all()]; } void faces::set_normal( const double_array& n_normal) { std::vector dims = shape(n_normal); if (dims.size() == 2 && dims[1] == 3) set_length( dims[0] ); normal[slice(0, count)] = n_normal; } void faces::set_normal_v( vector v) { using boost::python::make_tuple; // Broadcast the new normal across the array. int npoints = count ? count : 1; normal[slice(0, npoints)] = make_tuple( v.x, v.y, v.z); } void faces::gl_render( const view& scene) { if (degenerate()) return; std::vector spos; std::vector tcolor; gl_enable_client vertexes( GL_VERTEX_ARRAY); gl_enable_client normals( GL_NORMAL_ARRAY); gl_enable_client colors( GL_COLOR_ARRAY); glNormalPointer( GL_DOUBLE, 0, normal.data() ); if (scene.gcf != 1.0 || (scene.gcfvec[0] != scene.gcfvec[1])) { std::vector tmp( count); spos.swap( tmp); const double* pos_i = pos.data(); for (std::vector::iterator i = spos.begin(); i != spos.end(); ++i) { *i = vector(pos_i).scale(scene.gcfvec); pos_i += 3; } glVertexPointer( 3, GL_DOUBLE, 0, &*spos.begin()); } else glVertexPointer( 3, GL_DOUBLE, 0, pos.data() ); if (scene.anaglyph) { std::vector tmp( count); tcolor.swap( tmp); const double* color_i = color.data(); for (std::vector::iterator i = tcolor.begin(); i != tcolor.end(); ++i) { if (scene.coloranaglyph) *i = rgb(color_i).desaturate(); else *i = rgb(color_i).grayscale(); color_i += 3; } glColorPointer( 3, GL_FLOAT, 0, &*tcolor.begin()); } else glColorPointer( 3, GL_DOUBLE, 0, color.data() ); gl_enable cull_face( GL_CULL_FACE); for (size_t drawn = 0; drawn < count - count%3; drawn += 54) { glDrawArrays( GL_TRIANGLES, drawn, std::min( count - count%3 - drawn, (size_t)54)); } } void faces::gl_pick_render( const view& scene) { gl_render( scene); } vector faces::get_center() const { vector ret; const double* pos_i = pos.data(); const double* pos_end = pos.data( count - count%3 ); while (pos_i < pos_end) { ret += vector(pos_i); pos_i += 3; // 3 doubles per vector point } if (count) ret /= count; return ret; } void faces::grow_extent( extent& world) { const double* pos_i = pos.data(); const double* pos_end = pos.data( count - count%3 ); while (pos_i < pos_end) { world.add_point( vector(pos_i)); pos_i += 3; // 3 doubles per vector point } world.add_body(); } void faces::get_material_matrix( const view& v, tmatrix& out ) { if (degenerate()) return; // TODO: Add some caching for extent with grow_extent etc vector min_extent, max_extent; const double* pos_i = pos.data(); const double* pos_end = pos.data( count - count%3 ); min_extent = max_extent = vector( pos_i ); pos_i += 3; while (pos_i < pos_end) for(int j=0; j<3; j++) { if (*pos_i < min_extent[j]) min_extent[j] = *pos_i; else if (*pos_i > max_extent[j]) max_extent[j] = *pos_i; pos_i++; } out.translate( vector(.5,.5,.5) ); out.scale( vector(1,1,1) * (.999 / (v.gcf * std::max(max_extent.x-min_extent.x, std::max(max_extent.y-min_extent.y, max_extent.z-min_extent.z)))) ); out.translate( -.5 * v.gcf * (min_extent + max_extent) ); } } } // !namespace cvisual::python visual-5.12_release/src/python/wrap_primitive.cpp0000644000175000017500000002470511243332661017253 00000000000000// This file uses 152 MB to compile (optimizing) // Copyright (c) 2003, 2004, 2005 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "primitive.hpp" #include "material.hpp" #include "arrow.hpp" #include "sphere.hpp" #include "cylinder.hpp" #include "cone.hpp" #include "ring.hpp" #include "rectangular.hpp" #include "box.hpp" #include "ellipsoid.hpp" #include "pyramid.hpp" #include "label.hpp" #include "frame.hpp" #include "light.hpp" #include "python/numeric_texture.hpp" #include "python/wrap_vector.hpp" #include #include #include #include #include namespace cvisual { using namespace boost::python; using boost::noncopyable; /* Unfortunately the signatures of the functions primitive.rotate( "angle", "axis") * and primitive.rotate( "angle", "origin") are identical to Boost.Python. To * differentiate them, I am using this raw function to interpret the arguments. * Ick. */ template object py_rotate( tuple args, dict kwargs) { Prim* This = extract( args[0]); if (!kwargs.has_key("angle")) { // This exception is more useful than the keyerror exception below. throw std::invalid_argument( "primitive.rotate(): angle of rotation must be specified."); } double angle = extract(kwargs["angle"]); // The rotation axis, which defaults to the body axis. vector r_axis; if (kwargs.has_key("axis")) r_axis = tovector(kwargs["axis"]); else r_axis = This->get_axis(); // The rotation origin, which defaults to the body position. vector origin; if (kwargs.has_key("origin")) origin = tovector(kwargs["origin"]); else origin = This->get_pos(); This->rotate( angle, r_axis, origin); return object(); } struct textures_to_list { static PyObject* convert(std::vector > const& a) { using namespace boost::python; list result; for(size_t i=0; i < a.size(); i++) result.append( a[i] ); return incref(result.ptr()); } }; // This is a "custom rvalue converter". See also: Boost.Python FAQ struct textures_from_list { typedef std::vector > V; textures_from_list() { boost::python::converter::registry::push_back( &convertible, &construct, boost::python::type_id< V >()); } static void* convertible(PyObject* obj_ptr) { using namespace boost::python; return obj_ptr; // if the input object is convertible } static void construct( PyObject* obj_ptr, boost::python::converter::rvalue_from_python_stage1_data* data) { using namespace boost::python; void* storage = ((converter::rvalue_from_python_storage*)data)->storage.bytes; new (storage) V(); data->convertible = storage; V& result = *((V*)storage); list l = extract< list >( obj_ptr ); result.resize( len(l) ); for(size_t i=0; i < result.size(); i++) result[i] = extract< shared_ptr >( l[i] ); } }; void wrap_primitive() { class_( "renderable", no_init) .add_property( "material", &renderable::get_material, &renderable::set_material) ; class_, noncopyable>( "primitive", no_init) .add_property( "pos", make_function(&primitive::get_pos, return_internal_reference<>()), &primitive::set_pos) .add_property( "x", &primitive::get_x, &primitive::set_x) .add_property( "y", &primitive::get_y, &primitive::set_y) .add_property( "z", &primitive::get_z, &primitive::set_z) .add_property( "axis", make_function(&primitive::get_axis, return_internal_reference<>()), &primitive::set_axis) .add_property( "up", make_function(&primitive::get_up, return_internal_reference<>()), &primitive::set_up) .add_property( "color", &primitive::get_color, &primitive::set_color) .add_property( "red", &primitive::get_red, &primitive::set_red) .add_property( "green", &primitive::get_green, &primitive::set_green) .add_property( "blue", &primitive::get_blue, &primitive::set_blue) .add_property( "opacity", &primitive::get_opacity, &primitive::set_opacity) .def( "rotate", raw_function( &py_rotate)) ; class_, noncopyable>( "axial", no_init) .add_property( "radius", &axial::get_radius, &axial::set_radius) ; class_, noncopyable>( "rectangular", no_init) .add_property( "length", &rectangular::get_length, &rectangular::set_length) .add_property( "width", &rectangular::get_width, &rectangular::set_width) .add_property( "height", &rectangular::get_height, &rectangular::set_height) .add_property( "size", &rectangular::get_size, &rectangular::set_size) ; class_< arrow, bases, noncopyable >("arrow") .def( init()) .add_property( "length", &arrow::get_length, &arrow::set_length) .add_property( "shaftwidth", &arrow::get_shaftwidth, &arrow::set_shaftwidth) .add_property( "headlength", &arrow::get_headlength, &arrow::set_headlength) .add_property( "headwidth", &arrow::get_headwidth, &arrow::set_headwidth) .add_property( "fixedwidth", &arrow::is_fixedwidth, &arrow::set_fixedwidth) ; class_< sphere, bases >( "sphere") .def( init()) ; class_< cylinder, bases >( "cylinder") .def( init()) .add_property( "length", &cylinder::get_length, &cylinder::set_length) ; class_< cone, bases >( "cone") .def( init()) .add_property( "length", &cone::get_length, &cone::set_length) ; class_< ring, bases >( "ring") .def( init()) .add_property( "thickness", &ring::get_thickness, &ring::set_thickness) ; class_< box, bases >( "box") .def( init()) ; // Actually this inherits from sphere, but this avoids unwrapping the radius // member. class_< ellipsoid, bases >( "ellipsoid") .def( init()) .add_property( "width", &ellipsoid::get_width, &ellipsoid::set_width) .add_property( "height", &ellipsoid::get_height, &ellipsoid::set_height) .add_property( "length", &ellipsoid::get_length, &ellipsoid::set_length) .add_property( "size", &ellipsoid::get_size, &ellipsoid::set_size) ; class_< pyramid, bases >( "pyramid") .def( init()) ; class_< label, bases >( "label") .def( init()) .add_property( "color", &label::get_color, &label::set_color) .add_property( "red", &label::get_red, &label::set_red) .add_property( "green", &label::get_green, &label::set_green) .add_property( "blue", &label::get_blue, &label::set_blue) .add_property( "opacity", &label::get_opacity, &label::set_opacity) .add_property( "pos", make_function(&label::get_pos, return_internal_reference<>()), &label::set_pos) .add_property( "x", &label::get_x, &label::set_x) .add_property( "y", &label::get_y, &label::set_y) .add_property( "z", &label::get_z, &label::set_z) .add_property( "height", &label::get_font_size, &label::set_font_size) .add_property( "xoffset", &label::get_xoffset, &label::set_xoffset) .add_property( "yoffset", &label::get_yoffset, &label::set_yoffset) .add_property( "border", &label::get_border, &label::set_border) .add_property( "box", &label::has_box, &label::render_box) .add_property( "line", &label::has_line, &label::render_line) .add_property( "linecolor", &label::get_linecolor, &label::set_linecolor) .add_property( "font", &label::get_font_family, &label::set_font_family) .add_property( "text", &label::get_text, &label::set_text) .add_property( "space", &label::get_space, &label::set_space) // .def( self_ns::str(self)) ; class_ >( "frame") .def( init()) .add_property( "objects", &frame::get_objects) .add_property( "pos", make_function(&frame::get_pos, return_internal_reference<>()), &frame::set_pos) .add_property( "x", &frame::get_x, &frame::set_x) .add_property( "y", &frame::get_y, &frame::set_y) .add_property( "z", &frame::get_z, &frame::set_z) .add_property( "axis", make_function(&frame::get_axis, return_internal_reference<>()), &frame::set_axis) .add_property( "up", make_function(&frame::get_up, return_internal_reference<>()), &frame::set_up) .def( "rotate", raw_function( &py_rotate)) .def( "add_renderable", &frame::add_renderable) .def( "remove_renderable", &frame::remove_renderable) .def( "frame_to_world", &frame::frame_to_world) .def( "world_to_frame", &frame::world_to_frame) /* frame.scale disabled for Visual 4.0 .add_property( "scale", make_function(&frame::get_scale, return_internal_reference<>()), &frame::set_scale) */ ; using python::numeric_texture; class_( "texbase", no_init); class_, bases, noncopyable>( "texture") .add_property( "data", &numeric_texture::get_data, &numeric_texture::set_data) .add_property( "type", &numeric_texture::get_type, &numeric_texture::set_type) .add_property( "mipmap", &numeric_texture::is_mipmapped, &numeric_texture::set_mipmapped) .add_property( "interpolate", &numeric_texture::is_antialiased, &numeric_texture::set_antialias) .add_property( "clamp", &numeric_texture::get_clamp, &numeric_texture::set_clamp) ; boost::python::to_python_converter< std::vector< shared_ptr >, textures_to_list>(); textures_from_list(); class_, noncopyable>( "material" ) .add_property( "textures", &material::get_textures, &material::set_textures ) .add_property( "shader", &material::get_shader, &material::set_shader ) .add_property( "translucent", &material::get_translucent, &material::set_translucent ) ; class_, noncopyable>( "light", no_init ) .add_property( "color", &light::get_color, &light::set_color); class_, noncopyable>( "distant_light" ) .def( init()) .add_property( "direction", make_function( &distant_light::get_direction, return_internal_reference<>()), &distant_light::set_direction); class_, noncopyable>( "local_light" ) .def( init()) .add_property( "pos", make_function( &local_light::get_pos, return_internal_reference<>()), &local_light::set_pos); } } // !namespace cvisual visual-5.12_release/src/python/num_util_impl_numeric.cpp0000644000175000017500000001034110432124303020567 00000000000000/** This file contains the implementation of the Numeric back-end. */ #include "python/num_util_impl.hpp" #ifdef VISUAL_HAVE_NUMERIC # define PY_ARRAY_UNIQUE_SYMBOL visual_numeric_PyArrayHandle # include // Local function prototypes using namespace boost::python; namespace cvisual { namespace python { static int rank(const numeric::array& arr); static PyArray_TYPES type(array_types); static array_types type( char); static char type2char( array_types); } } // !namespace cvisual::python #endif // !VISUAL_HAVE_NUMERIC #include #include namespace cvisual { namespace python { // True when the PyArray_API pointers have been initialized. static bool arrayapi_initialized = false; void init_numeric_impl() { #ifdef VISUAL_HAVE_NUMERIC import_array(); arrayapi_initialized = true; #else throw std::runtime_error( "This build of Visual does not support Numeric."); #endif } #ifdef VISUAL_HAVE_NUMERIC static PyArray_TYPES type( array_types t) { switch (t) { case char_t: return PyArray_CHAR; case uchar_t: return PyArray_UBYTE; case schar_t: return PyArray_SBYTE; case short_t: return PyArray_SHORT; case int_t: return PyArray_INT; case long_t: return PyArray_LONG; case float_t: return PyArray_FLOAT; case double_t: return PyArray_DOUBLE; case cfloat_t: return PyArray_CFLOAT; case cdouble_t: return PyArray_CDOUBLE; case object_t: return PyArray_OBJECT; default: bool type_is_recognized = false; assert( type_is_recognized == true); } } static array_types type( char t) { switch (t) { case 'c': return char_t; case 'b': return uchar_t; case '1': return schar_t; case 's': return short_t; case 'i': return int_t; case 'l': return long_t; case 'f': return float_t; case 'd': return double_t; case 'F': return cfloat_t; case 'D': return cdouble_t; case 'O': return object_t; default: bool type_is_recognized = false; assert( type_is_recognized == true); } } static char type2char( array_types t) { switch (t) { case char_t: return 'c'; case uchar_t: return 'b'; case schar_t: return '1'; case short_t: return 's'; case int_t: return 'i'; case long_t: return 'l'; case float_t: return 'f'; case double_t: return 'd'; case cfloat_t: return 'F'; case cdouble_t: return 'D'; case object_t: return 'O'; default: return 0; } } static numeric::array makeNum_impl_numeric(std::vector dimens, array_types t) { object obj(handle<>(PyArray_FromDims(dimens.size(), &dimens[0], type(t)))); return extract(obj); } static array_types type_impl_numeric(numeric::array arr) { return type(arr.typecode()); } // Return the number of dimensions static int rank(const numeric::array& arr) { return ((PyArrayObject*) arr.ptr())->nd; } static std::vector shape_impl_numeric(numeric::array arr) { std::vector out_dims; int* dims_ptr = ((PyArrayObject*) arr.ptr())->dimensions; int the_rank = rank(arr); for (int i = 0; i < the_rank; i++){ out_dims.push_back(*(dims_ptr + i)); } return out_dims; } static bool iscontiguous_impl_numeric(numeric::array arr) { return PyArray_ISCONTIGUOUS((PyArrayObject*)arr.ptr()); } static char* data_impl_numeric(const numeric::array& arr) { return ((PyArrayObject*) arr.ptr())->data; } static numeric::array astype_impl_numeric(numeric::array arr, array_types t) { return (numeric::array) arr.astype(type2char(t)); } #endif // VISUAL_HAVE_NUMERIC void use_numeric_impl() { #ifdef VISUAL_HAVE_NUMERIC if (!arrayapi_initialized) init_numeric_impl(); makeNum_impl = makeNum_impl_numeric; type_impl = type_impl_numeric; shape_impl = shape_impl_numeric; iscontiguous_impl = iscontiguous_impl_numeric; data_impl = data_impl_numeric; astype_impl = astype_impl_numeric; numeric::array::set_module_and_type( "Numeric", "ArrayType"); #else throw std::runtime_error( "This build of Visual does not support Numeric."); #endif } } } // !namespace cvisual::python visual-5.12_release/src/python/curve.cpp0000644000175000017500000003246711107137734015345 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include #include #include "util/errors.hpp" #include "util/gl_enable.hpp" #include "python/slice.hpp" #include "python/curve.hpp" #include #include #include #include using boost::python::make_tuple; using boost::python::object; // Recall that the default constructor for object() is a reference to None. namespace cvisual { namespace python { curve::curve() : antialias( true), radius(0.0), sides(4) { for (size_t i=0; iradius = radius; } void curve::set_antialias( bool aa) { this->antialias = aa; } bool curve::degenerate() const { return count < 2; } bool curve::monochrome(float* tcolor, size_t pcount) { rgb first_color( tcolor[0], tcolor[1], tcolor[2]); size_t nn; for(nn=0; nn diff && rhs*frac > diff; } } // !namespace (unnamed) vector curve::get_center() const { // TODO: Optimize this by only recomputing the center when the checksum of // the entire object has changed. // TODO: Only add the "optimization" if the checksum is actually faster than // computing the average value every time... if (degenerate()) return vector(); vector ret; const double* pos_i = pos.data(); const double* pos_end = pos.end(); while (pos_i < pos_end) { ret.x += pos_i[0]; ret.y += pos_i[1]; ret.z += pos_i[2]; pos_i += 3; } ret /= count; return ret; } void curve::gl_pick_render( const view& scene) { // Aack, I can't think of any obvious optimizations here. // But since Visual 3 didn't permit picking of curves, omit for now. // We can't afford it; serious impact on performance. //gl_render( scene); } void curve::grow_extent( extent& world) { if (degenerate()) return; const double* pos_i = pos.data(); const double* pos_end = pos.end(); if (radius == 0.0) for ( ; pos_i < pos_end; pos_i += 3) world.add_point( vector(pos_i)); else for ( ; pos_i < pos_end; pos_i += 3) world.add_sphere( vector(pos_i), radius); world.add_body(); } bool curve::adjust_colors( const view& scene, float* tcolor, size_t pcount) { rgb rendered_color; bool mono = monochrome(tcolor, pcount); if (mono) { // We can get away without using a color array. rendered_color = rgb( tcolor[0], tcolor[1], tcolor[2]); if (scene.anaglyph) { if (scene.coloranaglyph) rendered_color.desaturate().gl_set(opacity); else rendered_color.grayscale().gl_set(opacity); } else rendered_color.gl_set(opacity); } else { glEnableClientState( GL_COLOR_ARRAY); if (scene.anaglyph) { // Must desaturate or grayscale the color. for (size_t i = 0; i < pcount; ++i) { rendered_color = rgb( tcolor[3*i], tcolor[3*i+1], tcolor[3*i+2]); if (scene.coloranaglyph) rendered_color = rendered_color.desaturate(); else rendered_color = rendered_color.grayscale(); tcolor[3*i] = rendered_color.red; tcolor[3*i+1] = rendered_color.green; tcolor[3*i+2] = rendered_color.blue; } } } return mono; } namespace { template struct converter { T data[3]; }; } // !namespace (anonymous) void curve::thickline( const view& scene, double* spos, float* tcolor, size_t pcount, double scaled_radius) { float *cost = curve_sc; float *sint = cost + sides; vector lastA; // unit vector of previous segment if (pcount < 2) return; bool closed = vector(&spos[0]) == vector(&spos[(pcount-1)*3]); size_t vcount = pcount*2 - closed; // The number of vertices along each edge of the curve std::vector projected( vcount*sides ); std::vector normals( vcount*sides ); std::vector light( vcount*sides ); // pos and color iterators const double* v_i = spos; const float* c_i = tcolor; int i = closed ? 0 : sides; bool mono = adjust_colors( scene, tcolor, pcount); for (size_t corner=0; corner < pcount; ++corner, v_i += 3, c_i += 3) { vector current( &v_i[0] ); vector next, A, bisecting_plane_normal; double sectheta; if (corner != pcount-1) { next = vector( &v_i[3] ); // The next vector in spos A = (next - current).norm(); if (!A) { if (corner == 0) { const double* tv_i = v_i; for (size_t tcorner=0; tcorner < pcount; ++tcorner, tv_i += 3) { A = (vector( &tv_i[3] ) - current).norm(); if (!A) continue; } if (!A) { // all the points of this curve are at the same location; abort return; } lastA = A; } else { A = lastA; } } bisecting_plane_normal = (A + lastA).norm(); if (!bisecting_plane_normal) { //< Exactly 180 degree bend bisecting_plane_normal = vector(0,0,1).cross(A); if (!bisecting_plane_normal) bisecting_plane_normal = vector(0,1,0).cross(A); } sectheta = bisecting_plane_normal.dot( lastA ); if (sectheta) sectheta = 1.0 / sectheta; } if (corner == 0) { vector y = vector(0,1,0); vector x = A.cross(y).norm(); if (!x) { x = A.cross( vector(0, 0, 1)); if (!x) x = A.cross( vector(0, 1, 0)); } y = x.cross(A).norm(); if (!x || !y || x == y) { std::ostringstream msg; msg << "Degenerate curve case! please report the following " "information to visualpython-users@lists.sourceforge.net: "; msg << "current:" << current << " next:" << next << " A:" << A << " x:" << x << " y:" << y << std::endl; VPYTHON_WARNING( msg.str()); } // scale radii x *= scaled_radius; y *= scaled_radius; for (size_t a=0; a < sides; a++) { vector rel = x*sint[a] + y*cost[a]; // first point is "up" normals[a+i] = rel.norm(); projected[a+i] = current + rel; if (!mono) light[a+i] = rgb( c_i ); if (!closed) { // Cap start of curve projected[a] = current; normals[a] = -A; if (!mono) light[a] = light[a+i]; } } i += sides; } else { // TODO: t and A.dot(next-current) can be moved out of loop for (size_t a=0; a < sides; a++) { vector prev_start = projected[i+a-sides]; vector rel = prev_start - current; double t = -rel.dot(lastA); if (corner != pcount-1 && sectheta > 0.0) { double t1 = -(rel.dot(bisecting_plane_normal)) * sectheta; t1 = std::max( t1, t - A.dot(next - current) ); t = std::max( 0.0, std::min( t, t1 ) ); } vector prev_end = prev_start + t*lastA; projected[i+a] = prev_end; normals[i+a] = normals[i+a-sides]; if (!mono) light[i+a] = rgb( c_i ); if (corner != pcount-1) { vector next_start = prev_end - 2*(prev_end-current).dot(bisecting_plane_normal)*bisecting_plane_normal; rel = next_start - current; projected[i+a+sides] = next_start; normals[i+a+sides] = (rel - A.dot(next_start-current)*A).norm(); if (!mono) light[i+a+sides] = light[i+a]; } else if (!closed) { // Cap end of curve for (size_t a=0; a < sides; a++) { projected[i+a+sides] = current; normals[i+a+sides] = lastA; if (!mono) light[i+a+sides] = light[a+i]; } } } i += 2*sides; } lastA = A; } if (closed) { // Connect the end of the curve to the start... can be ugly because the basis has gotten // twisted around! size_t i = (vcount - 1)*sides; for(size_t a=0; a max_extent[j]) max_extent[j] = *pos_i; pos_i++; } min_extent -= vector(radius,radius,radius); max_extent += vector(radius,radius,radius); out.translate( vector(.5,.5,.5) ); out.scale( vector(1,1,1) * (.999 / (v.gcf * std::max(max_extent.x-min_extent.x, std::max(max_extent.y-min_extent.y, max_extent.z-min_extent.z)))) ); out.translate( -.5 * v.gcf * (min_extent + max_extent) ); } } } // !namespace cvisual::python visual-5.12_release/src/python/cvisualmodule.cpp0000644000175000017500000001022311202170662017050 00000000000000// This file takes roughly 115 MB RAM to compile. // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include #include #include #include #include #include #include #define PY_ARRAY_UNIQUE_SYMBOL visual_PyArrayHandle //#include #include "util/rate.hpp" //#include "display.hpp" #include "util/errors.hpp" #include "python/num_util.hpp" #include "python/gil.hpp" namespace cvisual { void wrap_display_kernel(); void wrap_primitive(); void wrap_rgba(); void wrap_vector(); void wrap_arrayobjects(); namespace python { void wrap_vector_array(); void wrap_scalar_array(); } // !namespace python void translate_std_out_of_range( std::out_of_range e) { PyErr_SetString( PyExc_IndexError, e.what()); } void translate_std_invalid_argument( std::invalid_argument e) { PyErr_SetString( PyExc_ValueError, e.what()); } void translate_std_runtime_error( std::runtime_error e) { PyErr_SetString( PyExc_RuntimeError, e.what()); } void py_rate( double freq) { python::gil_release R; rate(freq); } namespace py = boost::python; struct double_from_int { double_from_int() { py::converter::registry::push_back( &convertible, &construct, py::type_id()); } static void* convertible( PyObject* obj) { PyObject* newobj = PyNumber_Float(obj); if (!PyString_Check(obj) && newobj) { Py_DECREF(newobj); return obj; } else { if (newobj) { Py_DECREF(newobj); } PyErr_Clear(); return 0; } } static void construct( PyObject* _obj, py::converter::rvalue_from_python_stage1_data* data) { PyObject* newobj = PyNumber_Float(_obj); double* storage = (double*)( (py::converter::rvalue_from_python_storage*) data)->storage.bytes; *storage = py::extract(newobj); Py_DECREF(newobj); data->convertible = storage; } }; struct float_from_int { float_from_int() { py::converter::registry::push_back( &convertible, &construct, py::type_id()); } static void* convertible( PyObject* obj) { PyObject* newobj = PyNumber_Float(obj); if (!PyString_Check(obj) && newobj) { Py_DECREF(newobj); return obj; } else { if (newobj) { Py_DECREF(newobj); } PyErr_Clear(); return 0; } } static void construct( PyObject* _obj, py::converter::rvalue_from_python_stage1_data* data) { PyObject* newobj = PyNumber_Float(_obj); float* storage = (float*)( (py::converter::rvalue_from_python_storage*) data)->storage.bytes; *storage = py::extract(newobj); Py_DECREF(newobj); data->convertible = storage; } }; BOOST_PYTHON_MODULE( cvisual) { VPYTHON_NOTE( "Importing cvisual from vpython-core2."); using namespace boost::python; numeric::array::set_module_and_type( "numpy", "ndarray"); #if __GNUG__ #if __GNUC__ == 3 #if __GNUCMINOR__ >= 1 && __GNUCMINOR__ < 4 std::set_terminate( __gnu_cxx::__verbose_terminate_handler); #endif #endif #endif // Private functions for initializing and choosing the numeric backend //def( "_init_numpy_impl", python::init_numpy_impl); def("init_numpy", python::init_numpy); // import_array() // Initialize the Python thread system. PyEval_InitThreads(); // A subset of the python standard exceptions may be thrown from visual register_exception_translator( &translate_std_out_of_range); register_exception_translator( &translate_std_invalid_argument); register_exception_translator( &translate_std_runtime_error); def( "rate", py_rate, "rate(arg) -> Limits the execution rate of a loop to arg" " iterations per second."); double_from_int(); float_from_int(); wrap_vector(); wrap_rgba(); wrap_display_kernel(); wrap_primitive(); wrap_arrayobjects(); python::wrap_vector_array(); python::wrap_scalar_array(); } } // !namespace cvisual visual-5.12_release/src/python/CVS/0000777000175000017500000000000011240651152014211 500000000000000visual-5.12_release/src/python/CVS/Entries0000644000175000017500000000164211243332661015470 00000000000000/.cvsignore/1.1/Sun Dec 5 20:08:43 2004// /arrayprim.cpp/1.8/Fri Nov 14 00:01:32 2008// /convex.cpp/1.19/Fri Nov 14 00:01:32 2008// /curve.cpp/1.74/Fri Nov 14 00:01:32 2008// /cvisualmodule.cpp/1.22/Tue May 12 03:49:06 2009// /faces.cpp/1.31/Thu Nov 13 21:30:59 2008// /num_util.cpp/1.9/Fri Sep 26 16:45:42 2008// /num_util_impl_numarray.cpp/1.1/Mon May 15 16:13:55 2006// /num_util_impl_numeric.cpp/1.1/Mon May 15 16:13:55 2006// /numeric_texture.cpp/1.22/Wed Nov 5 23:45:49 2008// /points.cpp/1.29/Tue Dec 30 21:54:56 2008// /scalar_array.cpp/1.3/Sat Nov 25 04:52:01 2006// /slice.cpp/1.1/Sun Aug 15 00:28:10 2004// /vector_array.cpp/1.10/Sun Jun 8 20:43:05 2008// /wrap_arrayobjects.cpp/1.28/Tue Dec 30 21:50:42 2008// /wrap_display_kernel.cpp/1.45/Wed May 13 23:01:39 2009// /wrap_primitive.cpp/1.30/Thu Aug 20 20:44:33 2009// /wrap_rgba.cpp/1.11/Wed Nov 5 17:12:43 2008// /wrap_vector.cpp/1.17/Sun Oct 5 16:24:34 2008// visual-5.12_release/src/python/CVS/Root0000644000175000017500000000011111240651152014764 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/src/python/CVS/Repository0000644000175000017500000000003111240651152016221 00000000000000vpython-core2/src/python visual-5.12_release/src/python/wrap_rgba.cpp0000644000175000017500000000613011104352013016133 00000000000000 // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/rgba.hpp" #include #include #include #include #include namespace cvisual { namespace py = boost::python; struct rgb_from_seq { rgb_from_seq() { py::converter::registry::push_back( &convertible, &construct, py::type_id()); } static void* convertible( PyObject* obj) { using py::handle; using py::allow_null; handle<> obj_iter( allow_null( PyObject_GetIter(obj))); if (!obj_iter.get()) { PyErr_Clear(); return 0; } int obj_size = PyObject_Length(obj); if (obj_size < 0) { PyErr_Clear(); return 0; } if (obj_size != 3) return 0; return obj; } static void construct( PyObject* _obj, py::converter::rvalue_from_python_stage1_data* data) { py::object obj = py::object(py::handle<>(py::borrowed(_obj))); void* storage = ( (py::converter::rvalue_from_python_storage*) data)->storage.bytes; new (storage) rgb( py::extract(obj[0]), py::extract(obj[1]), py::extract(obj[2])); data->convertible = storage; } }; struct rgba_from_seq { rgba_from_seq() { py::converter::registry::push_back( &convertible, &construct, py::type_id()); } static void* convertible( PyObject* obj) { using py::handle; using py::allow_null; if (PyInt_Check(obj) || PyFloat_Check(obj)) return obj; handle<> obj_iter( allow_null( PyObject_GetIter(obj))); if (!obj_iter.get()) { PyErr_Clear(); return 0; } int obj_size = PyObject_Length(obj); if (obj_size < 0) { PyErr_Clear(); return 0; } if (obj_size != 3 && obj_size != 4) return 0; return obj; } static void construct( PyObject* _obj, py::converter::rvalue_from_python_stage1_data* data) { py::object obj = py::object(py::handle<>(py::borrowed(_obj))); void* storage = ( (py::converter::rvalue_from_python_storage*) data)->storage.bytes; int obj_size = PyObject_Length(_obj); if (obj_size == 3) new (storage) rgba( py::extract(obj[0]), py::extract(obj[1]), py::extract(obj[2])); else new (storage) rgba( py::extract(obj[0]), py::extract(obj[1]), py::extract(obj[2]), py::extract(obj[3])); data->convertible = storage; } }; struct rgb_to_tuple { static PyObject* convert( const rgb& color) { py::tuple ret = py::make_tuple( color.red, color.green, color.blue); Py_INCREF(ret.ptr()); return ret.ptr(); } }; struct rgba_to_tuple { static PyObject* convert( const rgba& color) { py::tuple ret = py::make_tuple( color.red, color.green, color.blue, color.opacity); Py_INCREF(ret.ptr()); return ret.ptr(); } }; void wrap_rgba() { rgb_from_seq(); rgba_from_seq(); py::to_python_converter< rgb, rgb_to_tuple>(); py::to_python_converter< rgba, rgba_to_tuple>(); } } // !namespace cvisual visual-5.12_release/src/gtk2/0000777000175000017500000000000011240651151013103 500000000000000visual-5.12_release/src/gtk2/makefile0000644000175000017500000001113511112543734014525 00000000000000# This is a simple makefile that in Nov. 2008 on Ubuntu 8 was equivalent # to the autoconf build machinery. This file is unlikely to be kept up to date. # Its purpose is just to show the main features of a Visual build, without the # complexity of the autoconf mechanisms. It deals only with the building and # installing of cvisual.so, not with installing the other components (help etc.) # Place a copy of this make file in a directory parallel to vpython-core2 # Be sure to specify what version of Python # In vpython-core2/gtk2, run "sudo make setup" to establish links that make # it unnecessary to move cvisual.so into the actual site-packages directory. prefix = /usr PYTHON_VERSION = 2.5 PYTHON_INCLUDES = -I/usr/include/python$(PYTHON_VERSION) -I$(prefix)/lib/python$(PYTHON_VERSION)/site-packages/numpy/core/include #SITE_PACKAGES = /usr/lib/python$(PYTHON_VERSION)/site-packages/ TOP = ../vpython-core2 DEPENDS = $(TOP)/dependencies SRC = $(TOP)/src VPATH = $(SRC)/gtk2 $(SRC)/core/util $(SRC)/core $(SRC)/python $(SRC) CXX = g++ GTK_LIBS = -Wl,--export-dynamic -lgtkglextmm-x11-1.2 -lgdkglextmm-x11-1.2 -lgtkglext-x11-1.0 -lgdkglext-x11-1.0 -lGLU -lGL -lXmu -lXt -lSM -lICE -lpangox-1.0 -lX11 -lpangoft2-1.0 -lfontconfig -lglademm-2.4 -lgtkmm-2.4 -lglade-2.0 -lgdkmm-2.4 -latkmm-1.6 -lpangomm-1.4 -lcairomm-1.0 -lglibmm-2.4 -lsigc-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lfreetype -lz GTK_CFLAGS = -I/usr/include/gtkglextmm-1.2 -I/usr/lib/gtkglextmm-1.2/include -I/usr/include/gtkglext-1.0 -I/usr/include/gtkmm-2.4 -I/usr/lib/gtkmm-2.4/include -I/usr/lib/gtkglext-1.0/include -I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/cairo -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/cairomm-1.0 -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/atk-1.0 -I/usr/include/atkmm-1.6 -I/usr/include/libglademm-2.4 -I/usr/lib/libglademm-2.4/include -I/usr/include/libglade-2.0 -I/usr/include/libxml2 -I$(TOP)/include/gtk2 GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0 GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include # 18814435 MB without -DNDEBUG # 18744287 MB with -DNDEBUG # Option flags for the compiler, constructed from the above. CVISUAL_CPPFLAGS = $(PYTHON_INCLUDES) -DHAVE_CONFIG_H -DNDEBUG \ -I$(TOP)/dependencies/threadpool/include -I$(TOP)/include \ $(GTK_CFLAGS) $(GTHREAD_CFLAGS) CVISUAL_CXXFLAGS = -g -O2 -ftemplate-depth-120 -fPIC -DPIC #_FILTER_OUT = "-Wl,--export-dynamic" #CVISUAL_LIBS += $(filter-out $(_FILTER_OUT), $(GTK_LIBS) \ # $(GTHREAD_LIBS) -lpython$(PYTHON_VERSION) -lboost_python -lboost_thread -lboost_signals) #CVISUAL_LIBS += -lstdc++ CVISUAL_LIBS += $(GTK_LIBS) $(GTHREAD_LIBS) \ -lpython$(PYTHON_VERSION) -lboost_python -lboost_thread -lboost_signals -lstdc++ CVISUAL_OBJS = arrayprim.o arrow.o axial.o box.o cone.o cylinder.o display_kernel.o ellipsoid.o \ frame.o label.o material.o mouse_manager.o mouseobject.o primitive.o pyramid.o \ rectangular.o renderable.o ring.o sphere.o text.o \ atomic_queue.o displaylist.o errors.o extent.o \ gl_extensions.o gl_free.o icososphere.o light.o quadric.o \ display.o font_renderer.o random_device.o rate.o render_surface.o timer.o \ render_manager.o rgba.o shader_program.o texture.o tmatrix.o vector.o\ convex.o curve.o cvisualmodule.o faces.o \ num_util.o numeric_texture.o points.o scalar_array.o slice.o \ vector_array.o wrap_arrayobjects.o wrap_display_kernel.o wrap_primitive.o \ wrap_rgba.o wrap_vector.o %.o: %.cpp $(CXX) $(CVISUAL_CPPFLAGS) $(CVISUAL_CXXFLAGS) -MMD -MF $*.d -MT "$*.d $*.lo" -c -o $@ $< cvisual.so : $(CVISUAL_OBJS) $(CXX) -shared $(CVISUAL_OBJS) $(CVISUAL_LIBS) -o cvisual.so # -rpath /usr/lib/python$(PYTHON_VERSION)/site-packages/cvisualmodule.la install : cvisual.so cp cvisual.so ../vpython-core2/site-packages/visual # sudo cp cvisual.so /Library/Frameworks/Python.framework/Versions/$(PYTHON_VERSION)/lib/python$(PYTHON_VERSION)/site-packages/ # sudo cp cvisual.so /Library/Python/$(PYTHON_VERSION)/site-packages clean : rm *.d rm *.o rm *.so # This command to be run from the vpython-core2/src/mac setup : mkdir -p ../../../vpython-core2/../mbuild ln -sfh $(abspath makefile) ../../../mbuild/makefile ln -sfh $(abspath ../../site-packages/visual) $(SITE_PACKAGES)visual -include *.d visual-5.12_release/src/gtk2/rate.cpp0000644000175000017500000000433010724161636014470 00000000000000#include "util/rate.hpp" #if defined(_WIN32) #include "win32/timeval.h" #else #include #include #endif #include #include #include namespace cvisual { namespace { struct timeval : ::timeval { // Convert to straight usec. operator long long() const { return tv_sec * 1000000 + tv_usec; } }; struct timespec : ::timespec { timespec() { tv_sec = 0; tv_nsec = 0; } // Convert from usec. timespec( long long t) { tv_sec = t / 1000000; tv_nsec = t % 1000000 * 1000; } }; // Parts of the rate_timer common to both the OSX and Linux implementations. class rate_timer { private: timeval origin; public: rate_timer() { timerclear( &origin); gettimeofday( &origin, 0); } // Force the loop to run in 'sec' seconds by inserting the appropriate delay. void delay( double sec); }; void rate_timer::delay( double _delay) { timeval now; timerclear(&now); gettimeofday( &now, 0); // Convert the requested delay into integer units of usec. const long long delay = (long long)(_delay * 1e6); long long origin = this->origin; // The amount of time to wait. long long wait = delay - ((long long)now - origin); if (wait < 0) { gettimeofday( &this->origin, 0); return; } // The amout of time remaining when nanosleep returns timespec remaining; #ifdef __APPLE__ // OSX. // OSX's nanosleep() is very accurate :) timespec sleep_wait( wait); nanosleep( &sleep_wait, &remaining); #else // Computation of the requested delay is the same, but the execution differs // from OSX. This is to provide somewhat more accurate timing on Linux, // whose timing is abominable. if (wait > 2000) { timespec sleep_wait(wait); nanosleep( &sleep_wait, &remaining); } else { // Busy wait out the remainder of the time. while (wait > 0) { sched_yield(); gettimeofday( &now, 0); wait = delay - ((long long)now - origin); } } #endif // !defined __APPLE__ gettimeofday( &this->origin, 0); } } // !namespace (unnamed) void rate( const double& freq) { static rate_timer* rt = 0; if (!rt) rt = new rate_timer(); if (freq <= 0.0) throw std::invalid_argument( "Rate must be positive and nonzero."); rt->delay( 1.0/freq ); } } // !namespace cvisual visual-5.12_release/src/gtk2/random_device.cpp0000644000175000017500000000677610715363521016351 00000000000000/* boost random_device.cpp implementation * * Copyright Jens Maurer 2000 * Permission to use, copy, modify, sell, and distribute this software * is hereby granted without fee provided that the above copyright notice * appears in all copies and that both that copyright notice and this * permission notice appear in supporting documentation, * * Jens Maurer makes no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. * * $Id: random_device.cpp,v 1.2 2007/11/10 17:16:01 bsherwood Exp $ * */ /* Changes: * modify check for the availability of /dev/urandom to include OSX. -JDB * */ #include #include #include #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION // A definition is required even for integral static constants const bool boost::random_device::has_fixed_range; const boost::random_device::result_type boost::random_device::min_value; const boost::random_device::result_type boost::random_device::max_value; #endif // Known to be supported for GNU/Linux and Apple OSX. Probably others as well. //#if defined(__linux__) || (defined(__APPLE__) && defined(__MACH__)) // the default is the unlimited capacity device, using some secure hash // try "/dev/random" for blocking when the entropy pool has drained const char * const boost::random_device::default_token = "/dev/urandom"; /* * This uses the POSIX interface for unbuffered reading. * Using buffered std::istream would consume entropy which may * not actually be used. Entropy is a precious good we avoid * wasting. */ #if defined(__GNUC__) && defined(_CXXRT_STD_NAME) // I have severe difficulty to get the POSIX includes to work with // -fhonor-std and Dietmar K?hl's standard C++ library. Hack around that // problem for now. extern "C" { static const int O_RDONLY = 0; extern int open(const char *__file, int __oflag, ...); extern int read(int __fd, __ptr_t __buf, size_t __nbytes); extern int close(int __fd); } #else #include #include #include // open #include // read, close #endif #include // errno #include // strerror #include // std::invalid_argument class boost::random_device::impl { public: impl(const std::string & token) : path(token) { fd = open(token.c_str(), O_RDONLY); if(fd < 0) error("cannot open"); } ~impl() { if(close(fd) < 0) error("could not close"); } unsigned int next() { unsigned int result; long sz = read(fd, reinterpret_cast(&result), sizeof(result)); if(sz == -1) error("error while reading"); else if(sz != sizeof(result)) { errno = 0; error("EOF while reading"); } return result; } private: void error(const std::string & msg) { throw std::invalid_argument("boost::random_device: " + msg + " random-number pseudo-device " + path + ": " + strerror(errno)); } const std::string path; int fd; }; //#endif // __linux__ boost::random_device::random_device(const std::string& token) : pimpl(new impl(token)) { assert(std::numeric_limits::max() == max_value); } boost::random_device::~random_device() { // the complete class impl is now visible, so we're safe // (see comment in random.hpp) delete pimpl; } double boost::random_device::entropy() const { return 10; } unsigned int boost::random_device::operator()() { return pimpl->next(); } visual-5.12_release/src/gtk2/.cvsignore0000644000175000017500000000001710154665237015032 00000000000000*.os .sconsign visual-5.12_release/src/gtk2/render_surface.cpp0000644000175000017500000001362111164427230016521 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "gtk2/render_surface.hpp" #include "util/errors.hpp" #include "util/gl_free.hpp" #include "vpython-config.h" #include "python/gil.hpp" #ifndef _WIN32 #include #include #endif // The following are part of the gtkglextmm package: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #endif namespace cvisual { namespace { Glib::RefPtr share_list; } render_surface::render_surface( display_kernel& _core, mouse_manager& _mouse, bool activestereo) : core( _core), mouse( _mouse ) { Glib::RefPtr config; if (activestereo) { config = Gdk::GL::Config::create( Gdk::GL::MODE_RGBA | Gdk::GL::MODE_DOUBLE | Gdk::GL::MODE_DEPTH //| Gdk::GL::MODE_MULTISAMPLE | Gdk::GL::MODE_STEREO ); if (!config) { // Try again without the multisample extension. config = Gdk::GL::Config::create( Gdk::GL::MODE_RGB | Gdk::GL::MODE_DOUBLE | Gdk::GL::MODE_DEPTH | Gdk::GL::MODE_STEREO ); if (!config) { VPYTHON_WARNING("'active' stereo requested, but not available." " Falling back to: 'nostereo'."); } } } else if (!activestereo || !config) { config = Gdk::GL::Config::create( Gdk::GL::MODE_RGBA | Gdk::GL::MODE_DOUBLE | Gdk::GL::MODE_DEPTH //| Gdk::GL::MODE_MULTISAMPLE ); if (!config) { // Try again without the multisample extension. config = Gdk::GL::Config::create( Gdk::GL::MODE_RGB | Gdk::GL::MODE_DOUBLE | Gdk::GL::MODE_DEPTH ); if (!config) { VPYTHON_CRITICAL_ERROR("failed to initialize any OpenGL configuration, Aborting."); std::exit(1); } } } if (share_list) { this->set_gl_capability(config, share_list, true); } else { set_gl_capability( config); } add_events( Gdk::EXPOSURE_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::BUTTON2_MOTION_MASK | Gdk::BUTTON3_MOTION_MASK); set_size_request( 384, 256); set_flags( get_flags() | Gtk::CAN_FOCUS); } template void render_surface::mouse_event( E* event, int buttons_toggled ) { bool buttons[] = { event->state & GDK_BUTTON1_MASK, event->state & GDK_BUTTON3_MASK, event->state & GDK_BUTTON2_MASK }; bool shiftState[] = { event->state & GDK_SHIFT_MASK, event->state & GDK_CONTROL_MASK, event->state & GDK_MOD1_MASK }; buttons[0] = (buttons[0] != bool( buttons_toggled&1 )); buttons[1] = (buttons[1] != bool( buttons_toggled&4 )); buttons[2] = (buttons[2] != bool( buttons_toggled&2 )); mouse.report_mouse_state( 3, buttons, event->x, event->y, 3, shiftState, false ); // TODO: Is mouse locking possible with GTK2? } bool render_surface::on_motion_notify_event( GdkEventMotion* event) { python::gil_lock L; mouse_event( event ); return true; } bool render_surface::on_enter_notify_event( GdkEventCrossing* event) { python::gil_lock L; bool buttons[] = { 0,0,0 }; bool shiftState[] = { 0,0,0 }; mouse.report_mouse_state( 3, buttons, event->x, event->y, 3, shiftState, false ); mouse_event( event ); return true; } bool render_surface::on_configure_event( GdkEventConfigure* event) { python::gil_lock L; int x,y,w,h; get_parent_window()->get_position( x, y ); get_parent_window()->get_size(w,h); core.report_resize( x,y,w,h, x+event->x, y+event->y, event->width, event->height ); return true; } void render_surface::on_realize() { python::gil_lock L; Gtk::GL::DrawingArea::on_realize(); if (!share_list) { share_list = get_gl_context(); } assert( share_list); } /* Not yet working; see paint function below GdkCursor* arrow_cursor=0; GdkCursor* blank_cursor=0; */ void render_surface::paint(Gtk::Window* window, bool change, bool vis) // if change, install appropriate cursor { gl_begin(); { python::gil_lock L; if (change and !vis) { std::cerr << "cursor.visible = 0 is not yet supported on Linux." << std::endl; } /* TODO: The following doesn't work because window is a high-level GtkA::Window, * and we need a low-level GdkWindow in gdk_window_set_cursor. Not clear how to proceed. if (change) { if (!arrow_cursor) { arrow_cursor = gdk_cursor_new(GDK_ARROW); blank_cursor = gdk_cursor_new(GDK_BLANK_CURSOR); // blank cursor not yet available in Ubuntu 20090401 } if (vis) { gdk_window_set_cursor(window, arrow_cursor); } else { gdk_window_set_cursor(window, blank_cursor); } } */ core.render_scene(); // render the scene } gl_end(); } bool render_surface::on_expose_event( GdkEventExpose*) { // TODO: should we render here, instead of waiting for the normal frame rate? // paint(); swap(); return true; } bool render_surface::on_button_press_event( GdkEventButton* event) { python::gil_lock L; mouse_event( event, 1 << (event->button-1) ); return true; } bool render_surface::on_button_release_event( GdkEventButton* event) { python::gil_lock L; mouse_event( event, 1 << (event->button-1) ); return true; } void render_surface::gl_begin() { bool ok = get_gl_window()->gl_begin(get_gl_context()); assert(ok); } void render_surface::gl_end() { get_gl_window()->gl_end(); } void render_surface::gl_swap_buffers() { gl_begin(); get_gl_window()->swap_buffers(); glFinish(); // Ensure rendering completes here (without the GIL) rather than at the next paint (with the GIL) gl_end(); } } // !namespace cvisual visual-5.12_release/src/gtk2/display.cpp0000644000175000017500000002742511164172466015216 00000000000000#include "gtk2/display.hpp" #include "vpython-config.h" #include "util/errors.hpp" #include "python/gil.hpp" #include "util/gl_free.hpp" #include "util/render_manager.hpp" #include "font_renderer.hpp" #include #include using boost::lexical_cast; #include #include #include #include #include #include #include #include #include #ifndef _WIN32 #include #include #endif #include #include #include namespace cvisual { using boost::thread; // Ubuntu Linux const int border_width = 9; const int border_height = 6; namespace { Glib::ustring dataroot = ""; } void display::set_dataroot( const std::wstring& _dataroot) { dataroot = w2u( _dataroot ); } display::display() { } display::~display() { } void display::activate( bool active ) { if (active) { VPYTHON_NOTE( "Opening a window from Python."); gui_main::add_display( this); } else { VPYTHON_NOTE( "Closing a window from Python."); gui_main::remove_display(this); } } void display::paint() { if (cursor.visible != cursor.last_visible) { cursor.last_visible = cursor.visible; area->paint(window, true, cursor.visible); } else { area->paint(window, false, false); } } int display::get_titlebar_height() { return 24; // Ubuntu Linux } int display::get_toolbar_height() { return 37; // Ubuntu Linux } namespace { inline void widget_fail( const Glib::ustring& name) { std::ostringstream msg; msg << "Getting widget named: " << name << " failed!\n"; VPYTHON_CRITICAL_ERROR( msg.str()); std::exit(1); } template inline GtkWidget* get_widget( Glib::RefPtr tree, const Glib::ustring& name) { GtkWidget* result = dynamic_cast( tree->get_widget( name)); if (!result) { widget_fail( name); } return result; } } // !namespace (anon) void display::create() { area.reset( new render_surface(*this, mouse, stereo_mode == ACTIVE_STEREO)); // window_width and window_height give the size of the window (including borders and such) // determine the size of the render_surface // TODO: Some way to determine border_width, border_height, titlebar_height programmatically? int w = window_width, h = window_height; w -= border_width; h -= border_height; h -= get_titlebar_height(); if (show_toolbar) h -= get_toolbar_height(); if (stereo_mode == PASSIVE_STEREO || stereo_mode == CROSSEYED_STEREO) w *= 2; area->set_size_request( w, h ); area->signal_key_press_event().connect( sigc::mem_fun( *this, &display::on_key_pressed)); // Glade-based UI. // Turned off toolbar in display initialization for now; not yet available on Windows or Mac if (show_toolbar) { glade_file = Gnome::Glade::Xml::create( dataroot + "vpython.glade"); get_widget(glade_file, "quit_button")->signal_clicked().connect( sigc::mem_fun( *this, &display::on_quit_clicked)); get_widget(glade_file, "fullscreen_button")->signal_clicked().connect( sigc::mem_fun( *this, &display::on_fullscreen_clicked)); get_widget(glade_file, "rotate_zoom_button")->signal_clicked().connect( sigc::mem_fun( *this, &display::on_rotate_clicked)); get_widget(glade_file, "pan_button")->signal_clicked().connect( sigc::mem_fun( *this, &display::on_pan_clicked)); get_widget(glade_file, "zoom_to_fit_button")->signal_clicked().connect( sigc::mem_fun( *this, &display::on_zoom_clicked)); window = get_widget(glade_file, "window1"); get_widget( glade_file, "vbox1")->pack_start( *area); } else { glade_file = Gnome::Glade::Xml::create( dataroot + "vpython_notoolbar.glade"); window = get_widget(glade_file, "window1"); get_widget( glade_file, "vbox1")->pack_start( *area); } window->set_title( title); window->signal_delete_event().connect( sigc::mem_fun( *this, &display::on_window_delete)); window->move( window_x, window_y); window->show_all(); // this will update the actual x,y if (fullscreen) window->fullscreen(); area->grab_focus(); assert( area->can_focus()); while (Gtk::Main::events_pending()) Gtk::Main::iteration(); } void display::destroy() { window->hide(); window = 0; area.reset(); glade_file.clear(); } void display::on_fullscreen_clicked() { static bool fullscreen = false; if (fullscreen) { window->unfullscreen(); fullscreen = false; } else { window->fullscreen(); fullscreen = true; } } void display::on_zoom_clicked() { set_center(vector(0, 0, 0)); set_forward(vector(0, 0, -1)); set_up(vector(0, 1, 0)); } void display::on_pan_clicked() { mouse_mode = PAN; } void display::on_rotate_clicked() { mouse_mode = ZOOM_ROTATE; } bool display::on_window_delete(GdkEventAny*) { VPYTHON_NOTE( "Closing a window from the GUI."); window = NULL; area.reset(); glade_file.clear(); gui_main::report_window_delete( this); if (exit) { VPYTHON_NOTE( "Initiating shutdown from window closure"); if (area) { gl_free(); } gui_main::quit(); } return true; } void display::on_quit_clicked() { VPYTHON_NOTE( "Initiating shutdown from the GUI."); if (area) gl_free(); gui_main::quit(); } bool display::on_key_pressed( GdkEventKey* key) { // Note that this algorithm will proably fail if the user is using anything // other than a US keyboard. guint k = key->keyval; std::string ctrl_str; // First trap for shift, ctrl, and alt. if (key->state & GDK_CONTROL_MASK) { ctrl_str += "ctrl+"; } if (key->state & GDK_MOD1_MASK) { ctrl_str += "alt+"; } if ((key->state & GDK_SHIFT_MASK) || (key->state & GDK_LOCK_MASK)) { if ( !isprint(k) ) ctrl_str += "shift+"; } // Specials, try to match those in wgl.cpp std::string key_str; switch (k) { case GDK_F1: case GDK_F2: case GDK_F3: case GDK_F4: case GDK_F5: case GDK_F6: case GDK_F7: case GDK_F8: case GDK_F9: case GDK_F10: case GDK_F11: case GDK_F12: { // Use braces to destroy s. std::ostringstream s; s << key_str << 'f' << k-GDK_F1 + 1; key_str = s.str(); } break; case GDK_Page_Up: key_str += "page up"; break; case GDK_Page_Down: key_str += "page down"; break; case GDK_End: key_str += "end"; break; case GDK_Home: key_str += "home"; break; case GDK_Left: key_str += "left"; break; case GDK_Up: key_str += "up"; break; case GDK_Right: key_str += "right"; break; case GDK_Down: key_str += "down"; break; case GDK_Print: key_str += "print screen"; break; case GDK_Insert: key_str += "insert"; break; case GDK_Delete: key_str += "delete"; break; case GDK_Num_Lock: key_str += "numlock"; break; case GDK_Scroll_Lock: key_str += "scrlock"; break; case GDK_BackSpace: key_str += "backspace"; break; case GDK_Tab: key_str += "\t"; break; case GDK_Return: key_str += "\n"; break; case GDK_Escape: // Allow the user to delete a fullscreen window this way destroy(); gui_main::report_window_delete(this); if (exit) gui_main::quit(); return false; } if (!key_str.empty()) { // A special key. ctrl_str += key_str; keys.push( ctrl_str); } else if ( isprint(k) && !ctrl_str.empty() ) { // A control character ctrl_str += static_cast( k); keys.push(ctrl_str); } else if ( isprint(k) ) { // Anything else. keys.push( std::string( key->string)); } return true; } display::EXTENSION_FUNCTION display::getProcAddress(const char* name) { return (EXTENSION_FUNCTION)Gdk::GL::get_proc_address( name ); } ////////////////////////////////// gui_main implementation //////////////////// gui_main* gui_main::self = 0; mutex* gui_main::init_lock = 0; condition* gui_main::init_signal = 0; gui_main::gui_main() : kit( 0, 0), caller( 0), returned( false), thread_exited(false), shutting_down( false) { Gtk::GL::init( 0, 0); if (!Glib::thread_supported()) Glib::thread_init(); signal_add_display.connect( sigc::mem_fun( *this, &gui_main::add_display_impl)); signal_remove_display.connect( sigc::mem_fun( *this, &gui_main::remove_display_impl)); signal_shutdown.connect( sigc::mem_fun( *this, &gui_main::shutdown_impl)); } void gui_main::run() { poll(); kit.run(); lock L(call_lock); thread_exited = true; } bool gui_main::poll() { // Called in gui thread when it's time to render if (shutting_down) return false; int interval = (int)(1000 * render_manager::paint_displays( displays, true )); Glib::signal_timeout().connect( sigc::mem_fun( *this, &gui_main::poll), interval, Glib::PRIORITY_HIGH_IDLE); return false; // We connect a new timeout every time, so we don't want this timeout to repeat } void gui_main::thread_proc(void) { assert( init_lock); assert( init_signal); assert( !self); { lock L(*init_lock); self = new gui_main(); init_signal->notify_all(); } self->run(); VPYTHON_NOTE( "Terminating GUI thread."); gui_main::on_shutdown(); } void gui_main::init_thread(void) { if (!init_lock) { init_lock = new mutex; init_signal = new condition; // Make sure the python thread has low priority: #if defined(_WIN32) SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL); #else // TODO: this changes the _process_ priority, which has no effect on the relative // priority of the rendering and python threads! //int default_prio = getpriority(PRIO_PROCESS, getpid()); //setpriority(PRIO_PROCESS, getpid(), std::min(default_prio+5, 19) ); #endif VPYTHON_NOTE( "Starting GUI thread."); lock L(*init_lock); thread gtk( &gui_main::thread_proc); while (!self) init_signal->wait(L); } } void gui_main::add_display( display* d) { init_thread(); lock L(self->call_lock); if (self->shutting_down) { return; } VPYTHON_NOTE( std::string("Adding new display object at address ") + lexical_cast(d)); self->caller = d; self->returned = false; self->signal_add_display(); while (!self->returned) self->call_complete.py_wait(L); self->caller = 0; } void gui_main::add_display_impl() { lock L(call_lock); caller->create(); displays.push_back(caller); returned = true; call_complete.notify_all(); } void gui_main::remove_display( display* d) { assert( self); VPYTHON_NOTE( std::string("Removing existing display object at address ") + lexical_cast(d)); lock L(self->call_lock); self->caller = d; self->returned = false; self->signal_remove_display(); while (!self->returned) self->call_complete.py_wait(L); self->caller = 0; } void gui_main::remove_display_impl() { lock L(call_lock); caller->destroy(); displays.erase( std::find(displays.begin(), displays.end(), caller) ); returned = true; call_complete.notify_all(); } void gui_main::shutdown() { if (!self) return; lock L(self->call_lock); VPYTHON_NOTE( "Initiating shutdown from Python."); if (self->thread_exited) return; self->returned = false; self->signal_shutdown(); while (!self->returned) self->call_complete.py_wait(L); } void gui_main::shutdown_impl() { lock L(call_lock); shutting_down = true; for (std::vector::iterator i = displays.begin(); i != displays.end(); ++i) { (*i)->destroy(); } self->returned = true; call_complete.notify_all(); kit.quit(); } void gui_main::report_window_delete( display* window) { assert( self != 0); lock L(self->call_lock); self->displays.erase( std::find(self->displays.begin(), self->displays.end(), window) ); } void gui_main::quit() { assert( self != 0); lock L(self->call_lock); self->shutting_down = true; for (std::vector::iterator i = self->displays.begin(); i != self->displays.end(); ++i) { (*i)->destroy(); } self->displays.clear(); self->kit.quit(); } boost::signal gui_main::on_shutdown; } // !namespace cvisual visual-5.12_release/src/gtk2/timer.cpp0000644000175000017500000000106410761631745014662 00000000000000// Copyright (c) 2004 by Jonathan Brandmeyer. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/timer.hpp" #include #include #include #include namespace cvisual { timer::timer() : start(0), inv_tick_count(0) { start = elapsed(); } double timer::elapsed() { timeval t; timerclear(&t); gettimeofday( &t, NULL); return static_cast(t.tv_sec) + static_cast(t.tv_usec)*1e-6 - start; } } // !namespace cvisual visual-5.12_release/src/gtk2/ubuntu_makefile0000644000175000017500000001113511112543553016126 00000000000000# This is a simple makefile that in Nov. 2008 on Ubuntu 8 was equivalent # to the autoconf build machinery. This file is unlikely to be kept up to date. # Its purpose is just to show the main features of a Visual build, without the # complexity of the autoconf mechanisms. It deals only with the building and # installing of cvisual.so, not with installing the other components (help etc.) # Place a copy of this make file in a directory parallel to vpython-core2 # Be sure to specify what version of Python # In vpython-core2/gtk2, run "sudo make setup" to establish links that make # it unnecessary to move cvisual.so into the actual site-packages directory. prefix = /usr PYTHON_VERSION = 2.5 PYTHON_INCLUDES = -I/usr/include/python$(PYTHON_VERSION) -I$(prefix)/lib/python$(PYTHON_VERSION)/site-packages/numpy/core/include #SITE_PACKAGES = /usr/lib/python$(PYTHON_VERSION)/site-packages/ TOP = ../vpython-core2 DEPENDS = $(TOP)/dependencies SRC = $(TOP)/src VPATH = $(SRC)/gtk2 $(SRC)/core/util $(SRC)/core $(SRC)/python $(SRC) CXX = g++ GTK_LIBS = -Wl,--export-dynamic -lgtkglextmm-x11-1.2 -lgdkglextmm-x11-1.2 -lgtkglext-x11-1.0 -lgdkglext-x11-1.0 -lGLU -lGL -lXmu -lXt -lSM -lICE -lpangox-1.0 -lX11 -lpangoft2-1.0 -lfontconfig -lglademm-2.4 -lgtkmm-2.4 -lglade-2.0 -lgdkmm-2.4 -latkmm-1.6 -lpangomm-1.4 -lcairomm-1.0 -lglibmm-2.4 -lsigc-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lfreetype -lz GTK_CFLAGS = -I/usr/include/gtkglextmm-1.2 -I/usr/lib/gtkglextmm-1.2/include -I/usr/include/gtkglext-1.0 -I/usr/include/gtkmm-2.4 -I/usr/lib/gtkmm-2.4/include -I/usr/lib/gtkglext-1.0/include -I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/cairo -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/cairomm-1.0 -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/atk-1.0 -I/usr/include/atkmm-1.6 -I/usr/include/libglademm-2.4 -I/usr/lib/libglademm-2.4/include -I/usr/include/libglade-2.0 -I/usr/include/libxml2 -I$(TOP)/include/gtk2 GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0 GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include # 18814435 MB without -DNDEBUG # 18744287 MB with -DNDEBUG # Option flags for the compiler, constructed from the above. CVISUAL_CPPFLAGS = $(PYTHON_INCLUDES) -DHAVE_CONFIG_H -DNDEBUG \ -I$(TOP)/dependencies/threadpool/include -I$(TOP)/include \ $(GTK_CFLAGS) $(GTHREAD_CFLAGS) CVISUAL_CXXFLAGS = -g -O2 -ftemplate-depth-120 -fPIC -DPIC #_FILTER_OUT = "-Wl,--export-dynamic" #CVISUAL_LIBS += $(filter-out $(_FILTER_OUT), $(GTK_LIBS) \ # $(GTHREAD_LIBS) -lpython$(PYTHON_VERSION) -lboost_python -lboost_thread -lboost_signals) #CVISUAL_LIBS += -lstdc++ CVISUAL_LIBS += $(GTK_LIBS) $(GTHREAD_LIBS) \ -lpython$(PYTHON_VERSION) -lboost_python -lboost_thread -lboost_signals -lstdc++ CVISUAL_OBJS = arrayprim.o arrow.o axial.o box.o cone.o cylinder.o display_kernel.o ellipsoid.o \ frame.o label.o material.o mouse_manager.o mouseobject.o primitive.o pyramid.o \ rectangular.o renderable.o ring.o sphere.o text.o \ atomic_queue.o displaylist.o errors.o extent.o \ gl_extensions.o gl_free.o icososphere.o light.o quadric.o \ display.o font_renderer.o random_device.o rate.o render_surface.o timer.o \ render_manager.o rgba.o shader_program.o texture.o tmatrix.o vector.o\ convex.o curve.o cvisualmodule.o faces.o \ num_util.o numeric_texture.o points.o scalar_array.o slice.o \ vector_array.o wrap_arrayobjects.o wrap_display_kernel.o wrap_primitive.o \ wrap_rgba.o wrap_vector.o %.o: %.cpp $(CXX) $(CVISUAL_CPPFLAGS) $(CVISUAL_CXXFLAGS) -MMD -MF $*.d -MT "$*.d $*.lo" -c -o $@ $< cvisual.so : $(CVISUAL_OBJS) $(CXX) -shared $(CVISUAL_OBJS) $(CVISUAL_LIBS) -o cvisual.so # -rpath /usr/lib/python$(PYTHON_VERSION)/site-packages/cvisualmodule.la install : cvisual.so cp cvisual.so ../vpython-core2/site-packages/visual # sudo cp cvisual.so /Library/Frameworks/Python.framework/Versions/$(PYTHON_VERSION)/lib/python$(PYTHON_VERSION)/site-packages/ # sudo cp cvisual.so /Library/Python/$(PYTHON_VERSION)/site-packages clean : rm *.d rm *.o rm *.so # This command to be run from the vpython-core2/src/mac setup : mkdir -p ../../../vpython-core2/../mbuild ln -sfh $(abspath makefile) ../../../mbuild/makefile ln -sfh $(abspath ../../site-packages/visual) $(SITE_PACKAGES)visual -include *.d visual-5.12_release/src/gtk2/CVS/0000777000175000017500000000000011240651151013536 500000000000000visual-5.12_release/src/gtk2/CVS/Entries0000644000175000017500000000071611240651151015012 00000000000000/.cvsignore/1.1/Sun Dec 5 20:07:59 2004// /display.cpp/1.57/Mon Mar 30 16:37:10 2009// /font_renderer.cpp/1.9/Thu Apr 3 19:47:50 2008// /makefile/1.1/Mon Nov 24 15:27:24 2008// /random_device.cpp/1.2/Sat Nov 10 17:16:01 2007// /rate.cpp/1.5/Sat Dec 1 04:31:26 2007// /render_surface.cpp/1.64/Tue Mar 31 14:54:16 2009// /site-packages.pth/1.2/Fri Jun 19 21:39:06 2009// /timer.cpp/1.4/Thu Feb 28 22:21:25 2008// /ubuntu_makefile/1.1/Mon Nov 24 15:25:31 2008// visual-5.12_release/src/gtk2/CVS/Root0000644000175000017500000000011111240651151014311 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/src/gtk2/CVS/Repository0000644000175000017500000000002711240651151015553 00000000000000vpython-core2/src/gtk2 visual-5.12_release/src/gtk2/font_renderer.cpp0000644000175000017500000000630410775232146016375 00000000000000#include "font_renderer.hpp" #include "util/errors.hpp" #include #include #include #include namespace cvisual { static PangoFT2FontMap* fontmap = 0; using std::wstring; Glib::ustring w2u( const wstring& w ) { // Glib uses UTF8 strings, whereas elsewhere in the program we use wstring, which // is either UTF-16 or UCS-4. Frankly, I prefer the UTF8 approach but we don't // always have Glib around, and in any case Python uses wide encoding. gchar* utf8; if ( sizeof(wchar_t) == 2 ) utf8 = g_utf16_to_utf8( reinterpret_cast(w.c_str()), -1, 0, 0, 0 ); else if ( sizeof(wchar_t) == 4 ) utf8 = g_ucs4_to_utf8( reinterpret_cast(w.c_str()), -1, 0, 0, 0 ); else throw std::logic_error("Unexpected wchar_t."); Glib::ustring us( utf8 ); g_free( utf8 ); return us; } font_renderer::font_renderer( const wstring& description, int height ) { if (!fontmap) { #ifdef G_OS_WIN32 int dpi = 90; #else int dpi = -1; // TODO: Possible memory leak here: Glib::RefPtr default_screen = Gdk::Screen::get_default(); // TODO: Possible memory leak here: Glib::RefPtr settings = Gtk::Settings::get_for_screen( default_screen); g_object_get( settings->gobj(), "gtk-xft-dpi", &dpi, NULL); if (dpi > 0) dpi /= 1024; else dpi = 90; #endif fontmap = (PangoFT2FontMap*)pango_ft2_font_map_new(); pango_ft2_font_map_set_resolution( fontmap, dpi, dpi); } ft2_context = Glib::wrap( pango_ft2_font_map_create_context( fontmap ) ); Pango::FontDescription font_desc = Glib::wrap(gtk_style_new())->get_font(); if (height > 0) font_desc.set_size( height * Pango::SCALE); if (description == L"sans-serif") font_desc.set_family( "sans" ); else if (description.size()) font_desc.set_family( w2u(description) ); font_desc.set_style( Pango::STYLE_NORMAL); if (!ft2_context->load_font( font_desc )) ft2_context.clear(); else ft2_context->set_font_description(font_desc); } bool font_renderer::ok() { return (bool)ft2_context; } void font_renderer::gl_render_to_texture( const view&, const wstring& text, layout_texture& tx ) { // Lay out text Glib::RefPtr pango_layout = Pango::Layout::create( ft2_context); pango_layout->set_alignment( Pango::ALIGN_LEFT); pango_layout->set_width( -1); pango_layout->set_text( w2u(text) ); Pango::Rectangle extents = pango_layout->get_logical_extents(); // Allocate a greyscale buffer FT_Bitmap bitmap; bitmap.rows = std::max(1, PANGO_PIXELS(extents.get_height())); bitmap.width = std::max(1, PANGO_PIXELS(extents.get_width())); bitmap.pitch = bitmap.width; boost::scoped_array pix_buf( new uint8_t[bitmap.rows * bitmap.width]); bitmap.buffer = pix_buf.get(); memset (bitmap.buffer, 0, bitmap.rows * bitmap.width); bitmap.num_grays = 256; bitmap.pixel_mode = ft_pixel_mode_grays; // Render the text to the buffer pango_ft2_render_layout_subpixel( &bitmap, pango_layout->gobj(), -PANGO_PIXELS(extents.get_x()), -PANGO_PIXELS(extents.get_y())); // And copy it into the texture tx.set_image( bitmap.width, bitmap.rows, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, 1, bitmap.buffer ); } } // namespace cvisual visual-5.12_release/src/gtk2/site-packages.pth0000644000175000017500000000005011217002572016250 00000000000000/usr/local/lib/python2.6/site-packages visual-5.12_release/src/win32/0000777000175000017500000000000011240651152013177 500000000000000visual-5.12_release/src/win32/winrandom_device.cpp0000644000175000017500000000430710776472130017152 00000000000000/* boost random_device.cpp implementation * * Copyright Jens Maurer 2000 * Permission to use, copy, modify, sell, and distribute this software * is hereby granted without fee provided that the above copyright notice * appears in all copies and that both that copyright notice and this * permission notice appear in supporting documentation, * * Jens Maurer makes no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. * * $Id: winrandom_device.cpp,v 1.5 2008/04/07 19:22:00 bsherwood Exp $ * */ /* Changes: * Replace impl with a version that uses the MS Crypto API to generate random * numbers for use on MS Windows. -JDB * */ #include #include #include #include #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION // A definition is required even for integral static constants const bool boost::random_device::has_fixed_range; const boost::random_device::result_type boost::random_device::min_value; const boost::random_device::result_type boost::random_device::max_value; #endif #define WIN32_LEAN_AND_MEAN 1 #ifdef _MSC_VER #define NOMINMAX #endif #include #include const char* const boost::random_device::default_token = ""; class boost::random_device::impl { public: impl() : handle(0) { if (!CryptAcquireContext( &handle, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) error(); } ~impl() { CryptReleaseContext( handle, 0); } unsigned int next() { unsigned int ret = 0; CryptGenRandom( handle, sizeof(unsigned int), (BYTE*)&ret); assert(ret != 0); return ret; } private: HCRYPTPROV handle; void error() { throw std::runtime_error( "CryptAquireContext() failed"); } }; boost::random_device::random_device(const std::string&) : pimpl(new impl()) { assert(std::numeric_limits::max() == max_value); } boost::random_device::~random_device() { // the complete class impl is now visible, so we're safe // (see comment in random.hpp) delete pimpl; } double boost::random_device::entropy() const { return 10; } unsigned int boost::random_device::operator()() { return pimpl->next(); } visual-5.12_release/src/win32/windisplay.cpp0000644000175000017500000005144611217514413016016 00000000000000// Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #define _WIN32_WINNT 0x0500 // Requires Windows 2000, for CreateTimerQueueTimer() #include "win32/display.hpp" #include "util/render_manager.hpp" #include "util/errors.hpp" #include "python/gil.hpp" #include // For GET_X_LPARAM, GET_Y_LPARAM #include #include using boost::thread; #include using boost::lexical_cast; #include #pragma comment(lib, "winmm.lib") /* How to shut down on Windows (Dave Scherer, 2008/6/22) There's more than one possible sequence of events leading to shutdown, and can be more than one window. Remember that the program can close windows, and that the user closing a window does NOT always mean the program terminates. Here's a high level description of how it works on Windows: 1. In display::destroy(), ask the OS to close the window. Don't do any cleanup. 2. When an event is received indicating that the USER wants to close the window, also ask the OS to close the window. Additionally, if this->exit (equivalent to scene.exit = 1), ask the event loop to shut down. 3. In the event handler for window destruction (which gets called after either of the above cases), call report_closed() and then clean up the resources used by the window like OpenGL contexts. 4. When the event loop terminates (i.e. returns), call gui_main::on_shutdown(), which will terminate the program (the actual shutdown logic is in wrap_display_kernel.cpp). 5. If the program closes all its windows programmatically and then terminates itself, the event loop never terminates; it is killed by the OS when the main thread calls std::exit(). I don't know if this exact design will work on the Mac; it depends somewhat on OS behavior. But its behavior needs to be followed closely. The most obvious possible implementation differences required: - There might be only a single event for 2 and 3. In that case, you need to clean up resources, and request event loop shutdown only if this->exit AND this->visible. I believe that check will identify only the case where the user is closing the window, as opposed to setting scene.visible = 0. - 5 might not work, so the program might hang on shutdown in that situation. In fact, a quick test revealed that this was broken on Windows due to a bug in display_kernel, which I'll check in a fix to. If there's a problem with this on the Mac, talk to me about it since it's not worth my solving if it isn't a problem. */ namespace cvisual { /**************************** Utilities ************************************/ // Extracts and decodes a Win32 error message. void win32_write_critical( std::string file, int line, std::string func, std::string msg) { DWORD code = GetLastError(); char* message = 0; FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, 0, // Ignored parameter code, // Error code to be decoded. 0, // Use the default language (char*)&message, // The output buffer to fill the message 512, // Allocate at least one byte in order to free something below. 0); // No additional arguments. std::ostringstream os; os << "VPython ***Win32 Critical Error*** " << file << ":" << line << ": " << func << ": " << msg << ": [" << code << "] " << message; write_stderr( os.str() ); LocalFree(message); std::exit(1); } // The first OpenGL Rendering Context, used to share displaylists. static HGLRC root_glrc = 0; WNDCLASS display::win32_class; // A lookup-table for the default widget procedure to use to find the actual // widget that should handle a particular callback message. static std::map widgets; display* display::current = 0; display::display() : widget_handle(0), dev_context(0), gl_context(0), window_visible(false) { } // This function dispatches incoming messages to the particular message-handler. LRESULT CALLBACK display::dispatch_messages( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { { python::gil_lock gil; display* This = widgets[hwnd]; if (This == 0) return DefWindowProc( hwnd, uMsg, wParam, lParam); switch (uMsg) { // Handle the cases for the kinds of messages that we are listening for. case WM_CLOSE: return This->on_close( wParam, lParam); case WM_DESTROY: return This->on_destroy( wParam, lParam ); case WM_SIZE: return This->on_size( wParam, lParam); case WM_MOVE: return This->on_move( wParam, lParam); case WM_PAINT: return This->on_paint( wParam, lParam); case WM_SHOWWINDOW: return This->on_showwindow( wParam, lParam); case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MBUTTONUP: case WM_MOUSEMOVE: return This->on_mouse( wParam, lParam); case WM_KEYUP: return This->on_keyUp(uMsg, wParam, lParam); case WM_KEYDOWN: return This->on_keyDown(uMsg, wParam, lParam); case WM_CHAR: return This->on_keyChar(uMsg, wParam, lParam); case WM_GETMINMAXINFO: return This->on_getminmaxinfo( wParam, lParam); case WM_ACTIVATE: return This->on_activate( wParam, lParam ); } } return DefWindowProc( hwnd, uMsg, wParam, lParam); } void display::register_win32_class() { static bool done = false; if (done) return; else { std::memset( &win32_class, 0, sizeof(win32_class)); win32_class.lpszClassName = "vpython_win32_render_surface"; win32_class.lpfnWndProc = &dispatch_messages; win32_class.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; win32_class.hInstance = GetModuleHandle(0); win32_class.hIcon = LoadIcon( NULL, IDI_APPLICATION ); win32_class.hCursor = LoadCursor( NULL, IDC_ARROW ); if (!RegisterClass( &win32_class)) WIN32_CRITICAL_ERROR("RegisterClass()"); done = true; } } LRESULT display::on_showwindow( WPARAM wParam, LPARAM lParam) { switch (lParam) { case 0: // Opening for the first time. case SW_PARENTOPENING: // restart rendering when the window is restored. window_visible = true; break; case SW_PARENTCLOSING: // Stop rendering when the window is minimized. window_visible = false; break; default: return DefWindowProc( widget_handle, WM_SHOWWINDOW, wParam, lParam); } return 0; } LRESULT display::on_activate( WPARAM wParam, LPARAM lParam ) { if (fullscreen && wParam == WA_INACTIVE ) ShowWindow( widget_handle, SW_MINIMIZE ); return DefWindowProc( widget_handle, WM_ACTIVATE, wParam, lParam ); } LRESULT display::on_size( WPARAM, LPARAM) { update_size(); return 0; } LRESULT display::on_move( WPARAM, LPARAM lParam) { update_size(); return 0; } void display::update_size() { if (!IsIconic( widget_handle )) { RECT windowRect, clientSize; GetWindowRect( widget_handle, &windowRect ); GetClientRect( widget_handle, &clientSize ); POINT clientPos; clientPos.x = clientPos.y = 0; ClientToScreen( widget_handle, &clientPos); report_resize( windowRect.left, windowRect.top, windowRect.right-windowRect.left, windowRect.bottom-windowRect.top, clientPos.x, clientPos.y, clientSize.right, clientSize.bottom ); } } LRESULT display::on_getminmaxinfo( WPARAM, LPARAM lParam) { MINMAXINFO* info = (MINMAXINFO*)lParam; // Prevents making the window too small. info->ptMinTrackSize.x = 70; info->ptMinTrackSize.y = 70; return 0; } LRESULT display::on_paint( WPARAM, LPARAM) { // paint(); gl_swap_buffers(); //< Doesn't seem qualitatively better, even at very low frame rates ValidateRect( widget_handle, NULL ); return 0; } void display::paint() { if (!window_visible) return; gl_begin(); { python::gil_lock gil; if (cursor.visible != cursor.last_visible) { cursor.last_visible = cursor.visible; // The following code locks the invisible cursor to its window. if (!cursor.visible) { RECT rcClip; GetWindowRect(widget_handle, &rcClip); ClipCursor(&rcClip); } else { ClipCursor(0); } ShowCursor(cursor.visible); } render_scene(); } gl_end(); } LRESULT display::on_close( WPARAM, LPARAM) { // Happens only when the user closes the window VPYTHON_NOTE( "Closing a window from the GUI"); DestroyWindow(widget_handle); if (exit) PostQuitMessage(0); return 0; } LRESULT display::on_destroy(WPARAM wParam,LPARAM lParam) { // Happens after on_close, and also when a window is destroyed programmatically // (e.g. scene.visible = 0) report_closed(); // We can only free the OpenGL context if it isn't the one we are using for display list sharing // TODO: Eliminate display list sharing! if ( gl_context != root_glrc ) wglDeleteContext( gl_context ); ReleaseDC( widget_handle, dev_context); widgets.erase( widget_handle ); return DefWindowProc( widget_handle, WM_DESTROY, wParam, lParam ); } void display::gl_begin() { if (!wglMakeCurrent( dev_context, gl_context)) WIN32_CRITICAL_ERROR( "wglMakeCurrent failed"); current = this; } void display::gl_end() { wglMakeCurrent( NULL, NULL ); current = 0; } void display::gl_swap_buffers() { if (!window_visible) return; gl_begin(); SwapBuffers( dev_context); glFinish(); // Ensure rendering completes here (without the GIL) rather than at the next paint (with the GIL) gl_end(); } void display::create() { python::gil_lock gil; // protect statics like widgets, the shared display list context register_win32_class(); RECT screen; SystemParametersInfo( SPI_GETWORKAREA, 0, &screen, 0); int style = -1; int real_x = static_cast(window_x); int real_y = static_cast(window_y); int real_width = static_cast(window_width); int real_height = static_cast(window_height); if (fullscreen) { real_x = screen.left; real_y = screen.top; real_width = screen.right - real_x; real_height = screen.bottom - real_y; style = WS_OVERLAPPED | WS_POPUP | WS_MAXIMIZE; } else if (real_x < 0 && real_y < 0 || real_x > screen.right || real_y > screen.bottom) { real_x = CW_USEDEFAULT; real_y = CW_USEDEFAULT; } else if (real_x < screen.left) { real_x = screen.left; } else if (real_y < screen.top) { real_y = screen.top; } if (real_x + real_width > screen.right) real_width = screen.right - real_x; if (real_y + real_height > screen.bottom) real_height = screen.bottom - real_y; if (!fullscreen) style = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; widget_handle = CreateWindow( win32_class.lpszClassName, title.c_str(), style, real_x, real_y, real_width, real_height, 0, 0, // A unique index to identify this widget by the parent GetModuleHandle(0), 0 // No data passed to the WM_CREATE function. ); widgets[widget_handle] = this; dev_context = GetDC(widget_handle); if (!dev_context) WIN32_CRITICAL_ERROR( "GetDC()"); PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd 1, // version number PFD_DRAW_TO_WINDOW | // output to screen (not an image) PFD_SUPPORT_OPENGL | // support OpenGL PFD_DOUBLEBUFFER, // double buffered PFD_TYPE_RGBA, // RGBA type 24, // 24-bit color depth 0, 0, 0, 0, 0, 0, // color bits ignored 0, // no opacity buffer 0, // shift bit ignored 0, // no accumulation buffer 0, 0, 0, 0, // accum bits ignored 32, // 32-bit z-buffer 0, // no stencil buffer 0, // no auxiliary buffer PFD_MAIN_PLANE, // main layer 0, // reserved 0, 0, 0 // layer masks ignored }; int pixelformat = ChoosePixelFormat( dev_context, &pfd); DescribePixelFormat( dev_context, pixelformat, sizeof(pfd), &pfd); SetPixelFormat( dev_context, pixelformat, &pfd); gl_context = wglCreateContext( dev_context); if (!gl_context) WIN32_CRITICAL_ERROR("wglCreateContext()"); if (!root_glrc) root_glrc = gl_context; else wglShareLists( root_glrc, gl_context); ShowWindow( widget_handle, SW_SHOW); update_size(); } void display::destroy() { DestroyWindow( widget_handle); } display::~display() { } void display::activate(bool active) { if (active) { VPYTHON_NOTE( "Opening a window from Python."); //SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL ); gui_main::call_in_gui_thread( boost::bind( &display::create, this ) ); } else { VPYTHON_NOTE( "Closing a window from Python."); gui_main::call_in_gui_thread( boost::bind( &display::destroy, this ) ); } } display::EXTENSION_FUNCTION display::getProcAddress(const char* name) { return (EXTENSION_FUNCTION)::wglGetProcAddress( name ); } LRESULT display::on_mouse( WPARAM wParam, LPARAM lParam) { bool buttons[] = { wParam & MK_LBUTTON, wParam & MK_RBUTTON }; bool shiftState[] = { wParam & MK_SHIFT, wParam & MK_CONTROL, GetKeyState( VK_MENU) < 0 }; int mouse_x = GET_X_LPARAM(lParam); int mouse_y = GET_Y_LPARAM(lParam); bool was_locked = mouse.is_mouse_locked(); int old_x = mouse.get_x(), old_y = mouse.get_y(); mouse.report_mouse_state( 2, buttons, mouse_x, mouse_y, 3, shiftState, true ); // This mouse locking code is more complicated but much smoother and the cursor can't escape. if ( mouse.is_mouse_locked() != was_locked ) { if (mouse.is_mouse_locked()) SetCapture( widget_handle ); else ReleaseCapture(); ShowCursor( !mouse.is_mouse_locked() ); } /* Correction below by CL Cheung to address a problem encountered when trying to use Visual with wxpython (docking and undocking). He says, "Both SetCursorPos call will move the mouse to an incorrect coordinate. It is because WM_MOVE message is not sending to vPython any more after it is reparented. (Also, may be window_x and window_y shall be used instead of view_x, view_y). With the change, Now the mouse cursor is correctly positioned after dragging, no matter if it has been reparented or not. Seems no more crashes now." */ if (mouse.is_mouse_locked() && ( mouse_x < 20 || mouse_x > view_width - 20 || mouse_y < 20 || mouse_y > view_height - 20 ) ) { mouse.report_setcursor( view_width/2, view_height/2 ); POINT pt; pt.x = pt.y = 0; ClientToScreen(widget_handle, &pt); SetCursorPos( pt.x + view_width/2, pt.y + view_height/2 ); } if (was_locked && !mouse.is_mouse_locked()) { mouse.report_setcursor( old_x, old_y ); POINT pt; pt.x = pt.y = 0; ClientToScreen(widget_handle, &pt); SetCursorPos( pt.x + old_x, pt.y + old_y ); } return 0; } LRESULT display::on_keyUp(UINT uMsg, WPARAM wParam, LPARAM lParam) { return 0; } LRESULT display::on_keyDown(UINT uMsg, WPARAM wParam, LPARAM lParam) { // Note that this algorithm will proably fail if the user is using anything // other than a US keyboard. char *kNameP; char kStr[60],fStr[4]; bool Kshift = (GetKeyState(VK_SHIFT) < 0) || (GetKeyState(VK_CAPITAL) & 1); bool Kalt = GetKeyState(VK_MENU) < 0; bool Kctrl = GetKeyState(VK_CONTROL) < 0; kStr[0] = 0; kNameP = NULL; switch (wParam) { case VK_F1: case VK_F2: case VK_F3: case VK_F4: case VK_F5: case VK_F6: case VK_F7: case VK_F8: case VK_F9: case VK_F10: case VK_F11: case VK_F12: sprintf(fStr,"f%d",wParam-VK_F1+1); kNameP = fStr; break; case VK_PRIOR: kNameP = "page up"; break; case VK_NEXT: kNameP = "page down"; break; case VK_END: kNameP = "end"; break; case VK_HOME: kNameP = "home"; break; case VK_LEFT: kNameP = "left"; break; case VK_UP: kNameP = "up"; break; case VK_RIGHT: kNameP = "right"; break; case VK_DOWN: kNameP = "down"; break; case VK_SNAPSHOT: kNameP = "print screen"; break; case VK_INSERT: kNameP = "insert"; break; case VK_DELETE: kNameP = "delete"; break; case VK_NUMLOCK: kNameP = "numlock"; break; case VK_SCROLL: kNameP = "scrlock"; break; } // wParam if (kNameP) { if (Kctrl) strcat(kStr,"ctrl+"); if (Kalt) strcat(kStr,"alt+"); if (Kshift) strcat(kStr,"shift+"); strcat(kStr,kNameP); keys.push( std::string(kStr)); } return 0; } LRESULT display::on_keyChar(UINT uMsg, WPARAM wParam, LPARAM lParam) { // Note that this algorithm will proably fail if the user is using anything // other than a US keyboard. int fShift,fAlt,fCtrl; char *kNameP; char kStr[60],wStr[2]; if ((wParam >= 32) && (wParam <= 126)) { char kk[2]; kk[0] = wParam; kk[1] = 0; keys.push( std::string(kk)); return 0; } fShift = (GetKeyState(VK_SHIFT) < 0) || (GetKeyState(VK_CAPITAL) & 1); fAlt = GetKeyState(VK_MENU) < 0; fCtrl = GetKeyState(VK_CONTROL) < 0; kStr[0] = 0; kNameP = NULL; if (!fCtrl && wParam == VK_RETURN) kNameP = "\n"; else if (!fCtrl && wParam == VK_ESCAPE) kNameP = "escape"; else if (!fCtrl && wParam == VK_BACK) kNameP = "backspace"; else if (!fCtrl && wParam == VK_TAB) kNameP = "\t"; else if ((wParam > 0) && (wParam <= 26)) { wStr[0] = wParam-1+'a'; wStr[1] = 0; kNameP = wStr; } else if (wParam == 27) kNameP = "["; else if (wParam == 28) kNameP = "\\"; else if (wParam == 29) kNameP = "]"; else if (wParam == 30) kNameP = "^"; else if (wParam == 31) kNameP = "_"; if (kNameP) { if (fCtrl) strcat(kStr,"ctrl+"); if (fAlt) strcat(kStr,"alt+"); if (fShift) strcat(kStr,"shift+"); strcat(kStr,kNameP); if (strcmp(kStr,"escape") == 0) { // Allow the user to delete a fullscreen window this way destroy(); if (exit) PostQuitMessage(0); return 0; } keys.push( std::string(kStr)); } return 0; } /******************************* gui_main implementatin **********************/ gui_main* gui_main::self = 0; // Protected by python GIL boost::signal gui_main::on_shutdown; const int CALL_MESSAGE = WM_USER; gui_main::gui_main() : gui_thread(-1) { } LRESULT gui_main::threadMessage( int code, WPARAM wParam, LPARAM lParam ) { if (wParam == PM_REMOVE) { MSG& message = *(MSG*)lParam; if (message.hwnd ==0 && message.message == CALL_MESSAGE ) { boost::function* f = (boost::function*)message.wParam; (*f)(); delete f; } } return CallNextHookEx( NULL, code, wParam, lParam ); } #define TIMER_RESOLUTION 5 void __cdecl end_period() { timeEndPeriod(TIMER_RESOLUTION); } void gui_main::run() { MSG message; // Create a message queue and hook thread messages (we can't just check for them in the loop // below, becomes Windows runs modal message loops e.g. when resizing a window) SetWindowsHookEx(WH_GETMESSAGE, &gui_main::threadMessage, NULL, GetCurrentThreadId()); PeekMessage(&message, NULL, WM_USER, WM_USER, PM_NOREMOVE); // Tell the initializing thread { lock L(init_lock); gui_thread = GetCurrentThreadId(); initialized.notify_all(); } timeBeginPeriod(TIMER_RESOLUTION); atexit( end_period ); poll(); // Enter the message loop while (GetMessage(&message, 0, 0, 0) > 0) { TranslateMessage( &message); DispatchMessage( &message); } // We normally exit the message queue because PostQuitMessage() has been called VPYTHON_NOTE( "WM_QUIT (or message queue error) received"); on_shutdown(); // Tries to kill Python } void gui_main::init_thread(void) { if (!self) { // We are holding the Python GIL through this process, including the wait! // We can't let go because a different Python thread could come along and mess us up (e.g. // think that we are initialized and go on to call PostThreadMessage without a valid idThread) self = new gui_main; thread gui( boost::bind( &gui_main::run, self ) ); lock L( self->init_lock ); while (self->gui_thread == -1) self->initialized.wait( L ); } } void gui_main::call_in_gui_thread( const boost::function< void() >& f ) { init_thread(); PostThreadMessage( self->gui_thread, CALL_MESSAGE, (WPARAM)(new boost::function(f)), 0); } VOID CALLBACK gui_main::timer_callback( PVOID, BOOLEAN ) { // Called in high-priority timer thread when it's time to render self->call_in_gui_thread( boost::bind( &gui_main::poll, self ) ); } void gui_main::poll() { // Called in gui thread when it's time to render // We don't need the lock here, because displays can't be created or destroyed from Python // without a message being processed by the GUI thread. paint_displays() will pick // the lock up as necessary to synchronize access to the actual display contents. std::vector displays; for(std::map::iterator i = widgets.begin(); i != widgets.end(); ++i ) if (i->second) displays.push_back( i->second ); // Setting the 2nd, optional argument for paint_displays to true made multiwindow programs work for one user. // Scherer notes, "That isn't acceptable to ship (it is TERRIBLE for performance on many drivers)." int interval = int( 1000. * render_manager::paint_displays( displays ) ); CreateTimerQueueTimer( &timer_handle, NULL, &timer_callback, NULL, interval, 0, WT_EXECUTEINTIMERTHREAD ); } } // !namespace cvisual; visual-5.12_release/src/win32/CVS/0000777000175000017500000000000011240651152013632 500000000000000visual-5.12_release/src/win32/CVS/Entries0000644000175000017500000000036011240651152015101 00000000000000/font_renderer.cpp/1.3/Wed Apr 2 22:09:59 2008// /windisplay.cpp/1.18/Sun Jun 21 20:33:15 2009// /winrandom_device.cpp/1.5/Mon Apr 7 19:22:00 2008// /winrate.cpp/1.1/Thu Mar 23 16:34:00 2006// /wintimer.cpp/1.4/Thu Feb 28 22:21:25 2008// visual-5.12_release/src/win32/CVS/Root0000644000175000017500000000011111240651152014405 00000000000000:extssh:bsherwood@visualpython.cvs.sourceforge.net:/cvsroot/visualpython visual-5.12_release/src/win32/CVS/Repository0000644000175000017500000000003011240651152015641 00000000000000vpython-core2/src/win32 visual-5.12_release/src/win32/font_renderer.cpp0000644000175000017500000000674110775002067016472 00000000000000#include "font_renderer.hpp" #include "util/errors.hpp" namespace cvisual { using std::wstring; class win32_exception : std::exception { public: win32_exception( const char* desc ) : std::exception(desc) { // todo: report GetLastError(), see win32_write_critical in windisplay.cpp } }; bool isClearTypeEnabled() { UINT smoothType = 0; // On versions of Windows < XP, this call should fail if (SystemParametersInfo( 0x200a, 0, &smoothType, 0 )) { // SPI_GETFONTSMOOTHINGTYPE if (smoothType == 2) // FE_FONTSMOOTHINGCLEARTYPE return true; } return false; } static int CALLBACK ef_callback(ENUMLOGFONTEXW *,NEWTEXTMETRICEXW *,DWORD,LPARAM lParam) { *(bool*)lParam = true; return 0; } font_renderer::font_renderer( const wstring& description, int height ) { font_handle = NULL; // TODO: support generic "sans-serif", "serif", "monospace" families using lfPitchAndFamily. // Doesn't matter much because Windows machines pretty much always have "verdana", // "times new roman", and "courier new". // Respect the users' preferences as to whether ClearType should be enabled. isClearType = isClearTypeEnabled(); int quality = DEFAULT_QUALITY; if (isClearType) quality = 5; HDC sic = CreateIC( "DISPLAY", NULL, NULL, NULL ); LOGFONTW lf; memset(&lf, 0, sizeof(lf)); lf.lfHeight = -height; lf.lfOutPrecision = OUT_TT_PRECIS; lf.lfQuality = quality; wcsncpy( lf.lfFaceName, description.c_str(), sizeof(lf.lfFaceName)/2-1 ); lf.lfFaceName[ sizeof(lf.lfFaceName)/2-1 ] = 0; bool fontFound = false; EnumFontFamiliesExW( sic, &lf, (FONTENUMPROCW)ef_callback, (LPARAM)&fontFound, 0 ); if (fontFound) font_handle = CreateFontIndirectW( &lf ); if (font_handle) SelectObject( sic, SelectObject( sic, font_handle ) ); //< Work around KB306198 DeleteDC( sic ); } bool font_renderer::ok() { return font_handle != 0; } font_renderer::~font_renderer() { if (font_handle) DeleteObject( font_handle ); } void font_renderer::gl_render_to_texture( const view&, const wstring& text, layout_texture& tx ) { HDC dc = NULL; HBITMAP bmp = NULL; HFONT prevFont = NULL; try { dc = CreateCompatibleDC( NULL ); prevFont = (HFONT)SelectObject( dc, font_handle ); RECT rect; rect.left = 0; rect.top = 0; rect.right = 1024; rect.bottom = 1024; if (!DrawTextW( dc, text.c_str(), text.size(), &rect, DT_CALCRECT )) throw win32_exception("DrawText(DT_CALCRECT) failed."); if (!rect.right) rect.right = 1; if (!rect.bottom) rect.bottom = 1; BITMAPINFOHEADER hdr; memset(&hdr, 0, sizeof(hdr)); hdr.biSize = sizeof(hdr); hdr.biWidth = rect.right; hdr.biHeight = rect.bottom; hdr.biPlanes = 1; hdr.biBitCount = 24; hdr.biCompression = BI_RGB; void* bits; bmp = CreateDIBSection( dc, (BITMAPINFO*)&hdr, DIB_RGB_COLORS, &bits, NULL, 0 ); if (!bmp) throw win32_exception("CreateDIBSection failed."); int biPitch = (hdr.biWidth*3 + ((-hdr.biWidth*3)&3)); memset(bits, 0, biPitch * hdr.biHeight); SetTextColor(dc, 0xFFFFFF); SetBkColor(dc, 0); HBITMAP prevBmp = (HBITMAP)SelectObject( dc, bmp ); DrawTextW( dc, text.c_str(), text.size(), &rect, 0 ); SelectObject(dc, prevBmp); SelectObject(dc, prevFont); DeleteDC( dc ); dc = NULL; tx.set_image( rect.right, -rect.bottom, isClearType ? GL_RGB : GL_LUMINANCE, GL_BGR_EXT, GL_UNSIGNED_BYTE, 4, bits ); DeleteObject( bmp ); bmp = NULL; } catch( ... ) { if (bmp) DeleteObject( bmp ); if (dc) { SelectObject(dc, prevFont); DeleteDC( dc ); } throw; } } } // namespace cvisualvisual-5.12_release/src/win32/wintimer.cpp0000644000175000017500000000130510761631745015471 00000000000000// Copyright (c) 2004 by Jonathan Brandmeyer. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/timer.hpp" #include #include #include #include namespace cvisual { timer::timer() : start(0) { LARGE_INTEGER freq; if (!QueryPerformanceFrequency(&freq)) throw std::runtime_error( "No high resolution timer." ); inv_tick_count = 1.0 / static_cast(freq.QuadPart); start = elapsed(); } double timer::elapsed() { LARGE_INTEGER count; QueryPerformanceCounter( &count ); return static_cast(count.QuadPart)*inv_tick_count - start; } } // !namespace cvisual visual-5.12_release/src/win32/winrate.cpp0000644000175000017500000000257110410546770015304 00000000000000#include "util/rate.hpp" #define WIN32_LEAN_AND_MEAN 1 #include #include namespace cvisual { namespace { class rate_timer { long long tics_per_second; long long origin; public: rate_timer() { QueryPerformanceFrequency( (LARGE_INTEGER*)&tics_per_second); QueryPerformanceCounter( (LARGE_INTEGER*)&origin); } void delay( double _delay) { const long long delay = (long long)( _delay * (double)tics_per_second); long long now = 0; QueryPerformanceCounter( (LARGE_INTEGER*)&now); long long wait = delay - (now - origin); if (wait < 0) { QueryPerformanceCounter( (LARGE_INTEGER*)&origin); return; } // Convert from ticks to milliseconds. DWORD ms_wait = wait * 1000 / tics_per_second; Sleep( ms_wait); // Sleep() usually under-delays by up to 16 ms, so, busy wait out the // remainder. See also src/test/sleep_test.cpp QueryPerformanceCounter( (LARGE_INTEGER*)&now); wait = delay - (now - origin); while (wait > 0) { QueryPerformanceCounter( (LARGE_INTEGER*)&now); wait = delay - (now - origin); } QueryPerformanceCounter( (LARGE_INTEGER*)&origin); } }; } // !namespace (unnamed) void rate( const double& freq) { static rate_timer* rt = 0; if (!rt) rt = new rate_timer(); if (freq <= 0.0) throw std::invalid_argument( "Rate must be positive and nonzero."); rt->delay( 1.0/freq ); } } // !namespace cvisual visual-5.12_release/docs/0000777000175000017500000000000011243357451012406 500000000000000visual-5.12_release/docs/Makefile.in0000644000175000017500000003543211243356545014401 00000000000000# Makefile.in generated by automake 1.9.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile to distribute the documentation top_srcdir = @top_srcdir@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs DIST_COMMON = $(am__nobase_dist_pkgdata_DATA_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__nobase_dist_pkgdata_DATA_DIST = index.html visual/arrow.html \ visual/axes.gif visual/box.html visual/color.html \ visual/cone.html visual/controls.html visual/convex.html \ visual/curve.html visual/cylinder.html visual/defaults.html \ visual/delete.html visual/display.html visual/ellipsoid.html \ visual/faces.html visual/factorial.html visual/files.html \ visual/float.html visual/frame.html visual/graph.html \ visual/helix.html visual/index.html visual/keyboard.html \ visual/label.html visual/license.txt visual/lights.html \ visual/materials.html visual/mouse.html \ visual/mouse_click.html visual/mouse_drag.html \ visual/new_features.html visual/options.html \ visual/points.html visual/primitives.html visual/pyramid.html \ visual/rate.html visual/ring.gif visual/ring.html \ visual/rotation.html visual/sphere.html visual/spherebox.gif \ visual/vector.html visual/VisualIntro.html \ visual/VisualRef.css visual/VisualRef-1.gif \ visual/VisualRef-2.gif visual/VisualRef-3.gif \ visual/VisualRef-4.gif visual/VisualRef-6.gif \ visual/VisualRef-7.gif visual/VPython_Intro.pdf \ visual/images/arrow.jpg visual/images/box.jpg \ visual/images/cone.jpg visual/images/controls.jpg \ visual/images/convex.jpg visual/images/curve.jpg \ visual/images/cylinder.jpg visual/images/ellipsoid.jpg \ visual/images/faces.jpg visual/images/filedialog.jpg \ visual/images/graph.jpg visual/images/helix.jpg \ visual/images/label.jpg visual/images/material_etc.jpg \ visual/images/points.jpg visual/images/pyramid.jpg \ visual/images/ring.jpg visual/images/sphere.jpg am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgdatadir)" nobase_dist_pkgdataDATA_INSTALL = $(install_sh_DATA) DATA = $(nobase_dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) srcdir = @srcdir@ VPATH = @srcdir@ pkgdatadir = @visualdocdir@ ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@ BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@ BUILD_EXAMPLES_FALSE = @BUILD_EXAMPLES_FALSE@ BUILD_EXAMPLES_TRUE = @BUILD_EXAMPLES_TRUE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ FREETYPE2_LIBS = @FREETYPE2_LIBS@ GLIBMM_CFLAGS = @GLIBMM_CFLAGS@ GLIBMM_LIBS = @GLIBMM_LIBS@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKGLEXTMM_CFLAGS = @GTKGLEXTMM_CFLAGS@ GTKGLEXTMM_LIBS = @GTKGLEXTMM_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADEMM_CFLAGS = @LIBGLADEMM_CFLAGS@ LIBGLADEMM_LIBS = @LIBGLADEMM_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PANGOMM_CFLAGS = @PANGOMM_CFLAGS@ PANGOMM_LIBS = @PANGOMM_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHONPATH = @PYTHONPATH@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WIN32_CWD = @WIN32_CWD@ WIN32_PYTHON_VERSION = @WIN32_PYTHON_VERSION@ WIN32_SRCDIR = @WIN32_SRCDIR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ visualdocdir = @visualdocdir@ visualexampledir = @visualexampledir@ AUTOMAKE_OPTIONS = foreign @BUILD_DOCS_FALSE@docfiles = @BUILD_DOCS_TRUE@docfiles = index.html \ @BUILD_DOCS_TRUE@ visual/arrow.html visual/axes.gif visual/box.html visual/color.html \ @BUILD_DOCS_TRUE@ visual/cone.html visual/controls.html visual/convex.html visual/curve.html \ @BUILD_DOCS_TRUE@ visual/cylinder.html visual/defaults.html visual/delete.html visual/display.html \ @BUILD_DOCS_TRUE@ visual/ellipsoid.html visual/faces.html visual/factorial.html \ @BUILD_DOCS_TRUE@ visual/files.html visual/float.html \ @BUILD_DOCS_TRUE@ visual/frame.html visual/graph.html visual/helix.html visual/index.html \ @BUILD_DOCS_TRUE@ visual/keyboard.html visual/label.html visual/license.txt visual/lights.html \ @BUILD_DOCS_TRUE@ visual/materials.html visual/mouse.html visual/mouse_click.html \ @BUILD_DOCS_TRUE@ visual/mouse_drag.html visual/new_features.html visual/options.html \ @BUILD_DOCS_TRUE@ visual/points.html visual/primitives.html \ @BUILD_DOCS_TRUE@ visual/pyramid.html visual/rate.html visual/ring.gif visual/ring.html \ @BUILD_DOCS_TRUE@ visual/rotation.html visual/sphere.html visual/spherebox.gif visual/vector.html \ @BUILD_DOCS_TRUE@ visual/VisualIntro.html visual/VisualRef.css \ @BUILD_DOCS_TRUE@ visual/VisualRef-1.gif visual/VisualRef-2.gif visual/VisualRef-3.gif \ @BUILD_DOCS_TRUE@ visual/VisualRef-4.gif visual/VisualRef-6.gif visual/VisualRef-7.gif \ @BUILD_DOCS_TRUE@ visual/VPython_Intro.pdf \ @BUILD_DOCS_TRUE@ visual/images/arrow.jpg visual/images/box.jpg visual/images/cone.jpg visual/images/controls.jpg \ @BUILD_DOCS_TRUE@ visual/images/convex.jpg visual/images/curve.jpg visual/images/cylinder.jpg visual/images/ellipsoid.jpg \ @BUILD_DOCS_TRUE@ visual/images/faces.jpg visual/images/filedialog.jpg visual/images/graph.jpg visual/images/helix.jpg \ @BUILD_DOCS_TRUE@ visual/images/label.jpg visual/images/material_etc.jpg visual/images/points.jpg \ @BUILD_DOCS_TRUE@ visual/images/pyramid.jpg visual/images/ring.jpg visual/images/sphere.jpg nobase_dist_pkgdata_DATA = $(docfiles) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-nobase_dist_pkgdataDATA: $(nobase_dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" @$(am__vpath_adj_setup) \ list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__vpath_adj) \ echo " $(nobase_dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(nobase_dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-nobase_dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @$(am__vpath_adj_setup) \ list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ $(am__vpath_adj) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) $(mkdir_p) $(distdir)/visual $(distdir)/visual/images @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-nobase_dist_pkgdataDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-nobase_dist_pkgdataDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man \ install-nobase_dist_pkgdataDATA install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-info-am uninstall-nobase_dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: visual-5.12_release/docs/Makefile.am0000644000175000017500000000342711203172631014353 00000000000000## Process this file with automake to produce Makefile.in # Makefile to distribute the documentation AUTOMAKE_OPTIONS = foreign srcdir = @srcdir@ VPATH = @srcdir@ if BUILD_DOCS docfiles = index.html \ visual/arrow.html visual/axes.gif visual/box.html visual/color.html \ visual/cone.html visual/controls.html visual/convex.html visual/curve.html \ visual/cylinder.html visual/defaults.html visual/delete.html visual/display.html \ visual/ellipsoid.html visual/faces.html visual/factorial.html \ visual/files.html visual/float.html \ visual/frame.html visual/graph.html visual/helix.html visual/index.html \ visual/keyboard.html visual/label.html visual/license.txt visual/lights.html \ visual/materials.html visual/mouse.html visual/mouse_click.html \ visual/mouse_drag.html visual/new_features.html visual/options.html \ visual/points.html visual/primitives.html \ visual/pyramid.html visual/rate.html visual/ring.gif visual/ring.html \ visual/rotation.html visual/sphere.html visual/spherebox.gif visual/vector.html \ visual/VisualIntro.html visual/VisualRef.css \ visual/VisualRef-1.gif visual/VisualRef-2.gif visual/VisualRef-3.gif \ visual/VisualRef-4.gif visual/VisualRef-6.gif visual/VisualRef-7.gif \ visual/VPython_Intro.pdf \ visual/images/arrow.jpg visual/images/box.jpg visual/images/cone.jpg visual/images/controls.jpg \ visual/images/convex.jpg visual/images/curve.jpg visual/images/cylinder.jpg visual/images/ellipsoid.jpg \ visual/images/faces.jpg visual/images/filedialog.jpg visual/images/graph.jpg visual/images/helix.jpg \ visual/images/label.jpg visual/images/material_etc.jpg visual/images/points.jpg \ visual/images/pyramid.jpg visual/images/ring.jpg visual/images/sphere.jpg else docfiles = endif pkgdatadir = @visualdocdir@ nobase_dist_pkgdata_DATA = $(docfiles) visual-5.12_release/docs/index.html0000644000175000017500000000040611075267703014322 00000000000000 visual-5.12_release/docs/visual/0000777000175000017500000000000011243357451013711 500000000000000visual-5.12_release/docs/visual/mouse_drag.html0000644000175000017500000002766111243332661016650 00000000000000 drag
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Drag example

Here is the sequence of mouse events involved in dragging something:

1) m1.press is true when you depress the mouse button (it is 'left' if left button; any quantity that is nonzero is considered true in Python).

2) m1.drag is true when the mouse coordinates change from what they were at the time of m1.press.

At the time of the drag event, the mouse position is reported to be what it was at the time of the press event, so that the dragging can start at the place where the user first pressed the mouse button. If the mouse is in motion at the time of the press event, it is quite possible that the next position seen by the computer, at the time of the drag event, could be quite far from the click position. This is why the position of the drag event is reported as though it occurred at the press location.

3) No events occur while dragging; you continually use scene.mouse.pos to update what you're dragging.

4) m1.drop is true when you release the mouse button.

You can program dragging with the mouse simply by continually reading the current value of scene.mouse.pos. Here is a complete routine for dragging a sphere with the left button down. Copy this into an edit window and try it!

from visual import *
scene.range = 5 # fixed size, no autoscaling
ball = sphere(pos=(-3,0,0), color=color.cyan)
cube = box(pos=(+3,0,0), size=(2,2,2), color=color.red)
pick = None # no object picked out of the scene yet
while True:
    if scene.mouse.events:
        m1 = scene.mouse.getevent() # get event
        if m1.drag and m1.pick == ball: # if touched ball
            drag_pos = m1.pickpos # where on the ball
            pick = m1.pick # pick now true (not None)
        elif m1.drop: # released at end of drag
            pick = None # end dragging (None is false)
    if pick:
        # project onto xy plane, even if scene rotated:
        new_pos = scene.mouse.project(normal=(0,0,1))
        if new_pos != drag_pos: # if mouse has moved
            # offset for where the ball was clicked:
            pick.pos += new_pos - drag_pos
            drag_pos = new_pos # update drag position

If you do a lot of processing of each mouse movement, or you are leaving a trail behind the moving object, you may need to check whether the "new" mouse position is in fact different from the previous position before processing the "move", as is done in the example above. For example, a trail drawn with a curve object that contains a huge number of points all at the same location may not display properly.

Most VPython objects can be "picked" by clicking them. Here is a more general routine which lets you drag either the tail or the tip of an arrow. Copy this into an edit window and try it!

from visual import *
scene.range = 8 # fixed size, no autoscaling
arr = arrow(pos=(2,0,0),axis=(0,5,0))
by = 0.3 # click this close to tail or tip
drag = None # have not selected tail or tip of arrow
while True:
    if scene.mouse.events:
        m1 = scene.mouse.getevent() # obtain event
        if m1.press:
            if mag(arr.pos-m1.pos) <= by:
                drag = 'tail' # near tail of arrow
            elif mag((arr.pos+arr.axis)-m1.pos) <= by:
                drag = 'tip' # near tip of arrow
            drag_pos = m1.pos # save press location
        elif m1.drop: # released at end of drag
            drag = None # end dragging (None is False)
    if drag:
        new_pos = scene.mouse.pos
        if new_pos != drag_pos: # if mouse has moved
            displace = new_pos - drag_pos # moved how far
            drag_pos = new_pos # update drag position
            if drag == 'tail':
                arr.pos += displace # displace the tail
            else:
                arr.axis += displace # displace the tip

Here is general mouse documentation.

visual-5.12_release/docs/visual/factorial.html0000644000175000017500000001677011202715735016470 00000000000000 factorial
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

The factorial and combin Functions

from visual import *
from visual.factorial import * # import after visual
print factorial(4) # gives 24
print combin(10,2) # gives 45

Note: To avoid confusion between the module named "factorial" and the function named "factorial", import the factorial module after importing the visual module itself.

The factorial function factorial(N) is N!; 4! is (4)(3)(2)(1) = 24, and 0! is defined to be 1.
The combin function is combin(a,b) = a!/(b!*(a-b)!)
.

A major use of these functions is in calculating the number of ways of arranging a group of objects. For example, if there are 5 numbered balls in a sack, there are factorial(5) = 5! = 5*4*3*2*1 = 120 ways of taking them sequentially out of the sack (5 possibilities for the first ball, 4 for the next, and so on).

If on the other hand the 5 balls are not numbered, but 2 are green and 3 are red, of the 120 ways of picking the balls there are 2! indistinguishable ways of arranging the green balls and 3! ways of arranging the red balls, so the number of different arrangements of the balls is combin(5,2) = 5!/(3!*2!) = 10.

Logically, the combin function is just a combination of factorial functions. However, cancellations in the numerator and denominator make it possible to evaluate the combin function for values of its arguments that would overflow the factorial function, due to the limited size of floating-point numbers. For example, combin(5,2) = 5!/(3!*2!) = (5*4)/2 = 10, and we didn't have to evaluate 5! fully.

visual-5.12_release/docs/visual/options.html0000644000175000017500000003043711243332661016211 00000000000000 options
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Additional Attributes

The following attributes apply to all VPython objects:

visible If False, object is not displayed; e.g. ball.visible = False
Use ball.visible = True to make the ball visible again.

frame Place this object into a specified frame, as in ball = sphere(frame = f1)

display When you start a VPython program, for convenience Visual creates a display window and names it scene. By default, objects you create go into that display window. You can choose to put an object in a different display like this:

scene2 = display( title = "Act IV, Scene 2" )
rod = cylinder( display = scene2 )

Executing myscene = display.get_selected() returns a reference to the display in which objects are currently being created. Given a specific display named scene2, scene2.select() makes scene2 be the "selected display", so that objects will be drawn into scene2 by default.

There is a rotate function for all objects other than curve, convex, faces, and points (which can be put into a frame and the frame rotated).

__class__ Name of the class of object. For example, ball.__class__ is sphere is true if ball is a sphere object. There are two underscores before and after the word class. In a list of visible objects provided by scene.objects, if obj is in this list you can determine the class of the object with obj.__class__. You can check for a specific kind of object by using a standard Python function: isinstance(obj, sphere) is true if "obj" is a sphere object.

__copy__() Makes a copy of an object. There are two underscores before and after copy. Without any arguments, this results in creating a second object in the exact same position as the first, which is probably not what you want. The __copy__() function takes a list of keyword=value argument pairs which are applied to the new object before making it visible. For example, to clone an object from one display to another, you would execute: new_object = old_object.__copy__( display=new_display). Restriction: If the original object is within a frame, and the new object is on a different display, you must supply both a new display and a new frame for the new object (the new frame may be None). This is due to the restriction that an object may not be located within a frame that is in a separate display.

Here is an example that uses the __copy__() function. The following routine copies all of the Visual objects currently existing in one display into a previously defined second display, as long as there are no nested frames (frames within frames):

def clone_universe( new_display, old_display):
    # Create a dictionary of frames in old display to
    # the corresponding frames in the new display.
    frames = {} # create empty dictionary
    for obj in old_display.objects:
        if obj.__class__ == frame:
            frames[obj] = obj.__copy__( frame=None,
                display=new_display)
    # For each old frame within another reference frame,
    # place the new frame in appropriate frame in new
    # display. Here old is an object and new is its
    # frame in the new display.
    for old, new in frames.iteritems():
        if old.frame:
            new.frame = frames[old.frame]
    # Copy over the universe.
    for obj in old_display.objects:
        if obj.__class__ == frame:
            # Already taken care of above.
            pass
        elif obj.frame:
            # Initialize with the corresponding frame
            # in the new display:
            obj.__copy__( display=new_display,
                   frame=frames[obj.frame])
        else:
            # No frame issue;
            obj.__copy__( display=new_display)

See Controlling One or More Visual Display Windows for more information on creating and manipulating display objects.

 

visual-5.12_release/docs/visual/VisualRef-6.gif0000644000175000017500000001752210410546274016364 00000000000000GIF89a ϧwwwggg/7/3Mf::WWuu3J` w(/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛$8 0A@J<3H&4pOJEL ArK(bɪ}iֵp[>6]` #уu ANxƐ+LʘN̹Π~z4ΦOgN֤Ynz6jۤk,{޾nW7Ï5qcSy֫h}Oiy_|չ^}g/ GWD'B2bW"6ҥDӟAʮ'I9);^}$1 T=c8¼Õ1$Z$`**F<ʄ8AAi\2bl9&Í6I>xY3I)*ԧLA*Ħ=ufϝV&Ě)ͨ8sRV YZWr@fx]{LÈ+0ݠfYi3;ެ3gΕ?{ Ө -㞜4A]-m+ۓWNFjI'(:k Rwݽ_ m3y e-6@e/7IF ^*ŵw} {UD8_}ŔHy:]]!y!Hx " AX"|!8" G*"Fҧ l3BNQ6nmt@2ӐXyGDYNI:'DU@ 0Sa)ӚlxSnzN.NF褒VJ饖f)Am/sWafjꪘꪪ*kjk(Q:6k)UtG9EEƣD>{.-KZmu|KH 䫸ى.DTYm‹mj~RܼpUudwpW0gw$[Uo(K첧/2\6Ls6̳;BkLt")PG-TWmP3%֣qu`-vcfvtɂqsvK[)wJ&,\ h*r8^dHeiK>V*# TRq܂&@L2H?ʡdH!5b*\&׹vv[.a~k,'|:,bѥ~d#RvxaY%ihC!˒O=RD8`A&Tp` !F8bE1f4FA92!G'QT2Õ/aƔyL7q4gO%;:4gˠD&MSiS>:"SWnkGjUl٤_ͦUUm۟u;wftƄ+7oߓv\e{' VxqǑ'WysϡcXMf|kcgsl-<Tuqf_c*>244 3H> <T/Vl@"DpBǾ2`BPAZ:@3DiCRE.D4qFR\D4 GƈNS? - z%?K#/:?NH*jMGr+?$HM,HD)-0'0S>GkČZ /FrTBGBRM S,IAeUQ0AHebLT;KRԧZrqm2mB\VXkmS=PGUe'1,0O5Li7RmBvC9p Y-u)З4|R"iE2wWwOs)M@SՐ*M^> jqm"ES%u/x=(Hؑ 13ݖLc8> ڏ)Y;?4&(d8YWxwm̒Rû]DxÚԍ=㝢\&]y=jI(p!%uN}BO|m{jdUf"YT81 RgdE39yQ^dvˈUO + +b=!HBuE둭R3# _r@S$iI^(l$``#"DeB^fA4lA BKWd %ĉ!ǎR<&OPKiF1񙍈T5zeW݌q0^IRbb~""^6F$2H2LCסF&!] zB=Ҭ-Aؑ͞9ME ؑN5Tȴ#|$0K<@AejEdܥ'v^fpS H$VSkU'C3N|\ :e5SXgCj9Q#Q8HxJIII" +qEL 0@J,Uq{զjd_5]rj4Qu`g\iS`VQF[Q QPP%QU)U }H9f`xXw_@!h tQ2dQ7MdEAGdPAҴzUT]z"z$iĖsrH3%ġOj攜yÅ^R%dOM'B)=E5~WgXcaBh-$HR@yIP Xҧb_IRki}٩].ffue1&khltr,ԘЍѳiojT-tJ-jAQENt1CܖY}gvRUbz,R۹75CYU~†5Z_)2=7KӘ Rsp1d4Q8h (vsYkIPf?oThXaYNR΢YAtLvb4NgEw9u])ktX*y >tvmY8%.n4W`7gq.TthbyMt~Xtr2a~"j{gŭaL E@$Us=}dnCRiyI>W ow;;ŧn.:=)x"!ֲ'i &"8Qwv0Ib§(Q~g MDEPQcuiX޸4t1ЧeȎ1_Ғ$}nld4ŧ`$)r6FT@$IZGAi4G!'K#_4LzzЀI̘SN ĝEs% gxJ',LZS֙NtB 䄒!>ab̄$K4S)Mp:*yՔc*n. SyfYQ$!ťFy!S iOi@$JRf(iR:v9-N[u3n2ϣ*GrjM)N ɥ/jr2T*jO9CCɊUreAFWB"nA\ hy!wNoW_(H]) -#`/),4--Hk R%j[¶mq"vmf} ܮwj}x"`Ez)9{I_7qI"ahV kH7T/ބm*We\iٸU/|hf=bH~X %RWj֥m2 __Ge+*DB, OT݌hI89BeT+[ w PfC2c7MPLsUZ`xLǫ"O]yӛ03G;Z҅Ҙh]*cɜk^@gb]~p#UwU![nguyRdލt&Ԑ ΃.2tzMV(۩^OqFƀʼnP%XyP`ՒTAR%MK+z NfdyҨ$/-iHyK܎H:NG|zng& 't;TS x9 跿 |/ >K|g/nk߸\X{d31+{YwĜ[/XsJ7y^tij7ل>t.O&;ݷH:km*Y%ֻ>؝p,7ٟn+ $X dC%NXE `G!=*YI)*بK1.YMqS"MA9Q,.eSiSQ1>ZʖWnHרEmYbѮ +[8ƥ{sn]0ݾ۷]E\#`É-"V8"cǑB\ e˖ g,sgǛAk;:gӆQ`5뾢a+v]zvonye 86|m2zcf,a}GW_5}}?xW5ϿT!r '0;* B.P*07l 5qSTqE[tEO ;visual-5.12_release/docs/visual/axes.gif0000644000175000017500000000276710410546274015266 00000000000000GIF89a$$$777III[[[mmm3Mf::WWuu3J` w(/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@v ` QH4ӃM>jTT^(W[: +V(ٲ?]˶[g+ں<;S/ߞz}xp DX1JƎo6 ]˒1ۜ$#?)zҦz֮1Žmq6moK̭"g(|"Onp9sΟ3.2tϱ3מqߛnVk᧖ohw֯?fH蘁!h1|AuQ(oa薆mqȖketwrjE5tU51R)t2H8~3ZգEhsR5y?T9cPb$XYrd]n%$jeFcye;Րli$}d'`tՊHfQ1袌6裋]by7首iuzԑVizd֪7n*V+ƙ+kEf+VFlW֬oBRR[-qr@$XA.dC%N8P5nc?$Y$Ð)OdRcJ.eΤȚ9uv3ʝAϡIkuTSL:Z$UXn]PZ @,YϦe[qΥ[]y_&\aĉ ;visual-5.12_release/docs/visual/lights.html0000644000175000017500000002137211202715735016010 00000000000000 lights
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
Lighting
material etc

You can light a scene with distant lights (which act like point-like lamps far from the scene) and/or local lights (point-like lamps near the scene, like the yellow light shown above). For a distant light you specify its direction from the origin. For a local light you specify its location in the scene.

There is a list of all distant and local light objects, scene.lights. By default, scene.lights is this list:

[distant_light(direction=(0.22, 0.44, 0.88),       color=color.gray(0.8)),
 distant_light(direction=(-0.88, -0.22, -0.44),       color=color.gray(0.3))]

These are equivalent to the default lights in Visual prior to version 5. You can get rid of these default lights by setting the list to empty with scene.lights = [].

In addition to these default distant lights, there is default ambient lighting in the form of scene.ambient=color.gray(0.2); for compatibility with earlier versions of Visual, this can be expressed as scene.ambient=0.2, but now the ambient light can be specified as any color you want. The color of light objects and the amount of scene.ambient must be specified with some care, because if the total lighting intensity exceeds 1 anywhere in the scene the results are unpredictable.

The following statement creates a local yellow light whose position is at (x,y,z), and if you continually update lamp.pos, the light will move. You may wish to place a sphere or box with material=materials.emissive at the same location so that the lamp looks like a glowing lamp.

lamp = local_light(pos=(x,y,z), color=color.yellow)

A distant red light located in the direction (x,y,z) from the origin is created like this:

distant_light(direction=(x,y,z), color=color.red)

Previous to Visual 5, you set up a light by specifying a vector in the direction to the light from the origin, and the magnitude of the vector was the intensity. For example, scene.lights = [vector(1,0,0)] with scene.ambient = 0 would light the scene with full intensity from the right side, with no ambient lighting. In Visual 5 and later, this scheme for specifying lights still works, but this compatibility syntax actually creates distant_light objects.

visual-5.12_release/docs/visual/color.html0000644000175000017500000002336611202715735015641 00000000000000 color
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Color

In the RGB color system, you specify a color in terms of fractions of red, green, and blue, corresponding to how strongly glowing are the tiny red, green, and blue dots of the computer screen. In the RGB scheme, white is the color with a maximum of red, blue, and green (1, 1, 1). Black has minimum amounts (0, 0, 0). The brightest red is represented by (1, 0, 0); that is, it has the full amount of red, no green, and no blue.

Here are some examples of RGB colors, with names you can use in Visual:

    (1,0,0) color.red (1,1,0) color.yellow (0,0,0) color.black
    (0,1,0) color.green (1,0.5,0) color.orange (1,1,1) color.white
    (0,0,1) color.blue (0,1,1) color.cyan  
     (1,0,1) color.magenta  

You can also create your own colors, such as these:

(0.5, 0.5, 0.5) a rather dark grey; or you can say color=color.gray(0.5) to mean (0.5,0.5,0.5)

(1,0.7,0.2) a coppery color

Colors may appear differently on different computers, and under different 3D lighting conditions. The named colors above are most likely to display appropriately, because RGB values of 0 or 1 are unaffected by differing color corrections ("gamma" corrections).

The VPython demo program colorsliders.py lets you adjust RGB sliders to visualize colors and print color triples that you copy into your program. It also provides HSV sliders to adjust hue, saturation (how much white is added to dilute the hue), and value (brightness), which is an alternative way to describe colors.

Visual only accepts RGB color descriptions, but there are functions for converting color triples between RGB and HSV:

c = (1,1,0)
c2 = color.rgb_to_hsv(c) # convert RGB to HSV
print hsv # (0.16667, 1, 1)
c3 = color.hsv_to_rgb(c2) # convert back to RGB
print c3 # (1, 1, 0)

Another example: sphere(radius=2, color=hsv_to_rgb( (0.5,1,0.8) )

Opacity

You can make most objects be transparent by specifying a value from 0-1 inclusive for the attribute "opacity". For example, box(color=color.red, opacity=0.8) is slightly transparent. An opacity value of 0 means totally transparent, and 1 means totally opaque. Currently curve, convex, faces, points, and helix objects do not allow transparency.

You may see incorrect rendering any time there is a translucent object (opacity < 1.0) which is not convex (e.g. ring), or two translucent objects which overlap on the screen and also in their depth extents (distances from the camera to the nearest and farthest planes perpendicular to scene.forward which intersect the object). The objects need not actually overlap in 3D space to have problems. The incorrect rendering will usually have the effect of making the more distant object disappear (fail to show through the nearer object). Accurate rendering of ad hoc scenes with translucency is difficult and expensive, and we did not want to wait for a perfect solution before introducing this useful enhancement.

visual-5.12_release/docs/visual/arrow.html0000644000175000017500000002330011216337740015642 00000000000000 arrow
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
arrow
arrow

arrow The arrow object has a straight box-shaped shaft with an arrowhead at one end. The following statement will display an arrow pointing parallel to the x axis:

pointer = arrow(pos=(0,2,1), axis=(5,0,0), shaftwidth=1)

The arrow object has the following attributes and default values, like those for cylinders: pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), color (1,1,1) which is color.white, red (1), green (1), blue (1), opacity (1), material, and up (0,1,0). As with box, the up attribute is significant for arrow because the shaft and head have square cross sections, and setting the up attribute rotates the arrow about its axis. Additional arrow attributes:

shaftwidth By default, shaftwidth = 0.1*(length of arrow)

headwidth By default, headwidth = 2*shaftwidth

headlength By default, headlength = 3*shaftwidth

Assigning shaftwidth = 0 makes it be the default (0.1 times the length of the arrow). If you don't explicitly set headwidth or headlength, its length is based as shown above on shaftwidth (either the default or whatever value you specify for shaftwidth). If headlength becomes larger than half the length of the arrow, or the shaft becomes thinner than 1/50 the length, the entire arrow is scaled accordingly.

This default behavior makes the widths of very short arrows shrink, and the widths of very long arrows grow (while displaying the correct total length). If you prefer that shaftwidth and headwidth not change as the arrow gets very short or very long, set fixedwidth = 1. In this case the only adjustment that is made is that headlength is adjusted so that it never gets longer than half the total length, so that the total length of the arrow is correct. This means that very short, thick arrows look similar to a thumbtack, with a nearly flat head.

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for a box, sphere, or ring it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

 

visual-5.12_release/docs/visual/VisualRef.css0000644000175000017500000001162611076233321016236 00000000000000a:link, a:visited, a:hover { color: #006699; text-decoration: none; } a:hover { text-decoration: underline; } P.attributes { display: block; text-align: justify; text-indent: -54.000000pt; margin-top: 6.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 72.000000pt; font-size: 10pt; font-weight: medium; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: sans-serif; } P.Body { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 10pt; font-weight: medium; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: sans-serif; ; top: 6pt; clip: rect( ) } P.Body-Text { display: block; text-align: justify; text-indent: 0.000000pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 10pt; font-weight: medium; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: sans-serif; } P.Footer { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 12.000000pt; font-weight: medium; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Times"; } P.Footnote { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 18.000000pt; margin-left: 18.000000pt; font-size: 12.000000pt; font-weight: medium; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Times"; } P.Header { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 12.000000pt; font-weight: medium; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Times"; } H1.Heading-1, H2.Heading-1, H3.Heading-1, H4.Heading-1, H5.Heading-1, H6.Heading-1 { display: block; text-align: justify; text-indent: 0.000000pt; margin-top: 14.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 14.000000pt; font-weight: Bold; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Century Schoolbook"; } P.Normal { display: block; text-align: justify; text-indent: 0.000000pt; margin-top: 6.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 10pt; font-weight: medium; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: sans-serif; } P.program { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 6.000000pt; margin-bottom: 6.000000pt; margin-right: 0.000000pt; margin-left: 10.000000pt; font-size: 12pt; font-weight: bold; font-style: normal; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: Courier; } H1.program0, H2.program0, H3.program0, H4.program0, H5.program0, H6.program0 { display: block; text-align: left; text-indent: -36.000000pt; margin-top: 6.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 54.000000pt; font-size: 12.000000pt; font-weight: Bold; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Courier"; } EM.code { font-size: 12.000000pt; font-weight: Bold; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Courier New"; } EM.Default-XREF-style { color: #00ff00; } EM.program { font-size: 12.000000pt; font-weight: Bold; font-style: Regular; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Courier"; } EM.Symbol { font-size: 12.000000pt; font-family: "Symbol"; } .attribute { color: #FF0000} .navigation td { background-color: #669933; color: #ffffcc; font-weight: bold; font-family: avantgarde, sans-serif; font-size: 110%; margin: 0pt; padding: 0pt; } visual-5.12_release/docs/visual/new_features.html0000644000175000017500000004147611243332661017212 00000000000000 new features
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
New Features in Visual 5
material etc

New features

There is a new example program texture_and_lighting.py that displays many of the new features: a swinging light illuminates a translucent ball that rolls on a wood table. Also see the example programs material_test.py, stonehenge.py, and boxlighttest.py.

There are a couple of known incompatibilities with earlier versions of VPython.

Credits

Visual 5 was created by David Scherer and Bruce Sherwood. Jonathan Brandmeyer provided support in Visual 4beta for opacity, local lighting, and textures, and made some important architectural changes, but had to stop work on the project before it was completed.  Further development has led to API changes which are incompatible with the Visual 4beta release, so this release is called version 5 instead of 4.

The late Arthur Siegel implemented dependence on the currently supported numpy library in place of Numeric, which is no longer supported. Hugh Fisher provided a big start on the native-mode Mac version. Michael Temkine fixed some bugs and implemented keyboard handling for Windows.

Previous to Visual 4beta, Jonathan Brandmeyer made several major contributions to Visual 3, including changing the connection between Python and C++ from CXX, which was no longer supported, to the Boost C++ libraries, and implementing auto-configurable installations for Linux.

Transparency/opacity

You can make most objects be transparent by specifying a value from 0-1 inclusive for the attribute "opacity". For example, box(color=color.red, opacity=0.8) is slightly transparent. An opacity value of 0 means totally transparent, and 1 means totally opaque. Currently curve, convex, faces, points, and helix objects do not allow transparency.

You may see incorrect rendering any time there is a translucent object (opacity < 1.0) which is not convex (e.g. ring), or two translucent objects which overlap on the screen and also in their depth extents (distances from the camera to the nearest and farthest planes perpendicular to scene.forward which intersect the object). The objects need not actually overlap in 3D space to have problems. The incorrect rendering will usually have the effect of making the more distant object disappear (fail to show through the nearer object). Accurate rendering of ad hoc scenes with translucency is difficult and expensive, and we did not want to wait for a perfect solution before introducing this useful enhancement.

Materials

You can give a material property such as wood to an object:

box(color=color.orange, material=materials.wood)

Materials currently available include wood, plastic, marble, earth (continents and oceans), rough, diffuse, emissive, and unshaded (that is, display the specified color unaffected by existing lights). The example program material_test.py shows examples of all of these materials.

Materials will work with graphics cards that support Pixel Shader 3.0 ("PS 3.0"). For details, see
http://en.wikipedia.org/wiki/Pixel_shader#Hardware. Some materials may work with graphics cards that support PS 2.0, but other materials may need to be manually disabled; see instructions in the site-settings.py module in the Visual package in your site-packages folder. If the graphics hardware does not support pixel shaders, the material property is ignored. If you think you should be able to use materials but have trouble with their display or performance, we highly recommend upgrading your video card drivers to the latest version.

Lighting

In previous versions of Visual, lights were restricted to being white and very distant from the scene ("at infinity"). Now you can create lights that are local, near other objects, and you can specify colors for lights. The following statement creates a yellow light positioned at (x,y,z):

lamp = local_light(pos=(x,y,z), color=color.yellow)

If you continually update lamp.pos, the light will move. You may wish to place a sphere or box with material=materials.emissive at the same location so that the lamp looks like a glowing lamp.

If you want to disable all of the lights, so that the only light is ambient light (scene.ambient), say scene.lights = [], making an empty list of lights.

A distant red light located in the direction (x,y,z) is created like this:

distant_light(direction=(x,y,z), color=color.red)

Points object

A new points object is similar to a curve, but with disconnected points. As with curve, the pos attribute is an array of points, and color can also be an array. If you say shape="round", the points are round, which is the default; shape="square" makes square points.

New frame options

You can now make a frame visible or invisible, and all objects in the frame will be affected.

There are now functions for converting between coordinates within a frame and "world" coordinates.

New curve append option: retain

If "trail" is a curve, trail.append(pos=(x,y,z), retain = 50) means that only the 50 most recently added points of a curve will be displayed; the earlier ones are deleted. This is a nice option for having a moving object leave a tail behind itself, like a comet.

Fonts in labels

You can now specify a font for a label, including font='sans' or 'serif' or 'monospace' (fixed-width). Python Unicode text is supported.

Specifying a gray

For convenience you can now say color=color.gray(0.7) to mean color=(0.7,0.7,0.7).

Reading and writing files

The new module visual.filedialog provides a simple file dialog display for choosing files.

Render time

If you say scene.show_rendertime = True, in the lower left of the graphics window you will see the cycle time (time between renderings of the scene) and the render time (time taken to render the scene). This can be a useful diagnostic of performance issues.

Design for left-button events if possible

Visual 5 provides the basic mouse event functionality that was present in Visual 3 for handling events from right and middle buttons when userspin or userzoom is disabled, out of concern for supporting old programs. However, it has become evident that there are limitations to this approach which could preclude some kinds of mouse handling that people might want to do in the future. For example, you might want to allow userspin with right drags yet also pick up right clicks. For that reason it is conceivable that future developments in this area might break existing programs, and therefore for maximum forward compatibility it is prudent to use only left-button interactions in new programs.

Known incompatibilities in this new version

Here are known incompatibilities:

There are some unavoidable incompatibilities due to the fact that the currently supported numerical array package numpy differs from its predecessor Numeric. The only way to handle some of these incompatibilies is by using the Python "try/except" structure. For examples, see the example programs gas.py or stars.py.

You can still set scene.lights in the same way as in Visual 3, but you cannot read the information in scene.lights in the same way as before, because in Visual 5 scene.lights is a list of distant_light (and/or local_light) objects, not a list of vector directions. If you read and used information in scene.lights, you may need to use a Python "try/except" structure to make your program run on both Visual 3 and Visual 5. For example, suppose an old program wanted to have two lights, one 70% as bright as the first light in the scene.lights list, and the other a duplicate except coming from the back, to light both front and back of the scene. Here is code to do this:

try:
    L0 = 0.7*norm(scene.lights[0])
    L1 = vector(L0.x, L0.y, -L0.z)
    scene.lights = [L0, L1]
except:
    L0 = scene.lights[0]
    L0.color = 0.7*vector(L0.color)
    scene.lights = [L0]
    d = L0.direction
    L1 = distant_light(direction=(d.x,d.y,-d.z),
         color=L0.color)

visual-5.12_release/docs/visual/float.html0000644000175000017500000001451711202715735015626 00000000000000 float
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Floating Division

By default, Python performs integer division with truncation, so that 3/4 is 0, not 0.75. This is inconvenient when doing scientific computations, and can lead to hard-to-find bugs in programs. You can write 3./4., which is 0.75 by the rules of "floating-point" division.

You can change the default so that 3/4 is treated as 0.75. Place this at the start of your program:

from __future__ import division

There are two underscores ("_" and "_") before "future" and two after.

The Visual module converts integers to floating-point numbers for you when specifying attributes of objects:

    object.pos = (1,2,3) is equivalent to object.pos = (1.,2.,3.)


visual-5.12_release/docs/visual/pyramid.html0000644000175000017500000002022711202715735016161 00000000000000 pyramid
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
pyramid
pyramid

The pyramid object has a rectangular cross section and tapers to a point. The following statement will display a pyramid with the center of the rectangular base at (5,2,0), pointing parallel to the x axis with a base that is 6 high (in y), 4 wide (in z), and with a length 12 from base to tip:

pyramid(pos=(5,2,0), size=(12,6,4))

The pyramid object has the following attributes and default values, like those for cylinders: pos which is the center of the rectangular base (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), color (1,1,1) which is color.white, red (1), green (1), blue (1), opacity (1), material, and up (0,1,0). Additional pyramid attributes:

height In the y direction in the simple case, default is 1

width In the z direction in the simple case, default is 1

size (length, height, width), default is (1,1,1)
mypyramid.size=(20,10,12) sets length=20, height=10, width=12

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for a box, sphere, or ring it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/cylinder.html0000644000175000017500000002575111202715735016334 00000000000000 cylinder
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
cylinder
cylinder

Studying this description of the cylinder object provides an overview of important aspects common to all of the Visual 3D objects, box, sphere, pyramid, etc.

cylinder Here is an example of how to make a cylinder, naming it "rod" for future reference:

rod = cylinder(pos=(0,2,1),         axis=(5,0,0), radius=1)

The center of one end of this cylinder is at x=0, y=2, and z=1. Its axis lies along the x axis, with length 5, so that the other end of the cylinder is at (5,2,1), as shown in the accompanying diagram.

You can modify the position of the cylinder after it has been created, which has the effect of moving it immediately to the new position:

rod.pos = (15,11,9) # change (x,y,z)
rod.x = 15 # only change pos.x

If you create an object such as a cylinder but without giving it a name such as rod, you can't refer to it later. This doesn't matter if you never intend to modify the object.

Since we didn't specify a color, the cylinder will be the current "foreground" color (see Controlling One or More Visual Display Windows). The default foreground color is white. After creating the cylinder, you can change its color:

rod.color = (0,0,1) # make rod be blue

This will make the cylinder suddenly turn blue, using the so-called RGB system for specifying colors in terms of fractions of red, green, and blue. (For details on choosing colors, see Specifying Colors.) You can set individual amounts of red, green, and blue like this:

rod.red = 0.4
rod.green = 0.7
rod.blue = 0.8

The cylinder object can be created with other, optional attributes, which can be listed in any order. Here is a full list of attributes, most of which also apply to other objects:

pos Position: the center of one end of the cylinder; default = (0,0,0)
A triple, in parentheses, such as (3,2,5)

axis The axis points from pos to the other end of the cylinder, default = (1,0,0)

x, y, z Essentially the same as pos.x, pos.y, pos.z, defaults are all 0

radius The radius of the cylinder, default = 1

length Length of axis; if not specified, axis determines the length, default = 1
If length is specified, it overrides the length given by axis

color Color of object, as a red-green-blue (RGB) triple: (1,0,0) is pure red, default = (1,1,1), which is color.white

red, green, blue (can set these color attributes individually), defaults are all 1

opacity Opacity of object, default = 1; 0 is completely transparent

material Material of object; see Materials for currently available options

up Which side of the cylinder is "up"; this has only a subtle effect on the 3D appearance of the cylinder unless a non-smooth material is specified; default (0,1,0)

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for a box, sphere, or ring it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

When you start a VPython program, for convenience Visual creates a display window and names it scene. By default, objects that you create go into that display window. See Controlling One or More Visual Display Windows later in this reference for how you can create additional display windows and place objects in them.


visual-5.12_release/docs/visual/points.html0000644000175000017500000001727311243332661016035 00000000000000 points
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
points
points

The points object takes a list of points for pos, like the curve object. The following statement will display two points, each of radius 50 pixels:

points(pos=[(-1,0,0), (1,0,0)], size=50, color=color.red)

The points object is similar to a curve, but with disconnected points. As with curve, the pos attribute is an array of points, and color can also be an array. If you say shape="round", the points are round, which is the default; shape="square" makes square points. The size of the points is specified by size and the default size is 5 (meaning a square 5 by 5, or a circular disk bounded by a 5 by 5 square). The size attribute is in screen pixels if size_units="pixels" (the default), but if size_units="world", the size is in the usual coordinates. The maximum size of a point is about 50 by 50 pixels; specifying a larger size than the maximum does not increase the size.

Lighting does not affect the appearance, which is determined solely by the color. You cannot specify a material for points, and currently it is not possible to specify the opacity of a points object.

See description of Additional Attributes available for all 3D display objects.

Technical caveat: size_units="world" may not work on very old video drivers which do not support OpenGL 1.4 or the ARB_POINT_PARAMETERS extension.  If you have problems, upgrade your video driver.

visual-5.12_release/docs/visual/sphere.html0000644000175000017500000001753511202715735016012 00000000000000 sphere
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
sphere
sphere

sphere Here is an example of how to make a sphere:

ball = sphere(pos=(1,2,1), radius=0.5)

This produces a sphere centered at location (1,2,1) with radius = 0.5, with the current foreground color.

The sphere object has the following attributes and default values, like those for cylinders except that there is no length attribute: pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), color (1,1,1) which is color.white, red (1), green (1), blue (1), opacity (1), material, and up (0,1,0). As with cylinders, up and axis attributes affect the orientation of the sphere but have only a subtle effect on appearance unless a non-smooth material is specified. The magnitude of the axis attribute is irrelevant. Additional sphere attributes:

radius Radius of the sphere, default = 1

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for a sphere it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/ellipsoid.html0000644000175000017500000002360611202715735016504 00000000000000 ellipsoid
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
ellipsoid
ellipsoid

A long ellipsoid object looks like a cigar; a short one looks like somewhat like a pill. Its cross sections are circles or ellipses. The elllipsoid object has the same attributes as the box object and it can be thought of as fitting inside a box of the same dimensions:

myell = ellipsoid(pos=(x0,y0,z0),
          length=L, height=H, width=W)

The given position is in the center of the ellipsoid, at (x0, y0, z0). This is different from cylinder, whose pos attribute is at one end of the cylinder. Just as with a cylinder, we can refer to the individual vector components of the ellipsoid as myell.x, myell.y, and myell.z. The length from end to end (along the x axis) is L , the height (along the y axis) is H , and the width is W (along the z axis). For this ellipsoid, we have myell.axis = (L, 0, 0) . Note that the axis of an ellipsoid is just like the axis of a cylinder.

For an ellipsoid that isn't aligned with the coordinate axes, additional issues come into play. The orientation of the length of the ellipsoid is given by the axis (see diagrams shown with the documentation on the box object):

myell = ellipsoid(pos=(x0,y0,z0), axis=(a,b,c),
         length=L, height=H, width=W)

The axis attribute gives a direction for the length of the ellipsoid, and the length, height, and width of the ellipsoid are given as before (if a length attribute is not given, the length is set to the magnitude of the axis vector).

The ellipsoid object has the following attributes and default values, like those for cylinders: pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), color (1,1,1) which is color.white, red (1), green (1), blue (1), opacity (1), material, and up (0,1,0). Additional attributes, similar to those for a box:

height In the y direction in the simple case, default is 1

width In the z direction in the simple case, default is 1

size (length, height, width), default is (1,1,1)
myell.size=(20,10,12) sets length=20, height=10, width=12

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for an ellipsoid, box, sphere, or ring it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/files.html0000644000175000017500000002160011202715735015612 00000000000000 files
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
Reading and Writing Files
file dialog

A simple file dialog package is provided in the module visual.filedialog.

Here is how to get a file dialog display to choose a file to read, and then display the contents. The get_file() routine lets you choose a file, and it returns a file descriptor, a pointer to the chosen file (here the file descriptor has been named fd). If you cancel the file dialog display, get_file() returns None, which you should check for (the statements just after the "if fd:" will be executed only if fd is not None). Using the file descriptor you can read the entire file as one long string, or with readlines() you can read a list of lines of text, each ending with an end-of-line character ('\n').

from visual.filedialog import get_file
fd = get_file()
if fd:
    data = fd.read() # or fd.readlines()
    fd.close() # close the file (we're through with it)
    print data

To choose a file and write data to the chosen file, do this:

from visual.filedialog import save_file
fd = save_file()
if fd:
    fd.write("This is a test.\nThis is only a test.")
    fd.close() # close the file (we're through with it)

There are other file descriptor functions besides read(), readlines(), write(), and close(); see Python documentation. For example, fd.name() is the name of the file associated with the file descriptor.

The examples shown above are sufficient for many tasks, but you can customize the file dialog display by specifying parameters for the get_file() and save_file() functions, as shown here with their default values:

save_file(file_extensions=None, x=100, y=100,
          title="Save", mode='w', maxfiles=20)

get_file(file_extensions=None, x=100, y=100,
          title="Open", mode='rU', maxfiles=20)

For example, get_file(file_extensions=['.txt.', '.py']) will display only files ending in these extensions. The parameter maxfiles specifies the maximum number of files to show on one page, which determines the height of the file dialog display. The default "universal" file reading mode is 'rU' which converts different kinds of end-of-line markers for Windows, Mac, and Linux files to the same standard character '\n'. The parameters x and y specify the pixel location of the upper left corner of the file dialog display, measured from the upper left corner of the computer screen. The title is displayed at the top of the window.

visual-5.12_release/docs/visual/VisualRef-1.gif0000644000175000017500000000560210410546274016353 00000000000000GIF89aϧggg/7/mmm3Mf::WWuu3J` w(/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜISc ɳtI@Z9.*HM@ժב,ɠ] +Yp5vM:7]a뾽a]}[+C7$Ͽ31˓/+q΅9Nyt_ѦNm5k_u-;nei^{{Uݾ8Ï4h5C|LiV;ۿ.e)ɣ_y~IQ?>_dG hdʇ`- I>XbaQaEnx$h(,0( T ܄V<@)DiE$TO՛R@QW@ecfEPa͸7!aP^_ַ%YPTFtDv T ue}&$f^\u1Ќ4#Vgu7 hrfg& TO~ n)驖CACTIF$I6DT}_]yVJ%ڊ@rTXаtʮRZ,^iWzR}APfTl&P"pv\zSu&rNgB\)SXIE3GaeXZ(O5#T".Z%KVmТbBS=P>[x{R'%LiV*d28D9 D%N]1jp(g n,STmi\KnW.iޅЌOfYƇ.,#4lu/Bm{X{Կ¯ٻ*=agf1F/W_oV0e7X'!f{)!_"U#uluR`߉?Fqd3ń/T2.4ZL̢B};JHYcQB[> Dϸ&; 2CDpҿpAt a$IsМB(^]"a8A$gaejRUv-A'`[(2h45atN£2=-ۣ B$!C gI|F$k\C>`.iʙx;•XBD^n5;%Ov";jp #CeФ;dYL'lDg+qʇ[`r9S1.,k#ۘ׿UN!Teci-S** @i;)GTjiI:-ZYv%&eNDC 6&_s 9pvꁐ3rS1e]AX6>d_yD2dT'rd͝h)Tk1orJ0}]I4 RkTsO( ''4(Ax7oJQřXlq,aLYFtq*yjQȐ,#H%kI ԩB(t-)K ,ɔR3M2SMl 9)zγ43$ =kL@$9ME93MG):TR1"J1կP>5"EAQ:/RSTU1iSS i[kUPׇ`uQEbAY_ym f]i}Zv6Z[ۿ W[l vM# w\k띶S;ݴ"7V ? ,h „ 2l0È'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬ3 ;visual-5.12_release/docs/visual/VisualIntro.html0000644000175000017500000005055711243332661017002 00000000000000 introduction
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Simple 3D Programming Using VPython

I. VPython: the Python/ Visual / IDLE environment

The interactive development environment you will use is called "IDLE."

The Display window

When using VPython the display window shows objects in 3D.

(0,0,0) is in the center of the display windowaxes . The +x axis runs to the right, the +y axis runs up, and the +z axis points out of the screen, toward you.

x, y, and z are measured in whatever units you choose; the display is automatically scaled appropriately. (You could, for example, create a sphere with a radius of 1E-15 m to represent a nucleus, or a sphere with a radius of 1E6 m to represent a planet, though it wouldn't make sense to put both of these objects in the same display!)

The Output window

The output of any -print- statements you execute in your program goes to the Output window, which is a scrolling text window. You can use this window to print values of variables, print lists, print messages, etc. Place it where you can see messages in it.

The Code window

If you type or copy the following simple program into the code window in IDLE and run it (press F5, or use the Run menu), you will see a display like the one shown in the figure.

from visual import *
redbox=box(pos=vector(4,2,3),
           size=(8,4,6),color=color.red)
ball=sphere(pos=vector(4,7,3),radius=2,color=color.green)

sphereVisual is the name of the 3D graphics module used with the Python programming language. VPython is the name of the combination of the Python programming language, the Visual module, and the development environment IDLE.

Viewing the scene

In the display window, click and drag with the right mouse button (hold down the command key on a Macintosh). Drag left or right, and you rotate around the scene. To rotate around a horizontal axis, drag up or down. Click and drag up or down with the middle mouse button to move closer to the scene or farther away (on a 2-button mouse, hold down the left and right buttons; on a 1-button mouse, hold down the Option key).

II. Visual Entities

Objects, names, and attributes

The graphical objects you create, such as spheres, boxes, and curves, continue to exist for the duration of your program, and the Visual 3D graphics module will continue to display them, wherever they are. You must give each object a name (such as redbox or ball in the example above) if you wish to refer to it again later in your program. All objects have attributes: properties like ball.pos (the position of the sphere), ball.color, and radius or other size parameter. If you change an attribute of an object, such as its position or color, Visual will automatically display the object in its new location, or with its new color.

You can set the values of attributes in the "constructor" (the code used to create the object), and you can also modify attributes later:

ball.radius = 2.2

In addition to the built-in set of attributes, you may create new attributes. For example, you might create a sphere named moon; in addition to its radius and location, you might give it attributes such as mass (moon.mass) and momentum (moon.momentum).

Vectors

Not all objects in Visual are visible objects. For example, Visual allows you to create 3D vector quantities, and to perform vector operations on them. If you create a vector quantity called a, you may refer to its components as a.x, a.y, and a.z. To add two vectors, a and b, however, you do not need to add the components one by one; Visual will do the vector addition for you:

a = vector(1,2,3)
b = vector(4,5,6)
c=a+b

If you print c , you will find that it is a vector with components (5, 7, 9.).

Scalar multiplication

d = 3*a # d is a vector with components (3, 6, 9)

Vector magnitude

s = mag(c) # s is a scalar
z = mag(c)**2 # you can square the magnitude of a vector

Vector products

f = cross(a,b) # cross product
g = dot(a,b) # dot product
h = norm(a) # normalized (unit) vector; a/mag(a)

The attributes of Visual objects can be vectors, such as velocity or momentum.

III. Simple Python Programming

Importing the 3D Graphics Module (Visual)

The first line of your program must be:

from visual import *

Comments

A comment in a Python program starts with "#"

# this line is a comment

Variables

Variables can be created anywhere in a Python program, simply by assigning a variable name to a value. The type of the variable is determined by the assignment statement.

a = 3 # an integer
b = -2. # a floating-point number
c = vector(0.4, 3e3, -1e1) # a vector
Earth = sphere(pos=(0,0,0), radius=6.4e6) # an object
bodies = [ship, Earth, Moon] # a list of objects

Basic Visual objects such as sphere() and box() have a set of "attributes" such as color, and you can define additional attributes such as mass or velocity. Other objects, such as vector(), have built-in attributes but you cannot create additional attributes.

Warning about division

Division of integers will not come out the way you may expect, since the result is rounded down to the nearest integer. Thus:

a = 3/4
print a # a is 0

To avoid this, you can place a decimal point after every number, like this:

b = 3./4.
print b # b is 0.75, as expected

We recommend putting the following statement as the first line of your program, in which case 3/4 will be 0.75; there are two underscores before the word "future" and two after the word "future":

from __future__ import division

Exponentiation

x**2 # Not x^2, which is a bit operation in Python

Logical Tests

If, elif ("else if"), else:

if a == b: # see table of logical expressions below
    c = 3.5 # indented code executed if test is true
elif a < b:
    c = 0 # c will be set to zero only if a < b
else:
    c = -23.2

Logical expressions

==

equal

!=

not equal

<

less than

>

greater than

<=

less than or equal

>=

greater or equal

or

logical or

and

logical and

in

member of a sequence

not in

not sequence member

Lists

A list is an ordered sequence of any kind of object. It is delimited by square brackets.

moons = [Io, Europa, Ganymede, Callisto]

The function "arange" (short for "arrayrange") creates an array of numbers:

angles = arange (0., 2*pi, pi/100)
# from 0 to 2*pi-(pi/100) in steps of (pi/100)

numbers = arange(10) # integer argument -> integers
print numbers # [0,1,2,3,4,5,6,7,8,9]

Loops

The simplest loop in Python is a "while" loop. The loop continues as long as the specified logical expression is true:

while x < 23:
    x = x + vx*dt

To write an infinite loop, just use a logical expression that will always be true:

while True:
    ball.pos = ball.pos + (ball.momentum/ball.mass)*dt

Infinite loops are ok, because you can always interrupt the program by choosing "Stop Program" from the Run menu in IDLE.

It is also possible to loop over the members of a sequence:

moons = [Io, Europa, Ganymede, Callisto]
for a in moons:
    r = a.pos - Jupiter.pos
 
for x in arange(10):
# see "lists" above
...
 
for theta in arange(0., 2.*pi, pi/100.):
# see "lists" above

You can restart a loop, or terminate the loop prematurely:

if a == b: continue # go back to the start of the loop
if a > b: break # exit the loop

Printing results

To print a number, a vector, a list, or anything else, use the "print" option:

print Europa.momentum

To print a text message, enclose it in quotes:

print "We crashed on the Moon with speed", v, "m/s."

Python also offers a formatted print capability. Here price will be printed with 3 digits before the decimal place and 2 digits after, and num will be printed as an integer:

print "It's $%3.2f dollars for %d copies" % (price,num)

More Information about Python

We have summarized a small but important subset of the Python programming language. Extensive Python documentation is provided on the Help menu in IDLE, and there is additional information at the Python website, but much of this information assumes that you already have lots of programming experience in other languages. We recommend the following book to those who want to learn more about Python, and about programming in general: Python Programming: An Introduction to Computer Science by John M. Zelle (Franklin Beedle & Associates, 2003).

visual-5.12_release/docs/visual/helix.html0000644000175000017500000001740611243332661015630 00000000000000 helix
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
helix
helix

The following statement will display a helix that is parallel to the x axis:

spring = helix(pos=(0,2,1), axis=(5,0,0), radius=0.5)

The helix object has the following attributes and default values: pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), radius (1), coils (5), thickness (radius/20), color (1,1,1) which is color.white, red (1), green (1), blue (1), material, and up (0,1,0)

At present, setting just the x, y, or z component of the axis of a helix does not update its appearance; it is necessary to assign a complete vector to the axis of the helix.

Note that the pos attribute for cylinder, arrow, cone, pyramid, and helix corresponds to one end of the object, whereas for a box, sphere, or ring it corresponds to the center of the object.

Currently it is not possible to specify the opacity of a helix object, which is based on the curve object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/license.txt0000644000175000017500000000533710410546274016016 00000000000000The Visual library is Copyright (c) 2000 by David Scherer. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of David Scherer not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DAVID SCHERER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DAVID SCHERER BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. The following notice applies to the CXX library, which is linked into cvisual.dll: *** Legal Notice for all LLNL-contributed files *** Copyright (c) 1996. The Regents of the University of California. All rights reserved. Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. This work was produced at the University of California, Lawrence Livermore National Laboratory under contract no. W-7405-ENG-48 between the U.S. Department of Energy and The Regents of the University of California for the operation of UC LLNL. DISCLAIMER This software was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the University of California nor any of their employees, makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately-owned rights. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or the University of California. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or the University of California, and shall not be used for advertising or product endorsement purposes. visual-5.12_release/docs/visual/materials.html0000644000175000017500000004470011202715735016477 00000000000000 materials and textures
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
Materials & Textures
material etc

You can specify a material such as wood for any object other than a points object:

sphere(color=color.orange, material=materials.wood)

The materials that are currently available include these:

materials.wood
materials.rough
materials.marble
materials.plastic
materials.earth
materials.diffuse
materials.emissive (looks like it glows)
materials.unshaded (unaffected by lighting)

The example program material_test.py displays all of these materials. The emissive material is particularly appropriate for simulating the appearance of a light glowing with the specified color. This apparent light has no lighting effect on other objects, but you may wish to place a local_light at the same location, as is done with the swinging light in the example program texture_and_lighting.py. The appearance of the unshaded material is unaffected by lighting and is useful when you want to display an object whose appearance is determined solely by its own attributes.

If you specify scene.material = materials.plastic, all objects created thereafter will by default be plastic unless a different material is specifically assigned.

Materials will work with graphics cards that support Pixel Shader 3.0 ("PS 3.0"). For details, see
http://en.wikipedia.org/wiki/Pixel_shader#Hardware. Some materials may work with graphics cards that support PS 2.0, but other materials may need to be manually disabled; see instructions in the site-settings.py module in the Visual package in your site-packages folder. If the graphics hardware does not support pixel shaders, the material property is ignored. If you think you should be able to use materials but have trouble with their display or performance, we highly recommend upgrading your video card drivers to the latest version.

Some materials such as wood are oriented to the specified axis. For example, a wood box with default axis = (1,0,0) shows tree rings on its yz surfaces and stripes on the other faces. Changing the axis changes which face you see the tree rings on.

Creating your own texture

You can create a texture object and then apply it to the surface of an object. A surface texture is an M by N array of slots containing 1, 2, 3, or 4 numerical values. M and N must be powers of 2 (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, etc.). The numerical values can represent color, luminance (brightness or shades of gray), or opacity.

Here are the possibilities for each slot in the array:

1 value: luminance by default, or specify channels=["opacity"] to represent opacity

2 values: luminance and opacity

3 values: red,green,blue

4 values: red,green,blue,opacity

Here is an example program in which a 4 by 4 by 1 checkerboard texture is created and applied to a box:

from visual import *
checkerboard = ( (0,1,0,1),
                 (1,0,1,0),
                 (0,1,0,1),
                 (1,0,1,0) )
tex = materials.texture(data=checkerboard,
                     mapping="rectangular",
                     interpolate=False)
box(axis=(0,0,1), color=color.cyan, material=tex)

The example above uses a rectangular mapping, which places the texture on two opposing faces of a box, with stripes along the sides. By default, one of the faces is in the (1,0,0) direction, but this can be changed by specifying a different axis for the box, as was done in the example above. A sign mapping is similar to rectangular but is unaffected by the color of the object and appears on only one face of a box (determined by the axis of the box). A spherical mapping wraps around the entire object. In the example program texture_and_lighting.py you can find a creation of a beach ball using spherical mapping.

By default interpolate is True, but to get a sharply defined checkerboard in the example above, it was set to False.

You can save the texture data in a file for later use::

materials.saveTGA("checks", checkerboard)

This saves the checkboard pattern in a file "checks.tga", a targa file which many graphics applications can display. In later programs you can use this data without recreating it:

data = materials.loadTGA("checks")

More generally, any targa file whose width and height are both powers of 2 can be read as data using materials.loadTGA(filename). If the actual file name is "checks.tga" you can give the full file name or just "checks".

One way to create a pattern is to start by creating a numpy array of zeros, then assign values to individual slots:

pattern = zeros((4,8,3)) # 4 by 8 by 3 numpy array of 0's
pattern[0][0] = (1,.5,.7) # assign first rgb triple

Another example

Here is an example of placing a "sign" on one face of a box, consisting of a 2 by 2 by 3 grid of color components:

from visual import *
grid = ( (color.red, (1, 0.7 ,0)),
         ((0, 1, 0.3), color.magenta) )
tgrid = materials.texture(data=grid,
                          mapping="sign",
                          interpolate=False)
box(axis=(0,0,1), material=tgrid)

Making a texture from a photo

A texture can be created from a targa file, and various graphics applications can convert photos in jpeg or other formats to targa files. One tool for doing this is PIL, the Python Imaging Library, which can be downloaded and installed (you can find it with a web search). Here is an example of PIL code which converts a jpeg photo into a targa file which can be used to create a texture for displaying the image, as in the example program stonehenge.py.

from visual import *
import Image # Must install PIL
name = "flower"
width = 128 # must be power of 2
height = 128 # must be power of 2
im = Image.open(name+".jpg")
#print im.size # optionally, see size of image
# Optional cropping:
#im = im.crop((x1,y1,x2,y2)) # (0,0) is upper left
im = im.resize((width,height), Image.ANTIALIAS)
materials.saveTGA(name,im)

At a later time you can say data = materials.loadTGA(name) to retrieve the image data from the targa file.

As a convenience, a texture can also be created directly from the PIL image data, like this:

tex = materials.texture(data=im, mapping="sign")

Efficiency issues

Normally you create a data pattern containing values in the range from 0.0 to 1.0, the standard range of color components and opacity in Visual. However, the underlying graphics machinery works with values in the range of 0 to 255, which can be expressed in one 8-bit byte of computer memory. If you are dealing with large textures and time is critical, you should avoid conversions from the range 0-1 to the range 0-255 by constructing the texture data from a numpy array of unsigned 8-bit bytes. An unsigned byte is referred to as ubyte. Here is a simple example:

checkers = array( ( (0,255,0,255),
                    (255,0,255,0),
                    (0,255,0,255),
                    (255,0,255,0) ), ubyte)

The array function converts a sequence of values into a numpy array. In this case the values are 8-bit bytes.

Channels

Data "channels" are a part of the definition of a texture. For the most part, these channels are assigned automatically for you, like this:

1 value: channels=["luminance"] by default, channels=["opacity"] to represent opacity

2 values: channels=["luminance","opacity"]

3 values: channels=["red","green","blue"]

4 values: channels=["red","green","blue","opacity"]

Except for specifying that a pattern represents opacity rather than luminance (brightness, or shade of gray), it isn't necessary to specify channels when constructing a texture because the channel options shown above are currently the only valid sets of channels. However, it is expected that in the future there may be additional channels available, such as glossiness.

mipmap

When an object in the scene is small and far away, there is no need to display its texture in full detail. With the default mipmap=True, Visual prepares a set of smaller textures to use when appropriate. These additional textures take some time to prepare for later use, and required storage space is one-third larger, but they can speed up the rendering of a scene. It should rarely be the case that you would need to set mipmap=False.

Creating your own materials

Creating your own materials (in contrast to creating textures) is technically somewhat challenging. The program materials.py, a component of the Visual module, contains the shader models for wood and other materials, and it also contains instructions on how to build your own materials. Shader models are written in a C-like language, GLSL (OpenGL Shader Language).

visual-5.12_release/docs/visual/VisualRef-2.gif0000644000175000017500000000517010410546274016354 00000000000000GIF89aϧggg/7/mmm3Mf::WWuu3J` w(/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIs#$HPOx hԨS TKx*jkJZrJ$XY˪Tڷe]A {/DKˆ N8Ɛ Lʑ'c 2ċ?c,pґIy5cծ߶]6okwy:{[ƋO^9󞿟u.}fVcZw{v^/}}O={ߗ/_flyG_HJ} `1IN8TamC~Ȑ"~b "G'(Y.c[UWgu5]h䔊7cO;A 1e%% 腠!8u^oaXdvtOJJZjBĦ@tfI֠QJ衆&袋*hIhI8deC㧠*ꨤjꩨ&YR8zQQtc} *ح^)CykP>,6쳅cMꭔZTJ)=[犫n.bի@Y!%Iq9 ťF e]YڥVQkM6AIqVR9!udf>7įȑ,IpVSj eRLYJq|JT=ϫP2-'H  䩏f\:,Jt& zH ܊mIy-v՝C/[oGː-\7`DTR@-fFn1pr^M uaTLı^tbfU&ɴn<^LCnOޘ<;dﱪX=O㯿AdGo:\]CaW`Ǣ{F-`2KH&;#wR g4$'Nd+=,,`UD"I<4 $NzaAX).soJ(QNbcʈ`V{B+]lr!#,"+ Ќ`{ LJ^t') nZSIrؕp!&{RF*^,QbIR^eɄ,$ 2 cy@ZP"e}@@((PB >QD!"QF=V H%MJ-]RLcęSgʝ=}߻w} l_3| '(zo;'2Ч(~J‡z-\> .7 apE:Ŧ1*k?qǤP FS rHHzTR(tH(5qJJ)2I.gKSĉL4o1ts,8d 8:_zNԓ3SD@MsPB]3t#=TPF=*яH+RL%tS:ECUQR'TLUU)V[VUXEuօ@&\suTsXWVbRXt;5YeabTgjU ZO{Y [owi/]Îu\ Y ,h „ 2,!Ĉ'RhŇ7rc`$ʔ*WR YҬiS˛:w'РB-j(ҤJ2;visual-5.12_release/docs/visual/keyboard.html0000644000175000017500000002021011243332661016302 00000000000000 keyboard
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Keyboard Interactions

If scene.kb.keys is nonzero, one or more keyboard events have been stored, waiting to be processed.

Executing key = scene.kb.getkey() obtains a keyboard input and removes it from the input queue. If there are no events waiting to be processed, getkey() waits until a key is pressed.

If len(key) == 1, the input is a single printable character such as 'b' or 'B' or new line ('\n') or tab ('\t'). Otherwise key is a multicharacter string such as 'escape' or 'backspace' or 'f3'. For such inputs, the ctrl, alt, and shift keys are prepended to the key name. For example, if you hold down the shift key and press F3, key will be the character string 'shift+f3', which you can test for explicitly. If you hold down all three modifier keys, you get 'ctrl+alt+shift+f3'; the order is always ctrl, alt, shift.

Multicharacter names include delete, backspace, page up, page down, home, end, left, up, right, down, numlock, scrlock, f1, f2, f3, f4, f5, f6, f7, f8. Windows and Linux also have f9, f11, f12, insert.

Here is a test routine that lets you type text into a label:

from visual import *
prose = label() # initially blank text
while True:
    if scene.kb.keys: # event waiting to be processed?
        s = scene.kb.getkey() # get keyboard info
        if len(s) == 1:
            prose.text += s # append new character
        elif ((s == 'backspace' or s == 'delete') and
                len(prose.text)) > 0:
            prose.text = prose.text[:-1] # erase letter
        elif s == 'shift+delete':
            prose.text = '' # erase all text

Note that mouse events also provide information about the ctrl, alt, and shift keys, which may be used to modify mouse actions.

 

visual-5.12_release/docs/visual/mouse_click.html0000644000175000017500000001713611243332661017014 00000000000000 click
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Click Example

This program displays a box (which automatically creates a window referred to as scene), then repeatedly waits for a mouse left click, prints the mouse position in the Python shell window, and displays a cyan sphere. A mouse click is defined as pressing and releasing the left mouse button with no motion of the mouse, so the sphere appears when you release the mouse button.

from visual import *
scene.range = 4
box() # display a box for context
while True:
    if scene.mouse.clicked:
        m = scene.mouse.getclick()
        loc = m.pos
        print loc
        sphere(pos=loc, radius=0.2, color=color.cyan)

Copy this program into an IDLE window and run the program. Click outside the box and a cyan sphere appears where you click. If you click inside the box, nothing seems to happen. This is because the mouse click is in the xy plane, and the sphere is buried inside the box. If you rotate the scene and then click, you'll see that the spheres go into the new plane parallel to the screen and passing through scene.center. If you want all of the spheres to go into the xy plane, perpendicular to the z axis, change the latter part of the program like this:

        loc = m.project(normal=(0,0,1))
        # loc is None if no intersection with plane
        if loc:
            print loc
            sphere(pos=loc, radius=0.2, color=color.cyan)

Here is general mouse documentation.

visual-5.12_release/docs/visual/delete.html0000644000175000017500000001436111243332661015756 00000000000000 delete
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Deleting an Object

To hide a Visual object just make it invisible: ball.visible = False. This does not delete the object from computer memory, and you can make it visible again later.

If however you later re-use the name ball, for example by creating a new object and naming it ball, Python will be free to release the memory used by the object formerly named ball (assuming no other names currently refer to that object). If the object is visible when you re-use the name ball, the original object will not be deleted from computer memory, and it will remain visible in the window.

After you make an object named ball invisible, you can delete it immediately with del ball.

visual-5.12_release/docs/visual/defaults.html0000644000175000017500000001537111202715735016327 00000000000000 defaults
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Convenient Defaults

Objects can be specified with convenient defaults:

arrow() is equivalent to arrow(pos=(0,0,0), axis=(1,0,0), radius=1)

box() is equivalent to box(pos=(0,0,0), size=(1,1,1))

cone() is equivalent to cone(pos=(0,0,0), axis=(1,0,0), radius=1)

convex() establishes an "empty" object to which points can be appended

curve() establishes an "empty" curve to which points can be appended

cylinder() is equivalent to cylinder(pos=(0,0,0), axis=(1,0,0), radius=1)

ellipsoid() is equivalent to ellipsoid(pos=(0,0,0), size=(1,1,1))

frame() establishes a frame with pos=(0,0,0) and axis=(1,0,0)

helix() is equivalent to helix(pos=(0,0,0), axis=(1,0,0), radius=1, thickness=0.05, coils=5)

points() establishes an "empty" set of points to which points can be appended

pyramid() is equivalent to pyramid(pos=(0,0,0), size=(1,1,1), axis=(1,0,0))

ring() is equivalent to ring(pos=(0,0,0), axis=(1,0,0), radius=1)

sphere() is equivalent to sphere(pos=(0,0,0), radius=1 )

visual-5.12_release/docs/visual/ring.html0000644000175000017500000002052611202715735015455 00000000000000 ring
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
ring
ring

ring The ring object is circular, with a specified radius and thickness and with its center given by the pos attribute:

ring(pos=(1,1,1), axis=(0,1,0), radius=0.5, thickness=0.1)

The ring object has the following attributes and default values, like those for cylinders: pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), color (1,1,1) which is color.white, red (1), green (1), blue (1), opacity (1), material, and up (0,1,0). As with cylinders, up has a subtle effect on the 3D appearance of a ring unless a non-smooth material is specified. The axis attribute only affects the orientation of the ring; the magnitude of the axis attribute is irrelevant. Additional ring attributes:

radius Radius of the central part of the ring, default = 1, so
outer radius = radius+thickness
inner radius = radius-thickness

thickness The radius of the cross section of the ring (1/10th of radius if not specified), not the full diameter as you might expect.

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for a ring, sphere, and box it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/index.html0000644000175000017500000002137511243332661015626 00000000000000 overview
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
The Visual Module of VPython
materialetc

VPython is the Python programming language plus a 3D graphics module called "Visual" originated by David Scherer in 2000. This documentation describes all of the Visual capabilities.

Descriptions of the options available in the left margin:

Introduction: The basics of Python and VPython.

Tutorial: More on VPython, including making an animation

Pictures of 3D objects: What the objects look like

Choose a 3D object: Details of cylinder, box, etc. Start with cylinder for an overview.

Work with 3D objects: Issues that apply to all 3D objects: color, material, etc.

Windows, Events, & Files: Creating/modifying windows; handling mouse/ keyboard events; reading/writing files

Vector operations: Magnitude, dot and cross product, rotation, etc.

Graphs: Making graphs of data.

factorial/combin: Special functions used in probability calculations.

What's new: Features new in Visual 5.

Be sure to explore the many example programs that are installed with Visual.

 

To invoke the Visual module, place the following statement at the start of the file:

from visual import *

To make sure that 3/4 is treated as 0.75 rather than zero, start your program with these statements (there are two underlines before future and two underlines after future):

from __future__ import division
from visual import *

VPython documentation was produced by Ruth Chabay, David Scherer, and Bruce Sherwood.

visual-5.12_release/docs/visual/VisualRef-3.gif0000644000175000017500000000573510410546274016364 00000000000000GIF89aϧggg/7/mmm3Mf::WWuu3J` w(/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIM ͟3 @ї)0ѧ'tXIPUլ`? kس(-F˺;+At*zP޿ B†DƐFxrcƖVl3缞? -ҠQ>-XY>zڶ}S6o-\wď &.C_|LQV;ۿ.~$!ϣ~I7O>NT㿨ߡT_QD C&`ͧYqE(ށ )h!U\eȠpVaS.("ttjqR*Ƹak%ɨm5Fx#:ZMhdH$я89 e\r3$DPy唑Yy^pؘ h'WIyg\g~ &_vq򩗡zFzN5IW" gjQt"i2jl$무j뭵jT 梫*\G꫆&첹k"ӾY־$! 縢K-T޶{HJ[֫E=@N.RWb*+N0<1;^Z!'@[\3LI1.<.k{ 41Kr 2+K}WCZC0 ˕5_ ?t]wY+eߌrt}rI!ng-x׏SIGRdwlM۽2=y$ɕNEUe0ZL˫>o|[/ξUg}N% 9w+ϲ2$_ @qŲ@/mꮛǜ 'kiVs?KTF j,_1 z CBpryTxގzYr6`8) @4V>=ǁ9!CKk.z;xg $ Yw~pH:s4ao&,p!ۖVEP_" F u2Zlx+us#T79N4¥퓟gD'*= >%QRIXW: G,"JWò䢚kh?;JSHvZT* *ɔ5M*>APӡJժZa16#T6"JֲV1IyZ0uh9ʵڵt)F?!z¾㫚ajjB+U +ґ$3ΐdޓ("Qef4ɴ%"bgkXᴲ%Q'WfƱ?8 !`'$ „  @!Ĉ h 7r#H,90AF($pѢF2gҤIGw$'РB 0@ˤ+i)TEl@TrM8+B-kTH}ǟ>H? 8 x *UPqgx栄F}We!Pu!P `ֈ$jmL "4eUpXcG&Y)(S߽%䐇!`1闓OvX%Tb)WnW_2֥YfZk䝛}g^s wt٧[|֟Y`!(W2JY]QZVb򗧧%jM U:%ڪ ҫT!G.V& 2K6무J۫zde-G˂{::nC碛4B m nvk0kj;k] ,=b~K0;klQ,e1|2)\\@;visual-5.12_release/docs/visual/curve.html0000644000175000017500000003250611202715735015643 00000000000000 curve
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
curve
curve

The curve object displays straight lines between points, and if the points are sufficiently close together you get the appearance of a smooth curve. In addition to its basic use for displaying curves, the curve object has powerful capabilities for other uses, such as efficient plotting of functions.

Some attributes, such as pos and color, can be different for each point in the curve. These attributes are stored as numpy arrays. The numpy module for Python provides powerful array processing capabilities; for example, two entire arrays can be added together. Numpy arrays can be accessed using standard Python rules for referring to the nth item in a sequence (that is, seq[0] is the first item in seq, seq[1] is the second, seq[2] is the third, etc). For example, anycurve.pos[0] is the position of the first point in anycurve.

You can give curve an explicit list of coordinates enclosed in brackets, like all Python sequences. Here is an example of a 2D square:

square = curve(pos=[(0,0),(0,1),(1,1),(1,0),(0,0)])

Essentially, (1,1) is shorthand for (1,1,0). However, you cannot mix 2D and 3D points in one list.

Curves can have thickness, specified by the radius of a cross section of the curve (the curve has a thickness or diameter that is twice this radius):

curve(pos=[(0,0,0), (1,0,0), (2,1,0)], radius=0.05)

The default radius is 0, which draws a thin curve. A nonzero radius makes a "thick" curve, but a very small radius may make a curve that is too thin to see.

In the following example, the arange() function (provided by the Python numpy module, which is imported by the Visual module, gives a sequence of values from 0 to 20 in steps of 0.1 (not including the last value, 20).

c = curve( x = arange(0,20,0.1) ) # Draw a helix
c.y = sin( 2.0*c.x )
c.z = cos( 2.0*c.x )

The x, y, and z attributes allow curves to be used to graph functions easily:

curve( x=arange(100), y=arange(100)**0.5,
       color=color.red)

A function grapher looks like this (a complete program!), where "raw_input" is a Python function that accepts input typed in the Python Shell window:

eqn = raw_input('Equation in x: ')
x = arange( 0, 10, 0.1 )
curve( x=x, y=eval(eqn) )

Parametric graphing is also easy:

t = arange(0, 10, 0.1)
curve( x = sin(t), y = 1.0/(1+t),     z = t**0.5,
    red = cos(t), green = 0, blue = 0.5*(1-cos(t)) )

Here are the curve attributes:

pos[] Array of position of points in the curve: pos[0], pos[1], pos[2]....
The current number of points is given by len(curve.pos)

x[ ], y[ ], z[ ] Components of pos; each defaults to [0,0,0,0,...]

color[ ] Color of points in the curve

red[ ], green[ ], blue[ ] Color components of points in the curve

radius Radius of cross-section of curve
The default radius=0 makes a thin curve

material Material for a thick curve; see Materials for currently available options

Currently it is not possible to specify the opacity of a curve object.

Adding more points to a curve

Curves can be created incrementally with the append() function. A new point by default shares the characteristics of the last point.

spiral = curve( color = color.cyan )
for t in arange(0, 2*pi, 0.1):
    spiral.append( pos=(t,sin(t),cos(t)) )

One of the many uses of curves is to leave a trail behind a moving object. For example, if ball is a moving sphere, this will add a point to its trail:

trail = curve()
ball = sphere()
# .... Every time you update the position of the ball:
trail.append(pos=ball.pos)

When appending to a curve, you can optionally choose to retain only the last N points, including the one you're adding:

trail.append(pos=ball.pos, retain=50) # last 50 points

Interpolation

The curve machinery interpolates from one point to the next. For example, suppose the first three points are red but the fourth point is blue, as in the following example. The lines connecting the first three points are all red, but the line going from the third point (red) to the fourth point (blue) is displayed with a blend going from red to blue.

c = curve( pos=[(0,0,0), (1,0,0)], color=color.red)
c.append( pos=(1,1,0) ) # add a red point
c.append( pos=(0,1,0), color=color.blue) # add blue point

If you want an abrupt change in color or thickness, add another point at the same location. In the following example, adding a blue point at the same location as the third (red) point makes the final line be purely blue.

c = curve( pos=[(0,0,0), (1,0,0)], color=color.red)
c.append( pos=(1,1,0) ) # add a red point
c.append( pos=(1,1,0), color=color.blue) # same point
c.append( pos=(0,1,0) ) # add blue point

Technical note: No matter how many points are in a curve, only 1000 are displayed, selected evenly over the full set of points, in order that the display of a very long curve doesn't slow down unacceptably.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/rotation.html0000644000175000017500000001453511202715735016360 00000000000000 rotating an object
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Rotating an Object

Objects other than curve, convex, faces, and points can be rotated about a specified origin (to rotate these other objects, put them in a frame and rotate the frame).

obj.rotate(angle=pi/4., axis=axis, origin=pos)

The rotate function applies a transformation to the specified object (sphere, box, etc.). The transformation is a rotation of angle radians, counterclockwise around the line defined by origin and origin+axis. By default, rotations are around the object's own pos and axis.

There are functions for converting between degrees and radians, where there are 2*pi radians in 360 degrees:

radians(360) is equal to 2*pi

degrees(2*pi) is equal to 360

Also see the rotation function available for vectors.

visual-5.12_release/docs/visual/VPython_Intro.pdf0000644000175000017500000041742111113544556017113 00000000000000%PDF-1.3 % 82 0 obj << /Linearized 1 /O 84 /H [ 1315 513 ] /L 139025 /E 58719 /N 8 /T 137267 >> endobj xref 82 44 0000000016 00000 n 0000001228 00000 n 0000001828 00000 n 0000002056 00000 n 0000002292 00000 n 0000002680 00000 n 0000003472 00000 n 0000004193 00000 n 0000004983 00000 n 0000005295 00000 n 0000006095 00000 n 0000006387 00000 n 0000006917 00000 n 0000006971 00000 n 0000006992 00000 n 0000007967 00000 n 0000007988 00000 n 0000008897 00000 n 0000009695 00000 n 0000010003 00000 n 0000010025 00000 n 0000011045 00000 n 0000011067 00000 n 0000012045 00000 n 0000012832 00000 n 0000013234 00000 n 0000013256 00000 n 0000014241 00000 n 0000014263 00000 n 0000015201 00000 n 0000015223 00000 n 0000016182 00000 n 0000016204 00000 n 0000017012 00000 n 0000017605 00000 n 0000017745 00000 n 0000021125 00000 n 0000022246 00000 n 0000025827 00000 n 0000028402 00000 n 0000035837 00000 n 0000038745 00000 n 0000001315 00000 n 0000001806 00000 n trailer << /Size 126 /Info 81 0 R /Root 83 0 R /Prev 137257 /ID[<8989b6b2bf0ad3f57cd73fa68f2402f9><8989b6b2bf0ad3f57cd73fa68f2402f9>] >> startxref 0 %%EOF 83 0 obj << /Type /Catalog /Pages 70 0 R /JT 80 0 R /PageLabels 69 0 R >> endobj 124 0 obj << /S 274 /T 417 /L 468 /Filter /FlateDecode /Length 125 0 R >> stream Hb```f``Uf`c`Z  @Q),> .8,$o׺\s h@OPFg gpM@])ck.}IUMK(> Q,Lb!g2= 9L4,;e =87/ ]ЗȮT*ձpz"&SH- ʃ%/u ` c+ 8LlfcPɎEނA|}  ,2+J;lޙ(%kwm]|֛MAz ~&{+ՐO N2 LQUeH…I( 4Lp endstream endobj 125 0 obj 390 endobj 84 0 obj << /Type /Page /Parent 70 0 R /Resources 85 0 R /Contents [ 96 0 R 98 0 R 102 0 R 104 0 R 108 0 R 110 0 R 112 0 R 114 0 R ] /Thumb 49 0 R /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 85 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 91 0 R /F3 89 0 R /F4 87 0 R /F5 88 0 R /F6 99 0 R /F7 105 0 R >> /XObject << /Im1 123 0 R >> /ExtGState << /GS1 116 0 R >> /ColorSpace << /Cs8 94 0 R >> >> endobj 86 0 obj << /Type /FontDescriptor /Ascent 718 /CapHeight 718 /Descent -207 /Flags 262176 /FontBBox [ -170 -228 1003 962 ] /FontName /OBFIHL+Helvetica-Bold /ItalicAngle 0 /StemV 140 /XHeight 532 /CharSet (/f/r/space/h/P/six/V/F/s/a/i/seven/L/t/eight/zero/M/u/one/Y/nine/O/g/A/B\ /v/two/Z/m/x/k/b/colon/w/three/o/d/R/c/l/H/y/p/four/e/S/E/z/n/five) /FontFile3 119 0 R >> endobj 87 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 556 556 278 278 278 278 278 737 278 278 278 278 278 278 278 584 278 278 278 611 ] /Encoding /WinAnsiEncoding /BaseFont /OBFIHL+Helvetica-Bold /FontDescriptor 86 0 R >> endobj 88 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 260 320 380 520 520 900 740 220 440 440 500 520 260 240 260 580 520 520 520 520 520 520 520 520 520 520 260 260 520 520 520 400 820 660 640 680 740 620 540 740 820 360 340 660 620 880 760 820 580 800 660 520 660 780 640 900 740 520 600 440 260 440 520 500 360 480 560 460 580 500 320 520 600 280 260 520 280 860 600 560 580 560 400 360 320 580 420 640 520 420 420 280 260 280 520 460 0 460 0 0 0 0 0 0 0 0 0 0 0 460 0 460 460 0 300 400 400 460 0 0 0 0 0 0 0 460 0 0 260 0 520 520 0 0 0 0 0 740 0 0 0 240 0 0 0 520 0 0 0 580 ] /Encoding /WinAnsiEncoding /BaseFont /OBFIKP+NewBaskerville-Roman /FontDescriptor 93 0 R >> endobj 89 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 250 333 555 500 500 1000 833 278 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 500 500 250 250 250 250 250 747 250 250 250 250 250 250 250 570 250 250 250 556 ] /Encoding /WinAnsiEncoding /BaseFont /OBFIFB+Times-Bold /FontDescriptor 92 0 R >> endobj 90 0 obj << /Type /FontDescriptor /Ascent 669 /CapHeight 660 /Descent -274 /Flags 98 /FontBBox [ -138 -274 1347 906 ] /FontName /OBFHJL+NewBaskerville-Italic /ItalicAngle -16 /StemV 85 /XHeight 432 /CharSet (/f/I/r/space/V/P/h/s/a/i/t/j/u/x/b/w/o/d/c/l/comma/y/p/e/z/n) /FontFile3 117 0 R >> endobj 91 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 260 300 460 520 520 1040 980 280 340 340 500 520 280 240 280 440 520 520 520 520 520 520 520 520 520 520 280 280 520 520 520 440 720 640 600 620 660 560 480 680 780 340 300 660 600 880 700 700 560 700 640 480 640 680 580 840 640 580 560 380 280 380 520 500 340 500 420 360 500 340 280 440 500 280 260 440 260 720 560 420 480 440 340 340 280 560 480 640 460 380 360 440 380 440 520 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 520 520 260 260 260 260 260 720 260 260 260 260 260 260 260 520 260 260 260 560 ] /Encoding /WinAnsiEncoding /BaseFont /OBFHJL+NewBaskerville-Italic /FontDescriptor 90 0 R >> endobj 92 0 obj << /Type /FontDescriptor /Ascent 699 /CapHeight 676 /Descent -205 /Flags 262178 /FontBBox [ -168 -218 1000 935 ] /FontName /OBFIFB+Times-Bold /ItalicAngle 0 /StemV 139 /XHeight 461 /CharSet (/six/greater/seven/eight/one/two/three/four/five) /FontFile3 118 0 R >> endobj 93 0 obj << /Type /FontDescriptor /Ascent 682 /CapHeight 660 /Descent -274 /Flags 34 /FontBBox [ -205 -272 1207 906 ] /FontName /OBFIKP+NewBaskerville-Roman /ItalicAngle 0 /StemV 85 /XHeight 431 /CharSet (/nine/f/H/I/Y/period/v/colon/h/P/F/w/i/d/L/semicolon/y/N/zero/j/M/z/n/on\ e/k/A/O/equal/two/m/quoteright/x/three/o/parenleft/R/question/p/E/S/quot\ edblleft/parenright/T/five/q/U/bullet/g/B/asterisk/r/space/V/b/C/plus/s/\ a/W/c/exclam/l/D/comma/t/eight/X/e/G/hyphen/quotedblright/u) /FontFile3 121 0 R >> endobj 94 0 obj [ /Indexed /DeviceRGB 223 115 0 R ] endobj 95 0 obj 897 endobj 96 0 obj << /Filter /FlateDecode /Length 95 0 R >> stream HdUn8+"ԋbE0t`BY-2;%7AsyO͇?r}4.ŦL)".b\Qlay>U]nfޕfEX GOiN6$n9S`mthCLl B` Am & F uJs2B}]GfRwTR7~[nq_"^WXIRթ3.+u\y3Sgz1 aXhۊE (k@-6 c׳ CO$d4̈́%xƌRn@ޙ. ECoCuf ZU/V XZ +DC4-.vM.p"߃ohZdOF:!ņ@n}ѼgJe͊F(Y)5HizfќӠzs"aqpQpiZ1HE|˴NûZ&?o">$ oY(d,#ERkG",^{Q$JNt%l&0]i9n Jg>*Wx=k=O|H+jnsymA0&(H'Gp v\f&{m;z6r^: WW8u1vw5NoӦ'޿ qE endstream endobj 97 0 obj 831 endobj 98 0 obj << /Filter /FlateDecode /Length 97 0 R >> stream HtT=0 WhpE Kqr.)lҿ^R| NH)!( oWb}! ͪU'TC,,d(FV %'E 8N%7‰vQ7*S1th}Ҩp.ʉ*V% -_e)F盁nU=|/q@X.x'b \2w'QQ?+'_Yt /',\srX܏'@`wN xDwސ&Z=?U(/E3EVwh(F4e}$3H,̸ l'l Q80G%)d}!3Qtw@M>;5P>E@f2y PݬS=R3ejXs[ڦ|/N@a/\UBo * ePTf.?zQA2Y5VhNFn!X]rfɺp(6I&r郊q֍B;š@(\V@8C݀*`K 9bQV0BDg]GJJqeƕԁ1b%a3Pjm q6LơЇ ?H-d|:W(a(pޝyhb1((Wn8$g /(VQ ZLy6 31rhuCM`)2/aznҢ>PLpD$5y_nizfPBFN<Is75{_h3z;Zs0(@ endstream endobj 99 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 260 360 555 520 520 860 800 278 380 380 520 520 280 240 280 560 520 520 520 520 520 520 520 520 520 520 280 280 520 520 520 400 930 640 660 700 740 620 560 780 820 380 380 680 620 880 780 840 620 840 700 540 680 780 660 880 680 620 580 380 278 380 581 500 340 480 560 460 580 500 400 500 560 280 280 520 280 840 560 560 580 560 400 400 320 560 460 660 540 440 440 394 220 394 520 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 520 520 260 260 260 260 260 860 260 260 260 260 260 260 260 520 260 260 260 560 ] /Encoding /WinAnsiEncoding /BaseFont /OBFIPH+NewBaskerville-Bold /FontDescriptor 100 0 R >> endobj 100 0 obj << /Type /FontDescriptor /Ascent 676 /CapHeight 660 /Descent -270 /Flags 262178 /FontBBox [ -196 -270 1189 908 ] /FontName /OBFIPH+NewBaskerville-Bold /ItalicAngle 0 /StemV 131 /XHeight 432 /CharSet (/I/period/r/h/P/s/a/i/t/u/v/m/b/x/o/d/l/y/p/e/hyphen/n) /FontFile3 120 0 R >> endobj 101 0 obj 940 endobj 102 0 obj << /Filter /FlateDecode /Length 101 0 R >> stream H\Un8}W\THJ-Z$@ԢdHr[G 9t @gΜHoV,yhF?VZeA^eg/8 ?lj}+]{Y|ht#2V.o ^5Ye.tZ}2o _h_2m;EogSEÓj0>'zzVHjfrf'@"vTIQ'F|w9goBȩ>&p1|a?x-2FN"LF}yS#VT#ojM#չ+(F6w=ƍIޢ|Enqj:ģðOh\B#&9DO 25qHq,+RWCϦ 't,XAG_ 9#Y'^B{x y(r =i5Tʬhidvݷp0P[(Q:6=2A_\p}vA'3_hn!o8I&H=!: b$ "a3yf))~ p+#!nM#?eƚ;J+wi6m/q{ Wr0Җ]0wU:&܇=èi874)<:_'Xr| x2%TG:Me0)w uĴx7ЎԟVX,3JXi{CcqCXC y7e`bDITjݵ`{ u7u>P+Lbq] -qT43`Ү&߭;BF 4(PǥJ`_PP|+Mj|a8pېg4Aȯ 0ڶ endstream endobj 103 0 obj 898 endobj 104 0 obj << /Filter /FlateDecode /Length 103 0 R >> stream H|Un@)#jHD`R']Jx x`ϴ͡;;?|3Y YF_z`y:\;8<]}N/!}zw5B­0ۣ_m1dcVd={6 ƤlMs 'opAOkc2.P ޣ$"q:a%}D_3^S\TCӐ9˹TzńK׍i?}7TRTUqc25fiɹK]& ms‘ ~_w&rL #Aw p_{bB*jc)Ua*Á9%R!B :tl#=+Z)bvILW]!.͒ܧ,JnXÔR:V̭cT栉1x{#}Ǵ D)Uj`Mkpt&63R^bx+7j=wl[<ռ$Tč|ԤMWu7WF<6(yAew|MHDR{weUM X$[>Ef! aZk.A a6G *rfx' vw&Gj-j .*iFYx3xSoqlDSY#~nFw'd ~On&nyOIYT;=*fhi7?ʭ endstream endobj 105 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /Encoding /WinAnsiEncoding /BaseFont /OBFJDP+Courier /FontDescriptor 106 0 R >> endobj 106 0 obj << /Type /FontDescriptor /Ascent 629 /CapHeight 562 /Descent -157 /Flags 35 /FontBBox [ -28 -250 628 805 ] /FontName /OBFJDP+Courier /ItalicAngle 0 /StemV 51 /XHeight 426 /CharSet (/n/f/equal/period/r/space/h/six/greater/s/a/i/parenleft/L/t/zero/parenri\ ght/u/one/g/asterisk/v/two/m/colon/x/b/plus/w/o/d/c/R/l/comma/y/p/four/e\ /less/hyphen/z/five) /FontFile3 122 0 R >> endobj 107 0 obj 905 endobj 108 0 obj << /Filter /FlateDecode /Length 107 0 R >> stream HUێ6}W,"V$%Qz P4 "A tήeHvs3tڇ\ϜoejW^V z3Ekg5e(Uzlhk=`<6&FsyQaޘ'St)mbiE7^H[KNǰSb:ۑLOj)++u-$a#yPN?|]Jhu U6teTU#S5w MLX֝W]mRXQ6>lhZl{C67X{}9ݍrEQ r؎:"D;;5ɶ4#Q'2TQJSqTʎs @l#4t?Qm v;m@ _۳= ,ӽ"#Cp$RViD_Bl -#jETbݧnb@i n4Iˈ Sy(j`QfCY e9l3D\<8rAhԟH!> stream Hn1sifY{^sT*P EH7ɢd큪?o UB]{9->^_dh"q.-(l&ijrZfϾn$V6/)<{&^x'ԴzJ_EÃI&^l Ӯr] )!}(nU!^<>% q?.I &܊NJkSQwS:嬧rvw)D=7: EP3JSe**_Wb:G[(O|Va-")u#4!~:󶎣u+-\-5I\5Eq>vCGBmXPIAvPLY2e-!ԱcsKϋt4jI\ÛmfU,"Þ~6I쏇nW缧 a*chn<Ӟ2 6=W[8\,4m?t#SSbx`-+Pv2#YVA66 qڬRmV=^Wwb!}vul[8})gv9隚gU#U{Ka܄6|o#xF6o%w'KPS2]Sa-X ^(k3ْ&B]NPZm7$glf9d ( ډtN{?9|_µ۶i7]㜖e> stream HtUn0 }WQb>"fl>xKv;IQnm/,^DAqD&.?Tf -86TrN&U:ȌU0nkxw>kQ&WBSW>ѵTk]Djb&R`l]3-WNqa;ٰh R `;[Gg.o[)є0s9QR:h\>4ZֽZ_>*ÃBzC-Q%()17$)Q#wX "6˲B) ) vb?qPV.QV[X%fp"$)G"ƩDM`AF*)ɹ[ ;JU(g5R2cq ![z'zJlL])ɨdD CƌfAC]_:ʵh @jzB=0#؊z_ !x~\ 8+LvLոEMPqH_rj%_'ҘH#=(ЗPCU|s1%Ҿ97+Y{bƵe9 `h}4݌ɅU,YsH ȋ" [|b ;rڽ8[h" h}):wM\5cnG AF5owcocy,s=3Oz%-'Ý4vOԕʆV s9$ajr Ku7`%ǭ rZX{E endstream endobj 113 0 obj 728 endobj 114 0 obj << /Filter /FlateDecode /Length 113 0 R >> stream H\Tn0+H#$@Oi0 I~ȱXBmFw' \rI},?X4[Z+*x=uFuvVufْ?Bw1+o6c!TӚ2]UUm|N$QZL~~6T+:ɲU^leV銒1l3$uJբ!n'Km U"B/V'FYZe"9=RsT;V;]&f7Qij[r&qw|/`RoL "=l.lb 6P#=1"F䮏'[uvl v %v4 ~u<w3CZqCLLX]sdUH>Ӻ;?!>G<ĆEbs 5ZDj uFُ0";htgUB?*UUBȍ9zf_2`~%,>C悴ǂk4Y 5idqiI.x5Ym`z%߱q8őBIĴh|s*1 ăᤱϒ]|C ğoG\8'FKLuci/p~˝+Sdߍ53Jm)_%5_ɉ/%ϩ!Ŀ[*SOUxY]ڮŻXdg#f7 5Lh+ownK_H endstream endobj 115 0 obj << /Length 518 /Filter /FlateDecode >> stream H!T0งuKp\ks\Ks8p8p:p{n!, c9C8\f8 qX N-Z %lRKp((D$*$lS+jUh԰STPi^JM6$n 4q&NNAwp`PVYKHLkXe:1F)1n۶ky[)R| Q?98Q?wܖAN4ֺ뺾맯hSk4Ϧk6OU{g)JyijiL;?2/RH!/6,)ĽfzOY_k-\{C4~oO-;iM4?gwlQF^d}SOyW*E?kgg95nꦹmhCxIA}eAHYUYe94鵹ipIN~C1" endstream endobj 116 0 obj << /Type /ExtGState /SA false /SM 0.02 /OP false /op false /OPM 1 /BG2 /Default /UCR2 /Default /TR2 /Default >> endobj 117 0 obj << /Filter /FlateDecode /Length 3287 /Subtype /Type1C >> stream HlU{P߀cԲn]ݍo[[[rgQEBI BP&&Qy&K %P7؁ ^ީ㣷sc{{v:;so~s~rI^Ùwk$mc% 2\$ϦBAW`F[=ΆyQ9"d> e`dQa쎳XS6"ZOSEFJ|#9r"^_F}ܯ ] Nmv}AĢ xgL0:xDG{ב63|RE9?pE0r$6OYJtEILq}FOcAƘ7jl㪓ibfNjH!#CŸ+X}M?b5yϘ5b_h2?45^ μ(, SӕTReGBax^fm$~̓G=Æ25VnĜ/14 F~: niL0n@HVZTIYZ-e\| 0bK a<\Y<V$ۀ_ F,<%fJ4|՛a?aQaq,+5W^bmrW$5& h ~V E1#mfW3)Dq>-4˚`5yF].+UeE%!22Kől 1jz o+:A HѝRNOwQ/x4D:i@U]Pk@5-c!E(D  ꛃOB6I ph.3=*K53Um5n%NS@^qƨShv+Znz`O|#O^ bbgLGbXnH,*p旓Q q`WI:t~zZ\M"_˨T;kG <2#'cGOgAR]2 /9KLabaIp@$n0SE  ߠ"\[ `.S}`<RЄ:P'MPVl9^x&ZU(̔t2X<$kر[k i847d,dDf}fAHPZ}K::8M.6{"1Q}I X ǦMͨ{߉Iz8dLOT RQgܡ*MΛCP("&$b`l#l]hמzZz]z[kw)+96s2 e b"AQޚ/&|>\k?x-jYVɉ/@~E1Q=[7t5Bϭ_"]gX@ʫdP߰q߫ek,gײ"9?UOӆ ^kj$dQP*/9DIFDi iji ]$}$ǥͧC> stream HLR}LSw}({OejdL@Xm(sB_ 1sudC (Cd\8D6h4G,!r̵ls=ɹ9D IR'70?7qfuԚClh=6/G1aHPYؾҶ]QE8}m嘚Pg%.%YsԵ8_u [}fZR3VQBN1;,-bB{Yp\s(֊ Xj, jTJIt9Mfj9EݼAP%YVjӆBvL&^Y& iegd7D=Oj"xK8<4#V{1O?խp 65cP$͸!"a ˑsq}'R t/h `Kp|i?L}iw8GpT9xyqx|Pu \1e*JtzgYJm±eѶ߇ąʹ]2tqƗA"N1N,9դ>},mF:ЮV yzޤ $hnUkjX:żD}(! @=,Nk VP}Qz. 2X\r|P(0y̡!{aH'lxދ4ҟ`a/kh+`f>%܆bcM7w}ӫ} L# )T)GL.JU`bZz)r`\ :QCzp,D>vwy'|iOkv/V]iAԂ/L+h4cRe=lD:S;Ɨ4?$07?zvSU^Sm+ݞl$GW>z{F^t TsLifn@q`7z-(VbI;kYPBGŠ1` endstream endobj 119 0 obj << /Filter /FlateDecode /Length 3488 /Subtype /Type1C >> stream H\U TT}wg37༧@T(Rjgg?@4iIMцX5MTRDHRh3&7{9ssjy}Bؘkn8{]H[y,5rԇ\IE'DžX7RSSM͓]'7^>Oxsk}VPQUL[̟779`eŖaU+yEJl:[a0j(ss$g"%Zd-,eOUt0bK/Ql|[qEUYoi+ToQIFQ%;0Z?jgM9? <sy.x.R \ͰԜ[ƕs(~?oUUj_.S7{wapL%"kiUm8nܼq~t]S\m_2>u{Gv^#^>堦vP kW KhG-Cx?h`8G&C7v/8+/q&]S) xVJQ hjHJUf4eDW4 \!,/Kgj[V O 3ds /mZ|sE 5ȿ > 㐺ԁxGl,l5GYaVI !f_aC` wq讎 `FA8gQ>c=iニ7\5$V2 =4J:;)B.2MAq6?86 B5cidž3״OvpuH^N6?gIy)HfSw *#XOaE/Vl"uf)2L>fh'~rX{ +F7Ј90i)A@W6مo7pxfm]WYRc^>7x!c_OX yt"U)CKt#҂/v,ǢdcTptg0Zi{LKW_.# 3֎3.4pw菞HmYsfG[Y3=`nL M}7Ki8KGwߩOw'Qب ~Y$,6~׮_X"+-WhBo,m4xaO.F7 #ѭ|Nk8*۷ P,mqmnө7Z!Հm0O` ID\KU?]꙲FI*8P0M]N |qH?d ǜYr`e}}+Y|Ы 4=&>+L"mшp(' Ξ-Lω1W԰"1iUqQDZ",e#DU?qm1#HNacώU098B`6fKu y4ՌmЌf5\e Y1v9V!a=qVG!6܅nӰ*zQvrKg$7/f$})@jY++uA޼$z{46v(%u-UHKmDFTWXpB`m&UA',*?QZ.qo{sʑ{u x(/ίvuԤEi䔣)DRU-bb-?c^- "^{}sШ_bg8UǠE+jx+>Dc"& `#],  B0#B.mme.e9"1eaQu8L7nlp,ZGIcnHێq[lni$s>iyB; 4Y@U)mPVb|xsv9[=uҸM,¤|9< ZbI߅#tj _>~FW@ /㶔HSka>@P7ecXxYɝu ~ƈt[o`;7b rfsfݽ;7[8OqCB‘z,h_i71" _MmotU:N{3"y3OLM&RlL"ٗ +iR8c9g|ni M1l^ PbJWCP"`.,,yX)i\L)rI)]n6QV$UJ߳'p(sb^c]fY>kG;fzeԠ8XjDٵҋLwK!HUxY2)sqȶ&@@1Q+sоc~: endstream endobj 120 0 obj << /Filter /FlateDecode /Length 2482 /Subtype /Type1C >> stream HlT PSg$\XEzoZEK;VU( D+A@P@EQ@g<yXY>Ԯ]W\ҵ9юZgw$$A^>c&;Hmخgiu:ͬ4]NO©$>K^R'[Hg&:I>f{R4_mpZN6)9S5-~?pܙ82$mը4djR 4}z^IHZөֺ oC"UZ$i1^ԫ4)jvUZ"ėLmZZؙITkTtwIE$Ÿ Hb)IDX'%HKMH)D QBG>b\dQ2*e.}DqT,u=h<1 ʖ##,%` a13vS"G< 3iKlRrllKb''W-·-$, L`i_)D qPzP3yP_t l FW b)73D/Pa 'H0)z g!~ȅ["Z)`( އ4mHSi/}?Yh:1S2T|` DDD4N^[z -Vxٖb>RS*[Xt Oel` lv0{֊Fqı6eٖ-QW"vbEoܟ{.u;.*׶a(&o7_ |l7ӡ s1 mtQh}lŋ* T?Zɞ;~VjڲDYVO \YKg|?vfÇ\D7%9UBAmh|4yw¤6X.W_V`W8!9[Y|3nԙ;!?.o彛;'KФUNM'Z>өC1Y<~x&g} \1?kݓ*(Snwxғܞ cgC}'ch[yb[lx{!U鑩,&ǴZg!/m?ܻ6O<#\US0uv*E͍)Nժ5Im"eYyEvvaz%~^{:^>%PCWmVGrֈh6[Z [n|,HBt#m,Ϟͭ_Xэڣw(Z'ma,;X2p~M6˞XE\|f־+,w+G>2-ʿ/mל4c|MSQ9pf=.Ym,gwv^dl砜6~ǛsטSܞJc)(YZ׋Gw7*~Gѝ!K> -e:Gkp~տ6X?l2y,~@#2Kcف;[+M"kB6yb8R 6'GN.L=QQWn҄t>MHu3B Ue>t3{ga#Ha nǏ9eKvM4"'7dĬ5}yRՕrqX['/&` %tw&tƁ1;mqwj^q1%ՒzYյs(-Ugu/9rfZ?J2pwnD;iAZ߽e?V3}݁ﲢAeY'~Y۲>{׬ٝ3'NR]L҂FɌE/.9wpw- əsgO ΂iK:V$JշUTU2wtߋ&-ps3wqkD~T endstream endobj 121 0 obj << /Filter /FlateDecode /Length 7342 /Subtype /Type1C >> stream HSiPTW~^Eh{&FT0RDp!FMZMCkMYiVY\ư4iTD2q8:jϩ[~|8Ʒpw Y)p'R&*U*ҭudT}'89ιp<ΙQvN(ջ{R>ډNx )񖁟j⓵}1,EJ%SqT]\xGk̶dP=mF*[bN!蘭 5ݗfQHFاh V#fӚdH=9^7r!kzZw*LSV, ꅉE#s0gFaa|S)10YxS``=fMY ^2_'{u _4,ߜ񵭣m>/ErӡolVc4F4f7pYӧNiNܹsÜ9s3r`~uD=ց3fKִ$e<䰚2#A)!(9Z֝lnUXZՠm%9șZD 8˝=/,N$:V^RVA}N#YlaY+C-D^$~Q$ha% wQ%^`a8 XJL9t"$ƽ GI*ANB]RN:a Tʕgߝo%kS$=<-f&UZe_ R;3!̴,**b}!#LJt0UXtD^{hd_ Gjj (cq@|,P&/=q R#:QsD'W$抲bJ~$BL 2 EjTH-0^㰬w~ 6?%ݡ*R&6)/>\AoKn&Al@9Eƺ;(y>o31y<8f -C4 ~@XOO6fWь"PޡC`9 b--1T[}ăڔ2Wl,m6%WЕI=8k 8h2(J>cGf0(`8u% ҋ7t"24W<>t*Ip.aD];F{z,%TjZr:+pҷÏzFk<}*F1ջ lи?<и9J ؖ;RK1uμnv@XOgLk+y3;f\[L9]wiiHBCE%qcZŢk7pM3 vD޶F9"QbUƽy Lnd<[MhۄvkƛʜVm4ǎ-]i'cMNtӕvͤDN b\PT}@i6Etm|cBdy>V`uηΑ <T86206(@0X8:W̅woA?C;ў@XaGp&bU7lV[27a>:`Pȫab.1t֒]'Ѩ|eAa[҈ے"Ov(ݍ=gn_UQʔUvS}ߋ'<= ̈́cN?ws_RJs{aa8q흂Fcע?(W{Aw /02 AFFͿڳ/z'7K `t_ڻef]xH Ơev4GMR"@]2xoҏ[F{|335vcq+ae4-3쯵*pklj4,9[o)i2=C#Ĉ1-W*&11q8oR5-\ xd↌ ("V` ~YC:.Sn^QMYAaXqgʶ>+hkwJUA@@@1G^oD<(.U]]s*n|$غ=s2߽w7SLY.]odͱFfR[*?I4YYfL;v}Lwpԑ X ֑ҙzlAG!%֢҆임o"\6z⋋ %$UWv}1<]-6]R[K":X"#SůJ:sa{IK%stlɍ6<YE˜9j+EU,D0e] {=q=dcL 'zhfyP.rO˓09/6j=SⅦ'N `/f9 >CwÊG]?CGݠ%@QiYN!3]@kb=ddd%U%gCEӡg,ƿݤ/vlIO,ϊbGcv1ދJtY!#O8.aK e6š6 4i8nU֙sMѱe nlm<.QdhsrR}0H+U. k3n|7҃Vg. Lmhb[jyZ]7Bz2 LhB'M45v&Vʒeިڝ|9C#٬'wJj/+kEt>Ւ Q޿^gS)ѻ?d. R \ oj2ٴ B"+_xK3X"E2,8_YZaL7ܢb!q^N0 79m3k^iS)lBoM (E(ߟnM1_LqNӯ-O(Uʦ\\z'8͌$eRQy L'ӷveIF$=Ȋgfs!vRru| bL@Ӎ}y9_]YدFzksD3JOtNgk1uCQ/f !Q-3 8ǁ5k8-TJѸeGZa(pƣ=U jgrx*E>D2W[Tl޿ݰs  U7wkјyR⨺ Zy"p`?~c= Pʑ;Y,Yjw`*VeL`byb: Ym1DWG 9Gқ"%1Cq '] T^Jio#"3Ղo,8D ap ;h]Xʖԟq[w:Mzc%arw&~3 p gׁn-81dd$bKɩmU yƁ]H{;GB{Mӌ讹%]ck 26]=M6~gEđ_btG}>m/ZQR~xi @6شS' ;se.W{vwu~ٙQ.,Ew3V cEkmA+ a=nԀ6!~W^#69J[hF%,F/zE ƴՙڌC&KL]rPDiR1uxעFD дW2:)%>d"=R}#jғ^r΃AfvOshidBGŖFCGLDNէLB8"agBȘhd\DDXH $_3z}p~ɩҳs t,"ɹxVHDLDG.ǚ91~-8pS5RmTlN^l5W,?^d=kfcfJPq> nJ*Mj)a4^1MdQX̴ m!B1uH]KY*ڎ-Pܖ0-tʣ3jA\FCn]GL#!wq&'sw=EŁn09?:b2 kB_:5?(1Hz'䜼Cp7+v`6≲3֑Y`$#( FiuO"Ț+_B(oYsn#ī@nXCBeݤt*GhL:uO /Vw>ޗCVaϕazb*:*0 }=_uB]N "s#bx"j ^9$0OgS?@b I3S ?"|q:qwc#[0Fq3ꕏA*)HP-lu9F;+{[yOG6q 15eLJn|kmBCȦrךoC!Jd6ꏅ5no{[lwio;ÜS|)Ԩ9/`Bs.΅+*e~oL) |Aͧ.ދKiZ*XCV?6Ǽ}`JɬuN-CnsYb=&; rilם'$@HZ\~kK#.X$vUy/5tm狙)#poIaCw3>xu^-ϟ/ntӦ?w>i/i2}܅s񫕍vw]n:FmM*=w3g "Ѩgެ]}z̓OԡOUJ0 endstream endobj 122 0 obj << /Filter /FlateDecode /Length 2815 /Subtype /Type1C >> stream H|T PWa #62؃"'~ň@GM@OϬ&ZnL(44JKF#F%PLD$Ϻ}YU~^{9òlؤ…%%1 t"92y=yWW'xev7&BzOcY]̐BBF-)[;toh@gfe,)]=wY%E% g;׷׵Է$4do~ K?E`<ى12@'f8Ì`h3ٙI12ƉQL.9Ŵ3?z6]9:q\a\<\|.$B ]Xlѹ\2\*]M}+l0r*c,G_9 o4ƀsJ\7x57)}r|i7! ᡒ!|\37ze{"Rzk@G5 ]: q)KP>MPh,8CȘSL 5LDрΰ`r ,ˬD~z9(V`w`Mr}nu^^nivv]Cuz+eoDBd5xC*F`D1bq+āV ]aJ.jywPDݑ 1LTV;55kPg.2Az[a5_w ޿jGy鳔hwk~9 6b%OCuDRv 49D>jQ1!5K ė%`U r@y& 궯.N]ie|urxe۱FӡV7#;IbL>Ut`& Yʑ5q ۓkp $lק13=sviy'I]GB;Wu٦6ccCRo4BT?r_:ߣ$m$%42WOBW hqT1>A&O% hOľD)骚AC. $쯁L'gd<`~nyLV z~74zfۇ}{U3C ^ fo:pSG Àr [ z>WZr OVsUWAT=YM|(^&,.MVv૎V3o]c7en2F8mI:9=Νk'NW$K$ RCũOddrָ)QƤԃM5w!m՚cǺ5zAMl'm ޾g|DdgxRvπx?FψI9YuOd}x'Wh8R[SyO$L ?^r?2UOFtC}@Џf{vTR'`dDiRw pn\-05mZ[EE yA13&uYGzSlP Y߸vR.HpQGvK,yj䞶/w [h C;bo\S48$G&2Rذsgb?4d;xY ϯ<5>=5P 2O(Ѥ.!8_.}ZHՇfK]'l)2(S42f`h1f5S4TQj&=& iUy{ ݺ87{FS~ [}s-Rή2f[ln5*vF!CROU 2a%IP%UglfN6aǀs ݬqd=vA!JǡB?hDMNN8rrdCv`bg{z]4(< ՀHnGNzGUOUduKe6>QM24I"{iҠBffDJ aQV~2R#NPwկq9笆ʹ螷eSdj ?'B\tPOX,t/3 $lw i+8]ز@c0f j6s}@_>""z\oh@ԻӒc}+d95YIgJ [W5݉5:GjomZw(HwUsn"A{Tzw@["Uko OF#2Jtcbrz1R=w? }jiJ*.C5~AfGsXlLls?-R EbTb2-xIPI?!$ha鮁 mjm`~l)Oj&I@B1bLDrkjah\`-Iv}C/iKbB M$] ⦹Oi.JHɤ1Dg B%1pX/~B4ۆ-2XHIr ̄\ kIa23 $qzyL8{_2,S^Q,(C0M'N(3?K L )yxOl:vE;z" /Ei>w|ujϞ53 endstream endobj 123 0 obj << /Type /XObject /Subtype /Image /Width 430 /Height 430 /BitsPerComponent 8 /ColorSpace 94 0 R /Length 19637 /Filter /FlateDecode >> stream H엋_CDRGUJ*l(sFh[Gw!#Xct c$8˿sy7 O>h!|cRKLU+1$Bˤ0RN}]u_hgC{_Եō6nLumyy-[ye;ԫXеs[uWM{vi{O{ͽTܷ_ׁX:xCuzSW;>.]Gz;ǏQ ]u:yn:ӧp>r=]TPAv4646644nOs/ٶ `m.x<--*Zvioojc`U!a8outsNѣGvucvyrN*V!`=KSZVrk+X lh)fMTr "^eʹuWVl4덲n^Y%u[خwU,vFUέy;\zEn9̪Evf50m֯Y%nY۷kvRNvWrKR^)ʻEf]bXw%T,vZ?/}sv>^qnWf[~̭U-Ͻ=|^7ssN~N㪇%skuske1-uH p_K-̭Uέ2[r ^E !_I3Pk[C=skEjٵRZοhիsKù_ao2V=Ri--„b5o2V;V*{^0[<S-[UZRWvK֓-VUy',u‚[hܷxvܢ-cCsܷ֓ʸN߹ ;rzsͲ>ؑ߰[h6ˏornqy;\ʦ`U=nzU󘔾1Ь[Tmu`K%sksiRvzsk5$fi=JeRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&EheRIZ&Wyu  ^T湢5wipx0 GP8 ?T95t pBL$h #Pwj8 ÑH$D+'us{/_!'0*FSx")(N'h8wϪ?Eur>|(dLqAzȸn3i ] 08U8CV%ѫq`e2-MKkX/T bUQj4@F)KtA۸M"O;8f  ۳j$[ YEMVZ-zDklIF!ˢI3\zi^b  }02$ /Ͷ1.hVshv``0H_{ 0`B\)8 s<#d VE!:=`XGȪ(.sN;* &3,Tn2\h/6pMp$ V$R9(BY~LY="x2EO߿ vj ;Z TR>)V6gs\+:qAK\`^u3OpX7A4BATFA|>?\m;i`q_4rRJ6{ss_Stn4|zZ,Yz0ʢG,#Hy•#, 44XZZ߼|jUfج)c4HKhݽh^ۇCj;Y8YhC0p^exU /aVz<^Z=Gy4 f L- v@mVr/E*S ,Cvy=p`YY 6Y**]ݐghMY]TS/.k;Qe6'\ mdZ̚-8n^qؕ 1vYB?oZ\]sqg>H+FW j6+K{VlHb`y #;_w/ug`a#}0d\z!-w*ɰfڕU8m0S+) ZxFpY\6(헿xP\u Y68,۬,V2q>/iz078ܼ>gZ ,5 g6he)0Z.\nTNH5Dm=I_lN%M?&oZ\{La^1py`%166B}b`Aa(U(r-̤-V3TS QiY`[4ȬEw-X9}*Y-0u*+Q G|maXOI8hL4 &RDNTբVeoMeCn3KP88o@ "l5,T qhg%K Zd~Rt1'J^#Y[&佑Ȼ:$J1k$Kpan2 ق? pq9%|i>YmA$d%N;kȒΚBuЈ/KuWtX^J{z`Xsx[ZmwZ˻ZzWi]P˥^77+ D/-):K5[$>X]W-+rzZ[&ªJk9x V4YAE"z L0UjZ_7`C`[,-$Pd)Xl=Qlc"LW$5,3 * |P +\Z"mʘ!B zUbZ, j6Y1(,}qqk!-ZV..BAWiij!3X3a]B+PgPPEut1 ]nG+-~dDޯ,CzqQXZފ#}L/.Blahe'9WuVG|pH>gҒc0.QRZ/Ow\Zu僭n[!QoAki'Tq:]JS'<q=l%uoZFdZ+苙.m S2DjǺP} IzH$ !{{Z[pZ[`+]Bx<˱| KI͞[k[늖R "[V q cI _Z}R:ejVbZ[,-3Ȋ7?Q%tM9Wj\ez7D2-\[$l wj(>l3/WBZ/ǰnyiiy FFoakFl|TG!+CWDtrnJHk"d.I1-7Ŗ,.bzK9ae{lt)/9_{:ic,[k6{E٨Jk9m uJЗފH2\o4Xqq`b Z ommV"lbd.%IoqkYafoQa _uUdz v^3Ad[t'Ԛ1"+ uol!-a3zWB i][H6WxAi=B!Lޚj"֌torlQoBU'dz;j- kV7قd: fOD1 j[⊄-Ok7oɺOf5S2 69`\|ÒޢRj;+#[K-RZu ZZl[$t )tEҕ챡bb- +m'ZZ!Ul2lQo!]BOi$El-TV'͵- m噱$EK1[[Ⓗ\[6m7j_RZOڢWOtto=(:Ro4WNaruh)OZwk1`'d 08脚-x[ފeo9?tEV(q DVͅQ-30K1Ÿ6FSTx_Ngo-<[Zj@v@V${K[rVH& naž>~dl51.l-f/}S3|^\.Y\1yt*)ŸzKآj_;I댷êl“ &{K;[q`Wd+RNnw{nPUN2I% #\\[ Gf8%zpXfo* t26غVW [>;g-9HȰuPs?lI\,.Bm{ uaL[O|+laX[-vB'V_ho%.Z\Z޺ws=˲Kod'Zi#ZoY2 [6[]qB'1&tVRt}>"&Z2to]dEq5 =6tO?ޚj2[aUlso-M\㢨"%H)wE0,v6qBVKN[>qv<2f+6z ԧ[BBZhk `Pbj:t Y34[#o(ti'&NIw-SKq-'ښb\H -l]jH[Z3zT\AKGF0OϽENѣz -|rGFu#/Uϰ VHNHV8TVHt%VgZ2avK RsiE#djrw (.\sG SZ0ҭE?Wa0g/{t>Z![׉q59.fK՗S(ta\#Ghq #"LD^=|., l-R qB %5U*ŧB'Cѐ2O!ӥOBŖͥ ,z-E9XEq[RxZ޲ޟM-873ꭚPlU :^OD0Ӑb0mIS>> '˖Ka[^ңj^w Ow <[Uddt![|ꊓ?1|pyݻn|TWdp iquzq𴾼e$LaQs!M5I>ԗMs"j ,FP%J(i -J +c;D5}m4%g̨8z.L˗ܳޘ#H1N@\VeY؛YtZ꿑komf%8eǖ*nsug+8,[]}u\OxµLc ^\ra~}\f*\Vآhs2+&awyWN6SE[+e#CqMlm1[VT),:>%ŇP3[<.-B-˳B e+쮀?8{qe[H+l\ѢwyҳZc\¸MŽ6(. LB2u_̭%d%֭F6~ 3-kϽeK6W\j"+2GWbt_{y=JVnmw~ `)&ANX2*Ɩ7$+cѕՍá'~,|"%Ŧݰ/T HتnNm#wcV8i([҅]yGeH <`0;lwZViY),6΍AJr .k. k.:] . .]z!^ڍµ!aDOaW٪dz_y?M>H+%7™6WM4¦6I_![HH=–F \]|)]X272e{=QCsQW@B"ZFV-) -2/O.{C8W[t)$j52]w-GE蒰_U"#석:O교SXdZ?=\] ,[._ ]̖ąt]{^xӥ怮$+QGGnlGZo-:[hzV)BNai}t]o2'0[exH]s;FWtM.^90]eŔ\k [mH*oV~hi@5ZcEgj!ͅ^HSi 30+>|B)TdvwDB8Fְwȴ|~ !zmam尹cwh0]DW7GW2/L\X Jcq"\[]alU0[o[ ps!]#fj_W?- B+X^ 5Qy7F)gw3l)Yl[r{l][p H3qa[#K딛tsYXB׽gJ/G4 lg^\–8X2[Udz8T'<[![" us5X3dsu:j`JJ]w%^w9Ҳ˞ԧ+o#xiE; UJ˳Ahi=|5 gx 1͌Vt9P3.-B; >{ z#k*̢}Һ'Q2je\^ioFn[!tN.a!le (T>|҂>{O6Vc7[5۬-x`ln+\3]f [W t![-\ vm]SGW6/(2>7 SJW­%lb}jOVSؚ/-< ǖҥ/%$%rl]WD8/JR4׳WZk3!"lm![Ak5(Jy~lA wp qs}͵2檩KsnttO]i_e=PHrkްfѨ+hsl/I|U7hżRXMp? Z7ɉBpqyv|i1[Yŧp57ʇjlN~sX\1ef$iKXBm-OY2_;ZdZ"[| h [{FhGa@ǚaךR]xuoʔb[PAa5dBX˽뭛 )㣴o9ΤؔY1xv-r;Ed0 (@KʑoUzu* "Kw-5r:[wI;:i@oA\Z!ѵ!¸JUyoɆCjg770m3E!x;;;+W) {̃[ˌaq:]Z72 W٢k!q1[L],DסGW7/n/} 6B6a}_#qeTi\LV+ lnAzG$h"ˣ˩]U]^ݼrWakR0ՙ&T}}=h/}mWOiWqPXV`a7{"zkVha^HtA\FWuUʩGWW klIi?w} ~gJhi1jkqGCu}=įXQ4.B2ù]p"# "JHˆn5&Q }*Wwpld%( 0,4Bhf;{VeŒ4+t]zU].O5xq*ϲAK60v鎸U/ljb!apw4([7&Vq]s. ^.BRRW.BWw0u2+*=HVLdQXZul-0+$Q#d F!_s4g]UfA|uX6DU6DY9Rg^>ai[(jtyUrzؒ(7 ^hǼyCWBJ`A۵:w4oSstg\jHרo^5ff(2ߑuKDZ[xwD7R`CÝEF8pmazxAOutM1utlpw;L/_:d Gv?*wrA4 fU4O47w7P\l<]k KHwjUj8n4bvX%QNc7iVSŝ` nZ[kdVt~M=XV.ܻa&| ] !.<]c p*C=$.h"},w<iךbluhN[6Wlteȗ C K kFq ).VjU*̻|h%&v\^E?bHTi #Y#xg+m-wagشxBsD fE"_$j.ٻ8[7QdaL8__ \ɢ[ j?zjyEpI݅|0D3U H7T}GGbhRN&7D%cȪ9MhNg ^Xn]wut-r{WQUcTQǰJWMre#-NivzAl Җ razxp";uנ'ÐZ]d_j,9.SyrCO6dJdHۼmG^HFde5P0U/,fY9 X XՃ]\ ]c1IwWxBJt tQВvy$QⰪ"# \Zn[a^~(DsںL䙮5%t1__`,/GSQy嫦㐅)I}(wLѫ@:uݲj5S ujO F Ik_u*ot.y_6#'JilY$ VA>-$\҅|t .sCٻe Zx9 ,&&e5$lw]w+-qM.ӈzkGbY[W ꯢM''&4['w2 )mZ+՘\QH`3[OVt.kڋ~Tkqv;5æb”.ϗF3Gn b^@ܕ,#4,cWexfno"sw Br)ÐU3U AXL;#|*e&\Ȃ/h ګ*O2DZWGN 1C]&^勎Xkj aoE:D8`G'/Qd2d5A "7-Cv;['"5)]q 3,E{yʈWNaՍÆDHQ9$ )ҘjLnx[AEAaţ*ajj7nuټh &:h//|)0֍&n^Hlɱ뀳(T ]*֋O j,)VɺUzAҺ*n]Cl]._ +[Z0Q?lc l#{b#YҐ3^ܩyNvVאu֎w0iųjtGvC^W=QO o>_'G)AA-ui)F&0i^^]#x n("Za%~r`}nFOg;}y:*={ ^Hc̑e:+O՞c{n](*PӍb7v8f7d(f2V-K[鴽ȺYiEdE߫=0i^QM\JWdj.os@W_ތC+vr&s+z:.{eosc>3Yed(Ӈj1LZ^xtWؼ/>% a` 0vlZI#* T 䂷P`t@V;&^(^EECY[^/%%a@xscMmOw!iLM+ F >e.rTCYU񏊏1PZ^Xb^tl9./ݿ`JT70jC8"<š|,ILyxLv,vɢ2hQ4lzPi./{oȣL{50_hD++_JG.#LheÏ֘,j!`uq^)J'Wq=`*aDÎaBqI`⇲avWr T=MNR!xk1R&l[է*$t.t1g:: ĕ8\|X.Q|G%wh!d`Yv}eGҥp4:ͅ/Iu#C"SzMe'isA!#p: +%3]Rg%gugYd\ ٺɊ"DXۍ Dk?qU2ì%" Ļ=vg }4e\tBh2).+!Ӫ]}Hð`V;]Q$|Ŏ/Î_$0×l_KQzvDly(!4æ8k7c dL+Y&,59Ut=arw # , aؿ~3_<TtjW8 O=۝PTst2mEf),lۙ3Yn7 ַ.j!w 1>ۿC!:ZT q}>fcL1$fz䰮Gf 6?8i~~Otkٺ0_` ]q!2݂™cLO{{V mV, ݮ +#Cֺ!Msp W$|]@4W:Lyb-Q'*Wu,G kV+MU7񦻶2=50!5Xk Pˆ10>M_]7S4FZ뚋j_1^+lZ&eѣ&{d^/yھ:GWbPl&اl.4_+Gڳ!+1Yρ/pZo].]/13O8uJX1cEPe^ec!B9yq _#燱// ٿ/V#:R"2L{h:Ƿ{GUbᵕ{,tN_Dj&a4%?jtnbC\x(e &PO~KQ 2aLnZo ]Ӫ҅qkWayCw5ĺ816e[Û̓ nW U?WuV4m6ſÝ]jo(.K!u2u!vJ`Wdxn7*c\#P-Fye38R@>HH/砫p`3En.+0Į|1h%,ѧ,MuH\g/ @@z} ˼v(sں' Bö膹!< G_%Kǰ1]^2Ĭ]lX `DdMV&#Ҫt=?o[/y& ˦7, *YDqo`H$< l@*yauA%eDip0|,d#=esogZ"sC8pT↸06=_:p9YvO׮*nT-vՙ`nbRu^3lqb; UWW!< ap*qqtTaU}d9gxsx`@%]!B. ~e4tXK- \gS8g cۮz-g ujĪ a>۔Z䩮2qqjd$N3SDS L]Ţ& k&6KXh*;sfkӃzXz],ђū \V6}AaM(L,ma8z$vӉ5uk^ .dui:'oT؀ y`G{%=~t(PZ$V;V4fVh(0U.J`f)fMLTa=EF\ǬmN` ޽aa&c ^P*VV͖B\O$0ţיB:sGf~=ԈIMAWVR/ Ũ?dVhOD[m@d\QFrsZ=z5pZ VV)!#w T-cדi?%MfX +vh5]e!eG<'IhD;vT~T%?dXGa+ s)՚ŦU,GlH4XkNLS#)y/j bY`eVpLr0%-QkG=qmM;ـ!給zasYiߍdV,(q YYN%61ȸ]krrj4Z wd1;quI+x$ziGRv]cZ슫Fq7K_d](%r}6%U~~ C+ZqȌxl6I~xMa]Kb̖H|6ԅh-DSc5ј5EZ5gETTTT,,0?Y.RpaZ2Ϣ־1eɰuFluYC99 eۊZa/KЬt2g6٦%NgfzȱrɏÆ\Ոi%*AFQo_X`z`rN+BL4.lhfj7)*T'D?Z'<h}Z2.ooCy8=jSB5H*k6 cBKf}S]oj1OwqyDc0F}g"QuGU\Y?W仡Z͆Вy 2XdmQON-,g8R ˁTj1O7l x:OdCjM$<訹P ?fk;H:L$Zb/ƆlԚ C=aYw {M&J7,Z2fI~<4kcll}$8&j _'%6m6V|x(>83HW{9 7G4K@--_i|'t>?\˧?MwEfz~R)9#-i~~i}Z4aMa tAz`J*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*QDJ*yhP:dlϘ/3p endstream endobj 1 0 obj << /Type /Page /Parent 70 0 R /Resources 2 0 R /Contents 3 0 R /Thumb 51 0 R /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 2 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 91 0 R /F3 89 0 R /F4 87 0 R /F5 88 0 R /F7 105 0 R /F8 30 0 R /F9 31 0 R /F10 32 0 R >> /XObject << /Im2 4 0 R >> /ExtGState << /GS1 116 0 R /GS2 5 0 R >> /ColorSpace << /Cs9 33 0 R >> /Properties << /MC1 6 0 R >> >> endobj 3 0 obj << /Length 5431 /Filter /FlateDecode >> stream Hێ}bg!3d Hc;HF-40}J\ID $3~pm6bgg2eLPz|VU,Mlp*8jJ _]=U*M4|A_ީ{OL14qhf> z4i58[3eG@/KLK M* SWRs>$Fk0%k4BQ;0E|@V HPX30pɵQ~k&['Y,| fënt9  ;3+L>bX3`Q |7'fhS׋uݮN(d %iQ*i~C"nyo #5H5i(;edvU4 emr ( u)DoڕgbcTc&//3cI{9$uJ GɈ+o5Ev#nDžk0;-G6Z!뀁WLKp!gf?|5Dm7~FtE-$]P>,0mV/̬r^5Gֶ%H[5@ /6c ?bzLx#+`̨jTRF-]wXtz%wEAc:(V @fJ Q!7=3ZUwTH%amX,f̄XpDŽZȀꆦJ9NZBvuc}=w\OC1wYKk3sͦ ,9{f5,"b ߐo(nkuK| j c˸f<>Gc.XH!znBd)Yޅ\iBMzkFK>|{S2|wps>+Ciߜd\8Z[cxcFYXؙ pV{DC;nL !g<#Q¿@A-|8Xe> Q!RQW5gJ[)O %; 1Er[\ౌ ;n""ڀz !|ռ? h3~?R DAdeF.ʟ|B Ő]q !D"QayM,ef\Ϸ1nTe|*p|?0G̨o[t?2`#w-8!,}`hIQo/x B}maNt'"S}y$8QZz؜$!Ho=,$Bx+QaVn`}0S/Ձ_a)t;? )VvSE fN2 Bp"UCԚ_72a/r_m"Ӥߗ1աq#pqǝM2FK"0xOd-@TZAY,z8+cu/Pm<3,€>5 w\†͸Vvƾh.?_/*g^7<2>$_y\b,OypV0,L`L=kTbsP5UchyK8-\LS0 ,p\|+J8B~ 9pE)evOb R ʵ 92ãADL۰rU4gYE|jQlC>æ\ kMu0΢E0r"*)dO>`r 8N A(1Xt }Ղ26h^!8(,X p  +Н^2xhI,%$B 򑝰C|ͩB z$4Xd+D0hw\sY(]9"8m,q@bgq^mMj#g_яZCl6)o6YW!΃ b" g$93˃=w9:#Eqr†ztrᑈKt XOi@:ljo4Tqc3'vu-k|`ѳ5YQQd v&fzP$"7<i8K6o-}dHOD0^9P#)^pȓJ\"i<ҀPL)խ͝ 6WNPt8W""D"X7n d@pw°Uu˧zY!VE-Pϛwj>ǕP>q{ŕHώ+#A]vqqц.@ r6aQZeE (/C`}j)j,kXMX{:k>(dY_ȟM!-D FAP%PI@kKeJU\LHԫqF[Odw/,e7` 4x%RrBRܴmH,Hr0MM-" fRFr_|䇳R^st&Eǹk?X <2~%woݘhs UZFK}& *èGRp:(}7Dvd]7!M]9hNXs;SУ )2qSmffcoQSCf}v-;.uKA´󯶱6M^-'$.8Q$2O%➷<ңҟʔAu?lИ{(D;)W'ij fʨi9qUs{+xn{KHua@b'6M.A1K)lC^:<`y0H)|PPe F;mYqKBG†uZ)ЯIɝPzcV2!J݌m&Vr?8ku&ܾȓ%#jPyI$x?ka*C"s1.^yE>k~]4\@ߐHAH_=`[!w."2}C6L(a *lӮH53"sMïi4bD;+BU JK cQ1?vߩ;qL:8,z"G~| lpK'Eq0B\STeL!A1n5 y9zoyo͛;. endstream endobj 4 0 obj << /Type /XObject /Subtype /Image /Width 430 /Height 430 /BitsPerComponent 8 /ColorSpace 33 0 R /Length 2907 /Filter /FlateDecode >> stream H׉WWq+DCUJ*Agl(n d#$aI0 ]ھ|s"ay{o"RҤaR^H =82G>v43y㙡߅5AX'>8qSn|Gagκ9>a]8a̯~qDX&.]ty?]|?Ͽ/^ u[nߺyTX_N5}ۭ;wn߹}7{Wf&G=qS< ۿnev˔>wrddёFGG?tYu֮3e>=wnC7u񱨋c&''g* kQ*tu/ܞw޽{wݽkޏ{3gD={}gր:+9MVl:#-;Yn>k._s&,d}smMVٚg뾟 Uٲ5[]ׇTѡ}Ej~&Ml1`a5&kl:w.LPI7]f+LfNhzϖ,7]fO7[O6TdJw\?C?>'i{n޶J9xnuT~Z<2N AKhqnz3-٭~Zk#ʑs+vskVClY(G֭vp}i/cЍθW-АĹigmV;?=njuۙ8|nҊ^rLn0[rLv8zni{a`V:;f{֯wn휭#n҃gsmϭpNsܭp{d[疻eعzs[mo#Q߹L8oVͮZ?l2+LV~=[;JuZ=؞.=[[osn^οxr+Q3Utzs]zl.έ_ڋi^ZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJ57??Z?l. $K+PZ\\,*|ԳQwZ˹ReqeummuueueŢkե >"uiʚ/UJf}Prk}`p:󋋫X\R%ԩe`{,[*WZkj݉<VFk#=i9m) UJmzeqͽ_nůrT6~ڃ^lm} e.z6=R\1}kV%Pk5KI?.h7^XV}VV^g7h9I>[+zNKtVڪFٯ_=h^ZY\`m+ކcjZ`,hlٲbz]1> endobj 6 0 obj << /Title (axes.eps) /Creator (Adobe Illustrator\(TM\) 7.0) /Author (Ruth W Chabay) >> endobj 7 0 obj << /Type /Page /Parent 70 0 R /Resources 8 0 R /Contents 9 0 R /Thumb 53 0 R /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 8 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 91 0 R /F3 89 0 R /F4 87 0 R /F5 88 0 R /F7 105 0 R /F8 30 0 R /F9 31 0 R >> /XObject << /Im3 10 0 R >> /ExtGState << /GS1 116 0 R >> /ColorSpace << /Cs10 35 0 R >> >> endobj 9 0 obj << /Length 5132 /Filter /FlateDecode >> stream HWێߧa $.РM$H5 o/%HVV#Z7vj8>|ÛCVEXVUb\q"C<"&oKlCFQT<>ؿy؟e,Spsۙw-m't@飲oPۉIe J=ڑuF%L2eΕ4s2P *\^%,3x¼H%65wzUܔMq:Wnuf9GJdS"`q,-nXnXd1Ov#~+fh`e MBdbs-iŊ0OAȪ-*,<18,"JF"d KG/: 12"T1$*N)kBu?Am;hQ,gˢr;A]]+)(+ |FUΞ'ǖװ~?v<{Qȴc?L;s(-;wP_Xy-]Yw4SF〼lC; 6Iᗫ%hb'Mހ#q귚ҙ1rUώG7'Nxd[v@}s2C}A 3**W.54.э0zAHKJ) ̼E+ Xf c`l׎fW"qBFG)wtt;zN zDG j#<_$̀uJAAV-(pU@a,)KFJD$4B4#7B+#+ W}69nؑ 5%<ފ|\qajC౯IvN3hRgoS"Mejv$S`.4Ș yu D̒@j(B{ΦbKSDS3i" CInȡ\$RU{q%$ab9G=Rz8*EU>)be[kJn/&ץbf@ F6[i/^Y/A:mKnǦq]tq1<4M\񠍟=y~&c ;y]N.;9` ^z>@hj!4#1ךql_ )) |i؊Qj*o8F6To<Y ?2pIy?c~xR:TX5GDE TE!KWU;]Ik{N:$ꎺdW{8k昣:8ՙqvmZ 8LKy2GƼ{l[}h3{ZiuSk@KBOI\Ɉ9_)t^&Jr\x_Y&WV)ZB6`ٖs7*KCxL1 ({Siu/VŌ0L23IyWߙ)<' q}=&32zSUon_ae0,10h#̊'QOO A=dE!R4ֻBe TzJ BFr@4jʹ]=K~8n}]·*YxaKlIE;o$SuzX=i^e#u8dhT3J&}iяL\ +?. ?`+lT QdlgZZh Rrݹ@gCwM )2#5K⧀rP;/2dǃf2by>}r謔7km6Xc2ymk>9]g0Eۥ;gIl7>`NxnTtR~Z/T? &ɟUsk"wX= RAix<|1:iٻ3waQ`[uQYeT#o!?+ nK1RTJADi\ 24'O^lM]W 0\sB%0Rˆ,cg_ռ377Cvqxe^U vjS>R#;n%#7ΔZq4&[r077V} B$t^u'CM4]b0G.ìwҕėO {VGuc<)SjˤCj@b2h V̛'pAFS1Jc^0GtRvGb}|X^?մTks` / *AA^Pыz~bߊ%ǀ/&EY1Yۖߵ5U`4{K2b#@IVp$.Po#B_m+ P^E&4m쳡r bq<:C{Ye BTWS0(m~ѺPLVhzs"{FY*K @l]|]F2 oG7h$ezKSʠKHiAZPv,hՒҐH#&n92r?5Ҧ'a*^Y}˥ܟ[ho׾PClORJs262(GɈzQb>L'IEG+weȹkTS4ZFDD%WŊS;gJHL_BG1*Zv5Ei3rWI {hH(J |P5x..hF6`qZ>|t Hjxl4hO؃:Ydtƪ9w#q^Iۮg tr d5 !5K:{=Ν .&0;X]vdfOUWr3Ry[Pf춒KkPbZQ:ݹ~MwȱTr&q t`Euӳ;7 OTӵ:\WGJPJuo<w'I9Yw?B+7>(j0u6Mg[p ɃBQ) L Kctt((DJAz1L%}kI;薫w4Ul)iUЊ{o WjEJ)le\ ~5kj:雒P#<)f6^۸4y-E)6Bl P?|G r0G^~>VԼi ^( !iDn{~H~ endstream endobj 10 0 obj << /Type /XObject /Subtype /Image /Width 430 /Height 430 /BitsPerComponent 8 /ColorSpace 35 0 R /Length 3282 /Filter /FlateDecode >> stream H엋WWI,ITTҕ.ʺk닢hWvwۭ$/y߽ޙLޙos`Ι9#0#{B²߈HThb>v46{_㱁?5^'>8qSj }GzgΪ9>z]8aZӘ^.]ty\?_|E//^ u[jߺy^_M5y[;wn߹={z}}Ժz};GM-x艵?뻿Y-mIa6Q ַJ[,e]RS疇s֖mGlԹes beU㦥~q_-YX|ߊY[][G^FD"Ԋݸ-[nέP-YVҖZ1]ױ*.]ϭ-/tVY-έnl ,[힢$m!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hm!A[Hmfh+ğ' B b.!&{)ŵmqn1^engմV|UȈ֊r$T˲mqΨ&m2+֣,Jd-l+P[+Wp9`(|mI]Ų.9Viߟ\bkk'gMY|Jon*N!fW5RVN<KKd-?߷;\.}^Y\!\^&{|n+2Y!L^&{RZU(HaBعB!'Jت&m)];y-LvNJLm%g+N yfiy1ڏ;%΃m ][[RT&UmJ˩]>kq;0/m67BզtOYuPhQ.I\-?߷K4J{=V(ҔJ_7֓Tj_+[ >~/dv1&-w-Z๭EZrPЖ)\bӖ!}tBlE[`[Hxm+9_A[yP~f[p;IhǶe)52E@[Bs[eLz|k ߷2s@tі)^J&W֡vٖ)΃s|m!-oj|pJiqͶLQiGil-öm倡-SŚ-C_-(0m} ؖi^ƝzE[eV00i+9̡4VC 3mA߷,9^S=;έ $l h+lh H- #m>-\h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h B-$h BS&0ÆsN `pZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jUVZ%jZ4Urk2g̗`q endstream endobj 11 0 obj << /Type /Page /Parent 70 0 R /Resources 12 0 R /Contents 13 0 R /Thumb 55 0 R /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 12 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 91 0 R /F3 89 0 R /F5 88 0 R /F7 105 0 R /F8 30 0 R /F9 31 0 R >> /ExtGState << /GS1 116 0 R >> >> endobj 13 0 obj << /Length 4368 /Filter /FlateDecode >> stream HWێ}}H4› B`YHAfvnM ש޼sʪ]TE౪.MlTlp>ZߥIZm)jrniYI&^$U?o[NH_*} >/_Amj-2Pj#hz :*J*;H:G6͝qh#԰:2*`|-0\vx+&=(nӤJ⚓c>^<>~zm ʋ.[ NJs@-)]$D:Z0;i1oc2 u&p \D45ɤ5rJB[hE3+u P-'tG5@'y V,*e@SY։x{ڹG" Q hou`IP#F> " p2ҋpgV400wDse_\h]C}V h (E""0,h ecg H @n Ĺ<$+5`PJjH%#B[ĻuGt4zB!慪5N@YJתoԱ-w\JuVR+`'qR/ұe NO :8,GYl/w"ki'цqF&tfDI]7;fQG}T{%QrIBx^ieW/M(@Ed\^ 8@uNƴEf2yW1GTp0CYoFTl^)a_:Wy"K}n)Q1C @怿81}'&iuF 1=IOm>QépQ|&_ptk Q_([+FiYee + +xw[,T/sӟI+iPtGH*vI/EH?:͹XMN/$џ ^}_` "<%_.LET׭em^z;s0ۿb@+݉ eqǏX$(R%䶇X p< XKӉolt[(9 r9$|'h :G@~sk͆ƂO[>x7MHZ(~*-dvdH/%TtP|Y rgb,7[ZixS ڀxfKsU8. Hx ICQu{qI3V/PCJI/ Z3G6 YmhYgaNJh< qAPJږc Nس%ҭi\h8{섗2{1GE9% G"--#e?P /#/ ZSq}F\q,He֜;3aYčA/QHю?w=:zS@ '(=,!JԏhY VyZC鵁A$^kXk8)z6n{mh/CP!PEGXYR$٩K>rdɛll/pH|HogS{ˀ͢KkR6[/ÆZ7R& *0qlZh^nϒov^ FE;PmYu[ZLRq+'S}*DʝUZ̘8?T<:$XЧe9Nν;E_«[~MG|g!&5<'P( 5c(1$)9$\IVHQF6,Ak[ ƚlUK'*EZS ^գ.q Bm;/R}x2NfKntb&j\ÁɳtHST[1pu#dd墩;sʇ ~(]GB! U+$5Oy\Qv%Αԝ . g#uj:^,}BV);Q}[Ô(.Dj[yS\RάV#t > endobj 15 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 91 0 R /F3 89 0 R /F4 87 0 R /F5 88 0 R /F7 105 0 R /F8 30 0 R >> /XObject << /Im4 17 0 R >> /ExtGState << /GS1 116 0 R >> /ColorSpace << /Cs11 37 0 R >> >> endobj 16 0 obj << /Length 3901 /Filter /FlateDecode >> stream HWێ}8" A   ymVZ Inw3|pFdLf1HN݋[=UFvyXdy"EaQhXe ];:>DD~_QEQVJc<|(7L,u'q4h'̓ S9Λ#v f6Kq ѫUTEX4#r sr8JSTnIL2 pK B @~Ԉx (t@T)46Xr,Ja"TN6;F¾ b0&DpU0ۡ94 P/< pt|E$ !@b\0n^$7z>To903ʃƽWr#;bbv Z0\#B>42áQ dFSxFpAf`Yqa;p؆w bzP"+"$rBLVCh1 {rrJIdsK܌%b+Ud&P #g*iQ@exX.xJA/b6jeC%m6ZwvCS7rj/A0~5cj \̪-T2/I%σi[% ɇ/ #8ljc饞rdٹH&k%Ӑ8A|͉vb};qy3=wnyLsO?cUjnZ T y>T%3Ԇ*6-*X2013RnJƨבI,R|,\;m}݃m# k#h<Դq'[&'.ŻCĘwl~sWF*cv$\0i9H ()rHo`Hy)*!q$݃ċ9A=WoLf)keU4lBaK.w7=+] qQ%ξBv: <}{hIoq ~G+vK i/o&LkbN\RDrfSӉ!YvlVLm)&O:|C]tlhUhWaXūySv9ޜжlAFK]"e/ao<&nE@i!qcK6Ib%]DрVff@_:vpWTlqD =-)Jύ1b%ń"\h͹UƜ 3ƙ['7ofSMa0ʡ"<5x$OrIQsQP {BaLSt⽿}%ȩCUvpˡF 4Cb?*ZRc\3@ fTcFsDW oy5,'N(ڌUnECYyňnΛ%dBQ껆H^-3UG'{e/_~-E;LD﫪}glG`% jM-}(]X6u Zhf07= xVF軿[F$0!Ov{ics-Y@G]rD#jC$ ڍ,|WKxi PO rDzYjRU۵>HY AҲXEerBdނlw5MeRxm+K =$m\>Q45!9fŖ^~n4f#żޢ9a$6|ga^:Hzes"zx=ޮ{O2rqN,Q9omW軠"{p КK% ܖ1+4P } f*%Axf7`冢]F+32@Al^:ת] -D&"Q=zLa+{ kz74U HUёyhh''7LD{ۄcS fr1P>+Yˢ)q tm+v|,7RgD8פnU̴.t/4Fy]SҲ~((9S|MPۍFc)*f4sfdK mJAԱ0TLNU)7+Lb'\N{ؘN0ۓffmZCiEZ4k'h;WjGꟋ5eɲ9m9ޭ%J1]$Gun82%Jm86ݽ%>\kG€!V+oD\,إpC'CݩNND*Q#6V+mO)l0'" 3ܷUEu6,fK`qukNV@&zIXt@_qF YGBf<ᨿ/y*R}bNz/6hD7@Q];TKjѫ[_ȮL<MMNv'K> stream H엋{SEGIBTC,X,XuWW\wAlO8bcGygS8yʍOt4~Ϟ>3z9;Ϟ;h\t7/]6\kzo7߸71Y;o}=;;{;wF{v5fqA4-+MKn; m߿m&'LyhƱ>5q3n~?55urqjT3gL>sQ᜛.\xaUE\na]3㪝FUmnޜc̭6mܹ}N'ͽ6ߚiT=xǀejյwUWTVw[,36uMʖջ*ۊeu/ks[,_WQ}]}re1uiUz~lcW[;~WWmEe<mEuݽ}~mٺ.I~Ã\`kO-n;|{kV~Ƨ:a_o~F[a˖i+?[eym[lٿݶ~o_-kw4njֽeLɽ{֋ζ(VC.וe|&-{Žzo%omݲ5j[0{oYc;c{kV/[0ޖ,D-Ɇ5{kֶڲ w[NSaI{w[[û6U1+?ֿ-{+zo3ܭ-[.{o s{k{Vmk: w\6|Jrn[{6ﭝu z,_-_[[!V.5ˊrcOTWUVaDﶸ5I({+{k;@o+7l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R"GǏ_gz7q aiofkȎ-Re߸w"R5}:T -m^K[M^W[ ’GUmŶXm["$ܪ-m͖JmqFzj8mBXTEmVK _}HV'aP[$E[o#k [V\ $y[~֣aB[JЖm)A[J- hoz!'!m-q0-%FV[aU['aV'!m m)15mj˅@7n=&m)A[JЖڲa+ƭrV(m RbmF`[ŸF_*KI߫GX[)hRj3N[J>70??7WճJ֢57?`jJ "TmPS,7VՓ'?ybuUI@m[oTmu\^aJƜey`6ĻBFڪ4jWmF[yp<`x] VxDF[J^Ga=׫ٳJFta:mז],5[jmadUKA@[n 9 SkkylY]njiiy%`'Hޖ߸Fj\u9jF\Kdbj5KhTAFV1-[ͥRRqhTA`[ŸFߴJVVmT*FbsYm!OT-7WKRfTJKK쥕rNdVWןH 2tm]aqie=!TmPS[_[[^sʚ͵r!m[oTmVV\3?W?}EYi+Χ/^<ˤe1^xY6e-LyVY[v1lЖ߸BNB %y[~֣aB[J"lO$OBRbdmakJՖ [$ooz5LhK R-%hKeV m[/$P7n=&H*b+q?LJ$-%F TmPHƭG[Ä-%hK ]V:fvE[vFƭrƶίMbt[$V:NymQmjʯvѯOm>FV*emuJ#t-#TMoܻh+ Cl+I-xR[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%R[J`K l)-%"[0v >!Ee endstream endobj 18 0 obj << /Type /Page /Parent 70 0 R /Resources 19 0 R /Contents 20 0 R /Thumb 59 0 R /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 19 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 91 0 R /F3 89 0 R /F4 87 0 R /F5 88 0 R /F7 105 0 R /F8 30 0 R >> /XObject << /Im5 21 0 R >> /ExtGState << /GS1 116 0 R >> /ColorSpace << /Cs12 39 0 R >> >> endobj 20 0 obj << /Length 5122 /Filter /FlateDecode >> stream HWn}WTHⰪUL22`<-)CQH[$sF[$nus|3=4Y.l] ov797gkMyݒo~M~I%?<+tQeu2y NdU2$M"pE/!yZNz f{10.aݟaA&$Uz/P5B૚mc.}QrAY ؓe~L Z\21ӦMmt=sL˓mJ[!R%!Ddn3SK"&.([Q S:=Uä洩3tn [[qzKu~o%y.~L㉼ OZX+8U%];Q(^,Ex1]eܠ(Y{Qdt\& v"c=M#BչQ%%Da!;W%$y.)<*DL\6$TuUWzej6<#6e5|bTdezЍ-n\Y> td(xK0bTllU^,H,S5oWen(8? <WHL 2R:O4Z>wDJn99‡ۺJj{^9+N<H&9Q9OJۣ"0n /ʡTaCJ}=PP;N{j%nvHHDBד#4\y6xh`1h Ej"2͉B2Mm lBᡠX3Co[հ6zGA-~Ѳ* /~1F#ú c%ڹلǗ^ K Lpg6~[ ppl݂y(;=T bdpJfHXπ|z]Yc1^9rÈ۸61D6)7rxCHB!(RQ ^9=RD܄Efp#ָ1 & 3عkiC7{1 8. Qu5|PR k9*])%K?L{-/]M`x g$ьp1g5]J@_+_.moftWF4fViu`T( Y)P۴)k ~kF6,^4]r*֨΍"սQ֟,y MLW[E,'YͶ<% 񌑶y4Bg(#fDJ;KUNH$(gԬAO&Y-#$?6X j%ۅ42ϔT@/{ZDJ1d &G~0."Ȉˈa ǘFP+}Sa\v_Zh< g>腶- \hUTH4.:,s0t0GoEB]DRX-"9vl ); [BI \] MRVQR=gaR bkSㇽZ֩ *15k?Cb+ZGْGє0>H kA^?.pzE(4ͼtKvopB\43rHaH7&.'{F^%ݶ+_IY.Qcv^V`#h(rMN߸+FV8d0%SvFZƆybkfS̑xv =.Ϭg(ds5)ݪƩHأ&ypf'|OBA 9v שJV %>a 2~蹬)츗PP)=u0(73`z ; g?}VN>n}'WKzkhdؑ I[2UV=4n-Sۄl8:85pBJPʑhM7vK ~UI7aNƟTОZ^%BNTMW[7?B[hqȡ7{V9e  Emɶ0jˑd~H$$T"Y,^y}.F,D-;a 3*9Eu1VcXLгvK ?h /3 ǡV#zXW YYuS7JKYda;sf{ɐfH$$@+S@-`UsG3hGh$)H")$4\/H?܈2E՗}!#kW[J0d> 8GL;5\N6զjg{Y ) Ut<3p/z1 waZdwd0킦W?#/o*LBe=RUnta'*<|.jYi Ȓ.dNm/;N`dA]=0IKRfv۪LW<[v(BnY-q1]!{a6rBp!?oqDQ㱕*l~ѼI\z #{h`o?狐BXp֮9ʇ%Q9IUC?5Ur Q+b12ƌ-o}8 .崁3]8Ed9CmMh2)@|%]M$i*mYT6rÿPqd8  nY1f"av/FY |dޜN'$dʄve>v¦%! CDwԪS[ (X(^EiVݢ*Z$KȄ7%#bzrMgV>-EwK,W,Q"S)B27Jn'D`gJ^iL=͘蝕YXTs#>Dc.Z=V:7w 8たĜMVov=ݺrOA 2jKݭi\b`埊 [MۈvL09x|4%8 !qN5v 걄9n+jJ_d;aHyl=  Qz ĠR7V3|f!Fr1neeRЖxKFvU+W/3^59qS4H,Lh;3 yGmkgh#N-0w# i%8[w؝V9d K|  U%_ v+Iѿ˅RDr^枝LG>^!m̩y-дd ; Ӗ/4tth.ܗ´yQ]ÂVݴ+/ N[EJ]ؚVYmrk{Ųb˳'MCTi]HT}e7D L4A\NۥuLuMg1/3oR Oy+u:Dسosϧ6̷޾x 5 ijg*Dj1wcZ)-|2{TA%@#t<> stream H엋{EH## (n"h.6M얲`n04n%[JoZhwfwv3sN2y&gx΂$kX$٢̭{HܲIҭE^[T/N}]RuY8ՐjOײ-_|u5?k+W\Zװzku[E#-_]ߺk|M׆ 7ll6nڴ6-n㵅նvcչSԮ];wܭk^]O{b^Qܷ_S]GO1kׁ.) Þ>rD#ͪV$bMW*DZ Iw)'Kˋu-[]n]ߓdzԓ-0Ylut~_<[{%]O2ʰtyU}.5sEldՕcK%*jbi~Ь*aKf&k# R]mmt1cŸRty%tcK% *avU,V&'\n-x_`L>J&io[Kpu􇎎*[$S_gߤ[b^[̮:v e|o% ow {-uI`%߷4[ro 8X {+[! ulɽL [*Lf*ek@K-iW<[-˻U>%Ra-N{ߒ-28WboyNI-ŔrD[{țn=K8Y4YI޷B.%'\ny@z~٢go%fQɪ+%*ZQdު~oQl՛t[a"!l() "le-Dn$r&[6ܲIM"le-Dn$r&[6ܲIM"le-T[c\/ٯ_A@nDVt'wBV1@.Tpn =eB3 - MgB"LRdY"`C$[) Z,ep&$¹ iwJ,T. 9; /e.jp|e!Df -#`Et" >[ª(`٢V.ml]k4Gl][d[Ev0"| Ņ[Ț .*K$[%yF +hgBOtRMH7'[DWIsU؄2LB3Z౥2#ɮY5P<_GvU@)KxlU'*hrH#U4+ڤ9e*J&[DWb[U!'`"_YdW^-DՒ5l]E,Hf̓5<5P9XzLXE'\&*.G՘4l]JUڄ2L[dWBe2K̖6ƌez˼M- g+t [>"cm׀FdJblW/T?lŘ?&E&U,rOa$x]f@SV JV؊]% -"Qg΄L*q+&0[q+ T"L0SiCc2jft0#zuϡEASQa'teYb@W7Kxljp#V0jLT%jzweBMjL8؂p F `[5IYd" -9j%dALƤB_Ste lB !ت)2&Eڱ+cb00mF=0[zf$]kT>lDeZjLh؂.؀Fd 4ʄLe]@`b26!QUAAeeXa+l%~Cl%8dA%g 5,d+$-`nBb+Al%kң6-W40fKڌ!{*G ["llD [20Gb 4B-d[8uzʦae/[El!زI%g 5d !3!INo'[6!݄VزKְGm*\o[h`=d̖C6U`C :Nd[zuTP"F^:zb*z-@Ӽzcxh3f,J|Ão刭bECS#V|SK~k#saNJlI Vlhق/:;(~+7El<:u>wW0lG AEhh W Lr[ox1lxȃ7!"[cCÒ,Ely)*lz[lbKR9tkl%b z`nkh͜-lQ^4]̰yQUbryplD3{K\z-@ n](f !V~|[9ŠJ$&'&'.3[K=U,ŕ߫ɚzX-9^ਡe- BLgB tZS]=衢)1nBX%[73S<$ZkAQְGm*h]EyfG[z@=0[zf$#ƕi')-=j>l]WiM}=QLő-IeeOz粀-'1 =PTe]|C#`$KDU%G-18[צ8ZDVbCuc:?=u xز-*bp 0|X}׿}lgM?&f}-;ъ[;w޽+)YFK5331e+ ,\=p& j3kFZ/;}zbA0$[ymAݻgv۶ I` X Ѓ.v,~OI:T$-qY'/كEMFŭqu}R'-q˝ާF߭lgn-nѷg;4(r'y<ers5:зs˝|g/F=ŭ2:YY}K{d2]o[3,=0մt1g}bw-9k1 ly}K{rMt-r9βW_зgayu)[6N|zz>wVߞܲp4dj˔n Kږ9d%$!q˝',3U3-whfƶnSc2@n1A`u?z`6r Xc[&]n p зgar[mS-=7!&/:[\иN*M;?3c[k7ܩ1Yn pdb=0,-.l[LPe[3XXx?ebAWkt \їPn-.hr ˌm vڟԘ, [Le21Xؖ|[6-&(ܲy-FFX,x,n2@n1AVq[Ԡt`FM+5sK(N4nSeƶJ?z`O wjL[-&2n~GFnKcld-nټ ##,<^On p-~jPe#&ĕ9d%['r ܩ}2c[i=0r'x`flk;5&-nL V|?f#1e2 r l}K{  [' [LU?5(2؃~Jz͜nk2ʭ[>ai=0r'xX}C!] mw=ar(I[ 5+'؅FnaJ5+' eGn[f夰ܢ6+'m^>Sł@,XO k[0+lWKY9XmaFG) & +ΘŗVI;VI[;Oܹ6_B vr>!S/ͭ6snuҬt+s 11:jVNZrF6rYi5+' %ɭvʭN66|,|#:,|z`VN]-qfمnxJkI7CT'7a͒\OYή5} է WY]pU'd]+bܻ*壻òte= VӲJ]5[KmY߮խv벼߮UQ _ޗ1䫼Nu,T35BUqjZC $#3HZ*-WFVY$R\1;2-W?7d풫f{>[*k IKRY[IVvTڅFn(Me$ zen7I֞P[XuҐ{_PnJ ֎*94pTYIߚqKe >[*rUi`4'J-W{-WՁRY jDl։o݅Fnnۅnmx*+0[ R-`.+TʭTY oB&g[* HlʂڹVn3hAj2 6rKe:Y]XTϿ]PT!1ڭwCcRYImPY~?Жh j ńbBm1P[L-&j ńbBm1P[L-&j ńbµ%8P[Ldm h8X endstream endobj 22 0 obj << /Type /Page /Parent 70 0 R /Resources 23 0 R /Contents 24 0 R /Thumb 61 0 R /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 23 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 91 0 R /F3 89 0 R /F4 87 0 R /F5 88 0 R /F7 105 0 R /F8 30 0 R >> /XObject << /Im6 25 0 R >> /ExtGState << /GS1 116 0 R >> /ColorSpace << /Cs13 41 0 R >> >> endobj 24 0 obj << /Length 3942 /Filter /FlateDecode >> stream HWnS%Z\tE]h5XĽ%fBEIVO? %:vM"9>|W%1\ݾ*(sUđ-RS6ryë Wk(\--Oa%?E1\Qa;i7'<`-t@n v˱ gDE HR!(«**;^3WUQi8KƑ)$f]=Mh|߰"IT,liI:|t/|K|~}8 z-c+Jpb<-tz*S&Q`^UQj,q^(/bƁiJݎ6>AR4fËCXDYq CX"1)q7e!#+ $H mنI׬Yt.HsCYP^Te\I\\*ǶR"rC2?.U`PRzYFgxTB :@-dx(C[l7',".{^Xن6"Swpӭ75esy.AV%&d1tC GK{*L="OdTH?4 شoltPP@Pq5^VbڮTԖDM=`36"ᜥ(Cs[&Ob "E$&pЇqq" [6]۰<6[ꞤHh'1,tYSmlE/RQy9J@S Pńj1ޒAҍQ WC6|JdF+drB?@%Gx9.䩂7#媫b⟜Q'"HjF-qp,0*Wե׾YNȜG꫈!I@On K,G5: !c2;-x=fpȓeoSCM+ 2?S%Y:gI\ Jy)ê|XMD^w8T^}ˌ8h^'f96O9"*Bs=w;QH5;s䉺nYJZX 4rqï).F䗦 $h097VG}S:e\}g뗤0p1J*犩)1bha(B- ^ϰ7ќA=sψy* 3E_̟Sd͎+1U-LfkU\rPAxz#b2-QqC5e֋܅Re#"da Y) [=5Qkɡ[͛TI PՕq̻OD'3_!05ёx,._Q3D0uK07;]\]I*K±61"GjAiHkF5$`OZ<)C{_T''\t_| _B}܎!G.X)*8RnjfBTodwL2ireӛۣIlk2[nyDi!ueֳ>gAV }[-/E>oYi60di u9i "/ m/߅lr mG{s<;}w~gm-Zl}KiO}k8}shM^M/[Gq _CJb<)\ǣWLq+vlZlPIi\z".OvtVԧ\-\@ a|n0myȨff8?2&УpDot*Ebf1=~^,Q͞M'?!k]7G-*՟_ZIGQz3YΈ֌K4)Nr?2ȳgM؋ ݆-"9]QV砅[p2u`}Z oA}v.LZ4)+%?(֋C̍rSAԔ ey|Pzbṙ'}1>E.E;/ZN\zWb`.\B7cۯk^ޘ~7P?_WQz#O=gQjdI"eпhFe)d;uC^8Q'' >q, ;9彬RM46C프7,@M`.5ӥ[Ĉ 8[hw&{t6:Ėg'4SPC vG+9P٭؇Yw[^6/U:D^^`'nK$X@IW$BQ?#Y\*ݷ?#%w endstream endobj 25 0 obj << /Type /XObject /Subtype /Image /Width 430 /Height 430 /BitsPerComponent 8 /ColorSpace 41 0 R /Length 7339 /Filter /FlateDecode >> stream H엉{3 e;! \sDZbr@BRzQ :1)rZ`J+iu[x[nںZ';uffwV؝/#ed/|l2B[<@WKJ5WTY@>YͲZ[[ZZZ[Z[[[FW{ۣ폑sݻvz :xFN+juPVnY>CGu1YOsޞ^Y'e;%봬g@g83쀨Ή:¹ ]@օשiypyGw_2^ͭ/jyI_zyxmfۣmj%]ǵ P=EjO瞽RO}%ի]uS3R=3 ճgq %Ο= tYF""Z6&9풳E!9 0վzou :[TGy |%K[Y]EE 4yXJtVM|@oTzSߢjRx'Ep.Y"΂UﭝdaTYzcDg{[~}:[Y[ǩԼu@Rw5qyk,:K[`QEkWd|`oy<^V9<wnmpnyT#Ix_jZW~"H @q]vdskcsK-wZKݟz"Y^ ; -wnin7JoaPY--zS$--x"=U2ysksKGi)uܒaoy|Os3,YR%"ނEL-wnmxnm[ۈĹT-_ț;[\^%L-wn-)68{kqw/= 8J"Y;:ji徥-,(-or[>jجHw6&'˽o{nmVJoA$w]%9˝[ZEX[tnjj-wnenGxfnAskFh(NQWfKJriYI.-+ɥe%$Ҳ\ZVKJriYI.-+ɥe%$daZ;0\u{κ CeaZ8Y& Yk/޿ʺdmZW-{Wn1kBJ\/mm1BոI?Yź%dyZW`2k` nHGY"Ɠu?:bЯ>!dZhD?ɺ!dZ˰~3 -t-hI.Ǭ;G%{ [E#0e˰aZbL OCB[?uߞa6 #t ?a&6Ƨ~:,l؇o-{ jsMmlDK҈_[];eCB薜 qdɖ lgWdC{B7?!~6I6Чngsd[Zhd4l6K ]#v6AvP+pOٰlM Sktu?i!46{yP8E5.ٝ ksi('bh25ζ lwVx"f3x,˳nP@ }W޽ncĝɉ L,ƇX7YNn-{kbXw`L˺Ar->^00Ӭ(aCIs(B#Dw#K`ݛwpMNfX"Q1̮*`.b.&B2YK\xnND e&&QsFnuk,Z'2I1-YIK Vuk,Z*B-BA>Y j8T!U(pqB*% 9^ΣdCP*ʇ"qP.˾Vigxp  Z"=y3Υ 2spiU .q+dְҪt2-fYw.V lyri(o֫KKMf .-u᫗†h/ǰM6v bP|i\Z(D{Y\i~THlaˋReP1+DR1dÈyevZ<e 27Ryq,[a,W/3zX_ԈAy†ii#WLiLq2)WKb-C`*֜\ ;Z( ? MHޮ!2j*ha6ZRyaQ cEBve2o lOC3G`IF 9nӰ<_ֹ*h'el7@t~Ih#pQKfhO Y͗K:?JK"aCgœ7pT#ʞ9-s!LEcMHoWAiᰡrc^*~&LҞM lDjU¿t~0KZJ#$yϢ:qبUsW-4*b_FJhIGepI|:AwcB nW54ޚXQ|4GB#Zpj2Qu |< UcLhK䚣boXᒱxR>b;Z\$yoL B5)l@oFҢbD}YA/kYU2uB6 Bdj}m UJ kܳIuVR|ބ!XZ2e6R( 'j*n@7CzZ|4N ~Z, h//涍3 DٲyF<w0׹:f^iȩ5|: Z"Ķ_ꠠhe +=ppq|l}MrW'>WBDR hAna5ZJV_wqk>6VAr%4Q_%ZK1:-[L'YCndFҩ5f^yh**mBK .lHv([o1(+g`R0ӚZseKݸ+\ n @Zn-@}jp4~n_e{ù`hEZrKEa;[\*wRh,\̼ XE\fkh5C^Uhoht0n$i֯Dkfk$g䯗#\ u}Q-(ZNht}v/{m_igL}-1 պ];x{~}mq@i}GU+@Zk{s .&a-Q3عM{jQcl<&UNiτ৵hmdpW9|ZǃJ_` Vbo\ܷs&X큙X { y^gu [y"ՋUKEgVV3p;{W\[9чd.^ ߷wDXC[3u5~5fEKEnlڕ~wŐ=DXe4Kk#jFl Kz2z?4 m2ȴĈub`l .(.)PX溕 >N'KrA>_`JV>x?U`lV"kFBRmV\.z> hSr[axƧ'_57^K3'[U)`ꠔO#7M@Kl9ğnό}le#)M|d7H֌,[%-"ZYFJ]ViJN/SUxdLD4fKvnVn"Z)Vb'94[ݩR(4x-X~HъU:+T; H >&2%#EFK(]JiACk#um$7[^hh-E,7[^hhEɦlelQ4-0>Vlq{iU+ i-e~m%UOZNiUKzٺ㶒U)Y2:[VmŨU,[n+F=JIZS +VOkmŨU)[Cmf+ӪVܶzZ e[Vl{ZR׭EOژmQOJsqӪRf+U)IFۈVflqqӪnMiU(IumUOBgq"($$- ό KO*nQe~gx`ex`e<[53Yk*ew֋ZxJmYkfGFkqg8Vl>[֚>3GF#k^qd8}k^ߪ}|kz' ={ʼnB[r&=ZVދZKUoZ="`HU~V*"VպfX+VcY^7Dd/XZ$"HEb-kXZ$"HEb-kXZ$"HEb-kXZ$"HEb-kXZ$"HEb-kXZ$`-֓0_wRe endstream endobj 26 0 obj << /Type /Page /Parent 70 0 R /Resources 27 0 R /Contents 28 0 R /Thumb 63 0 R /MediaBox [ 0 0 612 792 ] /CropBox [ 0 0 612 792 ] /Rotate 0 >> endobj 27 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 91 0 R /F3 89 0 R /F5 88 0 R /F8 30 0 R >> /XObject << /Im7 29 0 R >> /ExtGState << /GS1 116 0 R >> /ColorSpace << /Cs14 43 0 R >> >> endobj 28 0 obj << /Length 1305 /Filter /FlateDecode >> stream HVn6)x$HI-v؞==ȲdV⸗>Dұ- Xq~w{+XIeE?xk#r[,tf}abد?i>¢ſc"+g,/P]y^޼GQyI>Lˍ;rRda=+@+vxaR,~;Qg% * eDmV5K7`7*>gU^kv#E덏~TxRgN>zGY٨ԱL^:bVio ,zaG sM'<2xle[)ߢP9ke!A+eW+x(2) a=SSy4"g"|I*(.dB;Ùv1r%R.:"EUN3fze ^#FG@r /ݵ& E땎Bl$]^+*iG(yU bb8(Ž_|ii),V ڰH4Qj ^R7XE8$y楁PPP4-숑sVvXM7Y2r[}E0nuEazFע+p#cdE/ੈ_]BWX4vK@CCO`CB}bCXvD@T1{6m0:n@58֍=  3&؅$,{716EUql>N>u{A^H[Y̞r@Dfk '&j׋ȉ}'1L"},L;]g8kNzc/g9EZ!b ZSjl'|YMh qbqhZQxآ7ӫrWv"f\N̲ΨRfLӵ.KvqZ#96UC0^5xuy҂HS -&@`#fݥ#>\$n`G`C;vh0J CxǍ5E'Fa£ qܰ%CdC`4rG- "-b-+{h=DfohV $vQ>/pO>\I%{V;.>\w֢&x-m} endstream endobj 29 0 obj << /Type /XObject /Subtype /Image /Width 430 /Height 430 /BitsPerComponent 8 /ColorSpace 43 0 R /Length 6611 /Filter /FlateDecode >> stream H엋DZ6"q5q!u[0C ҦMҴMZ>KVR>nN:3]igzH|gfLLjp% ^Hx\ ֑a1-rFtGi6ޜm:߄|ͷN~u}ݒ욑OĬ9s'M,,Xϩŷii<{"Ϟz\ZZE+++++LL\qY=kkkWTH G! %|U&{w]{&6L t::g JRteEd cx,*օal]?,-I 蒜4ᩴ[yjoh4$YϭFϭsq(==!_$zO#[|4 ?*έ|nϴ[w-a <¤hn VŹ5ĭH`Qʲ[hp}uDq)FSF|Uϭs+[iȭ-=09cǵw1?*ϭanEp[&5Fl鹥l`F/~nU[ؒ5Ds 5C=MYeson uDQִ1͖[Elnel%-=[9Vv}k[GMDpF޹&}pn׭E7֌z Y y:ߪ8'b*"ЈtIsܚ1­iM(ljΖ[ll!"[UFhFuQ6w˥n-»Rx\ Kr)[.w˥n-»Rx\ Kr)[.w˥n-"[?|r3kj=[|GGo5![>/3:Tnɮ5-^/dZPG+ in跁wk |gn0xAVœaвQly8B%w6ouy-zQ]1ץ"4]6ԦZEV7fKeQm5Y\lE \+^,z]-]PP/^[]&-TnhPQwB,uצZ̭-]1.͂-ekM\l҉V 2n[An *dʖL !Ka|uEbc SK OuS6Elli%&fKeQڭ8p^uRQx[m^%]P;PO^q= -Tvf,u׮:, Et^Myg:}e+l\K;!;[$[nm% [9GNL35[=*&)ڭv4Vf4z-׎HT,AV%L:Xɒ-.K갱UN&: |0P=*$/{ ;!IFsʫAY zl.[ٯb G%&2|uM;ۘWf`NG_Ye?[=ג-NΖ#[[ 6V{Qy5>d-:L~ʫmv+;z;^˵#l8կ#KPf Sμ&o$w-:ll}C'$_5!~ʫ% NHfܣj}Pj-q5[gVz{k؂QI aƇ _]έ6/մx6XlWֻVϵaHrEV Þ{T^nd4Sߣjb" lg+NchzNr[-Dkl~59Q863 ? c7ݰLs]  ˒Rn-NvUY:eblj-oXb˳-ۇ߸ 6![#ߚ-&dg˓b V,r󎪫!'[8Ӳ6v+p|7ӺlțFOzMד߀l X*Zo~ p=`+dc7n&BM!XGՊ|2dBIvUW,)V>tUޑ#ңeyM9=xs.僆p3npZHXrozIsuS`9yGq-iZG`ZV>Ƣc߷y鵦t:ޛ'G"jZ|Z]Rh,M߷l\mfa k[\l9o'WάİՏ􀭐-6qrcf]v}}][&BM!X}GY\MfgVR+AcȐ a&eڍwb^2vvʿAYR|?/vv{u}Y}ZlE|lwdEKКEM"g)\~[Q2bC|ru ro%lm7WCN\cﭨK!Lg['*dWm3T8+Fzƺl/7tLExU[_}zeo&ܬʬK՛կʾb V,r}guuu 4.j(2.pp3-YwͥRpWlQ=ئnxynNZmvMߔ~jFMׂLd\.׳ůKGyvuq^ `lz)>`)4[ʦįچIMYoʿ/oXb˅~5WpP-nn?B6ʮd,}Q%[!&GW 1dȄ02mUԿ]xxC<4K0f;y{ي*NȺ=b+=jZFz<>AӃ7{+R>h7}@uu_/wӺFzƺl|kЛ-O-[; lLf;۴ڭu4NV5"o=kOq4_O~B5`lj-oXb˳-ۇ߸ 6!']ϒ2:/]:7]=:Ԅ{oE] .ZںSl'Y.SЛИs%Keԭ>_]fL;o(]'٦ a`jٰudi\bwz?YԮS jYڮק6-!]N]2lF{vU'!60)m"KuRgIjY.lE6]ZA F5ZcﭨK ݾ5ETjYediބj+YڮlA4%K,rUôvEev+V`j7l,mMz[RMƱB5_Bn4-!qק V؀-!+tCMX#jYAcȐ kA!qϒ2%dvlEuwlZDYe]Ԥ\cﭨKyhY] LzVބG;>ԭα!d=qP0vVibWشڭؒ5xcwwl[Ȫ _,4[5  wK2jnO%dJ!&,BV+Ɛ!A!Y1%e,Y-d!F 4[,L wKȂwVHp6x4 PȂ'eYlE)[Bc.,Vԕֱb+%dqu ߄Bc`:Bg'/_%2V/0[^%J4RoixMhƱG$s <_?B]^d l/Pn?[R.S[>S[>S[>S[>S[>S[>S[>S[>S[>SnIQO5)o2jT4m6 endstream endobj 30 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 260 320 380 520 520 900 740 220 440 440 500 520 260 240 260 580 520 520 520 520 520 520 520 520 520 520 260 260 520 520 520 400 820 660 640 680 740 620 540 740 820 360 340 660 620 880 760 820 580 800 660 520 660 780 640 900 740 520 600 440 260 440 520 500 360 480 560 460 580 500 320 520 600 280 260 520 280 860 600 560 580 560 400 360 320 580 420 640 520 420 420 280 260 280 520 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 260 520 520 260 260 260 260 260 740 260 260 260 260 260 260 260 520 260 260 260 580 ] /Encoding /WinAnsiEncoding /BaseFont /OBFIKP+NewBaskerville-Roman /FontDescriptor 93 0 R >> endobj 31 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 250 333 408 500 500 833 778 180 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 500 500 250 250 250 250 250 760 250 250 250 250 250 250 250 564 250 250 250 500 ] /Encoding /WinAnsiEncoding /BaseFont /OBFNAI+Times-Roman /FontDescriptor 45 0 R >> endobj 32 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 556 556 278 278 278 278 278 737 278 278 278 278 278 278 278 584 278 278 278 556 ] /Encoding /WinAnsiEncoding /BaseFont /OBFNGO+Helvetica /FontDescriptor 47 0 R >> endobj 33 0 obj [ /Indexed /DeviceRGB 123 34 0 R ] endobj 34 0 obj << /Length 263 /Filter /FlateDecode >> stream Hбq@? 2 2Ȥ g"3 Τ:|fݝ73x<9CNjyj١^ONp,z--KS:<+gfkkz,v]>*\'"u!D5IG3$&l].YQ7uue&ufT?QثNΝ4MMPz禶RJ!,7Z `}#ܠ-X? J!?VZ)nXl endstream endobj 35 0 obj [ /Indexed /DeviceRGB 134 36 0 R ] endobj 36 0 obj << /Length 282 /Filter /FlateDecode >> stream H!r@?W.8Ku8p%7ؽ$7Hoֵ7|8ǣŨ՚+TSHjZ czRg2{V^F6kk6lv . vΣ y}ԛѨ:ލct2Z;[]:]z]N^N^ƠU$-c( RPceVC1)v+#!/MXOS~o `~)>2+l @n<_s endstream endobj 37 0 obj [ /Indexed /DeviceRGB 122 38 0 R ] endobj 38 0 obj << /Length 263 /Filter /FlateDecode >> stream H!v@EkÁ :p%\pd3;du9\y<ϺkD-531o0;-< 𘗞Yy:6AFļlAE$"j'ʤH::&UN'չӹեӥtutU{56Җl4 CYZ{熪< )Be| p"$h}%=tNoQ endstream endobj 39 0 obj [ /Indexed /DeviceRGB 214 40 0 R ] endobj 40 0 obj << /Length 433 /Filter /FlateDecode >> stream H/0GqG]X׸ZG]qqq[ťr\Voq;s$'^n23pߛ~(-/h6H+,,Ve+%;b+#tT<'ub4=I%ȼ;^N֞Kѡ"ȦdT:l^~)AvAj ^^y r4(geFXhVȉ 4UUE쬝9sBq /a(a1$zbdP"mn_?=W oJXKww\'id93~` cMОI"%qDX,1g8-iHuoIIZr4pɑVOn CRѫa > stream H!{@@+\#nqqԁ;sswu&|F켝,ˮRT! 湖F ky`DkYZV^,/J숝$NJ#WFi$xٶRtRdAtrCTzQReQ˳JVXI65 w%dʾGWn,ˈ<1:s. ê$MdTQD(r(ȷLߜ45ܯܮXY3|aRDO!N t%=8( 87f`kM0?p׬{?a 0 qLIc e@qЏ 4;ܸP endstream endobj 43 0 obj [ /Indexed /DeviceRGB 191 44 0 R ] endobj 44 0 obj << /Length 392 /Filter /FlateDecode >> stream H!1EKXfifYy,f3 [(@&`bfiU_49WJ7'!geɋ祓y`eTj`Q]GA6MJgR5Jc"ed>ɾ6ɫ嗒-[CCw%˱1˩iRb\rčF6i8m:x?1FϐR1. .ۃ۝bMq:?v-}K?7u4#û:!NY;7Ћ=^*&:0 0a'r0hYmMLu،RWu5غȝ돍t-hF{u=6v `LǙ%[i 0c endstream endobj 45 0 obj << /Type /FontDescriptor /Ascent 699 /CapHeight 662 /Descent -217 /Flags 34 /FontBBox [ -168 -218 1000 898 ] /FontName /OBFNAI+Times-Roman /ItalicAngle 0 /StemV 84 /XHeight 450 /CharSet (/f/period/r/space/h/seven/s/a/i/t/j/T/u/one/nine/O/g/two/m/b/three/o/d/c\ /R/l/N/four/e/n/q) /FontFile3 46 0 R >> endobj 46 0 obj << /Filter /FlateDecode /Length 3121 /Subtype /Type1C >> stream HL Pgǻ{PwHmn1( afpavQsT.EX(⪫#DIVr|GTU~~W9;a8ӟ.\20s&!uZN ϑ8LK8IBpQi;( ]gǎwWZ6vxy͜HWoؘ&~7E;w!3}MWe%hRmNǤ%Od1lbXBj GQEu#c41$Q(.Wkui) bR1F?CTu:FNHm?p0W sS`c0Ű86 fcBl sDy0F`uqC<)i=z+vb<'.*$..Q.wGxT*@cFa-j4z}RBS]PS2pP?Sw kЂTu|k2o6p*0$WH5=8xtSJ,7'r?"Nu7 3o{͚<5DtU7?h#P P/ :h^@nj$'TW@CK& * OJuxOPZq% a@ W>a R{bU)RM9@8LfqnN>e}.Լ3Z󙠒p08)i) ۦBDy 堥t-0mvBao\p +YqjHp9z9/;f HHg+!Ѡ,J4W6DYH hbFP b2H!phsNlcb-U(|tkQ=IEւ@ֱ n7`ηb!@Fl~툔1{/bƣK|v*(7ۤ;CvPZ+vtQTark6O&(&Ӽ˥OSdn-KG[hWFS7$sNB5<@뙂|5 jӯr]P\]Q[]kZƿWo[įg'lĮKێJ;vTq;uc0z*Ndӽ \}ylD Jt$M9+`uh6.& A;""F(ee)A#jzC4Eϒ@[.fjee镛Z<,*Qc+8yʕC_y.BQd'0>5 Y S`sݝ璖 m;[%M_ͪi âiӉ[:{ޘMM $q#Č٤#B  mV A`P+d8,\s029?>y>KBlNv;t͹ 2Cv1_ýuBf p mSk0I"Lw[%NcRơphnbbiEzqCO8?YLqs;?3$ &X7 I٨G6~j:)X2qmgX3HxƦNeH쒸,U!P,X߹r 8xԸyGOa{'QjԧrI.إbC6oJ"5h<1`Uk-B@1'dt|Gy"AR^MSy< ['2zsB~8$m} gpiUȮ>\( Ocj5(oCwʴod f̺dzۂvhyֈM+^ eB[gXx8;?mg|(_`Vo {k>D? NHl&*s8#Wq:n/Ǚm 1bv1&iPÐf@ >wqJ?y>g߆W% endstream endobj 47 0 obj << /Type /FontDescriptor /Ascent 718 /CapHeight 718 /Descent -207 /Flags 32 /FontBBox [ -166 -225 1000 931 ] /FontName /OBFNGO+Helvetica /ItalicAngle 0 /StemV 88 /XHeight 523 /CharSet (/x/y/z) /FontFile3 48 0 R >> endobj 48 0 obj << /Filter /FlateDecode /Length 486 /Subtype /Type1C >> stream Hbd`ab`ddwrsH)K-LN Zf!Cqz G_5Y0h'ovlV+]\9A^]xC̩3N=ǿ۟nϡ}U?$Gv*;_żI~g5ir`[\):c"?DE I endstream endobj 49 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 67 0 R /BitsPerComponent 8 /Length 50 0 R >> stream 8;Z]"99OoM'LaHL%NO^]S*9gTR>fcl7Vp'VgBf9O.m2a`r6j\$;5Fk"h>>(0#]Znf &OP(2G[/fo"'Wj@<833Pnu)FD=rD`sr'Z>4dn1tb2*KNY[tP-s )j/ScHm0dug)7e!>Irp`hkQ\##(rp?<:/?cOU;Z#. Gr\L-Zk+ci-u23s?_KDnrSV<+`)HG?SF9j/%o::)qk\M&phc_ii*Kqn&"95Uer8g,t@Z;A)aEcqbkmD'bb5HrQ(Rt<:c X\L#?lWVhR97\t;&7[.Lj!u,o[#-Z-/]%cZ6CD03l6WAGNl9:ae^=L^bg$oKGqF?Q O*Ht$@P5Mo)2$C9L+j>%#JW7\\s?NYl2)(H>_LjbI3BKV,4LKSqnn#PeK\r J1H0ERDEQ&GN*6MN=l'jK72mDq4bg@Meh#/Sm7(f:[WGekN;\%&GH>c9HSVZ%B7^;ImePm!;[[[ci~> endstream endobj 52 0 obj 445 endobj 53 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 67 0 R /BitsPerComponent 8 /Length 54 0 R >> stream 8;Z\79,<.&$tSCYPrJ+?HB?u2fBMmj;LnhAKV3J;pCqS6#mm^62b&QWB"Nle^1p-Q )NPH4Z7t7#dE6Yh^/j#P%G6Ui#?''=%@;V9"C0WQU5$+F1;K"QsG,jC?+aV>o@YM&C , endstream endobj 54 0 obj 400 endobj 55 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 67 0 R /BitsPerComponent 8 /Length 56 0 R >> stream 8;Z]"@1L-s%#+N+q]E#n;&Nd_!g`4>l`r0H`/)Zbcr%s`i11Frp,%5)X2Y2!)T/fu PIQPTp;jK-7.brfB-\#I(GeMr]/&Vp/8;L6GHo28nM0+QhWi@oTQm$0j^b;LE.h'E #-=+aLL>Hcc=:jqc*o$A-(g9$H$NNGKET&kb?aLC=XX\iP]WtM0%d$2aX,CBXm0(< H]4sTFsZZ6kl>;dK4,t+,_Y7D&G%IDJ>;S42364nSu1\s=rRfZII(U^hSli?dRgAm ;Rt9(7J"ha3NG"F@0*Z85i1sl+F=:Qr>nP<=#_YXmsTeJ(?pppAubj?n$!D$/g%&J 3*TJoeiC9melGp$S(%-%i?@_0!8lE[#6~> endstream endobj 56 0 obj 364 endobj 57 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 67 0 R /BitsPerComponent 8 /Length 58 0 R >> stream 8;Z]!9+HP-&;H%;-6t-u.p(SX*@oJ'?040tO$:@f1GCD5iAVCLc.@Flm;r>'8QSb' _q4L(?8iKr`"eYl7I:eZCmjq\e:E:3+gsdX]3nan7:a?(b!fd=5qkKJBG4!@j8[KK /ZP^\njO:MPq%NeW'T[gdPhc'/Hpa-*(.;\#qIgF(K1a-AJBk85[.8!bg8VigGM*c 7TW87SK9KDYb8K%lL-L:-q3OO8]jc@EfLm&ASpmDhTAJo[T-OShbV]YcXqS.\AIGN 45V4B/@%9=^<:D4?Sp?a+k;Xp;LX$@fGq/==*furd9bIQ4h9I'F_1)=HkonApqlnNe_6;DNl*mVK] ;tqCIbJWt+H'L!Oq`M3X:Rr,npAd%B99]~> endstream endobj 58 0 obj 431 endobj 59 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 67 0 R /BitsPerComponent 8 /Length 60 0 R >> stream 8;Z\7;6GNo&2\*7@_tXq4^R\CHB`WIhT,M4SJSNOZ9ibt'hm@rN2U`dfj,A.bSOp4 0FZ-eH/)HF#r%SF]hu]?JkFn[:8\<\,$j-)+-$mX&1>pk1'M79=BJlJ/XeTNfZiC5 kE-8,]>c7N;T^'SjNh`!)j4W*H8K8R.>LVr.%1KubA.(=FoZ,LAZ<0Nm*'-M'5g!O P]@Qj[3CQ*d(r+c*-q\sj%D(f0Yfq%piIOmM=J*CnM6+hj5']PpY.f?/tsMXrQRia#>i=/#c03A9t9GW$.S#OKN8Xal1ZuW_V.\E,B_4i8JeVAT^/\7AjBK SB%\FS?1TNf.2S0FBlRinH,uAlJg;ERE+*0['$u&P4dr(AXW_Nl09eSX0+,NJ]^*p C9aqGS<9:?Z5;N.Z2;\R+J1],dI#q.iJ]),V:I#]UCd7bA13"R,>qTJGS:>^\1Ig3 V2!A+>*YLp!J4.`j^.ZP*UM^oA:j:[7ts[1^1/"^m!)(hURsth\sqD=Z>s!K<4kW5 YZDX.-NZ;a>>)Fpo0ji%#6=7aD/B~> endstream endobj 60 0 obj 558 endobj 61 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 67 0 R /BitsPerComponent 8 /Length 62 0 R >> stream 8;Z\7bDh-.&4O3O,U=IPgf$8T/S1c8m9g;n27ZCB$O5W/n.uVD,Opp>'$0Zko.`/= M:U'sh=P\l/utiY#Vj!T_f0/ES%44)I&dDs6Asg\'%e([`.jq2A:ch"`L8=RcAr,8 dPrsoI@"$i0>Su s#r'N[44^IOB=fr9J3(%:[iWVj?+2$[3\W<.4WSOm['1W^/+5B:g:.i2Nd`cElaWh0Z+#RneR X!ie`L('#M,(78W,l?JK&uAJH!j+=$!U;.q:gS22!9A IPG+b endstream endobj 62 0 obj 552 endobj 63 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Width 76 /Height 99 /ColorSpace 67 0 R /BitsPerComponent 8 /Length 64 0 R >> stream 8;Z\u3t?ls&4F"E.2E79,`4kIPNE?=#%\^FK^6Rm%Z^<4&aKRobZg'g>R]Yt"apo) KpGes]Y9oupsg+')lc8fnE]Gdb )fW@+?AW^Q+d]`4g/n!<97DnpYH'fk0&mmDE5/CsN;S-)&aB77H)a`I^)l16+A#qT qB#b=zz!.W+-!-J/,U&~> endstream endobj 64 0 obj 285 endobj 65 0 obj 481 endobj 66 0 obj << /Filter [ /ASCII85Decode /LZWDecode ] /Length 65 0 R >> stream J,g]g+e/h_!_gCtO=0f)$P%cIi8Zdfc5&3j_8$7g.@L`YKUJNGBP\poR=_;Dl'P(T (7Boo^^S:71(MN]ZQX/+Cbu.lK"p74pe1T%s.DY%&\1TdJhr54.M9au6>79n6`Q:4 PbLSZTLEE(8E@'*1mg_*eTnN*;*'V3+gm-EEetX%;Bo$ur2ss*N`.-!.kG_q6GDD' dKoL!8Ka#EV,@V!\j8ZFbp6EE<9cn=N6j0nf;(&;QU6bUD')c@\ 9-d\DA=cZ0Q>gIM$$;cd2O@&a;X,Nn_aP(]I1aRc(K1^ue> gF/(+GaKo$qneLWDrQ#;5\S(\$q'4Q,85`-8;S(=Z"WSBOV*FM)4,?B],R endstream endobj 67 0 obj [ /Indexed /DeviceRGB 255 66 0 R ] endobj 68 0 obj << /S /D >> endobj 69 0 obj << /Nums [ 0 68 0 R ] >> endobj 70 0 obj << /Type /Pages /Kids [ 84 0 R 1 0 R 7 0 R 11 0 R 14 0 R 18 0 R 22 0 R 26 0 R ] /Count 8 >> endobj 71 0 obj << /Dt (D:20020415154943) /JTM (Distiller) >> endobj 72 0 obj /This endobj 73 0 obj << /CP (Distiller) /Fi 72 0 R >> endobj 74 0 obj << /R [ 600 600 ] >> endobj 75 0 obj << /JTF 0 /MB [ 0 0 612 792 ] /R 74 0 R /W [ 0 7 ] >> endobj 76 0 obj << /Fi [ 73 0 R ] /P [ 75 0 R ] >> endobj 77 0 obj << /Dm [ 612 792 612 792 ] >> endobj 78 0 obj << /Me 77 0 R >> endobj 79 0 obj << /D [ 76 0 R ] /MS 78 0 R /Type /JobTicketContents >> endobj 80 0 obj << /A [ 71 0 R ] /Cn [ 79 0 R ] /V 1.10001 >> endobj 81 0 obj << /CreationDate (D:20020415154943) /Producer (Acrobat Distiller 4.05 for Windows) /Author (Bruce Sherwood) /Creator (Pscript.dll Version 5.0) /Title (Acrobat Distiller, Job 2) /ModDate (D:20020415155047-04'00') >> endobj xref 0 82 0000000000 65535 f 0000058553 00000 n 0000058719 00000 n 0000059017 00000 n 0000064522 00000 n 0000067597 00000 n 0000067734 00000 n 0000067838 00000 n 0000068004 00000 n 0000068251 00000 n 0000073457 00000 n 0000076908 00000 n 0000077077 00000 n 0000077237 00000 n 0000081680 00000 n 0000081849 00000 n 0000082085 00000 n 0000086061 00000 n 0000089335 00000 n 0000089504 00000 n 0000089740 00000 n 0000094937 00000 n 0000100637 00000 n 0000100806 00000 n 0000101042 00000 n 0000105059 00000 n 0000112567 00000 n 0000112736 00000 n 0000112949 00000 n 0000114329 00000 n 0000121109 00000 n 0000121907 00000 n 0000122696 00000 n 0000123484 00000 n 0000123537 00000 n 0000123874 00000 n 0000123927 00000 n 0000124283 00000 n 0000124336 00000 n 0000124673 00000 n 0000124726 00000 n 0000125233 00000 n 0000125286 00000 n 0000125787 00000 n 0000125840 00000 n 0000126306 00000 n 0000126636 00000 n 0000129849 00000 n 0000130092 00000 n 0000130669 00000 n 0000131338 00000 n 0000131359 00000 n 0000131962 00000 n 0000131983 00000 n 0000132541 00000 n 0000132562 00000 n 0000133084 00000 n 0000133105 00000 n 0000133694 00000 n 0000133715 00000 n 0000134431 00000 n 0000134452 00000 n 0000135162 00000 n 0000135183 00000 n 0000135626 00000 n 0000135647 00000 n 0000135668 00000 n 0000136244 00000 n 0000136297 00000 n 0000136328 00000 n 0000136372 00000 n 0000136485 00000 n 0000136549 00000 n 0000136572 00000 n 0000136624 00000 n 0000136664 00000 n 0000136740 00000 n 0000136795 00000 n 0000136844 00000 n 0000136880 00000 n 0000136957 00000 n 0000137024 00000 n trailer << /Size 82 /ID[<8989b6b2bf0ad3f57cd73fa68f2402f9><8989b6b2bf0ad3f57cd73fa68f2402f9>] >> startxref 173 %%EOF visual-5.12_release/docs/visual/VisualRef-4.gif0000644000175000017500000000514210410546274016355 00000000000000GIF89aϧggg/7/mmm3Mf::WWuu3J` w(/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0c* @2s P t eI (7*-i J Y @Qjؓ ԭ`3&0:0kسbEUf=X׸s&EW__ >wNw1㹎E,oa)cYl/*zҦ~N5k_Ku-{'.of{޾O.8qÏ4"4i&O?շ͛jg_eQğ֧W_HEa>DF zaCh _#.q|5`^-&}<#2șp0h0H㍓XЄ?FeO)vX_`2?q)OoI飗UVRj٥ iVRdfh^gS]9[4V]=U|=UU`IH'ԟW)zTU7DSU<vi#jn@SVpߣ4:Щ`jMgD{S@EjMJAOAE*OUZf[P<OMdh.+JֈӦ{߰Tuz8#xXT#~NyjckŸ#Ü kR~̣_>RDZOȀ$}vih^, 31U_ꑖGsꀂ휓[:="MЫnlѫr`kM4&CvsRkv t}^:Frm wvn|fǵҧu{М\6;#+6;Π>η.%vB\:lU7:e8|[:~T)P}Np*'wA]gjb u:OnFJ&% $""S]NWk07h~K` BBa.W퍰\- h0.dz k8<˟Ump%RDx'!qW !f)a 2X$:F PlE"q"Y!$ptT 7Zdш:Btg2$bxC82Klk6$q6ĹRO#~ʯ0+Yd(E8%N t(Q="-*4)SKBu*ͣT|uF\+ױf#j=aڵn}{ܺq능ݽ\-& 8`6xƅ'qʓ-S93-z4ҦONz5 ;vٴ( @o$;@w&MB2o2K@`ƳLN\[LO ?Eʿϴ~}D 8 PU } &1!8!RZR zaS%6H"5mS*S1j#.uwcM9X=#87$FN#! dJ:QQDO^$Y~%MFaQd fi&YfFgz)gBnPy'Et' Qa& %C3:ZP'F 4i^iZJ)}:*AVj:ꛇ/yF@$n:`*a kjBb;visual-5.12_release/docs/visual/rate.html0000644000175000017500000001423511202715735015451 00000000000000 rate
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Limiting the Animation Rate

rate( frequency )

Halts computations until 1.0/frequency seconds after the previous call to rate().

For example, rate(50) will halt computations long enough to make sure that at least 1.0/50.0 second has elapsed. If this much time has already elapsed, no halt is performed. If you place rate(50) inside a computational loop, the loop will execute at a maximum of 50 times per second, even if the computer can run faster than this. This makes animations look about the same on computers of different speeds, as long as the computers are capable of carrying out 50 computations per second.

visual-5.12_release/docs/visual/images/0000777000175000017500000000000011243357451015156 500000000000000visual-5.12_release/docs/visual/images/ring.jpg0000644000175000017500000003560311114314113016523 00000000000000JFIFHHExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:06:39&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RE˽6]a0rJ/@'*"}0>/򋦾~s@ː@/b+]Gd}; eU4 hN3HN)$ArI$I%)$IOI%)$IJI%s`?6ǍIu[9` ؽ^<no9-k?EMY:>hWC@h}su͡F{xjXx! eɵrb׽eV-2]'X|h]Wsz^ekܩOP rDŽWZMtIFRI$I$$I)I%)$IJ]W[rWk*o"hܴo,|5s33_[u~hh[۳?}83,.O(C <|QO[~gUv3CJ=g8I($I)I$JRI$I%)$IJ^/X{3^+NSTgs#\Ggfɗ}ntt"Kk'G鎳?y}rVq,zuqPFO0J+ʎ$JI%)$IJI$SI%)$IJ^5Lo//^.@VyC) o32?WM u̒qu>_˟+d 5a}HAF;~Z2įX-3A+#;]W;lȠx{]}Sr?9T_?OQbX/.:^w~ s+5e[YבCPZc^]QߐF47*_=^ IrGzcp^7.GOzU#~o%?O/ܸ~1/⇶/򋦾~s@ː@/b+]Gd}; eU4 hN3HN)$ArI$I%)$IOI%)$IJI%s`?6ǍIu[9` ؽ^<no9-k?EMY:>hWC@h}su͡F{xjXx! eɵrb׽eV-2]'X|h]Wsz^ekܩOP rDŽWZMtIFRI$I$$I)I%)$IJ]W[rWk*o"hܴo,|5s33_[u~hh[۳?}83,.O(C <|QO[~gUv3CJ=g8I($I)I$JRI$I%)$IJ^/X{3^+NSTgs#\Ggfɗ}ntt"Kk'G鎳?y}rVq,zuqPFO0J+ʎ$JI%)$IJI$SI%)$IJ^5Lo//^.@VyC) o32?WM u̒qu>_˟+d 5a}HAF;~Z2įX-3A+#;]W;lȠx{]}Sr?9T_?OQbX/.:^w~ s+5e[YבCPZc^]QߐF47*_=^ IrGzcp^7.GOzU#~o%?O/ܸ~1/⇶ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf쬮i&ܫٰVѯ4iZjN C 8HJ2ٳ`dٳb͛6*ٳblٱWf͛vlg0՞3H=C?($̚a$qI"e#/Zzn5o'uQm")ANLEUV ߘM5P';jc;0dnמ|ۂL!1%ԓjkpy>r(A<m)?k 5X} Bt1a&I4gRUև|}2A͛*s6lUٳf]6lUlٱWf͛vtkq\^0!U_cytF|G|Nj<<:oh] ј=VҵoapֵkP.2MYHj)9gOvo2J[?G^N|B?=ާYY|qlozSԈ}Hs#X~Fp{P9.Y8;Z O ͛6cwf͛vlٱWf͛lٱWf͛vw/ʨ?.D%n?plcfog(Dvdb?4~I=.#cw>4k C1FaV|>8򐯙40G'hM27G!#7]ʳf͘Bٳb͛6*ٳblٱWf͛vwM;hSHٙ??ykc},̕o24;>/f1}k ӯ$aPuC[pLؑ]pDYij;^zE>k`?KyD D0X7奷tVqGvg:e׼=jE>8 =8ClUpb'M6lzgf͛vlٱWf͛lٱWf͛vyZi1ϳ~8Kc# b\S.SID}uIX߲D5,r.be_ebYX8 A͆^z!A(яdB/HsQ(A#4jK1&&&ӣjCMNt\.'cy2+τr6lCvlٱWf͛vlٱWlٱWf͛vlٱUHgA,cz20:m(^l"R sŎd2#"f,K1$=NVl6lUٳf]6lUٳf_visual-5.12_release/docs/visual/images/sphere.jpg0000644000175000017500000004033411114314113017047 00000000000000JFIFHH ExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:06:58&(. SHHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJIZ+?(?pyw]XR6ղ EsU^kaف.1'`-xV';Ch4sCn[]6,9p͈ ܿ>}<[Z9 41'e+Ћ?8_/g+~xI{U?WsZbC%̟:l'\}s\YAȤZ9>d|?#Idc$KEbI$I%?I%)t?Udu>ёlI~eSJ/W PA×ԳN^Etʪheu1_ZG_$!z:fOn6Mk{{e[BaXbR&R&DIԳ  J R(9&)lYј(O+v6o^YmVScK^ ZąT`3l?cum?IoJ2/ˊӏ, ÓPBI$$I): {yjցZ=eq9)SH>%,GjŒҪ%;J(M*`JPS pSHS9HJP CyNWJjfL{@ь\=,u/,hq*Ĺ۫{W.9H/%+[$j^jI$POFcOFK>z~~9f|fDrҘ_waFaUXf9r fUFk l4 5a2'L!Iw%r[3% 1rhG<Xd9XAEO\Z;Bc{Z߬dZ?"2eI@KIWmI.Uq 3o^h9a9çhrѐ?+^ŎFk:ތ׮jQfn1rǣ5E-L9VkF)l'܀0I%z[RB=@ NS^7W{K9y `.qJlFU^ˢYNj)"I$BW.C 2s?6d;ɠƤ>%\er<ƯOȵbgeevE5%g/A$$RI$JRI$4Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMAspherenullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ot SJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJIZ+?(?pyw]XR6ղ EsU^kaف.1'`-xV';Ch4sCn[]6,9p͈ ܿ>}<[Z9 41'e+Ћ?8_/g+~xI{U?WsZbC%̟:l'\}s\YAȤZ9>d|?#Idc$KEbI$I%?I%)t?Udu>ёlI~eSJ/W PA×ԳN^Etʪheu1_ZG_$!z:fOn6Mk{{e[BaXbR&R&DIԳ  J R(9&)lYј(O+v6o^YmVScK^ ZąT`3l?cum?IoJ2/ˊӏ, ÓPBI$$I): {yjցZ=eq9)SH>%,GjŒҪ%;J(M*`JPS pSHS9HJP CyNWJjfL{@ь\=,u/,hq*Ĺ۫{W.9H/%+[$j^jI$POFcOFK>z~~9f|fDrҘ_waFaUXf9r fUFk l4 5a2'L!Iw%r[3% 1rhG<Xd9XAEO\Z;Bc{Z߬dZ?"2eI@KIWmI.Uq 3o^h9a9çhrѐ?+^ŎFk:ތ׮jQfn1rǣ5E-L9VkF)l'܀0I%z[RB=@ NS^7W{K9y `.qJlFU^ˢYNj)"I$BW.C 2s?6d;ɠƤ>%\er<ƯOȵbgeevE5%g/A$$RI$JRI$8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vl04MW]UK\EG;l_^MŸ&&`:FP%@zF 4ʧDfR>JΐXv$,(* t 3(å|!"_X\%@?.6=:edbXlT yizXPG9V?mI|ro0IwK|g='~KKSG{ҮؼuBE?hy̾V rb`O[=iO! ꟢_隥q܋͛7 n͛6*ٳblٱWd>B<[mJ+؊~!o(?54R ˍ?ߴasvvEpġ#ETl s*N|G_@-ny5~hZuGSiø B!g,)Nr2M{rUEbk\đd:C20qli m[QmOwhzS"S5oqE4LRHeaVS9wZI&:j[ ѯ~';(28=a/ӏf͝ۊٳb-km56^icvcAIzԺ'_UNy >.s$r1@zז[}JmW^C.Ł"q-FILJDOR\+`!0fJYNSH%\p8lxlW18F́6 l gʋkߤ,uG“OKؕkqh>oO(,xy=Gy#Ʉr'W4xe#f͛vD㻙ݏM-_;ǑZ@UK19dhy>$[p_acm mcm\6(7ً8Fb[W%c`pW囖%+GU bNE'|bk##pv#<ٍ;V%Z#_=cp/S:Q@f+e|ͨXľ0q`|lٳqw$OysO5/SIhOm)>! 4F$?`q?|lRm7([%$i)*VLUd%CA&bPzOAm_z1I8Hq &D?Gvv4u)|?:|if /"3owIy/`ٳfٳf_lٱWf͛\xث )ycB; aǐVH{ZA#<-x0ָgl@~ }.(B_8ißVs<pw2? !fWz0ƫ5dbR_'p|m3fn. ?_6&D.͛6^f͛vlٱWvisual-5.12_release/docs/visual/images/curve.jpg0000644000175000017500000004420311114314113016704 00000000000000JFIFHH ExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:02:18&(. HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$g ᅏfIf4ww^ (i5h?y5]'dc?J]ʏ7{sp%d]ާ@s=i!"#&]_Ww.2k*ɏV)^f<>08d=9!NDEI$ I$RI$I%)$IJI$R$@5aF?+.}p_Q^@[k[g _Y;3%K9x1-6}M:?Ek~98u/܋]u/\%5m=\**~O-Y,|DOgc5~n.kq,vΣ͋ѱzDӛ#4{]B9k,)3/24JKg/~{+;2Z=!c-Ya&9 ZAi/ݛӿ ޕeLvy總2IWɷʏ?<ĨqӅvNJI$"c[sn{ .>.VU-/ܭW[O`?gBNEbɪ֍k?V/:]ih8Ak<JȎ (7 ?,|u*j"TI-I$SI%)2;E:qP@AX*}/}kgm/\F.ogԜNn9]-YpԲ2ϋen-{u.ׂX6:jPrٹ9ܠ#ŗ?)?ݛ oзSy`'+Ϩ>+ .,9Yh`%55tr,z{vS;uYŇҺ?RksU` v/A`urI~%s<ůp~UB S~}^`e}]&:l}M ěm v{tߪq*b?qcSlNKf.yʬYqh,zc|NL lu)_Q@x`ŏ%{NLٌKKJV)F_6?k?jI$I$I%)$IJI$Rk2ck=-$ȝ3du!,&SNw(#uake<*g޸Ϭw+oѦ`,oCGpD]1_ #G_yy6edu.{rPRIj @I$TI%?I%)$IJI$RI$.;},{{EzODz 1z!8p港0IT9\W 2Atdb]~ |RY1N47;ߘS` W/Il$RI$JRI$Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?curvenullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM t JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$g ᅏfIf4ww^ (i5h?y5]'dc?J]ʏ7{sp%d]ާ@s=i!"#&]_Ww.2k*ɏV)^f<>08d=9!NDEI$ I$RI$I%)$IJI$R$@5aF?+.}p_Q^@[k[g _Y;3%K9x1-6}M:?Ek~98u/܋]u/\%5m=\**~O-Y,|DOgc5~n.kq,vΣ͋ѱzDӛ#4{]B9k,)3/24JKg/~{+;2Z=!c-Ya&9 ZAi/ݛӿ ޕeLvy總2IWɷʏ?<ĨqӅvNJI$"c[sn{ .>.VU-/ܭW[O`?gBNEbɪ֍k?V/:]ih8Ak<JȎ (7 ?,|u*j"TI-I$SI%)2;E:qP@AX*}/}kgm/\F.ogԜNn9]-YpԲ2ϋen-{u.ׂX6:jPrٹ9ܠ#ŗ?)?ݛ oзSy`'+Ϩ>+ .,9Yh`%55tr,z{vS;uYŇҺ?RksU` v/A`urI~%s<ůp~UB S~}^`e}]&:l}M ěm v{tߪq*b?qcSlNKf.yʬYqh,zc|NL lu)_Q@x`ŏ%{NLٌKKJV)F_6?k?jI$I$I%)$IJI$Rk2ck=-$ȝ3du!,&SNw(#uake<*g޸Ϭw+oѦ`,oCGpD]1_ #G_yy6edu.{rPRIj @I$TI%?I%)$IJI$RI$.;},{{EzODz 1z!8p港0IT9\W 2Atdb]~ |RY1N47;ߘS` W/Il$RI$JRI$8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛v Ӵ}WW.]׍iM45/6ߋ{E1!Y#A?ZԵ/~\{H*/d M/)_$?h_ڞHt1G/s8BI#E* WF24*#g\Z{yE @7hXP?|ٕCWdOHxqE f͙l]6lUٳf_lٱWf͛vlٱWd>FPujC>{C,jI8٦Vg/#1$3+;ɗ&ryJ'3# 8OGi3rmđb?~PJ?0kBLwhCV*C)!#bί4YSZnSҽP~bO1urh(ie|c8}1"C_| 5ZJ=[ >'oȟͮc\RĎ Gf͖!ٳf_lٱWyz}Te%UW":_-jfOQo\SBp@bS^Џteo'H]'^ ~#zv?̇4Z^A|LX:%1Cil:}l'?w %npşsa&.2Y;jW/:iʱƬ,RHI#v5f;Nvs$ɴkK4k'Czkf_vlٳxZ{+یpE/cm-̧ 4V֓m9h{iYwd`߳"+XchRpUSNdE)":2J4eVkiGH*ch3hZxxclۄ )[OgA6k6-$Qwsϙ?g&'Y D\aFaF#!Vv @rOt/KWD*jwN"{MVˌQ(%@2/E|Zguxuلd9*vD;>XʼnzOq'%(/,<%] &6ZLgh^=9--S2ư Ex|xP[Vvso Ws\N+kJ,FoDբE50=Ny<1?N?p!F5siQYyRCDcK_yzH5?/5yKfTY3iW Ōv?G #f͝KCf͊lٱWf͛vnbB4?ĨӗXkfp1` ߖ-ymxc&?d Ӝ:-)8g0>E8G[O#Qw"q{2ӚC;g.O0q~_\OZծRUbܹv@~ʏeǘ $LC,,VsXr|ٮ(\墟ᏟŤO7fRC9'{…c9GaBV7αFL=PI }BXg2L!~n͛6nݛ6lUlٱWf͛vlٱV]w)|ׯC )Ir7㒯_4=R 8pH¿>K)y:xW5щR`m3Wd),kO+g9vi"#@8pg/?+Жf͛:6f͆zy1iIsǦʽg8Ȍb,^?c+C9v5__+KyQg 8j{'6M^Q1:l-6Qٳf[f͊lٱWf͛vlٱTb]<ɦ갘]bEg~.iG)Hq4GWtB25ReS{;i&>CrS|+8W;ĤZiOA㝮7nf֯-=^J}xYM3R2TF[ww9̼k5w~e6l=:ld ~cAF'?v8yyyzk/,ԓfb"bPٳf®͛6*lٱWf͛vlٱWf͛Di)ui!T;x[|ͦGcOh$WXz20;C0kc;naH{8Lǖ㹛cyݼӨ;c,IKHޡ#6liy/c)=]6l͛6*ٳbvisual-5.12_release/docs/visual/images/ellipsoid.jpg0000644000175000017500000003346111114314113017550 00000000000000JFIFHHExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:02:55&(.LHHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RDf>COwhZgVfuw%X@Q$"H.RI$I$$I)]ouCY"ݫFlpwN9pk-坐4G\nk M;*<[get_svGV(9\cW?21T\Ǔ;a/;V=+*Ǯ걣`XBBhs2sWpuwEݏ_wlki5>`X{<汧Ѽhdq][9-v#qJؽO~#eN2@\[VI$M{g/1T<#a>fǐ\O{GVc-p eZgPiʌ̌s'?wЧϘ*y8پ 3+g[ }~ޥ{K،e7r,}݄2^c/g&=nú?ѳ_l)COwhZgVfuw%X@Q$"H.RI$I$$I)]ouCY"ݫFlpwN9pk-坐4G\nk M;*<[get_svGV(9\cW?21T\Ǔ;a/;V=+*Ǯ걣`XBBhs2sWpuwEݏ_wlki5>`X{<汧Ѽhdq][9-v#qJؽO~#eN2@\[VI$M{g/1T<#a>fǐ\O{GVc-p eZgPiʌ̌s'?wЧϘ*y8پ 3+g[ }~ޥ{K،e7r,}݄2^c/g&=nú?ѳ_l) XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWfţ$Q5f[ l ݛ6lUٳf]6lUl?/csֵ|emamp/2Xb]ţ,l)Q kFnn.&iخMKe;וMɏ CP1q* ~Yxmo"._ ŠYX~Ťû} L[:pW &0̨1kuϒ֔Kk(-(L2'NN7Րa;1KN)4<X›#yb򾶙OFްFP/ v=VYrC~j:~¢T!zoلa]sO>woXx2|,8O|S{Or8xnQi|,R#E24r!Ac3оq[9ũF](r#n=1Fe$3W &^cia&2H닑2k6lCK桥>E"9P.(hijq9m"W BVFvݙĥG_-r%};g{4lDH|RS+rb+L U\5Q=]nN?'@x|db{{(g___9GHGW~?{l?&A|rI(O5/YG߀,}?\(FMn4-Lu a-滩^TI1T=U6ܪZ9nW$9|l &ݰ*'X%ԝ>9Y 6i7.f07Hrvlٲ9lٱWf͛vlٱWeaП+6*6cf͊6lثf͊6lثf͊lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWvisual-5.12_release/docs/visual/images/filedialog.jpg0000644000175000017500000007622311114314114017667 00000000000000JFIFHHExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:04:08ՠ&(.^HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?^O^mEnu6X-s4>zU6}5WRͱ>Wme`Stz4+cjnIZ F- ߤ[uZdNt̯71XQS͕<9[zldgjIe^MWYc4ʘv5wٳSIDV{+63(,}xu2vaR=oEf'M` n%%i$60|z-iWKΕ+ig55FkWGKn3wM]h]ߊď~=WR88]k'?Ff mo z|PU,UFEG=^,>Džq'ƣگ ;2YH&xb EKj? ǧaݐ0~Xpvc?9pX?rb cxw:Ke{.72KۅZMB@S6n[&JPqN/=޴^9YGfV3Zkho@B/fa] U'svÙ]uٷz=y-k4=1HݾPݿ~t\w X-\:MQpjp1V93e#u/ݷMeU725\ڨub]ϲRO MؽKVqeN,cseOs1i}/UB˯Y[qpp8Nv_c&Bu8 czYFTַ/Cq|i_8ͼ{70m@_;AjiGUĸ_Zyl>v1Y]ѱl;]L!Ib$JI$I%)$IJI$R\@GiɪK?+뙵;}|~ehJB"ɠɋL9Q4?8ؤ1?OMjmݽ>nEX@z|'wZ;g 3lo?:0[䗓:(W_YNC+ vum 4V:]EņN r)Vm"m!Gw m;y'kޥnǿ׉znsWo!򭕶g"CXV[Xז심Z(fEz=}GuemT7ZlͶ1{}j+]Ew?U)k{PAz;WCfK[k^KKϳn?ԫcko-tAˤI)I$JRI$I$#?CM%K?Th  .n{?]hBQv_$ˎDwq<쎥k{Mwcă+?տ6]cN2wkg"U։23OVXVQ} *kVZM Wyo!4u]mF[;9?.nXYEEwVV[ooof%1v5M,%cv=}ĭ'}o,6 m{kk}S'sZZ{??MO:t2[k"-}Ӑ=no՛+P.}}s w_r?[=.coOV}O+/]z=@Qsj N>}oWꢯѫuʝOSȥmK,6to}7Y~CZ?TݏV.&FKh95\Z'?Q)]ca5εsWwl>}o-].M9xec}F<t;"I$I%)$IJI$RI$?,lvgYs.pCӮ:0Y䗓Uִ3ֆ}ճl{+=VANA .-6=YsJ{,YmX }Wc,gط5Mu Z)6Y]>Ye,şoԼ_tcjVCC[ٷ=U\ϲ1o_Q뒯8ռoqsƁe6fIEUg|,jXV0Zv%b#`ZvQӑnPUTc3^Yvo} lwfG2CۏOv xl ёVND\1Gz5aKn66X{K̚E}T5 %=ִ154hRAůJՏ[*qmcElv֣$$I)I$JRI$I$$I)Փmnk˚H5 >+;n.xc\'Ӻ;%K,U.sԃ7C 2|z pS/eCdz}en5r>z_bv3Ye9zv~UY-c7>پ=u_h~;O؞?K*\jccMޫ#Y]tF]E;7XO:ln[7ek ջ:]EW]O>v=WzWU\uiǵne2A[1YcJl/٪H zͣ~^;j̮X1 jK͆ܖ?3'v[UJXc(\[mwc]N]^-Ʃ}{J~.߲13cnI0vbPfSk`Ѯ4zc5o;CZ*՚]ml7}h m/o_{?9#XGKh {~*-z<[GKWw7}no<^ߊss#M#X;GKh {~*~(d\ԵSbuܜ6b{؝Kw#ߺ!yOxz%5\vbWͫ]ͿP>W5ZmUS]e[6*WJjZ]? 1vUM$E43轶TgU:sY>`sےbU謮lvznq;F3jkS"WΎ[]A<Y`sz?mMm5Okv^-c踶ƵXYs[UsKC]}_гДpq:Dɯe=p6EeX?!{X2 nc,ƹ\e_z6/Iz/{.|6}_U5U??¢zUYG-~u!zU溛oڲmuӲ}_$*#AѲOXnN; ^Y[X܆oٽ,\[ _?އ:OOT0k5}!m57ԽYfbnE4X^NL?kzuX$dornOgO)%g}~~ƷOgO)%g~~ƷOgO)%g~~ƷOgO)%g~~ƷOgO)%g~~ǖcY{!pe`;8Hjf_ne5 sѭfb:N$Kvx?#'r>•֬vV{EYpY˞w׮h•ַS}c-_^ o6uNYVCkeXv]lcMu˶܋Y}6^U4%Sx}[}ǮҤs[^ -cxs 3}O׷2zU6_ce,Ǡ)6s^EC̊^8ȯfN߉z+7I% .%8ޣ+e~s߱I)I$JRI$I$$I)ϳ? Yc&wJlfnG'C 2|>•ַVh•ַSGe$IRI$I$$I)X^Uš0ƹu+Çˮog7]ƻ"|;e[NMmc]mEUknoP[ kL}k۾Ś>Zi[Ͳcr>Әvek2=JFĔ}r] hκʹOe~eemy @YUbT*sQi=;=1e-AW[}/'˟yaCci'P]e3Q}UYTXmzkCg<πys-c$XmN93gjͿTq5۶ mmvC}kU6g6(]lՊis}?s-gĔZ~cu2Mnp?eԱ̪Uu^euCӛi3klck.Bl~纆lGط:6,Ć{kk 0/{ZԔlfu6qgX@Nۿrt>`'/'z5c֜ZQjKE}[ ~ͷ}K ie!I@xkz'!>7g_.ȥS/V7_6_,K/!U?ra~KEj`+eĸawn_l?ݟژ"\]X/lZ ?|WW/R+/?cԸawlvjoڸ"jol?Z ?|W͟\]K_.ȬOl?Z[6-K?ޫ'wE/ڽ?/V'[6-Q??Z ?W͟^}ȧ+*r-G6?8aU?gCcȳBG Qv.s[iv$ZSeC'om /r}A |?Q)ăFOdFPhotoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMI filedialognullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM z"^JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?^O^mEnu6X-s4>zU6}5WRͱ>Wme`Stz4+cjnIZ F- ߤ[uZdNt̯71XQS͕<9[zldgjIe^MWYc4ʘv5wٳSIDV{+63(,}xu2vaR=oEf'M` n%%i$60|z-iWKΕ+ig55FkWGKn3wM]h]ߊď~=WR88]k'?Ff mo z|PU,UFEG=^,>Džq'ƣگ ;2YH&xb EKj? ǧaݐ0~Xpvc?9pX?rb cxw:Ke{.72KۅZMB@S6n[&JPqN/=޴^9YGfV3Zkho@B/fa] U'svÙ]uٷz=y-k4=1HݾPݿ~t\w X-\:MQpjp1V93e#u/ݷMeU725\ڨub]ϲRO MؽKVqeN,cseOs1i}/UB˯Y[qpp8Nv_c&Bu8 czYFTַ/Cq|i_8ͼ{70m@_;AjiGUĸ_Zyl>v1Y]ѱl;]L!Ib$JI$I%)$IJI$R\@GiɪK?+뙵;}|~ehJB"ɠɋL9Q4?8ؤ1?OMjmݽ>nEX@z|'wZ;g 3lo?:0[䗓:(W_YNC+ vum 4V:]EņN r)Vm"m!Gw m;y'kޥnǿ׉znsWo!򭕶g"CXV[Xז심Z(fEz=}GuemT7ZlͶ1{}j+]Ew?U)k{PAz;WCfK[k^KKϳn?ԫcko-tAˤI)I$JRI$I$#?CM%K?Th  .n{?]hBQv_$ˎDwq<쎥k{Mwcă+?տ6]cN2wkg"U։23OVXVQ} *kVZM Wyo!4u]mF[;9?.nXYEEwVV[ooof%1v5M,%cv=}ĭ'}o,6 m{kk}S'sZZ{??MO:t2[k"-}Ӑ=no՛+P.}}s w_r?[=.coOV}O+/]z=@Qsj N>}oWꢯѫuʝOSȥmK,6to}7Y~CZ?TݏV.&FKh95\Z'?Q)]ca5εsWwl>}o-].M9xec}F<t;"I$I%)$IJI$RI$?,lvgYs.pCӮ:0Y䗓Uִ3ֆ}ճl{+=VANA .-6=YsJ{,YmX }Wc,gط5Mu Z)6Y]>Ye,şoԼ_tcjVCC[ٷ=U\ϲ1o_Q뒯8ռoqsƁe6fIEUg|,jXV0Zv%b#`ZvQӑnPUTc3^Yvo} lwfG2CۏOv xl ёVND\1Gz5aKn66X{K̚E}T5 %=ִ154hRAůJՏ[*qmcElv֣$$I)I$JRI$I$$I)Փmnk˚H5 >+;n.xc\'Ӻ;%K,U.sԃ7C 2|z pS/eCdz}en5r>z_bv3Ye9zv~UY-c7>پ=u_h~;O؞?K*\jccMޫ#Y]tF]E;7XO:ln[7ek ջ:]EW]O>v=WzWU\uiǵne2A[1YcJl/٪H zͣ~^;j̮X1 jK͆ܖ?3'v[UJXc(\[mwc]N]^-Ʃ}{J~.߲13cnI0vbPfSk`Ѯ4zc5o;CZ*՚]ml7}h m/o_{?9#XGKh {~*-z<[GKWw7}no<^ߊss#M#X;GKh {~*~(d\ԵSbuܜ6b{؝Kw#ߺ!yOxz%5\vbWͫ]ͿP>W5ZmUS]e[6*WJjZ]? 1vUM$E43轶TgU:sY>`sےbU謮lvznq;F3jkS"WΎ[]A<Y`sz?mMm5Okv^-c踶ƵXYs[UsKC]}_гДpq:Dɯe=p6EeX?!{X2 nc,ƹ\e_z6/Iz/{.|6}_U5U??¢zUYG-~u!zU溛oڲmuӲ}_$*#AѲOXnN; ^Y[X܆oٽ,\[ _?އ:OOT0k5}!m57ԽYfbnE4X^NL?kzuX$dornOgO)%g}~~ƷOgO)%g~~ƷOgO)%g~~ƷOgO)%g~~ƷOgO)%g~~ǖcY{!pe`;8Hjf_ne5 sѭfb:N$Kvx?#'r>•֬vV{EYpY˞w׮h•ַS}c-_^ o6uNYVCkeXv]lcMu˶܋Y}6^U4%Sx}[}ǮҤs[^ -cxs 3}O׷2zU6_ce,Ǡ)6s^EC̊^8ȯfN߉z+7I% .%8ޣ+e~s߱I)I$JRI$I$$I)ϳ? Yc&wJlfnG'C 2|>•ַVh•ַSGe$IRI$I$$I)X^Uš0ƹu+Çˮog7]ƻ"|;e[NMmc]mEUknoP[ kL}k۾Ś>Zi[Ͳcr>Әvek2=JFĔ}r] hκʹOe~eemy @YUbT*sQi=;=1e-AW[}/'˟yaCci'P]e3Q}UYTXmzkCg<πys-c$XmN93gjͿTq5۶ mmvC}kU6g6(]lՊis}?s-gĔZ~cu2Mnp?eԱ̪Uu^euCӛi3klck.Bl~纆lGط:6,Ć{kk 0/{ZԔlfu6qgX@Nۿrt>`'/'z5c֜ZQjKE}[ ~ͷ}K ie!I@xkz'!>7g_.ȥS/V7_6_,K/!U?ra~KEj`+eĸawn_l?ݟژ"\]X/lZ ?|WW/R+/?cԸawlvjoڸ"jol?Z ?|W͟\]K_.ȬOl?Z[6-K?ޫ'wE/ڽ?/V'[6-Q??Z ?W͟^}ȧ+*r-G6?8aU?gCcȳBG Qv.s[iv$ZSeC'om /r}A |?Q)ăFOd8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?iVmiĒB7N;JY埢/ˊ ۵i!]dK6Z zED9rAȎP*:c4F2iO <)eNZEU &!Tl-4{Kuhba6wv숬[3P\YZZ%y h ::`K1:X9#r"h;GJ$T~4=VQv3"Kp[L p "澪C??q&W\~iVB]0)]zқ붹Ikk(78b"':g$l3ivWR -Xyڵo{ w\,lC _Gh#_Gh~.TŐOw} Aivx'J}#4bel<#G 'Ks/+I}#4bnm |Ll +X-/xɱ6-p Fi_kH`xW| {.]/J _GhncjOo xtN >#w [**#'c>,^Hgl2"H /:2%0Ci7N",+I#6FH|Y_.V@Bo'/I R/ܞ!I槡Y@ @%Gnd!ĿKIPl=I6)il#*r_૯(\pmWvav ũvhy bkH%F4eayD}7m 'SqR櫓)h*ZH}} uhomqk(Z[ x57 H.)Hf`O"Z_]tFYIP-?؉6aᜄF1CSvZE[Ih8KԊHcY=*pg__}FnZ͕ ՟kOiKsu.-~h^xl4D'.#1TEOB|峔z"Raj?#eGIO}?O(ì9w='}K[ y?7C'alx޼1HD?#ei O(^$uv'cEjV'alx޼I?Dj?oHNXu/k:͏>rK'Q?O('P?O(ì|I8{#ߟڅ)?O(q^h?O(#Q#ew+V-PID?#eD?y?c.sQY?^Ҿ=j\q o)_FA^ Z+L7opMJCSFPMSG&74sws*ZOGWyT7C~gIC82+*:27,(ʒ}eאָ)$eEQ,Dc,#WG&AX--uIi44J4q(}nK$Xк_o^ܷW5 6k57 w@9xߖ6n88s5*꾡_1g>ZzK:rXqE (dX^{0//""RVZL$q0&6c5Ö[ 6ڬo.sDޜ @?5ee'6%ˬ7V*/ՠKaJÜJ6lثf͊6lثf͊6lت 7 4Tvޗp6*7txb^8yoJ 7͊6TA,kT!;6*OMjQu` 2oUZs/i,ɶVLٷz66e?;Yy'fW_?_$à8 ^z?_/lN,<4\ei9Kw< #t49G|>?5|yK<6T&EnH?~ 4] R0 E#^/ӽ!+x5UUUP:1^S6lثf͊6lثf͊6lثf͊6lتQ?7=G9ן_`މW?μA?bu͌dҾ~Z6gVu%^Cqd;˿h/lN/ye3ܥƠ\ sR }7gnx-,u] rz(,ΜX_z9>?ɓBS-=eI\Ąϐ]SLi'o`2QPJ:ʱ (G櫹(5tK紙cr[qVDy"ص.{ykv'Ih }9ܿ C'&G>GWO-܄35AOji YӷqzfoN9J[q,V7|7Jg"5-Exz)_jWjv$EUQc"('kaICґϹ,woaP7a4^MI3܍_-z_?GD(cqmNux`ªjvlٱKf͊6lثf͊6lثf͊6lتQ?7=HWN/AKT{[DAԒ:m#X/2 =⪳[ xݷ́%AfhvOk3]wo\Dqd3/l^/a2R/# $Ww/}_$Im- xԊWsl)po_4y+OFgc?V"yxr崬bi[fBPQ[ʶ"nQxO!|k?>²?&wwQ5^,%bVĬ-k/&[K o-4#^ SHLFKfcd4P\5հ "[dfoT"oIh&PXI#FΎ ݥf^?UTx~1TڧMGQs} {{{mI܂Epi˲?W$_%Gocݰj(=ua3Y~Ү٭e;h )0XI?yS[*Gu4%LR%ϊ'$>/lNbCBos`{ u+{z7Q$<$PQ7͈ٳ`Kf͊6lثf͊6lثf͊6lث?s_Mq"p\ 7{\"qTfEfiw_kٿ6tV6l:]oo$mmLG !Af$7=?9Ga;:#̪5]6GYQ#(uvNC/-cȓ1d++sl"d9>?I/ؾiU`t>ks%3QU0FK[qlKP*[_3[s'8ω~qnAfB珯Gfy c/* ]t[#q@3! 1\\467K{k?q"&#go2ϭq)C,q@q[rqq9H 3ejYH9RdI?x7,W󙿝_oqK+un/}7鸿M%͏o}L./(]y\)?']'~K?Dv8DM 4Cm`?mMuֹaKQR**:eE4oAMOl!"[0 FNeDd $졪 4Ǜ],L䠙% ^T#'3 vW\  1Jey#SO! *GpZ5tGB`Kr"yɐs## o.GI -rIS3}@m/n^!; Hڎ>E+jugtJH$Q/Q 2I1[%=.oaԣd%#{IIE9!98ogKbd~Ll4J l9J"iƘE"KA*Z |g36[̮ՒFYoV5 HUIWӏ*DOAP]Bm#uKA FrTp&Rsoz8G髣j֑_YRHfDhǐ:7[}&A/+n]h;+k.}_73H,p+dobQd~H?V_7/os`=|̏*e?Mpnlxy_#A~}&EY\#W_g oV_Ljq2?$/oU7=|̏*e?Mpnlxy_#A~}&EY\#W&C\G)Z,y.?NkչAp{K?Dg@ g7 ^[}Nsbr [K͛]_[>Z:7c&+GGWAMH>_d֏iURHOX[,| ެ%?kd?Oˏ:,t}UDyo:,1RIrxzn'$2OFYIu*Is2 [߸Ȓ/}4}"x⺎K\vIGo3ru>?r[?o=ݼRk9/^=Y }nh7 wN1؍瞠)m嵊3)b@fT[cu EI*7xmq]"TGz%ͺ*2OEX c?uM [_VY1jq[??j?վxu i"3 !>?Iz|<0ܽx!}R%)?%o(oQ7X%?As*a>^L < ,2#:An} ޛʞ$cL40y .lt8ѤhCC&ޜx\{!1)7Vun=Ozr$cygLb񛆕gKG0@~%V 24Hat"tGh㵏x=]_cYKlZkI(e),>4_}L&֗o6)idHЬ$$/aǹzf͛vlٱWf͛vlٱWf͛vlٱTfxћ'쯎-ƟvD(Z#MjQ}` ت[7Vw'se)\ٰou%?Z8 o,_72_/vlٲn͛6*ٳb͛6*ٳb͛j7ɧ[bD.ZW*̈́g_Um,}qT6OoUS PO[⴮,-bW?7=C9_`މW_ͽ_&@L?b =k=f{FsfOK?-Y8 o-tяWAM̿W0]6lf͊6lثf͊6lثpj6+]9xj3A7꾰uYwյ j$ #gY :]I N?'YBҼS24$] UWگ)V/4=Nk×N\~6wPiZo>1JL% oy=5 uy aX7% ?T ޯ%Un0$H _+\Dƫ^  'z&[5\:0KlU76_ϻ֙M) lou>Y7c&j)i + c I友@aKae|G 3M/ (yRgFFoҖ?c?62> ?OC͜Xߥ,mcN?07'_y~QX|/=6sҖ?c?63~Q8ПY~yRFFoҖ?d?61 Be9K/ae_ecN?08d=6sv_e?23~)Q?_2eYOߤea O,SsS9;?ae_ec̟Y~S6svf?21e` O,Srq%bT&1 Bet~6ߵT/A;SNeJiݴ1#t(~a|oO,Ri7V_ϻֹMG]>fw YZd2BM_S⎰'~lU\O* visual-5.12_release/docs/visual/images/cylinder.jpg0000644000175000017500000003340111114314113017367 00000000000000JFIFHHiExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:02:36&(.3HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$\|LO|<, <5qb9$[lG"7ָ ?Klל|$[G%DoGOĔ?Fht9]+znx=*#pl Hhž``<z1E5]HyYOg!w;>%t[??8ړNJvh9cNSYhRV3s \\0z)$EclSW?X_)$Ojgd |5|dDYe$2GG/U`Sm`48VYԘy˖WS.>ÁFn@=G- sz}꨸) SL ~Dj(?̛ϐ^_HTk|L?M>$IgI%)$IJRm7踅HGvuGgQBaўxm2|u[;Gn@="p7BaoŲ ;-Xʹ>M[x1\|:;B ̭ V2AǀKrseHV孔f肑2dIX.IR?mI$+_I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%? Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMEcylindernullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM Ot3JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$\|LO|<, <5qb9$[lG"7ָ ?Klל|$[G%DoGOĔ?Fht9]+znx=*#pl Hhž``<z1E5]HyYOg!w;>%t[??8ړNJvh9cNSYhRV3s \\0z)$EclSW?X_)$Ojgd |5|dDYe$2GG/U`Sm`48VYԘy˖WS.>ÁFn@=G- sz}꨸) SL ~Dj(?̛ϐ^_HTk|L?M>$IgI%)$IJRm7踅HGvuGgQBaўxm2|u[;Gn@="p7BaoŲ ;-Xʹ>M[x1\|:;B ̭ V2AǀKrseHV孔f肑2dIX.IR?mI$+_I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf6Wx8bZ?i_6(=׻v8W-tP>C錁}L=?Ǫ?  etS>y=xWvX!yE@=FػūK< 8!/@z$hv>fY؞ {qd3 :;6lZ ;e4~&Q W .sca\<1Nc{CS}8=RLDBcA@>3_<6M<8BF16@3rƋ>(jerQnQ٩]F)kRq8O\1^(NfQ;_' ?B Xaf ;y.6lnť#|DJ&'ۧ<ǴH|и80}4*5 ~?>z$!-l0 5F/Z6 VoY\}'ǩD߶>J]|rb>YT<9<~{2Ÿǵi{@kZ$x_U> fTh~^J|nUuV%Hko&uާ+}6g.DI$$I)I$JI%)$IOm/re=ǼA] Auyԟ_]^)O>%:(o $z}T}%0sZ<54 \}y8X_%uk暧󛹾y_~I7sS$I)I$JRI$I%)$IO_'&OcWF_}֮%:};+Պl>IoZ,ȵ:G%: fkiY  6eAv|5^K1N{{?$չ%!w,??XGOGOƻSKw(` ѿ.A"I2u'JRI$I$$I)I%)$IJI$S*첫en,{ B]B^x3,qY ŧf|y )Nt51y[}a.{$~n: ]gY%)$IJI$RI$I%? Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMAconvexnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM 3xJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RN>ǵi{@kZ$x_U> fTh~^J|nUuV%Hko&uާ+}6g.DI$$I)I$JI%)$IOm/re=ǼA] Auyԟ_]^)O>%:(o $z}T}%0sZ<54 \}y8X_%uk暧󛹾y_~I7sS$I)I$JRI$I%)$IO_'&OcWF_}֮%:};+Պl>IoZ,ȵ:G%: fkiY  6eAv|5^K1N{{?$չ%!w,??XGOGOƻSKw(` ѿ.A"I2u'JRI$I$$I)I%)$IJI$S*첫en,{ B]B^x3,qY ŧf|y )Nt51y[}a.{$~n: ]gY%)$IJI$RI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWfGHDrA,o˨KVcj4oX^?qmqi)'Ur)Vekg|8ۥԬMEs?geHdxfCIYMXUflٱWf͛vlٱWf͛lٱWf͛v/geu\ge Oq1H*IFkɧ鰙f}訽F\S~kZEI 7nȏ"*_|^o'TR_ F*Ⰽ1T| ~柚ߥ"̺,_B%nyGY}=RF_ibgZ/G<TDE?qWf͛vlٱWf͛lٱWf͛z=شfigW0 ;㿖fOΑzd[L~?c؞#xB0J<1Ukf:{}dwR *#G"G]UYHV#QیU8X[H dr=ENҥ= g$e$^犣ڀ=<W?9vH}v,?ӿ^}6lUٳf]6lUlٱWf͛zWr#4\;9W.LqUHc]VvQ}-aU$_aE2mkW U3S% wrg!0N6t;S9ٿ?ylٱWf͛vlٱWlٱWf͛z_r.$%}9?E]z~E+RS2[1 ,Uٳf]6lUٳf]6lUvisual-5.12_release/docs/visual/images/pyramid.jpg0000644000175000017500000003741311114314113017232 00000000000000JFIFHH ExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:06:19&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RIhNs2"Y4yl!)ldp3sYݮҀ7Cz,ͻ^imVUc0G!V0'i5>ǛO˒2 RI%mI%)$IJI$SI%)$IJI$S:j}ֶj]լ672{1]>'X]/ҫx%O&KF-',g\:ORq/qzrjku8r.8䁸 3>(n2gJI%#*I$I%?I%)$IJVn'.:wUVpkD].;qmc\|IP4`rB-LGEgC9{\>UT?U cRzBgTI,-nضb7uV> k/2KƭՏ柢WY_X%}_ <ȱ_w;OgS:R_||'v3_?2IJUƖ<4!EtZI%)$IOI%)$1u6D,A N1d{j hrώDNVl$̾'W]iRg~]*F'Zy-Uϋ4{yW.I*U$I)侹Qp?g"◰ B/;OKf;?-n|+}C^}Q(\$IkI$SI%)mt_JYgM̖+Lb`bדP{4#G7ѐ Z }E2_GEq#v|?QA/se! ǫçS;2I,2I$nDșɲI)$IJUln|A׷MVF21"Q4AWFRjQ6CS3_xպÇ4ʢ [ ʦ]KΓSyZ-0G]?#͎c2GI ~k,=9#Y$VI%)&kE7I @"AX/KMX-?+s4ūv-5u:H}u1ٗGl'8c12DŽqx2c(㌧)[w\GמT[}Ԭyx]E·ùNV?6b?D? z1 :#^@RjKK/#73$EZO︻x #cXCodu]M#C噑"m}+ϒV|甧6-y>?#`^db5Y̏zKOjH%Gˊ?zq7ᇜ8dfdȾIVP@;$HI%)$IJI$RI$I%)$IJI$RI$I%?Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMCpyramidnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM tJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RIhNs2"Y4yl!)ldp3sYݮҀ7Cz,ͻ^imVUc0G!V0'i5>ǛO˒2 RI%mI%)$IJI$SI%)$IJI$S:j}ֶj]լ672{1]>'X]/ҫx%O&KF-',g\:ORq/qzrjku8r.8䁸 3>(n2gJI%#*I$I%?I%)$IJVn'.:wUVpkD].;qmc\|IP4`rB-LGEgC9{\>UT?U cRzBgTI,-nضb7uV> k/2KƭՏ柢WY_X%}_ <ȱ_w;OgS:R_||'v3_?2IJUƖ<4!EtZI%)$IOI%)$1u6D,A N1d{j hrώDNVl$̾'W]iRg~]*F'Zy-Uϋ4{yW.I*U$I)侹Qp?g"◰ B/;OKf;?-n|+}C^}Q(\$IkI$SI%)mt_JYgM̖+Lb`bדP{4#G7ѐ Z }E2_GEq#v|?QA/se! ǫçS;2I,2I$nDșɲI)$IJUln|A׷MVF21"Q4AWFRjQ6CS3_xպÇ4ʢ [ ʦ]KΓSyZ-0G]?#͎c2GI ~k,=9#Y$VI%)&kE7I @"AX/KMX-?+s4ūv-5u:H}u1ٗGl'8c12DŽqx2c(㌧)[w\GמT[}Ԭyx]E·ùNV?6b?D? z1 :#^@RjKK/#73$EZO︻x #cXCodu]M#C噑"m}+ϒV|甧6-y>?#`^db5Y̏zKOjH%Gˊ?zq7ᇜ8dfdȾIVP@;$HI%)$IJI$RI$I%)$IJI$RI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͇^[қQ>jQ: n]]6zN|ٛ%z~f6@:E'Sۑ4؍bZτf/?ҋf͖6lثf͊lٱWf͛v?\1PuY rrecjvwo=sUÅ[\Mn DJ#:NmM.(?לO7wݤTVΝ9Nɶ<}6+qbIzcٳfCB:}e5se /J~%Z.t*WA?e瞁|U%;o6?&m+u ?)vko )SkLo ͏) JKtaBqyAóf͊6lثlٱWf͋Z[=@X|s'`7A N )eV7 ኾ=dQ$1Q"*>XfrL˧!t.C3ːyFԞ2A)rɾyF^r>+ ?X޿']?O!ڙ|M\Pen͛6a.͛6*_*`O NGQo?g HpAsyAͪۢLTuVW:.8c? 7$Fє "=2>FmN`z$UyS?5Re# t%3 A6U֥[f͜e##̒O#)r$yvlٰ!ٳf]5=6VO^P(Ou?R%J #!'(J31H `E淣hz}$e_;|tS_[Ҷ_4n⌤65`;dR}N:0G$|HFksf͛hlٱW`+lgǸه̀ A % c!`C8+VhMQ{&s#hFO*+uz/izBIwC1.OOE9)Ce?DŽq>O/Zla,)2|/͐̿.[|O.k\E~ 3?(#fcrb;D>z<%bą3`y]u?* WZ|K^]KpOٿG3{7{3?d2><!|7@`FU\;&+̿.[[|O.qٝ$L#N(o&L!_잋wrrG9s?`y]u?* ٟ48q|Ncvc$u,E]jZ&Y~7H\ٳ0DDT@l#T@ٳaKlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWvisual-5.12_release/docs/visual/images/material_etc.jpg0000644000175000017500000012242511114314113020214 00000000000000JFIFHHExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:05:42N&(.HHJFIFHH Adobe_CMAdobed            q" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?}b?''"Y{{+ -Zm]-_wm(x]qmV纗he;k/g^w:U9YW.HMCϹY"<(T67P}PGv#OڮM,sq?_ԁI.9Ү}Fo'YOvTn9aPf׳6IVhkw/WJ .eUMf۞ګn{kGY\>~ܧbqlwvs Y/V932uqmφ׷醆5v{_*u&O)f%:-v{9WuΟkVܻ= sK7{kW]P}XK[eع{w )5]gLg_ }!{:6v y'@S3'YzWgZX[XƂWovz9l9www\ɰf.wqYYɲ_c8ЌL:bDOu G? Qqf8~+SxO$9 :6.܋ݲlZ%71 q8xTxg)Fuckex췐"[S4?cEZ2, 'k:zUgd{wi]s"t+=e.9lcH;ߘ9O`%"yO|?s7CK>}dqyvu,`eMMe5βNs O}7ev;lC "kȦ-qk;ns5G҈zY-.2"B=1z9FȢ2ks7X@{z0aUlcH lٍOv?;R!r?X1?=^KKn>xȪ{R݁ӭmx:\aZ7 ėonGfFAob$7Vu n8q6!KcͿTrsߤt{F V4Iq5H}OrrUG7N@!v" չk\:@'YٶowMtژ 9$vGΛ +Wۖ;[imГ?--[_Yo(؃8[Q6~>ָ#w4bH/.P !)ֽ?F7}3" q  @NZ05~uk {9٪iL'q8-_9ow[?ήmL/Lơ}jf |mM|3ԚOK4q$WNj^ x#$6~~{hl 'G?m^rǖ;pjk$gi"?)! |9DEw/R.{ۚ5,[". YkZYk~?n.9c.7l:|Qv;+*Lƿp+P}|uoK d9f%9!kak:Re۩6NW޲rܛlF8Hn{?ٹFkmu6L`c$L E=\ 0+y֞+iy4o?$'qb^_ { JWEſ 7c6@ik·Y{*b;= BS E6&|q3hHK?@ǩ, Wcޤ,p0QeϘeN&=aUFo疷M?Y PQ|K&0#J|uS$N '_cs+,?/\|,֗;q%ݯW(.[M-l$XI?Dp;*2 fEcE-y\Yi>?WYXwh|qڜ`ftyYniaXƏ_or|O܄3!(>1D% G3q}7eoEߘX8 ǁ'z^XɬEw:o=C7u\7E9e?i31u|s1C/csa Af's$xIB:l`$?9{,xпIo?&}F~֫>߮d@5"x0fOHS[@[82:{*MKׄE֑nG-#綶_G'Z"IYӗ)Ȉ<7~_쬱"Eˈ]c{kj?wΫ<s6IksB%@pצּڞf鬴2@N&'K_f Z/w{kZ]+|kwTV?\DZ 4ǹ6NRc|7|v^7דI?Pf~2? x[2?acwT[vTrt&> ƵLt|t Aj:Sۛp>>-ZS^CMrlr <7RKK7V`1p5u;xw U8Y&('I;Bd˲nCmGu#E63Zڝ32|PԒIU6@Xq $Vl`|9!hx f:eգ`]{ZCqI>C7uvǪEc'X-nK3M.kVMWL%I$@4$IԗI%)$IL^S;Z4u˄ ?k嘒d0_ kzJ3qx?*{>KW1f< ޫY;['(@%[8bc/3 G;Ze;u֫s(Rvָnt6١տŤZ A8,cw-dVXke@,?>|[G{@^z~<9VzQÆ{*[>ob?G3ِXZne[>š'Y0j*|x?{ќNśt|VXkp2>܏C- ms}c?<{9Fg)Գӱ}%JF2#Y71g"ܴRp?Qa$Iq$'RO2b">qr9$d~RI$XI%)$IJI$RI$\|gnV{.BIEAhxXƍ˫V[湋_+,N=h[HjV㖱?1s_k8sD\7^ͤi ߥ~p2=|Urraӈwsׄf56d8髉2O zu]>Uku/_Z3?վWx=rjs9 ~HΗu$J]I$J,t$INeJvdSI%;#I%; Y $e%JvX$aIbPhotoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMMN material_etcNnullboundsObjcRct1Top longLeftlongBtomlongRghtlongNslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongNurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM qJFIFHH Adobe_CMAdobed            q" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?}b?''"Y{{+ -Zm]-_wm(x]qmV纗he;k/g^w:U9YW.HMCϹY"<(T67P}PGv#OڮM,sq?_ԁI.9Ү}Fo'YOvTn9aPf׳6IVhkw/WJ .eUMf۞ګn{kGY\>~ܧbqlwvs Y/V932uqmφ׷醆5v{_*u&O)f%:-v{9WuΟkVܻ= sK7{kW]P}XK[eع{w )5]gLg_ }!{:6v y'@S3'YzWgZX[XƂWovz9l9www\ɰf.wqYYɲ_c8ЌL:bDOu G? Qqf8~+SxO$9 :6.܋ݲlZ%71 q8xTxg)Fuckex췐"[S4?cEZ2, 'k:zUgd{wi]s"t+=e.9lcH;ߘ9O`%"yO|?s7CK>}dqyvu,`eMMe5βNs O}7ev;lC "kȦ-qk;ns5G҈zY-.2"B=1z9FȢ2ks7X@{z0aUlcH lٍOv?;R!r?X1?=^KKn>xȪ{R݁ӭmx:\aZ7 ėonGfFAob$7Vu n8q6!KcͿTrsߤt{F V4Iq5H}OrrUG7N@!v" չk\:@'YٶowMtژ 9$vGΛ +Wۖ;[imГ?--[_Yo(؃8[Q6~>ָ#w4bH/.P !)ֽ?F7}3" q  @NZ05~uk {9٪iL'q8-_9ow[?ήmL/Lơ}jf |mM|3ԚOK4q$WNj^ x#$6~~{hl 'G?m^rǖ;pjk$gi"?)! |9DEw/R.{ۚ5,[". YkZYk~?n.9c.7l:|Qv;+*Lƿp+P}|uoK d9f%9!kak:Re۩6NW޲rܛlF8Hn{?ٹFkmu6L`c$L E=\ 0+y֞+iy4o?$'qb^_ { JWEſ 7c6@ik·Y{*b;= BS E6&|q3hHK?@ǩ, Wcޤ,p0QeϘeN&=aUFo疷M?Y PQ|K&0#J|uS$N '_cs+,?/\|,֗;q%ݯW(.[M-l$XI?Dp;*2 fEcE-y\Yi>?WYXwh|qڜ`ftyYniaXƏ_or|O܄3!(>1D% G3q}7eoEߘX8 ǁ'z^XɬEw:o=C7u\7E9e?i31u|s1C/csa Af's$xIB:l`$?9{,xпIo?&}F~֫>߮d@5"x0fOHS[@[82:{*MKׄE֑nG-#綶_G'Z"IYӗ)Ȉ<7~_쬱"Eˈ]c{kj?wΫ<s6IksB%@pצּڞf鬴2@N&'K_f Z/w{kZ]+|kwTV?\DZ 4ǹ6NRc|7|v^7דI?Pf~2? x[2?acwT[vTrt&> ƵLt|t Aj:Sۛp>>-ZS^CMrlr <7RKK7V`1p5u;xw U8Y&('I;Bd˲nCmGu#E63Zڝ32|PԒIU6@Xq $Vl`|9!hx f:eգ`]{ZCqI>C7uvǪEc'X-nK3M.kVMWL%I$@4$IԗI%)$IL^S;Z4u˄ ?k嘒d0_ kzJ3qx?*{>KW1f< ޫY;['(@%[8bc/3 G;Ze;u֫s(Rvָnt6١տŤZ A8,cw-dVXke@,?>|[G{@^z~<9VzQÆ{*[>ob?G3ِXZne[>š'Y0j*|x?{ќNśt|VXkp2>܏C- ms}c?<{9Fg)Գӱ}%JF2#Y71g"ܴRp?Qa$Iq$'RO2b">qr9$d~RI$XI%)$IJI$RI$\|gnV{.BIEAhxXƍ˫V[湋_+,N=h[HjV㖱?1s_k8sD\7^ͤi ߥ~p2=|Urraӈwsׄf56d8髉2O zu]>Uku/_Z3?վWx=rjs9 ~HΗu$J]I$J,t$INeJvdSI%;#I%; Y $e%JvX$aIb8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@       N*  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?wN/6A/`X+ɒ8e#@1EA53O'n:_Z_HbpDG%8y7S5~>g#x_r*/Ω+Rc Յ0*i>Կ#gyOWT+i_+}/ԉOŏ"mTf`W8J1?HErx.a]WnJ|q/H"$jWfcIїY#&)>\2EH{ƌr0O$F_$J B?-bJ6_$TR-aOPQ12GR|I2_gWOo_bsG)IAܤAxV~?1?۞j4<`g%pBɫdn|_\2}>=kpzl<@qK:1{ AI^1s7xh 9+㧿Wo/_MζN'Wpo,{ՇরU| gac޲O?0לGV./z yGtF1N_0$^kTyNc\,'a=tiKkQ '/BI8Ri=Ke|$?Z<ޖK8]gL47K22?[q K]4e˸/P7VԴy[.h^kCOXK2ic= 8 h.,Y/^k\?!zO?,^kVȯ:mG8 {F ^kT[ΊiKF'~$p390i/c^O\?%at۟xׄn?0GHKJR3.|+xwF#ˈ[Z]W*?rdy17=LBQ^I *[lǙ-tpvʬV+KvvHvov(v*UثVKx?;+Ty>QAք󜜛}"'}?gpK8~iaT؇&ܲUYk9sō~(3D1(ŝȱI -gN]P{ab9ŪP!<B*2!i,LAP5%4^yoeA27݉ǎB gG0!ۄt=s?챦/y Ͷ90(2mM ֙Hg^`(rUTS%TS lP5.BõkJ偂d¼8q >ޟokwV_򎲭ZjO#gERpbpH"pS[edYZJ2BXfZ e6FTG\ZJٻ  쒻 v*Uإثj8hd=#jŻδAy}g`@u0,߀'s\{\Q$1Q(XUxtITj.SՌz1"2,c!aH.lm^>5>o80RUkmRͦ4Ϊ̴{gU %*i78ZU032;HWsa)4oLωbd掉wT3ZFHBEli ZTиqw( 78*&=^_Wt>iR2ў2FчPj*izfgovx\DL7GMm14YKʙA 6uR K47T\rD\CX䕬;v*UثKyWJ=1懵yޑtZ,vrz`QvΜ}N3RjVWPj*A"x\m:r)V9rGz$h&ZmkJ[đmP?v7"\`%kAS C$ŭ͖>2y>&i `qn5\@[v%*zvؖ)t7dıB*؊e1CZoCJme@;Vq !Dzb SRO4ݛ.׀i1SS!Q.`y/~Q? 5'w˓&6>OYQJ!A8rE rkh rE1g(s\rvavL+xUءتQOLޫЭƫkk,֐H V- u%'|yƕ)zIF4V=7rtW?^>gewW/aVf(cʚ˗ 9DE~f4˶tY L lh~?fGLdבMֵh/akkYc$SGplKrJ~KC$O1!bC*n:x;ژ k,=y%ӦkScr9c4ڼZpϋ1fչD>s]yeB}1\2.j8 |3D/$-Bzj|*NB?1w;͖ZMq4y[!&8EzrzWll4o.F_ 9⵴rZ19&CRE4S̜XIA,3W)okN17M,!I :<2$IoHMWU=.ȆPRY:`|s>r N1>ai.ŪGcʤKiDq'Lϓn=U b+|;W (8śaXKOdz%~uhWYw- /r3 1GketB/gqi 7&IZ5ju=,G.'/q1| dnUM~jhGݚ=)tm9Qھc)HlJ]8ˁQ,,#VJPhRCßs3Ka.OtG־C ?[zwSua5Ú!%;aJsk9Q s o,ѩy\|DRNh r4s!Ձ 6jws eP "2V>~u?Ȱ(.&v Zxy|5'|J` hgWuf͠0-E: 6}$hy6%?W>%.CJg\,xi+V5>$.Z} f lPӦS=̶.b֮/"Ar% {u';G1rJ #3Ɩ&i؁ǖ$V@Qq$GS#8F!8[wSpP >3=aY((GP.[IDQ&X܏܅v LofέQ1:KN_o݇|{c?G>o/51ZRݹ  Q_6(ZG뗼O=<%y__B[E3O)#i9IpEvaY y2zצCYP㢵aa*=cU?Z}]!" }'$L>(dDWm3#+Vb;UةgZu RDn,тU!D&ޕ>N&>16^H:P5y\~M{: 6mC- æL!+m[BI\즙䘏h(F7%16,M/w{+T'?UY(AE"2Mm7%[xyEJ^Y\EU%y"yi%$;Xu/!PddzV䫿#XyQv# uA7(أEY/0''0YO2]cԴev'4jXQta h4>_Xkq+Ie{xRd 4;SzH}R$ &8F 2o#/%:Útupʋl#鶓kk̋5{)&[Xld`jlCU-CN&ɤv4~SNFEY{?ιa[T5PH8p'BѷJ7(I-uD=tQq[E[.@&'O K_ݩ#fd?Mʱr/vBg`;JH`rt&4qXH<քzFHl 70GJ r@kz|cy^I h䐅ZF rTrV$H+&I:q{ȩ;x턱uSґKWrÜC dOlBAZ}';}$=F9Hu}W|,v]խDa@#/57alӸC/7=/W' UC/u;Nk{24YԳ Q8l<ԙӅ~#Gˑ[ؖY M~,8 KI B/S579P;=کTAlUM0+G,?NvRGz,f'ԗֱު򱞆9UM*$urqF2By: 2F۵Qє9gGvSaoi)d_N jpY@qBSS۾bš ܺB$$Atok̏яA>mryg10Z+TkjzD_-fQT/k=/cixvilmk.ߝEF$w.ȵ(OߢяM HqO/-I>@'rM3?)N'/5/+]I(0I͊THW L[d) _UnRI viuVdrlK+Xzk3\0|18554]1ؠ>& }w]&S@=ݻƥeR Tx@RF|ڥōDgy 1S(r02'm Zb%4n;1悎yFm+SJRAd6 c̉aS] MpI%VI=ω9V[ 9 NF3Kֈvl?z}ߩaZDܬ3wTe?sǛhb:灘=z𲱉/Eh-igpi =y:|yjM@bvHGw~=!]ey3H`]_݅ ȉZ;T(14݆R-7Kl6:aviBҴ9<sɧ8Џ,K\ mZDhۗJģ6P &<5t/C{B94qOaO~ ڎi&`IƵ*kSjf<|c`[ ݑY P h.eӤQ**"f]AU7Dzn4ƃ5%ZJ֪eXndL`߯StM|ץŪķI!\2q;O`ѧiBZ8<.]H;dkvHHSүM9E'SO{n3YuE6JEe(A9s 1|y:jD&8yƠ5V0y,CgqV:Gw-;ldIL2!8ivPJI]PNRY[QbUo& 燔/1*+xf8(6Y`ޤT 1b[G\% <٧IXX$m~y8Bzd*ֆA$[6/4I.,!JbqQE* iK$RӿIFE[ْXj-o-E9+]MuMR T~z\抔+tc vԖp6G|owIj֬ G3t*yzǷ8>6~+OH$;HKm/L o/(z3?D%yc}_aʹzdGFXXXJ*=RNY* g(oо^ѼXz/6i;+0PN u6^Kce"[kV ˎDo1(Gޕye,6P >n7 opɌIqqԀH4o#p~׌&<TOJo9kӍ""5?z<{>v$jrdiЂuX;BdЈjyz\=YAhOP횉ؖwz14|6]R=TrnE!_ ƊzfFA@ƴˉ֦PЯYjߴI) 8tb,sL@4$Ͼ;LbtokK >DPWJՎ/aԬ{C:95jbYҬ1*5'mצr3k6^chϢۗ[DJ$7n4;qsl^rknאZOoDƞSƪO&`sKc-e.)ױʲRy]B5Jc˥x,^"A K?1(!Yʣ+ ~+~<1HFp66q`0cQ#EoXux./=VhhAJ֋ZV2)" Nl~*Q!szq=GyWdpi܄Calp1T>ɪzIJcmn;3Ms"9&)گ!% Ge$$jXIwMXPҝ@ͱ1odI\H6ZP: '_>9lKK.xs)(M9Wҿ<3LoܯοfGopv\FVʌ9stk/}8=Q;ȉ݄Z<(9[cǡq2x޺-\!yȡCzO|D\ʡb܃9ҟZp$^:ђS_7MG (5JxCJNH\'䎖Ԟe|ڕ'n@$*A{y} AtJ'ưMðJ[x! )-,*]d޻7铉{yN*yw?谟hA aߠek!HV^l%ve.\1ā`[eZZKE,Y}6m4% 96 ytV:y՜nɿsX8Nu PAs.ZjDXt÷o,T$~9Y/3tU Ft8+u5ON/mw76i֤pexJE=-yT*i#DLb:f* P$@yH"Q@c\ߓY8kˤ./lmCtm)9/T!l,u+}B]I&PGBQKN%کLRծP.丸 )z eG[ *4*e8YH>,BV'0y BIUJ޹D#̳Dw;FBzj2xj*Pzw2&IPZG!ɲ8гi1e/Py0LB[k\Y 5jnO\V9!&sipwux P04U`h3V9gA2RYHB~C24Q R} dy׈ILzqvVIo2#Hdx,#-֋MIʎiu.f∭(.ψQ9̤\"B[ƥތkZnNm{38I{Kv|FM64$8a-\ l#3)Fz^7aQ+ݞGAeq}x>T7[a ?` ymWdv+[ƈ ނA>.75t6_;#"5.ŗY~cGEu4n4*0!#t9!Dk{u.%y5Ac!L8-~gCzU*;fF,ǒc l:*84ޣj=k͵=e4q[}cOo^dsu" iX?IuYIFrda/,h\_أE J@a792zD"Oj:w%w%3;xxf1: HB)T4x2pkQ 'rNu4]FݹO#0>< 9q/[qv6C~eO?'jN08f鷘c.O3rU}%Ms*_M[fyƙ{~HJi4'Wc#Q"P9HY!hr5 %{ecz~v Ti-Ux(ҋ|&ʪ'})@Wm-xT$ LMV  ĒXhUJT7S'!`-kZzx`=4KHu=WD H`yi!#ӆ?zl2b$l{M#V-oV₮Gs 6>rS Odմ&HyzfXAg !e>eMFoe{y/t.R܈_]CU @8;ieY#җ')GISƮz2F=@cFW\";nL6)Ɨ]j3 k(cU,ݿ^kZ`>aχ>-[H->KjP}E-WY=V$ộgG/Oؕi$-* ;<:Lr^77ӏ6V'AqIϜ OД"7~fXfp6R."(4A}>A?j:K >wO)đ7r1$F**)f/]o$2F)/dnS:m:2tnŘ]Pz{涜;_4rIcѫKUW;T0R{2='J!UHP:ѶOӟ w:=Ms0Oq|>^Oœ鳴uq#?<Æتs;w^?_!ٻ78ѳR+\;./كCsȕaCXfB.Dykv*{^^X'm;R>4pN4}}V(WPCulQa*zo#M8 ToץOGw# SMZv5+1G>jгLKIUA߹{%Z(8WڧG$)&;DhV֞4'x8AUoğ4*Cj7Zպ<899,0~Mm&}I%?8OsPdB&$-)FD4sY.ӔcWS<c?hDZ궶 ׬= ݹJIYry?:N1v_Ww Zk_*1#5MITˆ:rߛlB5lY JYjẽ) %!<VWK`iGV'3GnfTN}=aUߏݎ_,e$(@fQyKC5q*}OטY;kSvg7"g>1P1P>YZŨ(V p;ZHJyZLƊ{DirrM*mFǹF9H4:گn"LID329*MZ.Cgnj!E9,ǩ;!6v*/l}kUq[Or?ic̳s.z)^vTlI{GC7Z'ͪ|K6_z=|gk 'sohFR 3(渘POj9Mڹ樠ҡdj\*S)"CGQޤ@kr< [( s;zk3"@c[d=ZPrF9?.`ϓ~ORu OGcQSk?.i6FN59Tz}7oC=rLjd5E :z&v|.l_OS ُ.# ><趑IO_zB8b9#;HQcq%Tt䴍NS>A=~xw6,{}9\"QW<u2z u ffB> W(E;g=w>Cɜyxa1hɻ벎@`frpHQGҿ lÊ*;EeY$?@> ރ0T.u#2ȍMV0xTJd y*œTW@"Y&{C>}Dپ(j|X#JYӳƈF/9[n^hDG@dn'e.Og1d{z.M+hF⼉KN͑Ȋ5F]XNl\Gbz' S]'k"vU"]ً"J qZ(wo&]Iq YeEc^ʵ4HVFt;O)kktJۘ+0o>4&!SBh=?I3~Ig4l=rM/O'p]q1Yz}#r>mY<ɓi=b7~HEv6b7P}ߧ\yzGqtwd$\AD`X*8_6Lk}4RvXSvũr$d6U?Mt #dTPCTL 4,:'>ŞM;Ӥơv 3yrS-yfd6Tl B^%59+`d *OPI_pKϛ+䎎Yj>(#+V6!$ֶ R+ҧ{a§}|RxXSۿLLZZ;~vٙyEr źn0ه:2=C?h#M_w%O'bP=QT\ 4 Gc;XhIQ0ea1Az핿;Kr-{*U w٩hs1zM=eׯ#tkW9o]X0އ&(GTP`־;p5xF:{$~ 3BҀ& 9GIiY ]IN8F9.)&!I!c&b{2Sa)+Jry*yZ?-Z}r.GYwc=Os_?۽u<<ǗqǓs?'+I *ta9ؑ^ODw*֑EW>C2yUY$k g3:ɼ˾lx(qKf0[. {(}?( n|Yd|].3We?Z6QçfC1X`ٛiV*qH9NE3\K@JWVȜ#m x~_fd6A~dXUZt doM|yȗ)}l$u, ÖP9=+M.m#Z=0G`{1Bhwu^0 Gu n'HvR{6labdJP7rpUmUaO>(s]m֭ݿ.t>JDNzrY$w|Vcy74l#if{(ާ3Sn=4b0P|O|eo >B/ ?cLiQNztLhQ@ G*,xֲ#PVmu40)x+Ocs:Ա#==3%DPke3[y0^#DrKi~JB^e{gBD=a9p ͗o-]kfK;H^cp;hu5LOq>ɵzLYe*1-z/4 -/Tw&N26XIE}g!.IfsQܹ31.]XDPum&7umzan]kGfun(eG;gj5Q}zϕcg+sȄIpFUA~-I=^xG;Gs꽑ؘ#rmu hIfw{# +e;xeskHMsYQ5ℏN9~OxɣS#w[K+Jq$;OA9C fzNػnjOO|؛kv*\cuqHa }m(hPCY#pi )N; XA뗰0q?\gB^N~-DgC  oM,po}[}ɍdQ-FZf,ܘEȘf4،iѦ#*13~]5VZBZWݏ|x̹"捊Dd/Z{s`S Gi[37Zw ǜـZqP}۹ USQ3!K7AArAEпc12G9"*L(2q畽6q!}9*c$PUh-<TZJDd_3$vr%{؂OH>}^9mg1QOH?yC{e6;IͧŨ٩Fx(U0;ӻ{J60NdUAT}Kry9@6G+* #oH%g5r77Ts,;#xҀoA lb#VԩߦV7Riք2|Mw>f=Q~2~׷@=Iy6g6tݍ0 ¤{SuɄEX JS|Ȍ3[9n䀙Dh;A1$mv.c{ujfNJ'}DP]oN2DZPQ@6,I*t (0'Gn8&D()Eȏ$T(zO3qD/k(ҝU.Xàn̾:k f@*G% [<=e/7EZ<`݊v*v*狭 nt( f-Fj5;}'iK"<ߡ|%n[Dr;P#?cEke=ŕIαEǷp3L*ߑv(de B(@Ȑiqj^/?m'HQ8jG72VgS#|1 سM7ϗ%?ܔWf7e_Is|ۡ]P}cҸ;g? SGqLf&ۀ:AFvIQT.8GRl=}G\g]_Բ v?It\HO&5l; ė&FM3l8`O@=r,BzŜ<xevփƕDzdL"2w^I.9)_eE;NN-/;w9n\Xٵi!l]vS:֩{53yx6=(〄Er$̡֧b]v*Uت}_Й~t^~:xP>3_9xع}~l?I۸}+J X4Y!K~<_d-8~سH6q)Ɲ3E(f>n2q ܕoɄ7I ~ω$QOv 1[{ KmucGnz}ƃO8?jamYCeW{*zz.v |J>lg@M_ ~*ͷ HtMei|JաZiu\G;wȆHYM'U<lN}\:'v* wcܟslCi2~*l<aK!-!0EPhĤDU5]KQQA@ GS)4JjMirZA d W`k+R*87\Q%( of ٳm#;6Un=c6{>gHP ouP\, mfT$ #bm 2ڻڀ ȳza5HŮ6rЩۛt.~}ig Ǯ!E,vUQROћ,p2 p!I3mQM> e G~n 6:#s뵇Q},w6NثWb_v*UثWb-FMװ^>?NU2 ylv.^Q:yBi[kGOqW|Th\YEZW]Պh圎?>_sǭk6 WTa/CFH[S̀H;e; ّ(oGDe.4ڊqNE;W  4FrȌ-.|R>6chdB>2@PN**͖%MN+>$7T*s*JY"T>x5Ou)T~N&O'y_[Nd3ʧ_As|1.gϗc$t߰͠+?2|o}ao)W;xqg>Cݭ>y^uثWb]v*UثWb] hF⬏IƽC7햟{7~k3n8O|]͋f+ >(ɀ49{'.3qNjɴ'd]+%WBԫ)~`92 r.3XU 7CnFB"wHf+AJ-BWm}+6$x UЕe#n1 Gpq~iyFܮj?W$jKz?CQ1Mwʑ˥Jh9O9s;"c,#~jp 2+;< hM>`Ɉb|X(4<*\M+Ri(lb ]ò)>QTusҾ9g&VZ 5&}ą#fZ95PJVݷf6{K7Zm!#+lP>̂hS|o1,.)u"EaGΓ\Cş/~U!A۶F]{ hЬ?GX5k4a(g/?wta_C$9<;Wb]v*v*UثWb]v*Uaj:cx|T9N\*Bg#q4̴fz%=fc9v@;?׭f}Js4|ЌwZy~iFץNǯј #h"Pe`HPEof9-;>asaq%,ѷޤeY1 {<9<ѦqSjAYG=?" Js=˼.x?d!i^RxCu3w-KJ_.9wSx1\y`ya%T>đt?"4(Pxn2V@)Mr@ B!=I PPߩcRdb'_ [,|SڝOϾ{I 3ξkԬ}Vi DkF|No7A-D~p1CĒܼىi%m٘w9#tIA_.r*.IHTd 1ОdbJ68uSZgk:/_Mi%k*Cf.}><²DHyq" Yag~o?9}=H.: E2<X,I$?Cg3mVq~6K"g9 nn)횠)KB/#ܟ Jed0V= xFȎ{fsRUmm뻿>KQ>}E>a_W^_]ꗲ^]9v,3(P潞+KwPĥ呍P*ğl,$Dy< ΞiJoT/w#3;D4Guè>cYu]v*UثWv*UثWb]v*UثWb]OuH8>7ˇãqsNZh|!ŘU'U4c̳ɐ@Y|Wg侹#1Rr,FŪFt?HsE\SLqyzX\Ӓ{^'9j{3>ȱkiCm-:GO}P]S*rA .$|%d@a-U`S|VBW +;*ZqZ\]qo1Hꥶr! 2v%%[rFFGn>^Ӿk 1zCOLgc!ev'/?[=wrcIbYXIܒsUثWb]v*Uv*UثWb]v*UثWb]v*UثVEyz3[ڻ3[tv.O&q=GxūYa$$|K ;(l30aG|6ie\UثWb]v*Uv*UثWb]v*UثWb]v*UثWbQz~S:KiDkYp(!ۋ4 b.1ku<_~{QP~`/13Tihӝ~_W9N6;wAK~ɢH7;P{w!l%648HbRH* CA< Ξi̺h]6ܕQogvi 5Qo}?;v*UثWb]v*v*UثWb]v*UثWb]v*UثWb]lhFe7]QA ^?~ju6{;\?/B?oW∟go@g7\}'/I>iOR JIg\@ٱ~0?:׉~o?ԼӱWb]v*UثWb_W2{~-OiߋWUq?;~-wwW1kOiߋWUq?;~-]WsLvZګq?;+OiߋWUq?;~-[q;~-]?Us\vZګwWqiwWqhkګw_1jjcձ#诧;~-[p;*";~-]WsLvZګw_1]WsLvZ[q;~-q;~-]?Us\vZUsLvZگq?;+Oijcگq?;~-[q;~-[q;+?mvisual-5.12_release/docs/visual/images/controls.jpg0000644000175000017500000010376711114314113017436 00000000000000JFIFHHNExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:01:35&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?WzgF]Y3sh}L8KsdfާK%2~AoSS?Y ̟dᤷ?Oo?_'7?Y%8i+}KgۏWk,kCi.`vc~$$>WQf=K음֛gbJ@?Y ̟dᤷ?Oo?_'7?Y%8i-z,qOINKCҫ,ŵ%9̾Y)]C!]?Qྊ\5;5 'wc5l i)'wdn=ޮG= 03mIMO=?wKYK ^^q:ZY?[(7g|r˩7g|r)KsO)>盖lOKmËyWdn=ށGSSOOF~{\ i:I=@`j|;꒚z7Nޑwi;~'oMK]?p)]C!]?\G[?Blj83X?=+qqIN>OLfMXLmve>X[cv}ڟlcwYV盒SdYIgt9s8Sҷd񛗟)%Xv7􁥍jX+ݘzRߐ[seNqn9fm8dYxQz}/JwR_E"mU58: k]k-"~zV❵[{ρIOO;: '`[SZRS}Av^EX0H\I)c~I$O?i~sq?^RJ}[o_>OxהVw&Χw3;\$_2r=א⵮}Nˎ[ͤJR}Xqnȵn,pkDk[.w9$A783h}]ɯ)I%>CM/Wn'?kRIO~sq?KoS}}f.U9e6 k]ิIOI%)$IJIjXX[3 )mNǓQ:6I^N+}B6]/h{kjJrSX/y h'@n?k?Jw[14O}uەU=j@'ʚܖ9uw>Fܬz>fFSDzl[YMnofmU7]G=1_U/n>cʿ lOUTPΥh(u.:YuOUMul6鲠n kSٸy8waeyiasc]V劒JUUm6X-q<5o)KR*;/ze$zLk}mooUk?._#^zCwnֵ[+w1=gzSI$I%)$IOCUޟ(]O@]?/+]կ6Ƕnkoq_WJ srrlu6.2NSi$JRI$I$'c0= $B` 05%zO!NvCCh/lQVݲ?ԧ'qex:CjsuYjzKS8[]͢F?un:N򺽭VWXN}SmN2NClƫ2uƹ}rglJoCq>2VlϹ^^I$I%?I%)$IO}-> &Yо꜋,GnʇM۷z_OCX~v?I7Cng6mUޟ(]O@IO:I$$I)JKCdzUcΌ`?mƭR+8 X?Mh,3r:kwM2?cۚ}K6t>⎣h~Ct[0㯥Oo?k7݉ %w~;őzwS99NhelC;=7"̗[qqmlwcTVQkg!O?W[?Fcw= n<$gmYYuAѽSqGez?mf&_SSŻ%Kssmsm_O?wԯTzmknvs[Mtm^M={+}WېܪkUu/T7w6$I$SI%)$IOCUޟ(]O@MUޟ(]O@IO:KkՌvF Nu :ϳg*INf^~Cqu?0Nc?t3zWnRGݭpݕEΫ9~')!u}3oг'*z]=bfe7C=3.H߬?^r2͘(wKlw!wK ri$I$$NZA"uIOi9v9{ [nYZlP:ei?5f\Ccs dޏg7ԣ>T?Y2ʾ)Y{v W6ƲJxI%?I%)$IOCUޟ(]O@UdfZ(UkM"\5m{O;?;# }>M8~w%8K}Ga9,DͲܹI)wq{sIsIԹ2I$$I)I$JRI$˫ ÚƏW[c\cԲzuGu*]fՇ--uY{7OE੭PI%)$IOI%)$IJI$RI$I%)$IJI$RI$I%)$IOPhotoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMEcontrolsnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM 4@JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?WzgF]Y3sh}L8KsdfާK%2~AoSS?Y ̟dᤷ?Oo?_'7?Y%8i+}KgۏWk,kCi.`vc~$$>WQf=K음֛gbJ@?Y ̟dᤷ?Oo?_'7?Y%8i-z,qOINKCҫ,ŵ%9̾Y)]C!]?Qྊ\5;5 'wc5l i)'wdn=ޮG= 03mIMO=?wKYK ^^q:ZY?[(7g|r˩7g|r)KsO)>盖lOKmËyWdn=ށGSSOOF~{\ i:I=@`j|;꒚z7Nޑwi;~'oMK]?p)]C!]?\G[?Blj83X?=+qqIN>OLfMXLmve>X[cv}ڟlcwYV盒SdYIgt9s8Sҷd񛗟)%Xv7􁥍jX+ݘzRߐ[seNqn9fm8dYxQz}/JwR_E"mU58: k]k-"~zV❵[{ρIOO;: '`[SZRS}Av^EX0H\I)c~I$O?i~sq?^RJ}[o_>OxהVw&Χw3;\$_2r=א⵮}Nˎ[ͤJR}Xqnȵn,pkDk[.w9$A783h}]ɯ)I%>CM/Wn'?kRIO~sq?KoS}}f.U9e6 k]ิIOI%)$IJIjXX[3 )mNǓQ:6I^N+}B6]/h{kjJrSX/y h'@n?k?Jw[14O}uەU=j@'ʚܖ9uw>Fܬz>fFSDzl[YMnofmU7]G=1_U/n>cʿ lOUTPΥh(u.:YuOUMul6鲠n kSٸy8waeyiasc]V劒JUUm6X-q<5o)KR*;/ze$zLk}mooUk?._#^zCwnֵ[+w1=gzSI$I%)$IOCUޟ(]O@]?/+]կ6Ƕnkoq_WJ srrlu6.2NSi$JRI$I$'c0= $B` 05%zO!NvCCh/lQVݲ?ԧ'qex:CjsuYjzKS8[]͢F?un:N򺽭VWXN}SmN2NClƫ2uƹ}rglJoCq>2VlϹ^^I$I%?I%)$IO}-> &Yо꜋,GnʇM۷z_OCX~v?I7Cng6mUޟ(]O@IO:I$$I)JKCdzUcΌ`?mƭR+8 X?Mh,3r:kwM2?cۚ}K6t>⎣h~Ct[0㯥Oo?k7݉ %w~;őzwS99NhelC;=7"̗[qqmlwcTVQkg!O?W[?Fcw= n<$gmYYuAѽSqGez?mf&_SSŻ%Kssmsm_O?wԯTzmknvs[Mtm^M={+}WېܪkUu/T7w6$I$SI%)$IOCUޟ(]O@MUޟ(]O@IO:KkՌvF Nu :ϳg*INf^~Cqu?0Nc?t3zWnRGݭpݕEΫ9~')!u}3oг'*z]=bfe7C=3.H߬?^r2͘(wKlw!wK ri$I$$NZA"uIOi9v9{ [nYZlP:ei?5f\Ccs dޏg7ԣ>T?Y2ʾ)Y{v W6ƲJxI%?I%)$IOCUޟ(]O@UdfZ(UkM"\5m{O;?;# }>M8~w%8K}Ga9,DͲܹI)wq{sIsIԹ2I$$I)I$JRI$˫ ÚƏW[c\cԲzuGu*]fՇ--uY{7OE੭PI%)$IOI%)$IJI$RI$I%)$IJI$RI$I%)$IO8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{^׺7 s{&?wbvV[u5emf(GOzŚV/ ȈT FSkϗue'>_{7׿ᖿ|ߺ^Zb?7~{kϗue'>_{7׿ᖿ|ߺ^Zb?7~{kϗu?et:[^GTA]Qs'ߺU6[f]Ŵ72w-QOW.__QSGWI,ԕIm,$7}t{{^׺uNªΑf{%j2uamS=d;snLNE*<3 DF'J_O|FPo{-1?Cٿu ouf׺2/ѽ?^_O|FPo{-1?Cٿu ouf׺2/ѽ?^_O|FPo{%#rJ1 rK!&č# I6~U׺u{^׺2k$޸Wt{^jӹ;7h fغJ̍QiUڦGzXd[=<R^Ovqߺ^dzs?;Ծ׺%{{y׿+ޟ/u^hw}uJ;C8K{_ %%][mIISVyδI;"LSvߺEQ 5;~3y{ȏN}ߺ@Wu{{^׺ Tt_lO~l }#s|0b\򚃔J"0( "-U[{=<R^Ovqߺ^dzs?;Ծ׺%{{y׿+ޟ/u^hw}uJ;C8K{W?ǝ_~ڹM߶*`=MU2Ȕ3cҦIY" yoߺ^׽u^׺2k$޸Wt{^vߊ%0_ߺF;ߺ^׽u~{ߺ^׽tݘ6koT^(?4~׺϶^ ׽u~{ߺ["!jN-{>>ͥߺGߺ^׽u~{ߺ^׽u~Rw9W{^{{^׺^׺2k$޸Wt{^vߊ%0_ߺF;ߺ^׽u~{ߺ^׽tݘ6koT^(?4~׺϶^ ׽u~{ߺ["!jN-{>>ͥߺGߺ^׽u~{ߺ^׽u~Rw9W{^{{^׺^׺2k$޸Wt{^vߊ%0_ߺF;ߺ^c;OgÞ Dgw7vx:-ԕo.&Q 2>h nSVrK+QT$d<[OA}mxsCv)6Pq;Qw5/,Dmތ;il^qIWe7:[9t}s⩲/=66hś=ME5q:ij,,r(̊MZ: iW$tWӨ2b(Ou|W+]֛>QwX-[ Agq gZ.nSCS\5=7^׺nś5jl}uFxz_?~|~QL|_t{^׺u{?O'Nҟ ef}{{{:T>jpN_ 1[k1; f_z7x͗d{onuEUUeA<7yBMZI|uVӷKknU <դ!*-}n`KuąŏUV\ȭ2E5d\G5=rw{y%{7{d&g1GU7~e?]`*3uIS$QBj{)w{Hgm,iɵY$( GG;q đv:ZԷEg@wQb;nu[i|oEڇy}*;cjGswMxݑq2f1hx;۬te! ah&37H=MQ<_6sVܪ {ZKY} "KG$>B Q7G]E7rm4X=%I1[?9ܻfGw1ŵNk#O- E#5F*WdUdUڽ(o.b*hÉ  hY@%T5=HADRB@H*izU׽uK]3#_]{u{{^^׺2k$޸Wt{^vߊ%0_ߺF;ߺ^Qڝ=O{cô5}w=m̦By %e<՘ښdO3E"a%Ƕ( 6P4%N E<@$ [>u}?R % 3n_o.lmXj)U$q,yPPD~@e@ <* bNEL)*8 jS_:1ٻ[%ӻno(ii6fWW{m}Mf2IT0b=/ђXdX"  —ÎjBTwgڿU1jĔLU53;YK1&:\}tݘ6koT^(?4~׺϶^ ׽u~{ߺ["!jN-{>>ͥߺGߺ^A>?t^ݳz6ߛދ3jGbh(h7f7@[MVN!SVц~xHӔ^3K)pp#H#7HʘՏV[ݿ˻ymJ-֙.О;gdm>v4Rq㥪 QG[ /D.w \=1jFmfEJXАYXzjdF_Br g&i4HI#HM3||?kz: _>IG6Ci [l};ɏ^6jf#\D6`,#ZI*AWj %:=3`0L],3IOHTL5UTfvsk ;&SϞTDH$hhS_^)պukdvr+u׽u~^׺2k$޸Wt{^vߊ%0_ߺF;ߺ^׽u~{ߺ^׽tݘ6koT^(?4~׺϶^ ׽u~{ߺ["!jN-{>>ͥߺGߺ^׽u~{ߺ^׽u~Rw9W{^{{^׺^׺2k$޸Wt{^hnSlyaj{/)Dss׺u~{ߺ^ZbbN}u}s{C:hܲPM}Yl[bR:TLGXv8-`HdiPɏ{/wo({?M=u{ߩs'uwx;7~d׿~ҏ_̞׺=xQߺ^gJ?y2{^wSHo/O~ ۸tn̶2 ܭdpܤ~&%EMF>7UTidTICF0}#{u{{^^׺4C;mwa;33g n7 yxL5CS[ܷukvEh#{.}ux?]؏u?O˴?׿gYvb>׺׺ZJjDIO2jV,.ʚ[K>׺{{^׺u{{^׺u{{^׺u^׺u{{^׺u'M힝l:qN+cA7G`?Ip#ò*vK{nI18f8C1,I+R̥r{^׽u~o @o%G{~ >-_`bbؽ+َ~]#E3Qwnޛ~Ⲓc"xڤjHkE$M_cx8c1yezmR{`w6{W1:~uV7av`h [gnb2Wd 5^G^1mj@i4smxc%yU"/kY$qaVP׺u{{^׺u{{^׺u{{^q5iʊY9!T\=uu8.bSr7ज़!ܛ`٪(I%Av%GuK% 2b;k&yh3-r2;Sf2Uebq(`yq*$ejGVǿ]ٹ$'Wd랣鹷6;%6>:L2}Ae_"B{<>m1~|[Xjc]G2YXvr&-`LW˵./xIwEO썵(!z4j-B:ˢ=uE_i6Fٴ UUu>b6GqMUBJ qvXVE:cߺZ{^׺u{{^׺u{{^׺u?=u'B[9r?({cbaTR쮙Zt}ܛz/\+[I uA +VS(TNjq֨ϛ7r.\_XKU=wFW+GQn?6M9*&~-4OĮR1||RdžSubvFy뼷%}VK33ՒVWUTMU(K醎&T$t)"{Ou{{^׺u{{^^׺u{{^׺;;3/_-{}OߺZœֹO}_e^{{^׺u{{^׺u{{^~/hpluv_-d29 ڇSG-M]UD#Yٍ'ߺ[HY}.fR˄#h(.z*mV'!sz6>&͊TԺ7[Lތǧ߻gF-ŀfXz;JlfٻyQef2RS2R`MET#R{رo2yfnw;"20c*+ݨ{ekjq葸IQ {uf4q;  wgz6{TvqRnZLݹ%]K7<)%ѽ׺~{ߺ^׽u~{ߺ^׽u^׺u{{^׺0 7ܸ{nz?jpx9)"f0[%_$T1O 3,BV[~}/8^5˱z ?·fCfe$c9*QL4@I'R}׺QOa= }-=+_[c˄jn9ނ*j%the~@*OZV^׺u{{^׺u{{^|\ݿ/;bt֪ƕ[T;/acEL1q:E3CSVISF5߂ v.l:˜`qFUI%>^-zw.gau5No1Rˆ9>Őǿ3L<[&9l-,PLQ,!Lo֢Ih5kuU"8 c@u}t7|y]KW7Vuڌf`m\ߛud)(T-ed'"9&4g(ž}s7۴= J VI$x5i#@FmV/cMT]RHH!OBfMpa>KnSg{!v_7w.7+9⣧#5RO0i fMIFohaW՞qp@Ymݗ5Q̌HL1[JL0JxUcBiܻb1v?[Vn΋c윴[k{&vfVaqY 9 dJi:Ao{t igRIg1QMO J(`nۭKv(UkPUpq5ӪD nviceeuNW~鰶oݓ Dsb*J#I m}ofۯ;nT;I:jEV9,7e)#`Gwj Eױ^2vI,hi1J?u{{^׺^׺u{{^׺u3CB{'y!׺u{{^׺u{G?{OvwȨAӯQKմRvgaPd*u>*v.*l-,jh\2{u]=o=Y=.LDHGJû>W#]M-nJQYuE;ƗrƊ|ZuyfDRO`8IS$Dq ⑒yGza+3I$I#;,ij31$'ߺ\=u~{ߺCƿ['na;[lav}ݳVTuCbL-wV55-E=e$%E<n,fs׶ KFY$R4R.VXаtԌđI;@3Feu-qHUP~(kb><=ۋή{;}^hW쎫 8vn> δp&2X^47VZ_)\,WMc)-.dZ;v4{3{wn켷`hml=GnlٲUY E%]&.s,kHO.r峨%I-;!k1O}DĺNaO2*߼-niO Ȳ%0ڱD GPWf|%뭡[R|MC9$ff6S ***[6)2 R8glr?G76@2LaCƵ4-Vm\~ 5}&`⍧?mh;h͌^׽u~^׺u{{^׺u3CB{'y!׺u{{^׺?~ }=ҽ=?3xRIa)sKAĕy\Sj*8!aq{> 'Æx+hz_=m=}$U9Ɉ#e!f-u_?U? YL>k$SpMK;'!ճR(fYrq\S<{u/}wǺ{vlrmMJnI U.MY\tQ*&qY^^׺u{{^o׺u{{^׺߃_ʛ`W TS]m1Ij"2 ,x ethuFy۫Y`]Uo=SǒˍS_wHᠧ ax |y_:bMGG$0d!E]M^Kjijl\v^3ᤂg^ZF-[SVd5 Ls뚦Igg'ߺPu~{ߺ^׽u~,stY/~}aH7e>xR+U[bpa𔆯1+M-U1^K=͈jIzf٘2P9w} 䯝VAV><2FQURƋ1/VK\ߺ_:~{ߺ^׽u^׺u{{^׺u3CB{'y!׺u{F;wV cMݛsdq #k&X)ii՝oS"-وPH^i'hl-0ihc8JyR^?۔OIJ\`!R(-L2W*I/\%DGu=d~ꭍzov&f)7[:Sm\K41T SU>!J+~B_#rQu{cK|ǖuObTTTVW#ft،8 *- th40>;ou#|mm[v}?(2J: OL.%OQK5e<+2NI>i]{{^׺u^׺u{{^׺u3CB{'y!׺u?Ÿ=󃳫zp8{:ӕ{>+A.Us#;3)G><65TݏY$Ì:cK{uӴw}^R1wn9׺uWyl`kZrmj+c s3KG]TLSM=tPN?͏~Z3KJj=EV1}䧊keկVGәB9xߺU'{{^׺u{{^׺u{{^׺uzl'Za7gNf;c7CWhGv|]EK>9G]TgjYmRٖ-32l,p[ZyNl?RoUԼ?q[6x6s)Xn \THoB[QA}lY#u :)Vi;Tۋ utwu?6WPcvWO{Jhoo,NnffŏUAG+HVgh`ITS[;SPuQ>mqs!O(C~l(nf01FvbH).#*pWe1V_ϐq?%oh{J,L+/X\{sEnjd3M5iѐm3n_WN7.b[cCU.n$#RBHU-vŕl݅ ! L@jĎj$۽3׽u~{ߺ_^׺u{{^׺u3CB{'y!׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{^׺u{{^׺uK%~:G:=s7]v]m <沴uj)9thv$T{OgamI?YPm\MeA]MMTUPTME=RF1ȥU߿u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{visual-5.12_release/docs/visual/images/cone.jpg0000644000175000017500000003735711114314113016520 00000000000000JFIFHH ExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:01:04&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$s3}rh h %lCL!S)lW:Vc< :ͫ_UgMhv90,ZjP3^>?Lyxq_&GޱIE DB{W9Vyhx| |8Ou/s[yTVYspN_6K\T05+,y2㤒J&I$I%)$IOR.,pk9$hID,E9mM_of&^\Vly=rBtf~sAAh!?1#Ty1H FBRI$󿫎 $oFW`]f< }Ñes>0>w,4Krn MnBܖ\)w%z[ҵp&ܟz(Rmz wK# .dY9Yy4&n͏ɐ0zoQ}Y66Z5X͖977P`&Kg887*9 q!I$N4ftk\X3KԶzs-_7ܧ:ό- a6=%]KMZDM ֡ļblPz{2ci40_F1S84rߛtq%{Lѻն`dY{<(Ycv**dh5I5I$JL{ƽvYii$A>ԪȯBtV ::Vs?K8:G4&sQ!Gys ̢/d6(:XS̚ĝ֠>ܪۑdǂGuJtH&`J.U{QJmK_ $&I䤒]@@PRI$$I)I$JI%)Rǎ $@"]>rkV?laidyBROe֗#;Lh]Ԛ~'T@̕ǹgm[ΞMf I$JI$I%)$IOPhotoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM=conenullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM tJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$s3}rh h %lCL!S)lW:Vc< :ͫ_UgMhv90,ZjP3^>?Lyxq_&GޱIE DB{W9Vyhx| |8Ou/s[yTVYspN_6K\T05+,y2㤒J&I$I%)$IOR.,pk9$hID,E9mM_of&^\Vly=rBtf~sAAh!?1#Ty1H FBRI$󿫎 $oFW`]f< }Ñes>0>w,4Krn MnBܖ\)w%z[ҵp&ܟz(Rmz wK# .dY9Yy4&n͏ɐ0zoQ}Y66Z5X͖977P`&Kg887*9 q!I$N4ftk\X3KԶzs-_7ܧ:ό- a6=%]KMZDM ֡ļblPz{2ci40_F1S84rߛtq%{Lѻն`dY{<(Ycv**dh5I5I$JL{ƽvYii$A>ԪȯBtV ::Vs?K8:G4&sQ!Gys ̢/d6(:XS̚ĝ֠>ܪۑdǂGuJtH&`J.U{QJmK_ $&I䤒]@@PRI$$I)I$JI%)Rǎ $@"]>rkV?laidyBROe֗#;Lh]Ԛ~'T@̕ǹgm[ΞMf I$JI$I%)$IO8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͆u/1]}^?ݭ={8c>,1zr d!DYᵇ5ICXѝĮ=4#٤u6!^^ 3UOX|\Ǡ5y%^Cڸ hqy6M'0ү'^`Տx*΋leqK&Dwp\Z&Uu*K;6[DbeO\qeY gvA.bJP]pHDž3{ٳf;vlٱWf͛vlٱWlؤKus۝-vs5?KR#ˋW2) !Y18&ɀ*Uݯ vǀ+mčK]o-֑1ONG3)4n-t4 bc5fvGh }qQa.͛6cwf͛vlٱWt]j3kSb C3?k;ߒ4Ѧyf")$|yK> Z,|y<ǣXt(@Ե;c=͛753fV+fP옄`ҵ2W $-ۼN(zw :Ip0;e91zbgDwxȆgDoMF?iivE jr8GGt:j6.͛6V6lثp-W$b.zMQbU6HE(3Tf.1Ź ͗gL@<_'.HRL@x\\y*_QYaE.͕5F+ERE\^^Y g(󏗞vOzgnhaVE{"GYOps>$u{'$wC/a)+0=Z uYp41"}Xe%;6l>Q`g҉ywY}2ꚕ4+. ;,cxkqO?eyf3 ܆!78lP@ ح5e G6l@PvlٱKf͊6lثf͊visual-5.12_release/docs/visual/images/graph.jpg0000644000175000017500000030315611114314113016666 00000000000000JFIFHH ExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:04:33L&(. eHHJFIFHH Adobe_CMAdobed            J" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$|;1kvU'"e7Q>ӗU6ڤzv9#{6;ރ#n>Q &1I1LǾ&wM45̤9PI$I%)$IJI$ hIRfS^ֺזz2zFoV s8CH#+ot48mKZ]f8@O+F$xeM$EDhl_sOH$ J4I$Nn)?X ;xoAYĶPr1AIG{=i c*߳ /|}FHpo3*V+71-?-%Y"f $IeUfj)p|0~h)</nIb=>Mg$vYBDޠh?k;Z,0sT]kv$WDE+*AOI[u1b~svx}#;Inco2JR ru{Obe61`Ϧ.KߏX~o's`v9[_ej& ǖpVqLn7?1?hy, |Ӱ?otOH&88;oswQ +LW~-dc~S7i+򯳃N{ϩ p]WJe􌌪\׻s_'~o~F*ɐ? :ܷ#zn^_-8p7 x w\vʀG.k$72+sM7kV3B}߳ٻݷ bTX<9L|Rׇ k&;Ge.6L d8w7Xe1vvk:-.iO>#occ-.V7qJ>sZrI5"+}_E?Eͥ]Cn}\Ku%$3 Hk`c7&VZEv,sAZvߞ?~=7kY,oիl*8{21-p=.k==?%8P)Uq᠆_Z)Ki?\Yů?ev!,=@bw!{1֎IY|?g?#(|߀N>M[2W$}sꪻ9[\.y Qqfzk* },y%-{T"BfUZ1ٺuqxd6s7?h;}eVI.#߃AG.#p?MgRH|vUdLlwXZXCA{[$K=؟/&NUыew]Sk.:@v1T22 } {^oMŞv81'K`{ڛ:\E6D6gݷOͭbI#UU7Tr|XuF]':9s-&G,w g[>hUFk29%;DJ?EiKU,chD v;rI:̹-qkm19g.jX+iԻ{ $bw$I%)$IJI$R[5&caI$$I)JMc{BHw$$II$ZnI$JR+ni-%ԒMc?:=-W42pֽ5qS rqm{[d=1* IEKwICuDPhotoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?LgraphLnullboundsObjcRct1Top longLeftlongBtomlongRghtlongLslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongLurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM J eJFIFHH Adobe_CMAdobed            J" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$|;1kvU'"e7Q>ӗU6ڤzv9#{6;ރ#n>Q &1I1LǾ&wM45̤9PI$I%)$IJI$ hIRfS^ֺזz2zFoV s8CH#+ot48mKZ]f8@O+F$xeM$EDhl_sOH$ J4I$Nn)?X ;xoAYĶPr1AIG{=i c*߳ /|}FHpo3*V+71-?-%Y"f $IeUfj)p|0~h)</nIb=>Mg$vYBDޠh?k;Z,0sT]kv$WDE+*AOI[u1b~svx}#;Inco2JR ru{Obe61`Ϧ.KߏX~o's`v9[_ej& ǖpVqLn7?1?hy, |Ӱ?otOH&88;oswQ +LW~-dc~S7i+򯳃N{ϩ p]WJe􌌪\׻s_'~o~F*ɐ? :ܷ#zn^_-8p7 x w\vʀG.k$72+sM7kV3B}߳ٻݷ bTX<9L|Rׇ k&;Ge.6L d8w7Xe1vvk:-.iO>#occ-.V7qJ>sZrI5"+}_E?Eͥ]Cn}\Ku%$3 Hk`c7&VZEv,sAZvߞ?~=7kY,oիl*8{21-p=.k==?%8P)Uq᠆_Z)Ki?\Yů?ev!,=@bw!{1֎IY|?g?#(|߀N>M[2W$}sꪻ9[\.y Qqfzk* },y%-{T"BfUZ1ٺuqxd6s7?h;}eVI.#߃AG.#p?MgRH|vUdLlwXZXCA{[$K=؟/&NUыew]Sk.:@v1T22 } {^oMŞv81'K`{ڛ:\E6D6gݷOͭbI#UU7Tr|XuF]':9s-&G,w g[>hUFk29%;DJ?EiKU,chD v;rI:̹-qkm19g.jX+iԻ{ $bw$I%)$IJI$R[5&caI$$I)JMc{BHw$$II$ZnI$JR+ni-%ԒMc?:=-W42pֽ5qS rqm{[d=1* IEKwICu8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@LJ     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺uvuc=u~zߩ׺uc=u׿u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺}m2ye3]-H\Wlq=CGɟMT:4I\}׺{Ӯ6\f\;r]׶YGݻo&JSEUmAF2UEXT{u{7Dn?m >Lܟ!خ۸^|ɥ_zf}.Fpm-vO8tRϐX3+7kf\at5#[wV!Zh-mTfihНl2ks~[hh0f;)5vs<wHK%UwݿKvܪm].qGV~ޮ{{tG[?YɅ[m#S;B0ASq ;xDFh7Endgh7Qmgf{x`*Ks _YfG,QI4pG"[ie?F[+>ʸ{\==ܸ=]ݽW{O 쾽ݓӹW `%;ttQWlrn;77xmڮc1" "9uֆ1q%RvKv{{j7s$*xX  )E(M'/{߯E흵o#{/H?4ۇ>*9O1Mx nr۽_ZdM8lDu6/_vxx--}Ŏq}vP%n8GpD\*۶ȣ/ϵ:W)[OVù7rm݇|u8==8ٳؘ)j*#Q6닋͓eD*n/zdhj}&"tGhL/svrahs ($hob{[LֱggVI/+b|G.nmn8kҹ_;}c{2V7qsd X&ܭd~)vXofPM^hxgH $W*up6_qY⢘I\Fg&;=dbA.xeuop}tT.}u׿u^>5>r4b;_+'ア3O \6zzM,u)I!["2rnnI;E܋uŬ[C]n2Ç(9utL&fj >yr!TVem,~~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^cb7hwXvݧoǝ<U7T^JwI)Ƶ 9Bd5uQ*vU';7ۤ11cJ]< " ;*r.sy۔ӺE4`TRH'(f!A!;7vvu9}ۜUSX|(EKP,TF*;b. <nMUY/ TU:rĔRXxnX'-:OqsNm&fTH1:u {kql';UIrֲͶ;k&{]Zj!A=<n*#T#EQG[G3ROBUA\R}}&]@B+G]jheVUMTҪ|>c :zc}~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ]u(E?=wɰ?iZnꭻwc=Y YUؚ*mܱ<& I&)|3i9-j+]}&A nkqij ^c$eOE~p떟c4EQM4TA$s<2RƙXJ.ػg*E$j<<.ҥD)14P:} ݖ/I8xi|Yd y)^bT=sK8O'dpG-8`{ 5u~{ߺ^׽u~{ߺ^׽u~^׺u{{^׺u{{^׺u{{^׺u{{^׺u{Wlw`d?x0; L I0 &l{m;ߺedTcSIVe I;unFc$ KN$)%E@$H̓7ozOxڻSs9%ǽյ]Q8->ߪ۲r0QDt/U䠒Y"Ӵ6$—,2j$7_HiBݵ%qxџՋJȎJQ…T=ZaMٻo'Y;qomѼq{vq^<#c8= e 1biam%/4DdoʨۏsSrq ikZP1}Ϝyޖ:_WO_W;F3tRICUbȹ$E;ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^8#Y䑕#DRJ""I ̨ $8ь6=?BFڠٌ ?mTI'q=E1^sru\mx֒_bB PTj :Ww'X?Uo'݅O[,Z 21/tmnRg,lQ^nV!sSf>Iy~\ 7515`nd*Bqf#T cp~;CywW^%5fydXI7QG JF`XfG]{ߺ^׽u~{ߺ^׽u~{ߺ_^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺PL{_qbw cU !r#eU)[gcܹΕÁb<>p;Z3*bw/u?}_ܓ)zf7ÿA*7_^cuystu' /SWC/>ъۻ`o`$[6.5X!7VK|`eK%{˛ڔ&j+Su6l28ռB X)Z7 }M+y7͵{yϾnuF`Yg3̕4XM' ޲K-[[®)ptWn6w`6њg2<3%V>Դ5&ٸly'{y[ڎp6p[K(RCa$̄B#!u:}}~ o>nm3N%Y\Fѯ/1_o=„o/C{c??tpm+=]Q`c-{e?_k?[7^w79WfcX"~qp\_Gc‹zlU>l}=@{O"z= 4{گ{{oa+v6oV)b硜R ã7iy돻N'e6}'ݏmӖVѳBʼn0U>L,^v~8=ڴutۓۍ,3(lE9nLrS>>M4m<7Ѳ :U)y5ǵ{\d2smEF/b\22 O .sn,y/&v 1"aǧmz͍عD]7նYJhzh uG1Zm>_ZwVmCr&4}7jFzqZЎ2-S^׺u{{^׺u{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺PL~,N;un)6ޫew$8Z."CL%%MNDU_J{{!zZk7^W&7pMawu5%&fM-#Ө{{{^׺u{{^׺u{{^׺u{{^׺u.>1ٻk_{zU@4?ca'u;~;O}??ߧh[.#5'>:SuosU{*oV=ł/kEd}?(\WC/>ҷjy7+wǏRW^V_X^*,N?^-> ## u .b* ;kSe2G_<ͼfEAaLi08Ic޾?~x~o+w:{|Mן1 9U쫙X??\?7AXpޛ?UqO?_oPȼރJTG웕_ܿǩ+/|+y//F+ ߆۞/5r`%\TYeZ'Iz`{(׀ż鹝ٟwגFk@MU!{fU\V"jrA%yD|ζXsąL/CkoE&OMCwl1|FR5]CSO6Pd`Hh U*+" cog/m=kآ7 ;.f%cRArHPH=cr6sO)Y3vT")m֑ +5 ]9,rzH{IЃ{^׺07"ͰmjQl>oܵm}ځTbo^d QI "9.\DavCuO(I>aJ'ލp_2o-\f♭ͧ_X͝3I@/P/w>9m|Sof)XAϏY Ӷaqc[;K;#FRAcb޶c6af6h!odY4%XTW0{c^{{^׺u{{^׺u{xw]eoMM15 V R2,~Qۇi}U1f>t%J6^h.3Ɓ{Oc-3}vvߺ]ː(DHEuHcAJ<*zϯY7#os8r'.QY|*D6iwtA U!ӯ,BZZکT5xZZTNs,/,{$Wnkē0$޳+[{|n%"(ਛd>J: qHN%'+=Pc-{e?_i?[7^w79WfcX"~qp\_Gc‹zlU>l}=@{O"z=+;._;S?nWq~[r}\OVvX&NEQ8-כYY23-AyϡH..}v9_I)m~$whT\zx+0>PΰU{4p?rJ5Knj}NK:v@~mEFx^^ď0 oEvc_?hu)=_I_w )ݺߟߏyi?\}u~{ߺ^׽u~^׺u{{^׺u{{^׺u{{^׺u{{^׺u{\6;S;;tm>r%Kt6NQJey*f~l6AA"MϸtV[iVTZ#!V ) j4-@e$0Eٝ&BiZ+ /AQݤ$+P`4ٿfw>|SY.폓s}-Sum³57k|{[CKdV05 r߸j~kֵ8 PQCYXNqX=ϘLqm6-ƻ";+}hOL5 R%^Y‰ Gö=W-^uo[y<ݙu2p[[-PIU=M{ߺ^׽u~{ߺ^׽u~{ߺV7$|Tv>h}w_?pV_z.W&J9k('zwgRU4sd'I+̉ AorǷr'(s+I5ZV vִ8!;:}~̋WFű˶VŕWVB̍-3++Ts??gw'x9?/A3;c?}zOG ?svw?{G){Ms]qei/IaKhh ɶb))$mGM5Uler,uՑ`AkE KYPrM>·IjI[& u<Kt8RmY1Rq݌yo~t%}?7S|/*vz)v/٬6&)6vqVDӴJZtpO8Y#W&`4*sG${~_^4vw$*iHՑI뙟zly>rl^[˘w ti ]Ų$ݔY Pz{{^׺u{^׺u{{^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~(6qUg7&Qᰘ%SS_`C#G aqIcgePHQikq{sEd`'Nh卛t;]icfc@I¨,Ɗ{bmՙJLV]YC]C=֞ VuO_Auϖt/QN۵սPЩīP|"JEYBľ[v2C]aF6_Ho? oF 1}i{KTjM϶O GMM1y!7SFCY*|%vOWMSOHAXM Z:JXc.Kiğutn?*7,ݣ1Y7c!E2fUUmGMTj& qnQW!VGomXh = 3{<\F9>=AQnI0lόQ7dYVFRU؆R,Aa2(H# +TGӮu{{^׺u{{^׺u{]l|e。|D3;qbv%֎\lTK9cb*e#L4񻵕IorPW@Qŏhy'y}Gml帐-5 RH@$^FU#]߽ڪ=3♉-clT`㿉V*{Y1^W[ XF(G* ?6 Ǡr!6 w-FPB}=zȎUonrV aG6xI4,ﶧ#<k{^׺u{{^׺u{I Րswsj-k:[*j[mq#y'ķORTQCDk7tV]MJᖣңd#z<+r5Y˟~/F'm|jJo$;fF4Dmwvm d53'9bx2f E|dFq4ΰz}孳sNȜoᨻmŀRc)uIe?e|Vjt^aWZ^^kOqENwE>q?^FG?o{-rCO~?_ܓ)f7ÿA*s7_^5>N_g?g+V!wqYrj(rxۗx%{%o%Յ߮L||*0TQ:{j\GUK(5*i #l{qnvնe*;Iuʛ?>sbr70ϰo^sEʩow]̪H  sCå%wBM.2VlB>TԸOrA>Qy@}P<{t$%fi/rvivˇ4UvqG_ Oq++=yO}~_UKZd1'>?nvs$~iV}/s\׺u{{^׺^׺u{ַ~]{?n7Yi(cVc]e7Xjiޮ#[Ìa ܽw V2#&5Po;o;oo7Vơᇸ!"zomyN$5nt JQ*7HAW#;%3Sck2OY^fh{O9`ک+]FCWtWp;Y˫;~qV*9ݙ˸dIQ*p@m QԪ*ʼue.B*9gjzy]20Eu6*j4 Azf{K[YQ2:0*+C)H f ;c ydg]ٌ(iEM.Np 4tx/R5&V)hAI,{1l".ҡVfk5^Bmu"׷'^72s`-G$Q< ۞HO9jn|6~ЩC5̵'T5AL8~~*f\{?ߜf7^u/Zt ?n?]~\^;2?ǎ1RF+sմ%Ar!YM31bO5m#9WV۵Mn$l(N܇}_`}y?Vn-̑n6yh Q͏9[T{U_x?jyzﳿ?<mdb}>'ul~;O}??ߧh[.#5'>:SuosU{*oV=ł/kEd}?(\WC/>ҳ=CQ&5/JKJK [^j.hߟ\ZO?>qݪ~Ϲw|8\𖑧/Z#jNi_>ݍ :R>fnr/tyCQ9>Ef4egeRH\sþZ P 1J< )vėQꨍH/Ev7|:?R{9_I_wF}W/CkܟXA /w*YT]sw{^׺u{{^^׺u{{^HőYrx\u,[1mMMJ|e!Wy㨑y; O$a[Zx=t8#)"h}T럽Xw+ms gfhb.l "7g djOp2-"{25~ٍ%7O OZ70y> 󗹋>=SFbQ׷ǝǵ7Oh*MÎ|V32ƸYf21Lk䅪 5qH/{G(mu4P FC¥:GyW{ mrw,o۷nW wp 6k̆V#׍AFNdzrg>@m~V1TQj**c‘%;#Z,S+9uyOzگg dmduqAFm$ SFΟg)sĜXs o;\w6[6NPƦ{Md[ic ]k2xH 6odn}ų-dnCvb+&PdE؂A{+;qe$3З`6g~c.D=WJѾD jzNMѿ^׽u~{ߺ^׽u~{ߺ]~vؽc+96(m۔UWPM\v [5'Y cMcl(Ă?jNE?`P!U^ YE>%v x,>=M{ߺ^׽u~{ߺ]ߺFk䜟޶nM7XJH[=+GlQf0LMW"^c;V*~ut5OY)" {.mJߧ1QĤS5l:,]M{ߺ^׽u~{ߺ^ϴ:w!W`lm creTHnWym~N刭kM;v5־eE 2E:ʟm}u}=/.K⵷it[ihZƍ?DpaRM?u޿S;3WG] 3vGF|IٵTSq_SghiUުl3RU6Y?>^Fs$WEۣiBbNN)ǬoŞ͇ wi$=** Pt:5ZczuW%\h+9•զ7۵e\!MnT#ԜΞV[w+I&VZ ӀԪ{'dfۅÔ}٣ Jb |0Ϡk+ ?e|Ujy`~aWZ^^OqENwE>q?^vFG?o{-rCO~?_ܓ)f7ÿA*s7_^5>N_g?g+V!wqYrj(rxۗx%{%o%ՅQ{5[4ʿ.-t'L߿q,pniψ;V˥SͅaC,aej]|VE!w&,dܪ[Iq4QR1nOk?nMmXl;#0ӓyxn Hhd从=rĩo+I{@WJm^n )ݺ_|̞6ݖ'ܧ`O/{?P?*Ϣb뛽{ߺ^׽u~{ߺ_^׺u{{^׺uN(z3WTZ\'f줝 -ATL,Nnk0C(N6}v&#.8 4uc=ѿ5F`cqy^n۷Ml9ioJJ˦H'QC- M2FR%'pute#eݻ uszꪉri#2Z5ݥ)fp#vmAkW\2A$d ?  ȇ(րsp{ma7nV䳼EVhH\( sm$S&U{^׺u{{^׺u{qG FI& $uVTPP ŊﯛXl}v aqU0#M;q jL}Tz-r+jhWjBa@b~xE~+]EMx5qm}IȆ̔pnϢ#1SP66Xnq>$bsCS=+ިjJ&}ux}^l6fSʦ̈m=~ F&)CF6ҿ/ݼwlu{kO?s1lGu+'?=v#?MQ~D|HRSWM[wIYOU4=O,?D . ֵů^m32e%XVArj>ݛo{e/fg%VF* C zhmun ToHji8.ݳ:3AݛWGE(IUzRoɸEmI Kd[Y5M6?i.;]3skHm/vo&z]lܱڱQ;퐅pעO65LӽV6?T UOU9.l&\sa6ջmݔ[x.HWCU:XP~c}}Ò廭V6tK4"SMq::*sL&fLbf &IpɖJ >a%zi[$߸ 1۟iZn̓^D/^)Z: WV]馸zӫIZWʾoJG.Ȏu+v&N6kN׽t-V¤{K-P([$olNx׿r #bvuHy^0`=lv nV[!ƬqJ ͗B!u"ZC%E YA雵wiFLmݸyqH8qXc]6DH ϶wK7MphHZJ QUϐJӑ939:_-8LP"¦4aZsLt/[׽u~{ߺ^׽u~!V޸?DN'aՉT{ yIp!M:[k8er_`"HèOs_Ͽ 4lmS o6{0;OI5׽u~{ߺ^׽t[;/u7 E%StU$9Hirxqk;coo hXjY@&_nIt-[mM̡]>3K,0R9 |y?;ڿZh L|.~1:_s!<|sJjyWD99/_r~^ ݝaf<181J 1,)o{=6/bXv[m[YFZ'd jA/'_o Zq쭹֖Z-n]`VVoy4tX>Q#-4q/ܕw }}6nwl)ֳƢXed,% muHf7>Z?m-v{RwumWU#&Yu*ɤUh@saa~%|Açpչq'h6~d7&nD:IqR*U3H 1{_&onvrC Ԧ;m4g3f[bgɀ4Foωu êk7^񊤶잷im}5]~I`"S_~w~j=K~Fjl( pd-$U%{՗YDr=BaϾ_wh~ \GZYRn7lc8k0m [[GWѰ/n}'h0vnu#e1G;Jrdѯݟ >/5q*no6eiLY!7 4#e'6 ;ދonj9vh$ͮug[(B//ԟ29ԴWڽtoL5~R%y)kk.\$~||䩽i{ۋ)b!Iь9E5v®|/qmbۆn{ud_ۯ]!^DRs/qx0N v31Zn\yn$Fl1 Cpч4j>)2nFɏk"k}i/pv.OC{ K7lb']m.A-W$똨PJaLRHyCٮJiibya|I$[[5Cl(2Y[vEmp4Pqiug7oĿ[om6 |D}XR&!C%=ǚz„#/eپ~74nn6s { K +*Ea}E3IfR)S(| sܝE?BSWo\ô!fw]l&Ҕ >+6QqɎO+QqN`7bCgsr'emi[Ym.(E &3 Vr\Isk!uPbPi 4z8#޹۞f"ےNPy#`GiqUT oD)*vCq zJvm1|nTDO)|<;4ҥe-%} V@o_1ȜY\MKv\g1YbH!>^AeM0?PǂcMAЀzAnC)Ȏ{~XA} O{/90;mvvM3x"*6f*Sg8UDI;8D[7G;_s˞;['vmiv警{)YbKp&#DI;&ϷRÍQI10kE88}C ?ƿpt@m;qOr\V%ݩɼroQUJ8uIk[mNL7-[wdeg&?NeAm1,!hʖS͜ "F*փ4: U.|; Cytdm޾kj:gv䶮R,?dŏhEIڕ XFemw\ˌsK̶%FI8(\o<  zZeZzjj$hx$U)J "܃M 2ATF# äHoQXQ \C 2 >Dzs{^׺u{O+6fk{h F:,6B= 5EPN /[qsw-$!ʊ`4f@u(:$~%d>l+t˞X-7)-fKt4P]2eM9`a7} rmXns;?xוK3;*]?޿T73WGSO??qNj+?:+LiFRin}UN9 >KsU(JӨOQ[;wWonʧCvpR()TBȝqOeol-O&\vR$<*v-SG>Wywz|_/y;ӣc?e|Ujyd|*J^Orݶ^g/CvS=.m2>?~x~o+w:{|Mן1 9U쫙X??\?7AXpޛ?UqO?_oPȼރJTG웕_ܿǩ+/|+y//OoŸE[yhU~qkWӡGg=v&cpMsm0oSӮ,lD M,jY,;_9w7LwGr@{$$ U8!7cۓ;)[guk)  #kou^2>|H8vH 2EO|]rRWow?arN+ngR1u޽{{^׺u{^׺u{{^׺u{uEIPj{虜fQY( בߝ9GPMڱf|w(= `F =jNi%wA1@)~2EOY^׺u{{^E%-UuU5 4Q%EUUUD =55<*\n??}ν댮K`݉8LT|R ׍]#im l_gnS=}ܷK[jإ6vLeEmM؉ ']JUuwͳڮUe 3oڭki+;Bۺ:\74r8QNvGmgݱ|~nӽ ^ZufԂJ08HIxpܟw\yc}g./+HFƊ;O hej=<}~_"e>;$kI~k򵜾Vk,- g gm-,~,}tF7=צ`bcrJzjl.'{QFMf%GEɇc7_q]dV;9;\fB%8wtw/2x;2-77YV"T}:-"SU5v`Y۟?+}!S`PA+Uno|ssSe7~!ދ- m%S cq̱7}ϻgxMG% mH#{i(џo&#VB\jR"+wk <ne3m%gѭR7g4OSN𻨱=9%-Omumvsg/;Ώsjev ߷/3 y*(k=')6hg}ܛ nymQřZmٕ pA*'8Uco|^y{dnqXʉ 4DG;iHiXw_6C3=. ݫ&&=a/F-"3C~{Ymu-&ٷ-{9S5St/!.7q!eƪ@"wC؏iy+s i(m݃iiI^ɮlQdYdrŦ,#9"P@"xܯnϻr3_X އ;TͷpqlaTⱉ ,l~{,6;KfÆ476d.$jz9+aCPAiq:j\$҄Pf(j*( #nݼ;?rLo:}zit vA?zy5{K;M~oR9gpu$~"o0ޯXN6AsHzJѡ`>"ۋ[Xs:b#\Q/',Ot,,d!UZѰ$IR+}Aޞ#+~:W<ԉfW # Ug'9ksArh>+}1\JƦsnKI+'Olo9c.Hw5a ?]a|{{;@$+y޽k|zepYnq(zeH6ૉLSUG}6<\{ oɞnMɇq 8 I8`pdk=v?lvΗ6$ V=r "t=RE'M *H$gtm:=>`h]%MKG)*5;Żawy1^x!42RnLOp(sƶ˯{^׺u{{^ !'MlzHw| @mb݃zܹ*<ƴ EObndv1x/K_Ub5c u{,G1;{Rs&ѳ$ X0\M&/E5#_ߺBFNEW_`슭j^{pfЭ*zd)d*`* 2(ly9=d- [hf*IY#RI&\W7 3]-BETq#_K7=A:Ȥ-r1'@dm&Cg~+/ AddOU /x_sayblh}H}e4s;pQX#tJ‘KxۘwKi63jOQPTP ySv3>-z绾}'{dUm|nv>m2y}*c0LWYRO(gfsO$3;կ|ﴧ/^k{wS P12I 궕Dx" ?.͖^\O( BzT $O!j_#}Fxm9~TpdYܵpc᪖+iB[i7ٿjy=ns>q{iv8;-@ƚOG3F[ݳHM+IzIoki*O*8tNGoٵvWk|wGXghF*=,[>Ӆr52V5;Q7}/e~Bٿ8u $0H%y[YQf"z.~]l$VHESVEM<{?XPo}~f[WqPMm N;% B IPFd`%y_kdR[ܭ{k\7{³B({kpdqJH$Dn.aZ[]*'#'^bwmvmsgI5fkW' と{^׺uՒc_oOw׼\4SޏW%kNͲv_~<^K$ޒۜ%`?[{V~?{.wH:_R4Ûi3Ӟu['];ԮҲ'|gU]3 ߔ]2KN>=ruyT[Q|/>yoPڽVqv>%4nUhhKhm=h :r]Î'8w{_.VY?KNXO_Z~0ʫ-C/R?<mdb}>'u~;O}??ߧh[.#5'>:SuosU{*oV=ł/kEd}?(\WC/>ҳ=CQ&5/JKJK [Vj.h{ߟ\ZQ?>qݪ~zu{*O8 *la^wZ[܉wf'azOұ޾_\ۅ&{QO>){O>Xcv\Rc1(4zx1QP ?tqt/6\m6RZs4T^KҦ#{?0{-4K'- WҚ"v:*}2{ۓvXg, IC^T7OJ{^׽u~{ߺ^^׺u{{^׺u{X^OٷTaw>Qf:q-} 4-$tXL DLȬT]R' <=A 96^n7X; jѸhC# nѕ5F{ޯ.޻6RvSK_ڐKlM =9$/= 31goqof$czT4ԟdna޶ny{j۠t[1[m](^DEw^lΤMہgm=3fƆ:Y[vch^ t:)|u9;e{U|m5{cKX}:8S0(ՌKC̍ ]D$ϣ d>o/duoQ}A;xb`Qw'IUɫ",+ld%F\S#KrەVT1!$rPG.n3+ovQم+#B>Y=i^c'mB{MQY8Z2UTJ{ lzpyך wN{ٞt!7ʤrEcFf343!Y$>cw5HATԎ#4 Ի|wW{`w̿}̀ڿ*Z u&4-R(mr.dFjߝH&<Ս_\쮁9g/ DĪMsbm )Ο/JMEiA֟̇o}7AO%|gY]Yd#ܙLt?8L],QPByyy?xx7c=U6 ⱬpŏ$Fo_h̷qZ|^{[ɶ0s^om=2C'$=QCK|lAw/?p^[6GT``um}eӮl+qT;W5VB(mS$R?@_mG]nDF{3&;y+e"X8uw'ٯ NNDA&trb ,<$H2j7Wcv^}û:׽jÚGI.q7B|5|2`&T)Kk&͏vOfsr~߷nͻ:[Dn)/YT\tu$j%,Co)X7~l7Vh[^ݶϻEHLTY~wY,?̓e8Wb -W^}wIzSv? P=ZGWrRPeq1/eŊOHc?yO}[kg?7G0*gwG [qn nn=mÉMN+;ul21?)um,E}Fz#uU~ouO/ lb#ө5{pnsۧ;ܙvg?e]6v#4 !@O{ܧ?v$sX:VTThkeٶ{K3լ8cH6̒!T 呚IٝbOAN_ޗv{<m/c_G_'Bd]7E7Dw}=r&?G' -:zc-:,?<<vn`[?SqEoo#ݏn/FvsG.wuvLd v;f8cۃ=V*Dҋ$THiI}ȞFNO=ÿYZui򅿼ו>?|O' y/Ҫo9KrfDv|m'F>ѺtnGWG]ՑA0F3De|t`T=FAgrAW zIږ<:4(WL?#BӤLȲ4+>HDZ=m~]niw䅔)4 ctzW4)Zu'*_s}'kx7-*vnm̊bBKH"YSuce5&Z|LMJ*)RYNKO\M:(*cp/R^WI^EЬX S̾6gamg(ZpAE A jM:}:>{{^׺0+#sQG]=M8q[8q ҠdoIX(Ƈ&RHrɹjFPYT5~HR!qGfgrrbnbheu+vku|dGlUۇ+ujfsry[-SVϐgoݩc'kn..mSēRN˴Xrϴ;T"=("QchaT/ltg׽u~{ߺ^׽t0w'Av']P&;c|jW⨧˶3JRRj劺WIՈ v瑽gv[]aXbu$dGBZ' &PTқkI'|eal?/jukOovzun W3͵kOɝò8No17moشQghK4y)fXWywFc!ԗrW@ }f fE.c Pz~1¯[vJ=_g&ڻ|}%*t`8@l.yo=x0R4%%>ZTc˨rEv.|gm?.nc|O4$'8w{rz]?}Q^wGb?U_x?jyzܟl$^ާx{]?ۨ'`d}{=[GWw/t4?қ?c|;rW3ʱ,?O?ݮnZ/#E6تo6b=y|Ͻw/7+wǏRW^V_X^:??UsGBat{SR7ݐBw;>.<M2s_^_#/Pv(yb*nxޟ27-mg)7Q" UvaF:m*!X 7=DOK;3 *xRrOXVخ'orkQoesųMr"Y1N^O|̟>ݖ'ݽXA>iV}/s\׺u{{^׺^׺u{SN׭>Nduevf':z+'콧6ss=]K.#i9YI }lnTw}9muquq[#WTX #by(!ghPI?`?Fm-l}/uW@vOwWycng`o3qm]Sܸ6f\ҬxV9EY CۧޓͫH9hmm^+@rCqnᰎcw9-noEɡQJ*4" ?7hO1?~Kl-EqͥC넩=4{5rRW]_Aᖂ)ueƁ޹^_S4so|8(,%6J yi{c奧=NgӚ_ynOضivؿ;4sJ%..]t#jq\GW<+VlKDyNiC+ZgO?}AvF/_ (Zo.܏g?P`X)ǣ2yM&|wfG!!%Cʟwx|tww4[~q2L..H䷎&UYo g]]wͿǙ.ٸI%N/|;@D(a~AWn||.]=q|,VW!IۚmGLF(I5W'j9ێh~b}U^UHAqj2U.rUȾۉ][=dAe23YgL93gm;V[-ٻ=76_fzzklmzFVK5UE$Q,33r{nnIۙNڭyẻnbBEk,ĪH쨪L72D=Ć$$x+@O=2K$$3$1wܖwvbYI7'ϱB*U@@)NЅ՝k}y%}ڈtW,ga_$_Miy%YcM)MU@'9u ?y/s-}}vKuA-!iO> Ex:7amY\>.7=S1O)qUEI~B8*X,k#EPc7 o{e{v{slcBЩbN,rHz9Smyn卺lܽ;hR HRPM:€,K#@%o͝8_V/VJT,6|+94*3KJu`DVs"jHnv>v v/uʭss5DPՁ2JIor+ ܍_Su9/ v句TYcv]n˸hK;&y!>\zs|T><|;cp%'ER"R!RId@'yvk9~ާ6NoQFH4QTdweO%*mЇY^w.//.'4UQt={2'lu>s/X^^Ӊws7c {)/ %nIW#]wN_oXn<3直>sZXŘw{s^? {t7_G=M~lg`72cp]U;`wEFCoOOd3AXK(/6|tzur( T"8Ԭ}7?_;loAavCGSY_q,o GW1ȼQ“ǚ:0rg7r4IydV@vgujҢDZ6cGu~0RhwΙ"ZNU%2^ ?݅v4ML۹ecwɨ$/$ڿ'd_|. baS6ƲJ=TS^׽u~{ߺ^׽u~{ߺ\#{˯uf_bwKe*667A-9+s;rU±PnOAuEuq2c{=yj8jDHnGs +bS"(M% Sr9{7֗v{m I̵7%q Fj#~r>X|df\۳Pmݭմ.8jz.?EE ̥R²1m?w/t9)m2Z^pbfoeeig[Ɂ4A;cwk>aw,8bTUs?ϐ8nWxC޽6EŃ[Lܞ۪M*prk?ubJj|p&}/{m}ۻlMkq4TC|Gֶ0ԑ0ͩyiA] }<[=~| QR<5Ğ$T7d z==Oz?\ѭ:8?+?Fwa/dǣ[IGVװ ?^W*X;w(TS7DY*5jNoGs1AL= uH  KY{֏.bB~*VkCQp4ju~wj^~[پX䷚2hcm1sInҬZoOwE>uq:ܟiP#<Ԯ'8w{chg?KNXO_Z~0ʫ-C/R?<mdb}>'u~;O}??ߧh[.#5'>:SuosU{*oV=ł/kEd}?(\WC/>ҳ=CQ&5/JKJK [Vj.h{ߟ\ZQ?>qݪ~M`6%_C{߸ҀՅ[ro}ߓ1ǚhU(#]ٍ*bI *1ɿu{d`?!ȣL.>^HAsr옦ma@*5IĜܟ{w+9'X]T7OJ{^׽u~{ߺ^^׺u{6;ܔ5=_6b8qPЬ3E*#(i(ۯ#shB)tIJRBK@"ɧZkE@O>*/؏{k|K_[|)lnN-fKR N_&:uQeJ&i=jӝ}sew{bJ&Y#L^ Uc9a`de%><W J]Gow4=[_5{i9^hgfxÞ/jJz\)I妐UUy*QeY5_wwݬȎܬ.[ʳ0ItI!c!6<tJ_m ڡGٓRZ)SCxuD=icLfer+{h١)tf xf=wXmiYU {o{÷{D"[1&ٹ"Q岕tusۻŎfl^Ì8l[T\ Tefm-puTC=3S+{.ܱ]E(iu#E_w/J_^Xsכ^تݪgVBE Q)Hcjc6nUG]IO4_6LPV*bZ?aqq\ʼ%t jL[W">??{ ߾qs]va69f-!"BO,jTT+\o+2x_fnǹr1^1koRMlg1R-BJr.`xާǓWnk -('(AXh =NJl毼j ʹ;p#nk o|ۋIO|:[39ȩ57-moŁ=f.A硷Nk׿.>vGSU̿{_az=/Jn_9!^vog|VהG|sBn^mnrK 1m;-4[W(!tD꽞7BUǰ78Pɴ+'aF{ mٿ/v?,ʩ,oW[ݶ.YNƯ]N'-D4I MS5LՕ:r.9rO'o֜oim .V͇XU?nS%ym嘙^. 9@*A5'ejJFJP3=T<-"E#DDJU$}@<{,㿲0hE0  =rÚ9~Wq'6%h1.іTb,JЕڮ\uv=}.WwgJzGuZJUqZ!%]ddU$-۬f1,9fUf>J 8yϚGNaر$r^cYLQ ꂥg~gev֣[C">ؘv٩&F,EedWkD5}D!X m&=MÔ#ohyIo&Hn.T Opȍ]TӦ.ص}c[+dyٛ;Liyh 4uzd,_lܯ5hedR@?4>iJ^pPn[|A5g7,槧nWsjyY]ev\EO_[Z`B(Y`u}z-(m⸎9㯇2,dZ0ӡ՛ $Qՙ//3>|o֛#0/qI]=Nm[ 9N;7mFLL4U5$5>O:}sU1lb r~x= ti"HI"$,זNѸX-ZDָ>c,|ml?0o>#l>{mA䨨Z/J,t*CPd+{ Óy鶴`%Xg o Kr̐I4=20S[Sb.#lbKKO%LWǒ[qӘ ihZ"ERxJ>鄪icjaZd5u#A#KJN :yq][.>uַW5a2FSAkv"G+5QV_6Q{#=?:zJ?nmXng ^:֛wVS]'gv)lbYa2m]}{guKNe[' Reٶvu}r݂]]ngU 8xnwf@<H|YO޻~{OyOoVkNsewb_cœg}O=ywz3U't},v'̯S?Q쏘UWKOqENwE>q?^vFG?o{-rCO~?_ܓ)f7ÿA*s7_^5>N_g?g+V!wqYrj(rxۗx%{%o%ՅS{5[4ʽ.-t(L߿?A_GXMIWPPA^M϶t%عoRJqQP@ᄆPd&T(ִ$=xE7Mȶ_췵7vf[+\2n2RD!8?w },O, I_ngR0{{^׺u{^׺u{{^׺u{{^׺u;s?+3naY̊TV5.jڑIJJ ! ٭`=wMh{Vꑂ4U Tϡ_&'9?/'+_$ H^yD0e)fڔQǣnt{έ3M㰫q{W#C24c-/P⩡DoQs-/uv+]lgIgEsmcFF_g9p{o3\lfMKm׻+&vEx~nl?oG0?z["uz-MX\5Fo\jUC6\9U\bmpV뗷 te2Mf|`t S-1 T=䏾׷|wvGSU̿{_az/Jn_h  ~Ss=~v:mVUcB|*PTI]E{NԵTgrOS !Iʬ\r,w[폓vr&+wFc(=D|;罞=Òy؋]O{;y<2p|Xv7f;ǮJ-_,{`F+ d>4Fi9 ۉTٷGe ch5^1RL2FNj}9iھWܷnO3Nћ+ȶ-観uׯ᢮kv xl=37 LwXS?X7]/[ݶ. ?m}ʗ.#j}Eǰ:7l}S~@nM^jOُ}NE)r4Z6Ma[]5$ZkF9yu{ Cدv~t< p7'xS ǃ>n`Fu7I^ڕxULu4Xhm, }.ܥ^Qav[ڴo@?TPo7(~\ؼ-tW; ɨ|]Uagl+> N]u{{^׺u{{^׺u{{^no{7%ޖXWV𻚥عOZnYdwIkr<.1Q#_]FY{[6+[UW??EȱO?gد7٦P)MvvV5j>W5Ӟ_c0xsWhq8Q,0F*::q5C^ju;-HM{ymYn贂'ڄDRh&@ 4'X뜹C[,aԉʰ#OWU#-jRV;aYS6: ݶR *F<>2\NXLeTbJo ?pss%m;Du[ѭ:n\p}Y瘺dSlz]G{K3++T{#U}ŨRwr烓c?z3zQwOOW{n7iw}3[my_ܿߏ$Jnnsyʯe\*ǽEWס?<v h쏺b}ՈzE>uzVv?\wڧ ?dܯ?=I^{[azx*VE{K_ =?7Oql_U?>/PE"ד&ue32-!)cv&Y+=Q#MNi]gy;yvb"7)L\Xu$H3 Xf>r܍{[eɇgSܶ #Rk띨J+&O]rnws$W/w?P?*Ϣos:^׽u~{ߺ^^׺u{J*ğz$I8Yt]zoGig/O]۔{7weawVWbsTY<i4?U von7hoe!z@SC42:v`{.9m&nmVK`ۅ3\<T B 1Qv@mcC= T7 Lkx+._/DqܵhwsƇlGUWΝ=}%Onon> y}L_ON+5TuvnJZ-*\h`"cgj6ߚyz}u7Zku,j53To@zKô޽YqlϾ<71j٬^b*<<^@789gQ+>U[Ji ڜzѽ/|a$ܡw*C[yi‘æ};{ ]=7-GJ=לݯEiVzN?W34qh0r1]~m;Ÿ%YU37ȿݝzr)5Ew,4g% fA7TNFߨ($ekk9yY6H[Ź$贑|cNJ=3V7<\^slh-w8F6ISb0Kfu~+Kc؊I=ײ([o/OH^ip⣭P`  ߒ9MlCg&QWQVi>}㽖BekbUI;/095g`v~>}ؼ6v>lTʓY'-sX"BU`8mEYF]d nIv%>$UMM&;J\pu}==V_qǷ[_pW'a]axEX錥Xwqs0Sz;oVLI]ԝ]74[*}T)sYe@0_Cr0]o$p۰+Ie*\@T°{C{G߼*{y2]MD e@CiwT3p6J׼!Y))N=h׮Nd&K{.NKTMnvCTяWϡ?ydBek[~UD>[BOkx*=+rx^}]힚xeFdiV`sxl*d0Y|n裪2vbI\W4ﱮ!ݮ(#4 wRQH8Чem{?k텶} 6p" ,%d4ja6N釮n29j/ip5kL-,'ʜs>[^i$_ s]@wPc >܇w^tzyv"e/d^˥14te@uSenȪVTmz-~ eBUQֶ~sȏޛBPၨӫԇW ?pyם6^Zc(r$wQt.[? #=*3G;7uv7WͯTt{m)Rexg$bO-g4?lwKIᎩH{B$pn*16oqkMs?gGp=E[GJ;  1[CvOq냵SS9*vWIVhb&Kp[HGӕw"]XDsuWB=_-o ,vP/) ?Lo7wZ:n;_o4ԴOtD(aB*G/r_3m^[$vt Vdf05j~]J7}Ga`7+M(n!K%TkݮOŶo0Im(Yn`BcWJ; l~MmJXL#܅d"_GU^jmsk?(XګF*3]U _>Fv~{ w|o}߮+.6dZ D*` Y ҭ@Vn6Fhh7-5]OS6jr,k 1!(A_a_hؽ$KvK%km)evp iu0'Sݗ;KiU& ^C XIUQV9"fOi⶗bkߛؽ3ijzRXJ|Ǭ .s Y\"J3$N@#ʹm/4U4вRU9}}C'9G=m.t2<-eYBbY5![Ә/{q?k[Ssؔ {QQ~ZqI-Nf(Gk$pqvMrqESEbuFI;T2/X3:1܇ok=o{/6A'o<5_Ʊ7m57V,>> Ӱy+=o!w;6`&0uրDh*;gf:]KJ6CmΣXL|>(M %@d~Tvu[dhD! AWZodQ˼}qmu6W1IJ-XZs*nlʽ.ʫΒT*v\ة.7*I=E<6& rpY:@8# />7{)}9s;돼oYCH]I+! Ý=b_1";Z;b)+6md ߕt/,Q1cOhly.ñs}s Ɓi$ p9.@GqPqyٯc_ǵOdzm-[mKytAighV{{ o:), w޳mһr{"nd{Sfn0dCqJe ,*b^^n7Q ߤ셜$$MS/Xݏ-?BkvqX _\[Ap[Kk{A;qԙL/}%FQ;WK̨=CPp†$5 c{#wZ=Mi]Pؿwo^B^_s˲ͪ )ۊC(S53Ӎ_Πfpս]sh%$ёhoPϺ{\UԻ42.hA2Cop6iU# ռh%уk~'7gx^;?#VݭeFˆȫ0Z_m3VQ5[qAM8Hؿw- 6 /^o@;{(eȈ3 vW)M`%Y|tZv܁͚O!("n6(XvMast-}2QnP0c@_t'x}jod$ﭚ[2LF_;D!Hy"=uY[Eo`=41ֲKؠ7.~ܖ )iaL.gCyd] &sF>ԓE$WiPV6ɗR*God;i#-*eo2Aꖇ-jfjߵn)^0l@'溰t>%_ LА}~m{6s6Wl;0&/nVwغ@)$I WSh2 Tټfߛud1v1j<)Sd-R,6?h.m~Ų8Y( *P63RKNSl\=9m&ujٗiK|ηMD IbxDj:U/(pqUuNN}1eknb)L0 EbVo. ۬k--4q#g4ZXQu-eWX.ݶ8{p//na d 2o$3D"E^>}{+]K⬛; aDLuS~g.m7Hi_Lъzw|s4\woܭ~gfGH3I#!KGS^}EhҦ3v~n-_*) ߣզJ}O+M@>6=7,X-W~+mOأ uUonvL}w~Ŋ=WR %6C$ >xȱxͮ%TͰ[ϸMFL(f䅡 x,O#{{ȗsm\źml֨`$AewVB7=ߐػG-Jv#wK5&dv#/\Gmy` KmѿvRD i1H:DޢqOj޽/l6{9KrZn`cwHbΆ1Xg*AD;RWӰ5ho*J1ژ5FmVƿgfƝ&{}=[9U-fm!i3iF]e?vOn7G1AhMԍ1 #g[E5Ng묟T폏lG^7 pFr3c$`I 4vh٬MMUt8 "FIf9#59+ܾg.rgsum$C 7K%S=$p#;5T!cb$4qKub6}.vmi+75%7!Sjb, ,_N`] $26kRiM5ƙaƶ-ݹݚ5YAm y &0Gb)MWؔbywz"qCtGеn:SzhrG$LͶnujiǙ ao>}{4v{ 'o$NKQ(QZ,Qߦ33Л'^-*{1۪ 1{N <"WOb>kme673znb(a,’ &!JPWUzs~ܛ|ݷX{cϖoGl_aX[Hoa$Y*Yt-AW7:nN0ۊt8KIJ7Vbǐ(ޒ_R &:ofحnmwmj\"+[$gE2!&? ʞ{cǗ9>c{/.n`t_$17ODVZhq[G ;vӻS M:".v`E KPqT5LcdF"}Ǹ;{l=-c k2` XQ|C;h+L߰w~km rȂ.j;t$:oܥ& -!(f(>? K;W!WpD_;Es S)Ai#<2:I4.bs}ޗls^lrA ]2J`PԲ0c&O/vqSͲ.{gvZ&luާ{OHn`wJE;UpR~Sev4AȦw?% enr1^{)-mWLUg% :{cyw,v~{7Xc (쮣&0aJ"ht_vNnu}ԲPuT?\w4y1ЭVii5id #N's7_qm!9gٹ6bܾrs+HAdbFàqݧ_E b[+"G}Нfdkry!PajmTa) λdxb`PWUK# *8=D;?oG݋ڹ{kŶ]u?ƱO$_X.ٻ?C?6,Cw-/>Hntq.1[_dd6վ~ӫN^}?=neSiYݘ`o CPNbc`7OFn Y(zr#sGG)j++rةϷ)6o FB"Oyص$k) CZ@:?.>}=}xfOlovfI_I`bf2<|%0Ip(Kw v_hOlf2ۏ@vQ}V;pLF/6 U7)BjI a 1mlKU1:JRtPPw>IΖ]7 2؍CtGcHpzuEWʚ(E.ږL|Ra֏LNގg_s.0[_/w2[(;LlDJ[:F_>}}?yudʤ!UX5F(al7rzf{qtnZNۃkn-MUvG5RͶ Zpsf''0rW4][m4Q=?k!Cϵnmx^߻;l!-WIQZ3?ѧ|rǴp<dD/q!}_gCJ_?aTMY|_64o4!M_ڵo,ے(|ZE_ҬŢ(5;mwu)Q_YdVS{yK=`=ߗJ-;*m# aD9j jOUMҽIurw<_&|e&G?LQWqNABLwm̼,;[4P$q-Ƿݾ }i-E#316ur*7$ۿ#ouY^펱;[s`]˃o|6W sr4(Z/&]7=~[4_W}og]_ğ kӧډ'6ƖOesxj+G h#V]vOc/Buhu^gnun 'Ի{w˱8!UCVd%X^AE&88,\COd} 6F(P_ZOiwx"[eʖ [KG%WHp]ɠh]Jۿɣ7n9wflTsߛ`bm||ln=Uϛv^MV/U8yX>ؼ{1XYO2YqiYpR71EdZ[X3E*LJVӼ[t|njU= %<ӭ==0h'fiK05PZ7$yq$]]>ߘ" Өp>=} ˛G)yޗS v439$cJQ@8ص8Z *wZX p $f\o=xK{XKmTW 't wxv }tanu2O< 1Ay$eDPXI!;x_, 2ۏy  UK6b?Ux2USA lJ><};le&r١!U$z=K۟QNv_ws6'G9%Ia,Q3*r*#vTunC7NuV9~ݣM YI^Kr.nw!TcX>Ov49?.n_x~iJMqal/^F3~ +u %_7S ۹ mfm}\(?9T(wn}ȖNi}YF֏@(xcJj>zFˬ2}nb^R}.Ca֒HZ ?Ks'½1_ٍ~]S wiwLY0{Wn-JRQ(lٛnA59jɧ1#<}^b?{z^ׯtݛ?Z*]%%L8M4PS͎;v*edWwoW^7{_ޫ׺R7J-kRv~Ф))({amL6F*()vm$ +)sVy^j={_׺Tn縷v3#k!YOfJJ:1wv xj &Lik٘{ۃvfqsjps9:AS]Y?E5quOT9Fw5`sas/crQI[SRWSȷ 5 nz^u~*VܛJm0{+V6܅ (K!iu%׺JWuWtro([+gm\nh>m*k(jf39q^"Shp5t'v%+oWfrTX;ecRk2Y~0C>2YWxJB_KN+EdbP . P!&%E]x}%ǰ v#q1HH gb\hWn-pcl\ޙY;s{}iyv/e)Vhy#UV6UP$2g7gvh.U}hۭ-Yu[ݕ_T9uڊosc=^w7>0- ɑUJ'VZ@M*[VoSo펤:2IƏG)@:>Uοy?=z6{KmLWQ[vKm"r6(kRN놸)LYo+ t9ۺ;C'a?$x o.Ǻo|?,>ndtݻؼwT궿Ił`!Iw䊙d8Ҥ6pRK" /VCn&dGoJgkiߐv=ioo oGesnu+kvб ICΚ\RB[?5gV)}nQ 7:?8vO$?e=9h;8e߽|_}S/U 5AFSrIi%K6cpUˮRШ!\]O6GpDRG Ӏaϱ_:t.cnRsn.[S7*MZ+Q K{hSJSQ٘n-W+o/[=*97GGr'Q0yh2] C˺stpI5+58VJјTKR_)MR .=Wpl +VB0*{ݎjsNjSKbۧT-Ė-f*4U:5]Q1GY9sX?1wQVQG9:X_'|>/I;!=a;/蟀jꕛkCSi);qf*Ѧ$ɐJH!@y yAܪ   urmv,n[,-ψFtM0QQ%k9,6o s"]5]OhEOS>m5HuH8+7,k6h sE_IDr-9Z=Bm=={zӠsGջR-m 6JZ:|ɋ4Od*+!RY)5s|o"vnA=טo7dg1Q"j%cGop^@U>FHP9A||"%~ݛ]z_4yٕ[=Q4J| ==|K,2jOQH@j ~i)J D'Lcjᬦ&<,M =o43H0#ȩoݶj^ "u<$BȂAz>Uaip"{,|PܻO#%e?gcj 3IS VqXmUi$io_2Llߔu7hzav&; ,-;#ULrQ=\[7^bSik-*KrizѼJE#LQ\]{(7QxGt4CQVi]C⓭}~ZmE&h'bls'%u n퍏3SgvAp8xw ,@#m2 vEp;vQ"<;E($Lce,jvTuFFB)jhI0BՕj%هE{ߺ^׽u~{ߺ^׽u~{ߺ^׽tcfڗ1[[îw35٥=t h:!Rm&G>HL%5Zj,rkۯnPwd t-J}ju&ڬ8v ]v.+!~RujMIr{>8f|~N(ݾ8ª'-UMP%o>t0okdG:#ql-| Z9maM %-!JjU*iZV4xw.*}7Sn1{#gm[S KCNsu>[vRn,"&4TJFRSK<5$ ,O1.IvAGT̈́%$,+ ,둿{זJ~e&>;{U=ıCe nAWt7"b-|%csXC)͍a}-u;q~RwFkƜIv_wGrfV'ι̅6UȾ h㈏-b6O}mmfc3,Fh(g`d?U37Ƶ~a{{.GemeQK#d2t5Khi>3C]*}HkjK$zG[mm\M`rG~xL/o\CkWj5/9l۟]_BA?_xI)[uu̯uUh=)KVHyMi;Oino?r.աc{d9[|ĕ݄ēT)ӄ?_Ic̨]'/c#\}Tգ3#wNNdM:TNmIw6fw?J9}?Eϩa'[tfVN22Yw 9 r"ud]}U[DVlo}IUK.9\cc|uFg;*&#GRZ"jR[H[d3k/l= 7eSߎvtz=Q(e{;;O=eN9fHGdכ=đ7/XMur~}̲*pg6omA!wL/n_>&ᦵ=ʧT/3B"7U擪:?{en}]6&]#3QItnYdjF%ٙ/wiyn%?nRCI#Qis7Gs?(l~ƗHʀⶖɤSIh:>;e_AwoO KmmRvE.Kcnp8rcX?kigX@>r>;rBW[L=!.єD:Ugtm.|07 >~>gx+ww|W=wv&fLP%.VgEVkpdqq-f?/U$TP2I&$tϻݏy6%&.ZdXnb$gXcRg2zed |x FITT>G7H\ۣs`2#y/'JJSWU%tw~V᠛9|ҚfJQk: hce**<}zK6龽{{^׺u{{^׺x|dc鞷ۛ*w9i*!*^DRMG Iƾ$k׍B/wV=uEM̂ZoM!I+I别j4 @dJ{ߺ^׽u~{ߺ_^׺u{{^׺u׺={^׺u{{^׺u{{^׺u{{c,V90U"LijcG# C{rgwvs>UkW H3tQW5o:!f(^^׺u{{^׺u{{^׺u{7fIزfdOHW3t-%%7R:y.W|glo߻%W 䘈g ךV~.ym9a߼jZk}nnU@8ٛgwCfc=Wd%jh$dKg۹/}X.7tHBƇKh|>λW6r:>['s6߻l  A,ZKr?[[oG%?r}O7P?s:~.3+{gBr)}D_tCyO= 3㽿Rw䧸{?޲L/6WG@_wPv+9RuVs?Gi]`+@UnloRճ?r?~sd}eۛwW_WgUh ӓY?lS⎯mo`6_$"ēBw2{7&M_ٝҎ@}s?m_r1 շhͥWrfrw]GA* P t$[سmv{zk$SJ3BԒ) O"y{2Cϻq\Y1o}Zi#J# S*m񳱶IS>=K{Y@/1ٻ\_v"k !*қ.n6\g\'ӓDS/+#yW'ɼf<Z kv㖌v$F]{^׺AEU饬d*h =Ue\OMMJ I,HI6tF8ԗb̜cUf$|0*+(;>^.h%<*/L[K98aCmKn)uOiFM|{aUn5A[h9^_SG^w׺>q_7H"+>?n}{Ϫ .7æ)1TB*%Qi%Jhb5-'|?>ϟgO>'2Aw{k^4;K*[Ъe3J(/BwwXEi %UiR<~*bUN_ac|c{5=pUƎ%4-3Yy^Je%fzyf/{[1n9k݋m +幵YU51@uG $**X?-Ck VBSJ?D'^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺}lv ?zch*D[pn*,.j #WgrANYj=v>y\~s3y\Vl ߎ]]%>; U }Fn}$HO9EGߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺCK&`R9R6ϲ悚f3 z-M?|g[cqIy9 uujp eG.LV#k_W_WgUh ӓY?lS⎯mo`6_$"ēB +ڟ"n67nvf/9ZHZs+ODNa)e _b;-y/ޭШd5.#Q*EH]C?r/Rvv/p-7 gw\J"FdVmY,  ;3ZȒVQ9fH5s(w;'+xPZE5]HM Quȿ?>{ 0_[ Ra UԡP{3m9[\6Coٌ;%vV(dp ]6XedOԤ#0ˬ];I޹o#{I~+fHH!0$[W&_mg(۟ff)+uQaQ>QG`Z 67V:â5Qh|6VoJ}K9M᭯!vλk恸PH oC^=tg>4O2˾򐤘E6,nDDU.#rڭc֕n*,M/zj,$"ͽƚM,۳2K}6IoPUH-5S<52=ED<$M+%YIf$MϰffbKR~~}MQ1 1ŠT P W׺ugύ~S&{znum<%~_"+ ؽϖZ!FW7so\˜ GoZ[:J<~(*;,j@*z8shl:J@MxW_^Y? awq|K[o&ܬ-~:FV3G˃WNtS5ETK4ğگy7SgKg|y+gjTb5JЫ04#0@P.RkV>V華{^׺u{{^׺u{{^׺u{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺ml.}6u!Xͱe,^s-V;Rd*|H#E#{mQI~7;R|rc7.ssp8$!ݧAxQ)pXtT}u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u_ߺF[{O#xdlu}G⩨q\}D1r9FÔēd]tGjR8F+S}}>[6涞]%rյĞVJ/wq#42"34*kj`-]e$RIG5=M43<ԕe cm V4sYX24 (A8=emݓ mm7z u)xD%$Dett%]He$z g{/Oq-ӻ8fG|_mx/ /WsVgWźݴmg~<& 'Q7y_CH?1n-JobIiҪo?t/wT|œw1>?'B[[<ʝ/|>/I;n]UY=dո0*ǘdJ%Lȿ;i䍿h t(2PX=qw7x+msS4SQ9yZ#Ꞟh{W|av2JZծ5^/'=%D2RSI!Wx/?e=yגlq囏l8]i e(,9^ͭ%ŽaH4G~2|V#>-uW"׹}6!؊ٱE56iqpObF<2=po|܍06KdUZH,B]-!bFՎzܘ # V8f\(kN9LS'q.B䩦xh :XUu*1,;Mo{ Y#2Idte%YHe`H +#2:A:mu~{ߺ^׽u~{ߺ^׽u~{ߺ_^׺u{{^׺u{{^׺u{{^׺u{{^׺u{&.s{o#+!wUmͳK3ZLfbh)G.]uQ<{r$Y̨X"I Ո 4AbV X柈*h:})pw%W~:/~,|qznL>CW;k;? 7f?E_D3᷹6;m mG`,B7m ZF{఺?5,#Ǵe]>1UxJP6C.8M}/jߴs}{ ]2c6Wv #9i$lUS'R!>w۷@M :`Xb H S[ q8hgte@U! bĵ8קϖX~3x^ /]]>۴ V|}>m}1?},Ju{{^׺u{{^׺u{{^׺u{{^UmJ^uǵj k%5IGDtU N"3)P`8ݹVxTweExeSt-)\~{;wܞq;'qnt&-%fC>Hg{'{fn?eKs:o5?AQM^5n?7웶Xo6[^\`m(JzY>}ޣ~sm7n}MxʅAܡԑQw__BA?3_xIo+?34e}2-W+o/[=$#97G_Q=pZeAVY'//mu>msVv{O+OSPN~ۿ&N ꏕr/b>WUZ=C>7y~-m6îvʵC6#UyU"2u 'r7'O~g%}{W hNZHMh +=`ޫ#>s'7;fR-Sms/g(24 M}a]{^׺Zu]_vڳSEە®*ddeZL92=OڪHsnqڰFVX~$u%]NI8rԮLaF2XbhU1TZ鏟la{=Ğ{U d+e*p`ü|^8r9gt#U n/쭼IlTP"5&H^sK>05Mϴ{g7t{+1MӧȘ{簨%+U<جlEț/7Bb6 bYGĈ3ᄗ^Ӓ!kmwL,zKe+.P6E}[zډ+'yjezigVy&iXĒIwgfwb\MI''AC 6omoTPUTQUTPPuzw{^׺u{{^׺0?~RΧOɦe\->&IY袋+g1LE}Q)4OO xc42{Gǽ'#{ʰoOJd@&]{7;Ȭ3EN&'3[wsf7Ly(I;3VT**P( m;\0r|϶XI,R)1KP6B0`sqK>$d$c$VD7::C}ø6>M^mŇ*udaIcbdՔAܣ\so$7jZYRhd [DJ, CtSqo=L/aB?.bN׺u{{^׺u{{^׺^׺u{{^׺u{{^׺u{{^׺u{{^׺u{o~ =e߽ҴzyRn^m㰩]$unX6gvBGPQj$KXdeЭJ:XGGzt.nP8ÁP 2V?{oݙf2zܻnlR;nߕm59T7 \}[$,Ƭz2,va*vHr`qhss-Y@2RUpT`=ֺ*>׺u{{^׺u{{^׺u{{^׺u{{^Iwvm;s+Qln 0&Gkqyc* +Mf7-Y^R\PW.<_=l̷ko[LebOlտN] MQF7 ^q|b!fMI2i4DrtURV-MkC 4ۘpMle..wjt:B1}* -ƴ=g_)}9 n ubt7VGl%DECLheϹ`xj'8,|qe2[z!eu^ 1\Oy{Fla?–91T^1R43ymr߾Gwel9#oіv|3UC =v7cU7&%k?O[%6&gG6F#b2=R7m^ mIeuXܲı0V=x_s~>lmq"khKUX#ӵOE1ݻ7?WG}[7{mxrxQS;ƵJkϧUmorM |mwhauRDa`TѴ֜GXK?{k9s-=nq][igU0RFҚ3]tX7`fwzdcpude~؃-W6 WWWO[ _TP${ Orv6߱Z1M}afpcQ&@Id J OZ_u=r}l^l;igO1Cq%+jp/bν{{^׺uׯuy^׺u{{^׺u{{^O~-۱PNTfH%n}a2EUE@#lA#4μ3w˛ַP!ex)c%H`T+PA&h!m3#SA?X~b_-/״~_m;&Q`sqKچ1Pc1¤\Ks*'݊kث;e.Ycޮeۡd[rNQƛF-4fBO[Mwm{w%@c 9( AJVTnckM*?:| e015s8:S#лЗ6;׹y۹[Io!Q!+4nK+/k^׽u~{ߺ^׽u~{ߺ_^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺MMQYNtoΠ{el~٣m4XSqnvn-C ywCMU*ov#~s94]]m,y.G ̶ VU,nko/ⷶ"I T cNi/fp[{Wxm0[1 * *VS%3-o7<~ycZMC5Į$,75)AbX@@aH=#}^׽u~{ߺ^׽u~^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺yۋpm,;rm\gl,D:.kT86zj*FV">׺2?+yn;;ܻ)ˬ'wR5Χ; ]OS[W"iUpuu{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺u~XL*=н;veoLmTQ48'QUdAшlIOg,=Ǟ>es6e%w^Bd w>pkח㴈Hӂ$8j ҵ)N ~{Ksl]߻vmϟ̼]YC٬v9@´RF$}埼[\[-F!G24OgD,L!:{6}-#Hȯz'zu{{^׺u{^׺u{{^׺u{{^׺u{{^׺u{{^׺u{{^׺ۗ++s(Bf ӊxmь:\U,cлal^*xrx.;/p-ۛCsq2Uo:^b0 jpj$u?~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~{ߺ^׽u~vQ)*C+AV #ub>C1~V^|{*=Ȑ7Poxw \u :SbZki~HHbXg3{퟾{,f˻x͏O+_aRՉg“ÍZa6;u`f)W49<ό/ru{OޛjJ,^I+iersbj0T$-?o}}ygvZ61Ug">,qv퉵)blV`Q'xTs$r^ݵn[Bqf w1.AAؕWwioüq. kz?e:K׽u~{ߺ^׽uvisual-5.12_release/docs/visual/images/points.jpg0000644000175000017500000003744011114314113017101 00000000000000JFIFHH ExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:06:02&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$:;A?At$T0*QQgG: xsf~،xΜR^asI<~ ǨZwLJJN>8 U[_d'II${]I$JRI$I%)$IJI$RI$Jr(F2yE% ~O {cIԦI$PI&ɲTI$$I)I$JI%&û.NƤh/'0鹽=.evR \xW:n8u-{^ 1d­[>byk85=3x>cq~)V\a]x [Ig|*giFV+뙬Wq{y{8'V$%#9X>?󝟋s1 9|\xD8!קY$V\U$WT-.m{l n_H3@Y,J-kkZuIFxxcC"AY_/{=P|fu,d55 PyaKѾ֏;'dqD?8gz$$IOI%)$IJI$isG$/@6&%vUsˉ_A\#W$*xV3gE}4>'z"u2rys<d#9F_!. Gѯƨ,k~hG]n~5z,Ѵ @(醸U9'M:66r>c,p9.|QIm^}tKcX@W+ cD2 ,$11Б6s> x;KM^N[wUIel1Q:J^CA4OqC&^C0 eW ~\IL$IOI%)$IJHЍAI$Hzci+#&^f<pn;滴u{1KB @ytc~~,>GN?_~~I$I$JI%)$IJI$RI$G\ $,%#0r"%;iic " &$@CB$I!I$JRI$I%)$IJI$RI$tj~ m`?T}>J,ؽQ> y'% FOzduj}8 U[_d'II${]I$JRI$I%)$IJI$RI$Jr(F2yE% ~O {cIԦI$PI&ɲTI$$I)I$JI%&û.NƤh/'0鹽=.evR \xW:n8u-{^ 1d­[>byk85=3x>cq~)V\a]x [Ig|*giFV+뙬Wq{y{8'V$%#9X>?󝟋s1 9|\xD8!קY$V\U$WT-.m{l n_H3@Y,J-kkZuIFxxcC"AY_/{=P|fu,d55 PyaKѾ֏;'dqD?8gz$$IOI%)$IJI$isG$/@6&%vUsˉ_A\#W$*xV3gE}4>'z"u2rys<d#9F_!. Gѯƨ,k~hG]n~5z,Ѵ @(醸U9'M:66r>c,p9.|QIm^}tKcX@W+ cD2 ,$11Б6s> x;KM^N[wUIel1Q:J^CA4OqC&^C0 eW ~\IL$IOI%)$IJHЍAI$Hzci+#&^f<pn;滴u{1KB @ytc~~,>GN?_~~I$I$JI%)$IJI$RI$G\ $,%#0r"%;iic " &$@CB$I!I$JRI$I%)$IJI$RI$tj~ m`?T}>J,ؽQ> y'% FOzduj} XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛v)AN>O'z4=n W1Y Y'o}KB3$)Kq91WXlA،yB.)OX)֕+ OrUqN'ih%ͤ<)Wqrٳef͊6lثlٱWf͛vlٱWf͛v/o{wi_Lц̀Ee$O RI$dnƤsf‚I$dIٳbf͛vlٱWlٱTUơ/n*vUj-朂Y8Dк@O@YhnG(b~2Aa%H-T!,ɟ8ap5ӡ+zm'ev^N˭˨DL3x?=?~:4$D9+S͙4(H te en m#TC 5>ؼ˨rF™$yidbcԓz\r;9;{{3Y`< zܬ͛6f<ӳfÛ_-HjAM !\"۹:MW3 .)eE̢am:s: "+ kL=:lk BuI[|߯+Q 1UMDh(+k\8sKR3F~?7](lP01/͛6ff͊lٱWf͛vlRhnJaa>8 Vf=xE{,)҇lzM}P:~Ғ>G1?7\`=.>]cOb3e/}*l`7 "̋ x iꖓ[;YVitWA2SyJexR$;{7Q{Ps`?U/z|ݳ8G$@ 2?cf̗HٳblٱWf͛vZV 2b /5Z3Zq'zdr.dHkAv3e8(F5xjP˗hdIPІS FJ͖/ƿuȦl9t׈.oHx4J"b).IlZ$Tҋ](MqY%@ڼr75+:B(:0eS҈<-[f->G DF5!}2<^iwqm[Ȉ,0v#zκ" EPJt]\Vr5F=COL>dԜm 1Ռ6lyf͛lٱWf͛v` 4scs ܩ >\R*:yV,r_Li[ 'Ky Gah2HD0ҭW> J^rA@8ه˨3FQzN>Mgf#R~'8 qp5 6lyf͛GL>܍ҧu=}5RX(} mf\CҴyW%g`]~9,nWSش={ZV##\~F?wlٳ5]6lUlٱWf͛vlٱWf͛vl.LRAb@REȀ;ɦ8rLJL"g/PI涔:^qJy\4a_; Yncr-orNu -Civks\$Kc}y}e>a8w{QNc[짟N׻ָbJp]6g`eF-n-o`2RRI$I%?I%)t/Vi[=S3uzrq58I?rJe3w|z>srYٓnElh78wVZ8XNk՚qh0JyUTnOk7Ơl.fηgF9 77h8}/,O*UޒݸeK_sS\]+#\[Mxvh^"ԶjC^"],%kmfkXϬn"ׄcVoů2srl˱d\ly)_ >kPVߏC4oZ;m\KY]+SpnF;V\n?W_εҳ,`%o,l.}%)$IJI$SI%)$C])Iޥxc*kCG?bJyQMXw;!9}g0uv3́}oˤOC}bщ粂.73U&V\ ߉sƜTƼ{hf)*[=?<4d1y vk݁m`*FE깠7]_*]ݛmT6 cSCֺn?Oi)Oxy4tK]YZFݠ{Vt1#}eC3rƥs):oOytP /`n*k9S}ygZ/Io]Fm/mlj{oc3"?"*}u`rJ{.Y'꾸>9Y[c rrk/+u:꫒%'moj=]WSq)̾gL6bJ{O[n}hpxsW܋1}b?Z]ɢk--cXo~cچHhOVj]bN~MFYkۺ{ܒ,^G佶]6}3V[LkҲm¿k}N֯,s8d$X_aVjƬʭ{kԔ49=Yhu%YQ{5۷__)>=g#G^wzIA{^=\d{I$RI$I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?labelnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM )t JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$yco_:Xσӳ~lX[IxRScT춧ˆ?zꮷG't9}(;dvퟜվ}Xȿ7cۓ8jo.ڒ7Io}dCΫ*sdQ}U=%c?mg}0٭/1K>Jy\4a_; Yncr-orNu -Civks\$Kc}y}e>a8w{QNc[짟N׻ָbJp]6g`eF-n-o`2RRI$I%?I%)t/Vi[=S3uzrq58I?rJe3w|z>srYٓnElh78wVZ8XNk՚qh0JyUTnOk7Ơl.fηgF9 77h8}/,O*UޒݸeK_sS\]+#\[Mxvh^"ԶjC^"],%kmfkXϬn"ׄcVoů2srl˱d\ly)_ >kPVߏC4oZ;m\KY]+SpnF;V\n?W_εҳ,`%o,l.}%)$IJI$SI%)$C])Iޥxc*kCG?bJyQMXw;!9}g0uv3́}oˤOC}bщ粂.73U&V\ ߉sƜTƼ{hf)*[=?<4d1y vk݁m`*FE깠7]_*]ݛmT6 cSCֺn?Oi)Oxy4tK]YZFݠ{Vt1#}eC3rƥs):oOytP /`n*k9S}ygZ/Io]Fm/mlj{oc3"?"*}u`rJ{.Y'꾸>9Y[c rrk/+u:꫒%'moj=]WSq)̾gL6bJ{O[n}hpxsW܋1}b?Z]ɢk--cXo~cچHhOVj]bN~MFYkۺ{ܒ,^G佶]6}3V[LkҲm¿k}N֯,s8d$X_aVjƬʭ{kԔ49=Yhu%YQ{5۷__)>=g#G^wzIA{^=\d{I$RI$I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWfG#E"Ji2qPkCc󦕢S{+$Y-!F!bw`U☴֗V-EFUGFXQ\ei4Zً3-͝!.Oˇd>S>ao.;=L'.c%Qyq\Wy[!VUWѵ.BR$tQ쿛p_m|hdͿDkYU+pz7Ƙ͝Om9XΛ)w1sn%Q'\eе[&y훜. y++b~l_ŪM&-H"^R]!yq 6k+-2ZMsqJFLM>㊱ 9?/CFna{4/ ̋ >b͛6*ٳblٱWd{&Ne t-n˚fC,3U;*̟js'_&~^.Oy.er <Ґ( ;j [zcomBR#z/[f';G&zR[oq-%ܥ4G&2 ")hY|ɪM<Z(bVR>8/׭_[2UW$_Ϳx#o9~NnZ;kCMc Jo/JSor_dtٴK=3O [l&e'CWf͛vlٱWlٱWf͓.c5gjZԅxl(CUg)FlUfiz.=i YjJqWn?/ xo{NAӼp4UѕbrOaFt4??y++?[Ե q|kq.톾d]Q}YQnDmxȡ?|y\36-ݨK@Q9/@_ˋ_9MsԯO"UVYeڬ *;a5] |wꖚ=Sw{"sy7NMԴ+P.6s=O%z7qsTQ݌[M#bLe,<ii]A6lUٳf_lٱWgvxݥy+ Ug>XMxh$g`F܀N?k8N6) ӵ8eX%n(lU_y///. ư5)ZEҨbv3wu,"IxULP3} OMݱU~fUlZ*}fɿ _Lҿ*,Ki ]LWe8I v3bRhy`ujʹ}J&+Xb5Xոo*tR)\ El]+C>g_/#>m|Ns{iqE<NKe:7qnngHg!aWbP:1mkL Lw0.,9mS̚ŗ5O˭Tʼ'ֽ#DI5^ 7\#zKC +ȰrJ/yػĖbjI=I8acd&M.mVFQ*ߚROhhY1|?NU:(B qXY}M reد?oRa)i'=q[B^'R[Rz,.ޣ{Xvu/,㖼G|YEgcNxSIH`lݲ}GA0ã{o/5IS \d Gl`aDH&Oϫ0q %_ O?,ϧG/u_yȯ.I.7_,ϩs98 G~Ui%rS_Uo]03?*힑s䗔$L"r?kM}5 n].q IZC5WVWcla0]7ΏҨ/{XI;^WdF#S3[lσ3|"zUW;t.?խ/S*YG=[j笲^lvs$IOi9?r1Nj?cu/Ze wܹlmsnuGq0{X$r07The2Hݣ)$S?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%? Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?arrownullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM xJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?򤖷|,<\ƗhhY1|?NU:(B qXY}M reد?oRa)i'=q[B^'R[Rz,.ޣ{Xvu/,㖼G|YEgcNxSIH`lݲ}GA0ã{o/5IS \d Gl`aDH&Oϫ0q %_ O?,ϧG/u_yȯ.I.7_,ϩs98 G~Ui%rS_Uo]03?*힑s䗔$L"r?kM}5 n].q IZC5WVWcla0]7ΏҨ/{XI;^WdF#S3[lσ3|"zUW;t.?խ/S*YG=[j笲^lvs$IOi9?r1Nj?cu/Ze wܹlmsnuGq0{X$r07The2Hݣ)$S?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWl+Mm~+J3$2G!U WU*Wj/)0Sf]t)rGt59#( o3g{o*hNjmV7#2ӘO?G6w _r/ NhG#6wc}YShf__|ϋgt>J)N'L#-/XL##?KhBդi֌@s~q_peoo-0խys`CzlRr}f.jOeQ?CG5g3`>`(g'~e:kZ<=BٝUYm8C#^iX05"3αJʓFhe>:hvIZ{re,v4D:ĞiWrG/!||ZVoUFV5rg/[NX)H<2,#K;1;O9f̒j1C?c!#-ܽ'Y?:; bSO6aOXƧr2 Tx" *6o .~?Gٳf[lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWvisual-5.12_release/docs/visual/images/helix.jpg0000644000175000017500000004341311114314113016673 00000000000000JFIFHH ExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:04:54&(. SHHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?zYXuNcu67XunY+Υqk^m}tLv[zF3 [x.Ul&rC3)9(O NI ^gC{x;*nvTmRwVZW]"g#Z ձҰz]}c11 k{Z&,@Pݹita@X8XY}0" cEGOaOS/jI]X౛hmɝ6CkV@9X11'.çmD.\_k̾8+Dz?7mpsr  kU9aśzb0Vqe^35.Mf^gPp7au=WKO3G`1ᓌe52.O_.} p>$&kX2~t"rR7c'}_zנ2@vSƟ%E=A_HwwIڿ > 'bF8b\_szc efWU;&nS1qT3oW}VPɻQ'{gc?'ɺr7qrnWs+;COCiҿo1/#6 Sa}G^tέݔJT&߫"}3}c?ج;T2ɰ0|( 壏okel[ .}iiMY6 kc׿X=׸k!Z-L(_Y_LxzϯZ;)fGQzp9x^3f2PkF.TCݽg(xk~5cp~.N?n};2 4acW[K@̢[܊xWMǥӄ9OEn+Jޡӳ_[:;ɸ<=F^W$B}F- ;32MѼi}`έͫGFGk[[jV=fW͎2I&NJy*0#IB11|)$S1I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?2Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?helixnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ot SJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?zYXuNcu67XunY+Υqk^m}tLv[zF3 [x.Ul&rC3)9(O NI ^gC{x;*nvTmRwVZW]"g#Z ձҰz]}c11 k{Z&,@Pݹita@X8XY}0" cEGOaOS/jI]X౛hmɝ6CkV@9X11'.çmD.\_k̾8+Dz?7mpsr  kU9aśzb0Vqe^35.Mf^gPp7au=WKO3G`1ᓌe52.O_.} p>$&kX2~t"rR7c'}_zנ2@vSƟ%E=A_HwwIڿ > 'bF8b\_szc efWU;&nS1qT3oW}VPɻQ'{gc?'ɺr7qrnWs+;COCiҿo1/#6 Sa}G^tέݔJT&߫"}3}c?ج;T2ɰ0|( 壏okel[ .}iiMY6 kc׿X=׸k!Z-L(_Y_LxzϯZ;)fGQzp9x^3f2PkF.TCݽg(xk~5cp~.N?n};2 4acW[K@̢[܊xWMǥӄ9OEn+Jޡӳ_[:;ɸ<=F^W$B}F- ;32MѼi}`έͫGFGk[[jV=fW͎2I&NJy*0#IB11|)$S1I%)$IJI$RI$I%)$IJI$RI$I%?I%)$IJI$RI$I%)$IJI$RI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWJKz\?jEBW'#{H)VM>9˒Y0KSs\xko䗦  f:gE(<$ [%2Ƽ0aAslKW4 z?`yNjpS)xo\-?$%#g#2b7ub.24(V9#,4=;J!&7֘+lޟ5Z]!@i4 IES[0eoEUm]BZaUw@HNU9%jqLq_?1eWK$7'`2i/zMEd[^r|KJc 5itZ\}߹dS\WmwAd'W?PpV~$%s(beljt Xcj7_ʟ\&C ̽c`54Φs 7M;cr0dZm;'y^8?0. 6~M96㟉V?7sidà]kݴ Z<ԙug.~c~xĸݹLqRamoPȷ!E]?6mr9? 0α -6zB8wXukۓoƿ%Od}e kYݓ,CX%{nR~lXĚZSVDV|8<ϥѦ2+JQ뀑"+a||`I}*E5?Z$I5r%}'{s)]br{iRO?*c9%KOFdt.7O$?~#/\qD#_Z 9Ar g<>~NWʺAZ?|Y'T!!T{闑۟6ezQ}glBHGӦL ^53"%8ÈшK}:OPV^=teVlF;E"t%]XP6 WZ萋^q;V5pjмwq{@ݿ뜎,y4[9@d9G/tLv=>!*u+6AשDoZSqS\5w5rzr!$rce\8vy_ "l>]ٳf̖lٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWvisual-5.12_release/docs/visual/images/faces.jpg0000644000175000017500000003325411114314113016645 00000000000000JFIFHHJExifMM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2008:11:29 14:03:13&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI;@.%Z=cEcG6Se8 \9'fJv,i~<`@ 1+sby W$EI$JI%)$IJZxKOq,os=%Qqm83vu$Uݥ$I)үJIG$\ ~Jݍ[fvd0|XeyēQZ @)์.lR$NbRI$I%)$IJSࠒGTF$Hn a$,W*E;=&'m I!Is8 Q´#h֊EUĸ* 1c'1II$é$IJI$SI%)$IJI$SkV{>!^Y5Z ?OyJY`GbcηĵCW4qXotTkh|761@IXqԒI$$I)I%)$IJI$RyexeE$ אDϳb?}#źbӷ9yYZvP`ⶁ>型omJ8#pyܾ3'IN\?I$I$RI$I%)$IJI$RI$Kj+N+u2=k܏xě|9<OVI$E$I)I$JRI$I%)$IJI$RI$I%)$IJI$RI$I%? Photoshop 3.08BIM#8BIM%(:Ӟ a8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?facesnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM 0tJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI;@.%Z=cEcG6Se8 \9'fJv,i~<`@ 1+sby W$EI$JI%)$IJZxKOq,os=%Qqm83vu$Uݥ$I)үJIG$\ ~Jݍ[fvd0|XeyēQZ @)์.lR$NbRI$I%)$IJSࠒGTF$Hn a$,W*E;=&'m I!Is8 Q´#h֊EUĸ* 1c'1II$é$IJI$SI%)$IJI$SkV{>!^Y5Z ?OyJY`GbcηĵCW4qXotTkh|761@IXqԒI$$I)I%)$IJI$RyexeE$ אDϳb?}#źbӷ9yYZvP`ⶁ>型omJ8#pyܾ3'IN\?I$I$RI$I%)$IJI$RI$Kj+N+u2=k܏xě|9<OVI$E$I)I$JRI$I%)$IJI$RI$I%)$IJI$RI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vl h iM2N1#V݇M0._z]2t*OͅuA2@Sxg?r6* &&U>c$_eb.w#, =ULq1MY~ 8Ć_RG ` 1g(^OOXsGp!`Վ.qvlٲMN͛6*lٱWf͛vۣq?1XcFxOFeYpݏef"'A6lلw͛N$amc/~tPXw?Fkzڌ@F>1|ey[c3}<0{jLGgf͛$ٳblٱWf͛v+o'2IwwijbE=YFF2$ K!=W?G`HQ { YLpRݛ6X>x`=^oGN?~^f?mטxf3f#?v?1ٳff͛vlٱWlٱWf͛vlٱTKaG*H?dcwK=dfqxn>'cU{׍+*'kr'y ަPUOג݆|Ln.e۳}^IKlÀ??ٳf]6lUٳf_lٱWf͛vlٱWa݌ת|'鄘?K2-b,MqK}aJ<7Xy?d_/±q8gS^;a<͛6fdYm1~[+7e,>Ipa84LOV1j6i+~s>Q֓9`%F?Y[.WN*<}Q=}o?eWH I1Ui`2IB֟Md 8dQ!I$RI$I$/>O&I@>.DQ?=αrA|<> 9)Kܩ$W7I%)u8zY\:=Z;߿ʷ9=x/?$.bR#*4 >@eed9c椒I5bI$HyGM`ȢHdYm1~[+7e,>Ipa84LOV1j6i+~s>Q֓9`%F?Y[.WN*<}Q=}o?eWH I1Ui`2IB֟Md 8dQ!I$RI$I$/>O&I@>.DQ?=αrA|<> 9)Kܩ$W7I%)u8zY\:=Z;߿ʷ9=x/?$.bR#*4 >@eed9c椒I5bI$HyGM`ȢH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              "   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?lٱWf͛vldܾ zQI A s )fkj/m&?bOSN\c=09y = ~l5_.k-~n6\U0xLkOucM6 LaUi hTLJ' dgo6lٰvlٱWf͛lٱVS嵷H#㐊+) ZƇ"o+In!?O$ւ3YDoݡ5h` 7PS〕~ɦ/řQ@F'Ϛl6]Q~U?M?۝cN_ \S?6HD_mO,etO?$~ G_r?-Zw z^=/H DQt@{Fa-wm5M{ao!M{H*:͈=H$cH\~/坻hlFKN<Jm(7oVi'sWb:YK>5zg! ""(}RW͛6nމlٱT@ ~#&YѺ_uo嚾эN|v+,'SvZ0>+1s=|EsbvdS3".E;f́͛6*ٳb/> u 8t6 #=p_g6λph䔥s@',/.͛6mlٱWd_Z 5'M/iL,8wjBF͕|$f͛5Niټb_SiH,LwH5V\rkf͕6lثf)]w^Kw0 mbHG9.bvuVFj8eDze_v~4Gg)Ǚo+:fw\FH ?Zt؇f͛1Wf.-, 77$WsOwcA5̀9AEO hX`H#fZV d>Go -6q:[ع*?*󟙭<#~-%vr*Gr?{yn/y?@,.12FyH4:wfv-s92hxG_|6lڻf͛lٱWf͛v躏nxFfL%!Lq BBą=MKWd9VsF  ukKnPhjQdD+ 95rǎTkuˮ8̨ (WBeərڒB~9ֿ2!^‹> zL W|+`,; :hwfbꏍ?捱zQW9,vʿeG6l" F 6lF1D`@(pvlٰٳf]6lUlٱWf͛vlٱWf͛vlٱWf͛vlٱWf͛vlٱWvisual-5.12_release/docs/visual/label.html0000644000175000017500000002442211243332661015572 00000000000000 label
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
label
label

With the label object you can display text in a box. Here are simple examples (in the second label statement, note the standard Python scheme for formatting numerical values, where 1.5f means 1 figure before the decimal point and 5 after):

box(pos=(0,0,0), color=color.red)
label(pos=(0,0.25,0), text='This is a box')
label(pos=(0,-0.25,0), text='pi = %1.5f' % pi)

label There are many additional label options. In the accompanying diagram, a sphere representing the Earth (whose center is at earth.pos) has an associated label with the text "Earth" in a box, connected to the sphere by a line which stops at the surface of the sphere:

earthlabel = label(pos=earth.pos,
    text='Earth', xoffset=20,
    yoffset=12, space=earth.radius,
    height=10, border=6,
    font='sans')

A unique feature of the label object is that several attributes are given in terms of screen pixels instead of the usual "world-space" coordinates. For example, the height of the text is given in pixels, with the result that the text remains readable even when the sphere object is moved far away. Other pixel-oriented attributes include xoffset, yoffset, and border. Here are the label attributes:

pos; x,y,z The point in world space being labeled. If there are no offsets (see diagram), the center of the text is at pos

xoffset, yoffset The x and y components of the line, in pixels (see diagram). You can left justify text by setting xoffset = 1 and line = 0 (so the 1-pixel line doesn't show), or right-justify text by setting xoffset = -1 and line = 0.

text The text to be displayed, such as 'Earth'
(Line breaks can be included as \n, as in label.text = "Three\nlines\nof text")

font Name of the desired font; for example, 'sans', or 'serif', or 'monospace' (fixed-width)
Python Unicode strings are supported.

height Height of the font in pixels; default is 13 pixels

color, red, green, blue Color of the text

opacity Opacity of the background of the box, default 0.66
(0 transparent, 1 opaque, for objects behind the box)

border Distance in pixels from the text to the surrounding box; default is 5 pixels

box True if the box should be drawn (default), else False

line True if the line from the box to pos should be drawn (default), else False

linecolor Color of the line and box

space World-space radius of a sphere surrounding pos,
into which the connecting line does not go

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/vector.html0000644000175000017500000002732211202715735016021 00000000000000 vector
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

The vector Object

The vector object is not a displayable object but is a powerful aid to 3D computations. Its properties are similar to vectors used in science and engineering. It can be used together with Numeric arrays. (Numeric is a module added to Python to provide high-speed computational capability through optimized array processing. The Numeric module is imported automatically by Visual.)

vector(x,y,z)

Returns a vector object with the given components, which are made to be floating-point (that is, 3 is converted to 3.0).

Vectors can be added or subtracted from each other, or multiplied by an ordinary number. For example,

v1 = vector(1,2,3)
v2 = vector(10,20,30)
print v1+v2 # displays (11 22 33)
print 2*v1 # displays (2 4 6)

You can refer to individual components of a vector:

v2.x is 10, v2.y is 20, v2.z is 30

It is okay to make a vector from a vector: vector(v2) is still vector(10,20,30).

The form vector(10,12) is shorthand for vector(10,12,0).

A vector is a Python sequence, so v2.x is the same as v2[0], v2.y is the same as v2[1], and v2.z is the same as v2[2].

mag( vector ) # calculates length of vector
mag(vector(1,1,1)) # is equal to sqrt(3)
mag2(vector(1,1,1)) # is equal to 3, the magnitude squared

You can also obtain the magnitude in the form v2.mag and the square of the magnitude as v2.mag2.

It is possible to reset the magnitude or the magnitude squared of a vector:

v2.mag = 5 # sets magnitude of v2 to 5
v2.mag2 = 2.7 # sets squared magnitude of v2 to 2.7

You can reset the magnitude to 1 with norm():

norm( vector ) # normalized; magnitude of 1
norm(vector(1,1,1)) equals vector(1,1,1)/sqrt(3)

You can also write v1.norm(). For convenience, norm(vector(0,0,0)) is calculated to be vector(0,0,0).

To calculate the angle between two vectors (the "difference" of the angles of the two vectors).

v1.diff_angle(v2)

You can also write v1.diff_angle(v1,v2). For convenience, if either of the vectors has zero magnitude, the difference of the angles is calculated to be zero.

There is a function for the cross product of two vectors, which is a vector perpendicular to the plane defined by vector1 and vector2, in a direction defined by the right-hand rule: if the fingers of the right hand bend from vector1 toward vector 2, the thumb points in the direction of the cross product. The magnitude of this vector is equal to the product of the magnitudes of vector1 and vector2, times the sine of the angle between the two vectors.

cross( vector1, vector2 )

There is a function for the dot product of two vectors, which is an ordinary number equal to the product of the magnitudes of vector1 and vector2, times the cosine of the angle between the two vectors. If the two vectors are normalized, the dot product gives the cosine of the angle between the vectors, which is often useful.

dot( vector1, vector2 )

You can also say vector1.cross(vector2) or vector1.dot(vector2)).

Rotating a vector

There is a function for rotating a vector:

v2 = rotate(v1, angle=theta, axis=(1,1,1))

The angle must be in radians. The default axis is (0,0,1), for a rotation in the xy plane around the z axis. There is no origin for rotating a vector. You can also write v2 = v1.rotate(angle=theta, axis=(1,1,1)). There is also a rotate capability for objects.

There are functions for converting between degrees and radians, where there are 2*pi radians in 360 degrees:

radians(360) is equal to 2*pi

degrees(2*pi) is equal to 360

Convenient conversion

For convenience Visual automatically converts (a,b,c) into vector(a,b,c), with floating-point values, when creating Visual objects: sphere.pos=(1,2,3) is equivalent to sphere.pos=vector(1.,2.,3.). However, using the form (a,b,c) directly in vector computations will give errors, because (a,b,c) isn't a vector; write vector(a,b,c) instead.

You can convert a vector vec1 to a Python tuple (a,b,c) by tuple(vec1) or by the much faster option vec1.astuple().

visual-5.12_release/docs/visual/faces.html0000644000175000017500000002245411202715735015601 00000000000000 faces
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
faces
faces

The "faces" primitive takes a list of triangles (position, color, and normal for each vertex). This is useful for writing routines in Python to import 3D models made with other 3D modeling tools. You would still need to do lots of calculations of normals and so on, but you would not need to do C coding to import an arbitrary model file.

The faces object is an array primitive (like curve, convex, etc), so you have to use a frame to move it around. It consists of a set of one-sided triangles with user-specified vertices, colors, and normals. The pos, color, and normal attributes look like this:

pos = [ t0v0, t0v1, t0v2,
        t1v0, t1v1, t1v2,
        t2v0, t2v1, t2v2, ... ]

where t0v0 is the position of vertex 0 of triangle 0, t0v1 is vertex 1 of triangle 0, etc.

Each face is a one-sided surface. Which side is illuminated is determined by the "winding" order of the face. When you are looking at a face, it is illuminated if the order of the vertices in the pos list goes counter-clockwise. If you need the triangle to be visible from either side, you must create another triangle with the opposite winding order.

If you don't specify normals at the vertices, the face is illuminated only by "ambient" light. In order for the main lighting to affect the appearance, you must specify normals to the surface at the vertices. In the simplest case, a normal at a vertex is perpendicular to the face, and adjoining faces have a hard edge where they join. A soft edge can be produced by averaging the normals to the two faces at their common vertices. The brightness of a face is proportional to the cosine of the angle between the normal and the light.

If you specify different colors at the vertices of one triangular face, VPython interpolates across the face, in which case the face is not all one color. There is a similar interpolation for normals if there are different normals at the vertices, in which case the face is not all one brightness.

The faces object is intended to help with writing model importers and other new primitives in Python, not for direct manipulation by normal programs. It is considerably lower-level than any of the other objects in Visual (although it is not necessarily any faster, at least right now). It is flexible enough to implement smooth or facet shading, per-vertex coloration, two-sided or one-sided lighting, etc, but all of these calculations must be made by the programmer (when setting up pos, color, normal).

You can specify a material, but currently you can not specify opacity for faces.

See description of Additional Attributes available for all 3D display objects.

For examples of the use of the faces object, see the faces demo programs.

visual-5.12_release/docs/visual/frame.html0000644000175000017500000002034411243332661015604 00000000000000 frame
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Composite Objects with frame

You can group objects together to make a composite object that can be moved and rotated as though it were a single object. Create a frame object, and associate objects with that frame:

f = frame()
cylinder(frame=f, pos=(0,0,0), radius=0.1, length=1,
            color=color.cyan)
sphere(frame=f, pos=(1,0,0), radius=0.2, color=color.red)
f.axis = (0,1,0) # change orientation of both objects
f.pos = (-1,0,0) # change position of both objects

By default, frame() has a position of (0,0,0) and axis in the x direction (1,0,0). The cylinder and sphere are created within the frame. When any of the frame attributes are changed (pos, x, y, z, axis, or up), the composite object is reoriented and repositioned.

You can make all the objects in a frame invisible or visible by setting the frame's visible attribute.

Another frame attribute is objects, which is a list of currently visible objects contained in the frame (the list does not include objects that are currently invisible, not lights, which are found in scene.lights). If you want to make all the objects in a frame be red, do the following (assume the frame is named f):

for obj in f.objects:
    obj.color = color.red

If you use this method to make all the objects invisible, the f.objects list will be empty. If you need a list containing all the objects, both visible and invisible, you need to maintain your own list of objects.

If ball is an object in a frame, ball.pos is the position local to the frame, not the actual position in "world space". There are two frame functions for translating between frame and world coordinates. Suppose the name of the frame is f, frame_pos is a position within that frame, and world_pos is the corresponding position in world coordinates:

world_pos = f.frame_to_world(frame_pos)

frame_pos = f.world_to_frame(world_pos)

visual-5.12_release/docs/visual/graph.html0000644000175000017500000003463311243332661015621 00000000000000 graph
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Graph Plotting

In this section we describe features for plotting graphs with tick marks and labels. Here is a simple example of how to plot a graph (arange creates a numeric array running from 0 to 8, stopping short of 8.1):

from visual.graph import * # import graphing features
funct1 = gcurve(color=color.cyan) # a graphics curve
for x in arange(0., 8.1, 0.1): # x goes from 0 to 8
    funct1.plot(pos=(x,5.*cos(2.*x)*exp(-0.2*x))) # plot

Importing from visual.graph makes available all Visual objects plus the graph plotting module. The graph is autoscaled to display all the data in the window.

A connected curve (gcurve) is just one of several kinds of graph plotting objects. Other options are disconnected dots (gdots), vertical bars (gvbars), horizontal bars (ghbars), and binned data displayed as vertical bars (ghistogram; see later discussion). When creating one of these objects, you can specify a color attribute. For gvbars and ghbars you can specify a delta attribute, which specifies the width of the bar (the default is delta=1). For gdots you can specify a shape attribute "round" or "square" (default is shape="round") and a size attribute, which specifies the width of the dot in pixels (default is size=5).

You can plot more than one thing on the same graph:

funct1 = gcurve(color=color.cyan)
funct2 = gvbars(delta=0.05, color=color.blue)
for x in arange(0., 8.1, 0.1):
    funct1.plot(pos=(x,5.*cos(2.*x)*exp(-0.2*x))) # curve
    funct2.plot(pos=(x,4.*cos(0.5*x)*exp(-0.1*x)))# vbars

In a plot operation you can specify a different color to override the original setting:

mydots.plot(pos=(x1,y1), color=color.green)

When you create a gcurve, gdots, gvbars, or ghbars object, you can provide a list of points to be plotted, just as is the case with the ordinary curve object:

values = [(1,2), (3,4), (-5,2), (-5,-3)]
data = gdots(pos=values, color=color.blue)

This list option is available only when creating the gdots object.

Overall gdisplay options

You can establish a gdisplay to set the size, position, and title for the title bar of the graph window, specify titles for the x and y axes, and specify maximum values for each axis, before creating gcurve or other kind of graph plotting object:

graph1 = gdisplay(x=0, y=0, width=600, height=150,
          title='N vs. t', xtitle='t', ytitle='N',
          xmax=50., xmin=-20., ymax=5E3, ymin=-2E3,
          foreground=color.black, background=color.white)

In this example, the graph window will be located at (0,0), with a size of 600 by 150 pixels, and the title bar will say 'N vs. t'. The graph will have a title 't' on the horizontal axis and 'N' on the vertical axis. Instead of autoscaling the graph to display all the data, the graph will have fixed limits. The horizontal axis will extend from -20 to +50, and the vertical axis will extend from -200. to +5000 (xmin and ymin must be negative; xmax and ymax must be positive.) The foreground color (white by default) is black, and the background color (black by default) is white. If you simply say gdisplay(), the defaults are x=0, y=0, width=800, height=400, no titles, fully autoscaled.

Every gdisplay has the attribute display, so you can place additional labels or manipulate the graphing window. The only objects that you can place in the graphing window are labels, curves, faces, and points.

graph1 = gdisplay()
label(display=graph1.display, pos=(3,2), text="P")
graph1.display.visible = 0 # make the display invisible

You can have more than one graph window: just create another gdisplay. By default, any graphing objects created following a gdisplay belong to that window, or you can specify which window a new object belongs to:

energy = gdots(gdisplay=graph2.display, color=color.blue)

Histograms (sorted, binned data)

The purpose of ghistogram is to sort data into bins and display the distribution. Suppose you have a list of the ages of a group of people, such as [5, 37, 12, 21, 8, 63, 52, 75, 7]. You want to sort these data into bins 20 years wide and display the numbers in each bin in the form of vertical bars. The first bin (0 to 20) contains 4 people [5, 12, 8, 7], the second bin (20 to 40) contains 2 people [21, 37], the third bin (40 to 60) contains 1 person [52], and the fourth bin (60-80) contains 2 people [63, 75]. Here is how you could make this display:

from visual.graph import *
.....
agelist1 = [5, 37, 12, 21, 8, 63, 52, 75, 7]
ages = ghistogram(bins=arange(0, 80, 20), color=color.red)
ages.plot(data=agelist1) # plot the age distribution
.....
ages.plot(data=agelist2) # plot a different distribution

You specify a list (bins) into which data will be sorted. In the example given here, bins goes from 0 to 80 by 20's. By default, if you later say

ages.plot(data=agelist2)

the new distribution replaces the old one. If on the other hand you say

ages.plot(data=agelist2, accumulate=True)

the new data are added to the old data.

If you say the following,

ghistogram(bins=arange(0,50,0.1), accumulate=True,
      average=True)

each plot operation will accumulate the data and average the accumulated data. The default is no accumulation and no averaging.

gdisplay vs. display

A gdisplay window is closely related to a display window. The main difference is that a gdisplay is essentially two-dimensional and has nonuniform x and y scale factors. When you create a gdisplay (either explicitly, or implicitly with the first gcurve or other graphing object), the current display is saved and restored, so that later creation of ordinary Visual objects such as sphere or box will correctly be associated with a previous display, not the more recent gdisplay.

visual-5.12_release/docs/visual/convex.html0000644000175000017500000001443111202715735016016 00000000000000 convex
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
convex
convex

The convex object takes a list of points for pos, like the curve object. An object is generated that is everywhere convex (that is, bulges outward). Any points that would make a portion of the object concave (bulge inward) are discarded. If all the points lie in a plane, the object is a flat surface.

Currently it is not possible to specify the opacity of a convex object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/cone.html0000644000175000017500000001772611202715735015452 00000000000000 cone
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
cone
cone

cone The cone object has a circular cross section and tapers to a point. The following statement will display a cone with the center of its circular base at (5,2,0), pointing parallel to the x axis with length 12; the wide end of the cone has radius 1:

cone(pos=(5,2,0), axis=(12,0,0),
     radius=1)

The cone object has the following attributes and default values, like those for cylinders: pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), color (1,1,1) which is color.white, red (1), green (1), blue (1), opacity (1), material, and up (0,1,0). As with cylinders, up has only a subtle effect on the 3D appearance of a cone unless a non-smooth material is specified. Additional cone attribute:

radius Radius of the wide end of the cone, default = 1

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for a box, sphere, or ring it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/ring.gif0000644000175000017500000001005211075270106015243 00000000000000GIF89aaࠠаHHppp```PPP @@@000gg**88 >^ /vv99mff}))___߬WWN???XX///ooouuOOO׾ss?GGO@@ѷ~33^##퓓VV66uubbN !a,aa6  ʃԒaaÂa`⃴2 g@4na 2,A @(Hq*X/&{@ p&C &RBۆ`lsG(qXs@+A0Z@0L@L=nA aZi!` zLhy#$&Ų*B HF @Kt%,D, 28Ɨ!xP@^?FZʌ/fG (*" @49tF eCdtAXjMo H69a0F ZmHS49xمT W%@X5Gc@(ȅA!s) R`0aFv% A()3[)Ԏh^'7#'A>0$8& p ., %pIJDȨl(Ĥu}g5 lP"("(A };VE! TAv\ƺV2EP.`Q*Ƞ Hl}~_h`vq0H Q-g.v{ P#Y ^ *jdE(Qh *P|8 x$ p1r(!O( UHFRT >7 L {%v 6l1*.@ah pb*t@ A14xG o#'r;uKkG56[cA}?7#M_V~+?\g G3&sއ+W .'sro׷vY QHw~Rv}:6uH~(BS='0}{c'p|<䁃1 9**D x 15`K҄ #V1gn11 X< B(}TcxPtE.ib [ҲYh@gErG >H5e(,%k8 m(-SHgx( v4!@_)LJs x+h0x{x x`RuыЊ8~Ĩƨ HZu׌A-ƣ( hhz XҒظ Ž%3|/&@{+~w 8tX h<yy *:xx Y %i controls
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Controls: buttons, sliders, toggles, and menus

controls

You can create buttons, sliders, toggle switches, and pull-down menus to control your program. You import these capabilities with this statement:

from visual.controls import *

Importing from visual.controls makes available all Visual objects plus the controls module. To use the control features, you create a special controls window and add control objects to that window, specifying what actions should take place when the controls are manipulated. For example, an action associated with a button might be the execution of a function to change the color of a Visual object. After creating the controls, you repeatedly call an interact routine to check for user manipulation of the controls, which trigger actions. For a detailed example, see the VPython demo program controlstest.py.

Here is a small example. All it does is change the button text when you click the button. The Python construction "lambda:" is required for the controls module to have the correct context ("namespace") for calling the specified routine.

from visual.controls import *
 
def change(): # Called by controls when button clicked
    if b.text == 'Click me':
        b.text = 'Try again'
    else:
        b.text = 'Click me'
 
c = controls() # Create controls window
# Create a button in the controls window:
b = button( pos=(0,0), width=60, height=60,
              text='Click me', action=lambda: change() )
while True:
    c.interact() # Check for mouse; drive actions

 

Controls window

controls() Creates a controls window with the specified attributes, and returns it. For example, the following creates a controls window 300 by 300, located at (0,400) with respect to the upper left corner of the screen, with 'Controlling the Scene' in the title bar, and a range of 50 (window coordinates from -50 to +50 in x and y):

c = controls(title='Controlling the Scene',
     x=0, y=400, width=300, height=300, range=50)

Controls window parameters

x, y Position of the window on the screen (pixels from upper left)

width, height Width and height of the display area in pixels.

title Text in the control window's title bar.

range The extent of the region of interest away from the center along each axis. The default is 100. The center of a controls window is always (0,0).

display Every controls window has the attribute display; sphere(display=c.display) will place a sphere in the controls window named c.

Control objects

After creating a controls window, you can create the following control objects that will appear in that window:

button A button to click.

slider Drag a slider to enter a numeric value graphically.

toggle Click on the handle to flip a toggle switch.

menu A pull-down menu of options.

Control objects have the following attributes:

pos Position of the control (center of button or toggle, one end of slider, upper left corner of menu title)

color Gray by default

width Width of button, toggle, or menu

height Height of button, toggle, or menu

axis Axis for slider, pointing from pos to other end (as for cylinder or arrow)

length Length of slider (in direction of axis)

min, max Minimum and maximum values for a slider

value Value of toggle (0 or 1), slider (depends on slider min and max), or menu (the text just selected on the menu). The value of a toggle or slider (but not a menu) can be set as well as read. If you set the value of a toggle or slider, the control moves to the position that corresponds to that value.

text Text to display on a button, or the header at the top of a menu

text0 Text to display below a toggle switch (associated with toggle value = 0)

text1 Text to display above a toggle switch (associated with toggle value = 1)

action Specify Python statement to be executed when a control is manipulated

items For menus only, list of menu items to choose from. Here is how to add a menu item to a menu named m1:

m1.items.append( ('Red', lambda: cubecolor(color.red)) )

This adds to the pull-down menu an item 'Red' which when chosen will pass the value color.red to the subroutine cubecolor(). The Python construction "lambda:" is required for the controls module to have the correct context ("namespace") for calling the specified routine.

visual-5.12_release/docs/visual/VisualRef-7.gif0000644000175000017500000000722610410546274016365 00000000000000GIF89aϗggg/7/[[[mmm3Mf::WWuu3J` w(/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʄ@ ɳ(鳨т 0p@ TS$ujң`Y0@\P` םl Kحm&^: \;@Mxpпy:}mØAeq_L; u0̨9&>k.k˦E}Lq>m:(Ujuݺ7ȓ+_Μ'܊ZKH>(8'^N^ӫ_ϾdxOߎ|#~-wNhfD&ڂ`j1XtA~6 (>)ԉ(,0X@.x!~<@)>@7&gN95=$T6iXFeYreM_vyeo9jW%yZvFdbhȹI&r*faB'(n Zzђ'D[-``I盒Z(RxѠ:] iҚ٥ɚ+R¶9)+ADT i~Ȃ'%QinކmPKKYk5YVoR v֓dI՛@g7;YW UNJFnFBGQ%Z>kXREֶ+͆r .`gr&E*ĩk_ҴXm4,Q?i1q9ƫchs^,dRDQV]5W`gF7eo]zMbkXc}y!- \҇rхoCZ\cq腮wKd1.vPx5tb;[\դ{ z[i4^9^7A \|^;6 ATEMm_m)UzcjP ܛ۷|LRat[B8> ^q+Χ '2uig84@(l!x:A &$޳pM4T (Kbet>=&ġ~6uH39ŋS|=#bKSgq);F:,j|ʐ2UFkEOCbTvE*NJ b(-CQd$y3&8BwIQfg2%vHIGy}()O"X#K|x=!1cl-G3&flygn*YK (mǛb\̩q$)"S,PW~ (@*P]S&+2HD'JQye~y^Vюz6`I8S 812Ɔb $XA  A>(1 5nh0AdXI);2t(Rbˊ1cH$k ^P"їf9$K:NZUNWa rhEbծe1cPz<ݚPZnִxNRh:=FK=&\a?,Zd([&MW#>Wk~!(1iUص@oYwK[gqm:|hftSM}g{El|5Mt>Z5ƨȩZL(ڭ ,jBD>QK 4R1w*KZƞ” pH .HoG fBz,l좉8̴;C|cnU )^"KQJDZbU 5ofJYj#WM!$ۡsJ&L7-; ?O% (Mܠկ:Z/VctNf/U>f+f[!me.j(8gkV X|o.`ŒenH>ضvtxj՟eczmP_\L^9 ֌Q:_rﱕ/yE|/iQb gP0ᷬv68?ߟ-0 tc@P dpD`'Ƚ`CyAs;!NPNu) $QZRuQe( P:wѻЍ9zT4L$XiVӋ)B,YTq,7mR5ET0snjJ)82#شZUUvE*WS@_BUPC5QUgQׄ`w]Y԰E- Qذ() 듌PuHxrVm/2ŊV!9ͪV" 4xaB 6tbD)VxcF;visual-5.12_release/docs/visual/display.html0000644000175000017500000005303111243332661016156 00000000000000 display
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Controlling One or More Visual Display Windows

Initially, there is one Visual display window named scene. Display objects do not create windows on the screen unless they are used, so if you immediately create your own display object early in your program you will not need to worry about scene. If you simply begin creating objects such as sphere they will go into scene.

display() Creates a display with the specified attributes, makes it the selected display, and returns it. For example, the following creates another Visual display window 600 by 200, with its upper left corner at the upper left corner of the screen (y is measured down from the top of the screen), with 'Examples of Tetrahedrons' in the title bar, centered on location (5,0,0), and with a background color of cyan filling the window.

scene2 = display(title='Examples of Tetrahedrons',
     x=0, y=0, width=600, height=200,
     center=(5,0,0), background=(0,1,1))

General-purpose options

select() Makes the specified display the "selected display", so that objects will be drawn into this display by default; e.g. scene.select()

Executing myscene = display.get_selected() returns a reference to the display in which objects are currently being created.

foreground Set color to be used by default in creating new objects such as sphere; default is white. Example: scene.foreground = (1,0,0)

background Set color to be used to fill the display window; default is black.

ambient Color of nondirectional ("ambient") lighting. Default is color.gray(0.2); for compatibility with earlier versions of Visual, this can be expressed as scene.ambient=0.2.

lights List of light objects created for this display. By default, scene.lights is this list:
   [distant_light(direction=(0.22, 0.44, 0.88), color=color.gray(0.8)),
   distant_light(direction=(-0.88, -0.22, -0.44), color=color.gray(0.3))]
These are equivalent to the default lights in Visual prior to version 5. For how to create your own distant and local lights, see Lighting.

To obtain camera position, see Mouse Interactions.

cursor.visible By setting scene.cursor.visible = False, the mouse cursor becomes invisible. This is often appropriate while dragging an object using the mouse. Restore the cursor with scene.cursor.visible = True. Currently has no effect on Linux.

objects A list of all the visible objects in the display; invisible objects and lights are not listed (scene.lights is a list of existing lights). For example, the following makes all visible boxes in the scene red:

    for obj in scene2.objects:
        if isinstance(obj, box):
            obj.color = color.red

show_rendertime If you set scene.show_rendertime = True, in the lower left corner of the display you will see something like "cycle: 27 render: 5", meaning 27 milliseconds between renderings of the scene, taking 5 milliseconds to render, in which case 22 out of 27 milliseconds were devoted to executing your Python statements.

stereo Stereoscopic option; scene.stereo = 'redcyan' will generate a scene for the left eye and a scene for the right eye, to be viewed with red-cyan glasses, with the red lens over the left eye. (There are also 'redblue' and 'yellowblue' options; note that objects that were not originally white may be somewhat dim.)

Setting scene.stereo = 'crosseyed' produces side-by-side images which if small enough can be seen in 3D by crossing your eyes but focusing on the screen (this takes some practice). Setting scene.stereo = 'passive' produces side-by-side images which if small enough can be seen in 3D by looking "wall-eyed", looking into the far distance but focusing on the screen (this too takes some practice).

scene.stereo = 'active'
will render alternating left eye/right eye images for viewing through shutter glasses if the graphics system supports quad buffered stereo. If stereo equipment is not available, setting the option has no effect, and scene.stereo will have the value 'nostereo'. You can also use scene.stereo = 'passive' with quad buffered stereo for display using two polarized projectors (for stereo viewing using simple passive polarized glasses). (Quad buffered 'active' stereo is only available on specialised graphics systems that have the necessary hardware and shutter glass connector, such as PCs with CRT displays and nVidia Quadro graphics cards. It generates the illusion of depth by rendering each frame twice from slightly different viewpoints corresponding to the left and right eyes. Special shutter glasses are synchronised with the alternating images so that each eye sees only the matching frame, and your brain does the rest. It's called 'quad buffered' because there is an OpenGL buffer per eye, both double-buffered for smooth updating. 'Passive' stereo requires a video card that can drive two monitors, or two projectors.)

stereodepth By default, the front of the scene is located at the location of the physical screen, which reduces eye strain. Setting scene.stereodepth = 1 moves the center of the scene to the location of the physical screen, with the front half of the scene seeming to stick dramatically out of the screen. scene.stereodepth = 2 moves the scene fully in front of the physical screen, for maximally dramatic stereo effect.

Controlling the window

The window attributes x, y, width, height, title, and fullscreen cannot be changed while a window is active; they are used to create a window, not to change one. If you want to modify any of these window attributes, first make the window invisible, make the changes, and then make the window visible again. This creates a new window with the new attributes; all existing objects are still part of the new window.

x, y Position of the window on the screen (pixels from upper left)

width, height Width and height of the display area in pixels: scene.height = 200 (includes title bar).

title Text in the window's title bar: scene.title = 'Planetary Orbit'

fullscreen Full screen option; scene2.fullscreen = True makes the display named scene2 take up the entire screen. In this case there is no close box visible; press Escape to exit.
(There is currently a bug in the fullscreen option for Linux; the Escape key has no effect. If you use the fullscreen option on Linux, be sure to program a mouse or keyboard input for quitting the program.)

visible Make sure the display is visible; scene2.visible = True makes the display named scene2 visible. This is automatically called when new primitives are added to the display, or the mouse is referenced. Setting visible to False hides the display.

exit If sceneb.exit is False, the program does not quit when the close box of the sceneb display is clicked. The default is sceneb.exit = True, in which case clicking the close box does make the program quit.

Controlling the view

center Location at which the camera continually looks, even as the user rotates the position of the camera. If you change center, the camera moves to continue to look in the same "compass" direction toward the new center, unless you also change forward (see next attribute). Default (0,0,0).

autocenter scene.center is continuously updated to be the center of the smallest axis-aligned box containing the scene. This means that if your program moves the entire scene, the center of that scene will continue to be centered in the window.

forward Vector pointing in the same direction as the camera looks (that is, from the current camera location, given by scene.mouse.camera, toward scene.center). The user rotation controls, when active, will change this vector continuously. When forward is changed, the camera position changes to continue looking at center. Default (0,0,-1).

fov Field of view of the camera in radians. This is defined as the maximum of the horizontal and vertical fields of view. You can think of it as the angular size of an object of size range, or as the angular size of the longer axis of the window as seen by the user. Default pi/3.0 radians (60 degrees).

range The extent of the region of interest away from center along each axis. This is the inverse of scale, so use either range or scale depending on which makes the most sense in your program. Setting range to 10 is the same as setting it to (10,10,10). Setting range to (10,0,0) means that scene.center+scene.range will be at the right edge of a square window. A sphere of radius 10 will fill the window. A cubical box whose half-width is 10 will overfill the window, because the front of the box in 3D appears larger than the xy plane passing through scene.center, unless the field of view is very small.

scale A scaling factor which scales the region of interest into the sphere with unit radius. This is the inverse of range, so use either range or scale depending on which makes the most sense in your program. Setting scale to 0.1 is the same as setting it to (0.1,0.1,0.1) or setting range to (10,10,10).

 up A vector representing world-space up. This vector will always project to a vertical line on the screen (think of the camera as having a "plumb bob" that keeps the top of the screen oriented toward up). The camera also rotates around this axis when the user rotates "horizontally". By default the y axis is the up vector.

There is an interaction between up and forward, the direction that the camera is pointing. By default, the camera points in the -z direction (0,0,-1). In this case, you can make the x or y axes (or anything between) be the up vector, but you cannot make the z axis be the up vector, because this is the axis about which the camera rotates when you set the up attribute. If you want the z axis to point up, first set forward to something other than the -z axis, for example (1,0,0).

autoscale = False no automatic scaling (set range or scale explicitly); autoscale = True automatic scaling (default). It is often useful to let Visual make an initial display with autoscaling, then turn autoscaling off to prevent further automated changes.

userzoom = False user cannot zoom in and out of the scene

userzoom = True user can zoom (default)

userspin = False user cannot rotate the scene

userspin = True user can rotate (default)

visual-5.12_release/docs/visual/spherebox.gif0000644000175000017500000001366310410546273016321 00000000000000GIF89a gg7/ϗgg7/ϗgg7/ggggggg/////g///g//7////g/g7/7>FMUl"Dfƪ3"J1`@wO^n}Ҍ"Df׈33GG\\pp)Rz"31J@`Ow^n}"Df3M"f+3<DMUh|:Wu3Pm33MMff3Mf"+3<DMUh:|Wu3"J1`@wO^n}Ҍ"Df̈ת33MMff:Wu3(P7mETbq3Mf3Uw--DD[[qq3&M3f@MYfs:WuȒׯ33MMff:Wu3M&f3@MYfs:Wu!, H*\ȰÇ#JHŋ3jȱǏ CI$\B.W4P͛8s4 !B!< (џ"ɴӧ Q U/dׯ`A0`f_ :T(PlCHݻ #ʷ_Y*+È=cg!7^ CChg"PZajiʚװ72 cSoOfyڷm5g:UnCΗxpV/ #} oɒ'?9cG AB>?zѩe=ۀMV!Xc [Z.z!4xy}uh߇&K!^] ¸yI8Pj7]!}u<ǁ!Ɣ/"E@^1ʨ`VFGރ%A)&HvsAYAl%؈™L@tchn bIYW&塎h#f¡BX(~fA(A&j?LbC#X*5) Xhn茽7!54A,ŧ5`kif-aYnpfa0z+ o#Tio0>XAF˨[&6t@# @;~˯,rPxjPA6.k1Ѷ#wZP  ;hur-D0Aˎl)'4jl5Xt>3z|.MGg-1}LK)D6`0q>w+e#!a'Bb1.r펏p+yNe}.8l|.B jE*çbֿ&4w=~qZp.!̻sg;k7ЂWgD]Sb\':9tCȩO] Wup~~#SIE h9qo[v@-olt y5ao8"Oy@ /\nbdjHɐ` & 3 D(H@<"֌;b<0^w1sCNk`㒱Ⲟ1^#}ȟ^NJo\k"BS}ؿ&jԈ%IJNDR׮H-VQhLP'$u>albܳҭqDGǖ?л#B$; E_ǨOЭNhF! +-k 2 W"73rX+[g^z(JTf'3%-$cBjUZ+=EQ.z"rtW.x AЙ*RTPB,n554ДDdYYET`ֶtԫZHK$cĦF.S]V; dKwrTkj!Ŀ05dJYgaE3 Tu Q\  sd ґaKXۃle5Hi`*zJC36\agI~8d i]]``C3̳] 6 ̪@kGDߤ. XBvui/u=];[VipFq(Sfcj/DOw՗Y9wB+m5!},8jiyv>j7Z!M&[W$(koPDGĚa:D zűCja%6ᬐHNP`p7 1YFepHhˇٓnt zB>A1Io v]o̩|XI"%& ǼqbDVc8bp " ޿+5<µq\.&x1'x9o"N=i\G'_')g|7F)1s}7ݷf~J~ X^bT wxXqi!Tw (qQ0*Qa.}'~77@@ DPB 6P"0AF&~RH%MTx "J-]S&K3męS΂*yTЁ5ET)HK>hTU0"ÄY34VXYGTmF=ś7h iU%V`1~x1?oWBƜ9k}h=N<0`A \v= l@ ݡ}LpgT/@r͝?|թ^[ݽw 9x}hݿ9lƿ;@*'L̠>8ؓ/AdAN.;2J%BBl0DG$.\ @SDgQ> E2`xQ>j$"!7Q |<H=4J+\QMGи`CrL7E5S$.4TouS4Cc=hRWcT+À5hS=Zt%׶ Th bENZ=U/lhVrwGTͫo i}4Y|!H]`A 7+㬀 bk=̃;rؐW[`t_Vɒ"m!(9PGޒF:iuιi䣚](륝;Ĩqdl,m߆hp"Θz(L'pf:q3ʺp'pN't0=uî F@TVow|}^VջtGתP`y^iݣvx[vMv~z7={lg]|\%>"-׿2yo~h_Tj1ppt`$E}̠Bm0n-ߍ8Ød| sC ÷afNDDaPXHyZb q-n ue^eCc^۩q#x9tI\X2яÞ3<6я<8AяZ'2q}{d&/Fh1ܢEY:E*yA%!ʸ<,i6[B&P.GJ*NT0 E~1Jeb()9ί98t0c0lj45ӝjHiQ4d$vNdg(Egh@yIʰEpB߆tU9HmJmhPdy0SJ_j#S5R*$a:gڵwV4fЄ @HA&,Ç#JHŋ`ȱǏ!Iɑ\ɲ Z6If6sϟ\ Jw; ( p0ymIGF #`77dF?vR䚦自\n$(̡ @xeW elf)lǘJ96Mϑe+6$""Xζ.[.1H5tG8 )*Uړ$$OsӦN &xu6tYق4Zԑ2?zҢ'I(@FUJ82HMj&'vMP-tTZբcMUA^` XJֲE ;visual-5.12_release/docs/visual/primitives.html0000644000175000017500000002253511202715735016713 00000000000000 3D objects
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

The VPython 3D Objects (click for details)

arrow
arrow
box
box
cone
cone
convex
convex
curve
curve
cylinder
cylinder
ellipsoid
ellipsoid
faces
faces
helix
helix
label
label
points
points
pyramid
pyramid
ring
ring
sphere
sphere

frame

Group objects together

visual-5.12_release/docs/visual/box.html0000644000175000017500000002517211202715735015310 00000000000000 box
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 
box
box

In the first diagram we show a simple example of a box object:box

mybox = box(pos=(x0,y0,z0), length=L, height=H, width=W)

The given position is in the center of the box, at (x0, y0, z0). This is different from cylinder, whose pos attribute is at one end of the cylinder. Just as with a cylinder, we can refer to the individual vector components of the box as mybox.x, mybox.y, and mybox.z. The length (along the x axis) is L , the height (along the y axis) is H , and the width is W (along the z axis). For this box, we have mybox.axis = (L, 0, 0) . Note that the axis of a box is just like the axis of a cylinder.

For a box that isn't aligned with the coordinate axes, additional issues come into play. The orientation of the length of the box is given by the axis (see second diagram):

mybox = box(pos=(x0,y0,z0),     axis=(a,b,c), length=L,
    height=H, width=W)

The axis attribute gives a direction for the length of the box, and the length, height, and width of the box are given as before (if a length attribute is not given, the length is set to the magnitude of the axis vector).

There remains the issue of how to orient the box rotationally around the specified axis. The rule that Visual uses is to orient the width to lie in a plane perpendicular to the display "up" direction, which by default is the y axis. Therefore in the diagram you see that the width lies parallel to the x-z plane. The height of the box is oriented perpendicular to the width, and to the specified axis of the box. It helps to think of length initially as going along the x axis, height along the y axis, and width along the z axis, and when the axis is tipped the width stays in the x-z plane.

You can rotate the box around its own axis by changing which way is "up" for the box, by specifying an up attribute for the box that is different from the up vector of the coordinate system:

mybox = box(pos=(x0,y0,z0), axis=(a,b,c), length=L,
    height=H, width=W, up=(q,r,s))

With this statement, the width of the box will lie in a plane perpendicular to the (q,r,s) vector, and the height of the box will be perpendicular to the width and to the (a,b,c) vector.

The box object has the following attributes and default values, like those for cylinders: pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), color (1,1,1) which is color.white, red (1), green (1), blue (1), opacity (1), material, and up (0,1,0). Additional box attributes:

height In the y direction in the simple case, default is 1

width In the z direction in the simple case, default is 1

size (length, height, width), default is (1,1,1)
mybox.size=(20,10,12) sets length=20, height=10, width=12

Note that the pos attribute for cylinder, arrow, cone, and pyramid corresponds to one end of the object, whereas for a box, sphere, or ring it corresponds to the center of the object.

See description of Additional Attributes available for all 3D display objects.

visual-5.12_release/docs/visual/mouse.html0000644000175000017500000004727311243332661015654 00000000000000 mouse
 

 

Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

Choose a 3D object:

Work with 3D objects:

Windows, Events, & Files:

Vector operations

Graphs

factorial/combin

What's new in Visual 5

VPython web site
Visual license
Python web site
Math module (sqrt etc.)
Numpy module (arrays)

 

Mouse Interactions

Introduction

Mouse objects are obtained from the mouse attribute of a display object such as scene. For example, to obtain mouse input from the default window created by Visual, refer to scene.mouse. For basic examples of mouse handling, see Click example and Drag example.

A mouse object has a group of attributes corresponding to the current state of the mouse. It also has functions getevent() and getclick(), which return an object with similar attributes corresponding to the state of the mouse when the user last did something with the mouse buttons. If the user has not already done something with the mouse buttons, getevent() and getclick() will stop program execution until this happens.

Different kinds of mouse

The mouse routines can handle a three-button mouse, with "left", "right", and "middle" buttons. For systems with a two-button mouse, the "middle" button consists of the left and right buttons pressed together. For systems with a one button mouse, the right button is invoked by holding down the Command key, and the middle button is invoked by holding down the Option key.

Design for left-button events if possible

Visual 5 provides the basic mouse event functionality that was present in Visual 3 for handling events from right and middle buttons when userspin or userzoom is disabled, out of concern for supporting old programs. However, it has become evident that there are limitations to this approach which could preclude some kinds of mouse handling that people might want to do in the future. For example, you might want to allow userspin with right drags yet also pick up right clicks. For that reason it is conceivable that future developments in this area might break existing programs, and therefore for maximum forward compatibility it is prudent to use only left-button interactions in new programs.

Current state of mouse

pos The current 3D position of the mouse cursor; scene.mouse.pos. Visual always chooses a point in the plane parallel to the screen and passing through display.center. (See Projecting mouse information onto a given plane for other options.)

button = None (no buttons pressed), 'left', 'right', 'middle', or 'wheel' (scroll wheel pressed on some Windows mouses). Example: scene.mouse.button == 'left' is true if the left button is currently down.

pick The nearest object in the scene which falls under the cursor, or None. At present label and helix cannot be picked. The picked object is scene.mouse.pick.

pickpos The 3D point on the surface of the picked object which falls under the cursor, or None; scene.mouse.pickpos.

camera The read-only current position of the camera as positioned by the user, scene.mouse.camera. For example, mag(scene.mouse.camera-scene.center) is the distance from the center of the scene to the current position of the camera. If you want to set the camera position and direction by program, use scene.forward and scene.center, described in Controlling Windows.

ray A unit vector pointing from camera in the direction of the mouse cursor. The points under the mouse cursor are exactly { camera + t*ray for t>0}.

   The camera and ray attributes together define all of the 3D points under the mouse cursor.

project() Projects position onto a plane. See Projecting mouse position onto a given plane.

alt = True if the ALT key is down, otherwise False

ctrl = True if the CTRL key is down, otherwise False (for a one-button mouse, meaningful only if mouse buttons up)

shift = True if the SHIFT key is down, otherwise False (for a one-button mouse, meaningful only if mouse buttons up)

Getting events

There are five kinds of mouse events: press, click, drag, drop, and release:

   A press event occurs when a mouse button is depressed.

   A click event occurs when all mouse buttons are released with no movement of the mouse. (This is also a release event.)
   Note that a click event happens when the mouse button is released. See Click example.

   A drag event occurs when the mouse is moved slightly after a press event, with mouse buttons still down.
   This can be used to signal the beginning of dragging an object. See Drag example.

   A drop event occurs when the mouse buttons are released after a drag event. (This is also a release event.)

   A release event occurs when the mouse buttons are released after a click or drag event.

Between a drag event (start of dragging) and a drop event (end of dragging), there are no mouse events but you can examine the continuously updated position of the mouse indicated by scene.mouse.pos. Here is how to tell that an event has happened, and to get information about that event:

events The number of events (press, click, drag, or drop) which have been queued; e.g. scene.mouse.events.
scene.mouse.events = 0 may be used to discard all input. No value other than zero can be assigned.

getevent() Obtains the earliest mouse event and removes it from the input queue. If no events are waiting in the queue (that is, if scene.mouse.events is zero), getevent() waits until the user enters a mouse event (press, click, drag, or drop). getevent() returns an object with attributes similar to a mouse object: pos, button, pick, pickpos, camera, ray, project(), alt, ctrl, and shift. These attributes correspond to the state of the mouse when the event took place. For example, after executing mm = scene.mouse.getevent() you can look at the various properties of this event, such as mm.pos, mm.pick, mm.drag (see below), etc.

If you are interested in every type of event (press, click, drag, and drop), you must use events and getevent(). If you are only interested in left click events (left button down and up without significant mouse movement), you can use clicked and getclick():

clicked The number of left clicks which have been queued; e.g. scene.mouse.clicked.
This does not include a count of nonclick events (press, drag, or drop).

getclick() Obtains the earliest mouse left click event (pressing the left button and releasing it in nearly the same position) and removes it from the input queue, discarding any earlier press, drag, or drop events. If no clicks are waiting in the queue (that is, if scene.mouse.clicked is zero), getclick() waits until the user clicks. Otherwise getclick() is just like getevent().

It is a useful debugging technique to insert scene.mouse.getclick() into your program at a point where you would like to stop temporarily to examine the scene. Then just click to proceed.

Additional information obtained with getevent() or getclick()

In addition to the information available with scene.mouse, getevent() and getclick() furnish this additional information:

press = 'left' for a press event, or 'right' or 'middle', or None

click = 'left' for a click event, or 'right' or 'middle', or None. See Click example.

drag = 'left' for a drag event, or 'right' or 'middle', or None; in this case pos and other attributes correspond to the state of the mouse at the time of the original press event, so as not to lose initial position information. See Drag example.

drop = 'left' for a drop event, or 'right' or 'middle', or None

release = 'left' following click and drop events, indicating which button was released, or 'right' or 'middle', or None

Normally, dragging with right or middle button represents spin or zoom, and is handled automatically by Visual, so you can check for left-button drag or drop events simply by checking whether drag or drop is true (in Python, a nonempty string such as 'left' is true, None is false). Unless you disable user zoom (scene.userzoom = 0), press, click, drag, drop, and release with the middle button are invisible to your program. Unless you disable user spin (scene.userspin = 0), press, click, drag, drop, and release with the right button are invisible to your program.

Projecting mouse position onto a given plane

Here is a way to get the mouse position relative to a particular plane in space:

temp = scene.mouse.project(normal=(0,1,0), point=(0,3,0))
if temp: # temp is None if no intersection with plane
    ball.pos = temp

This projects the mouse cursor onto a plane that is perpendicular to the specified normal. If point is not specified, the plane passes through the origin. It returns a 3D position, or None if the projection of the mouse misses the plane.

In the example shown above, the user of your program will be able to use the mouse to place balls in a plane parallel to the xy plane, a height of 3 above the xy plane, no matter how the user has rotated the point of view.

You can instead specify a perpendicular distance d from the origin to the plane that is perpendicular to the specified normal. The example above is equivalent to

temp = scene.mouse.project(normal=(0,1,0), d=3)

visual-5.12_release/site-packages/0000777000175000017500000000000011243357447014203 500000000000000visual-5.12_release/site-packages/visual/0000777000175000017500000000000011243357450015500 500000000000000visual-5.12_release/site-packages/visual/filedialog.py0000644000175000017500000004343711116623144020073 00000000000000from visual import * import os from time import clock def save_file(file_extensions=None, x=100, y=100, title="Save", mode='w', maxfiles=20): if maxfiles < 5: maxfiles = 5 if mode[0] != 'w': raise ValueError, "To save a file, mode must start with 'w'." if file_extensions is not None: if isinstance(file_extensions, (list,tuple)): raise ValueError, "Only one file extension can be specified." file_extensions = [file_extensions] return filedialog(file_extensions=file_extensions, x=x, y=y, title=title, mode=mode, maxfiles=maxfiles) def get_file(file_extensions=None, x=100, y=100, title="Open", mode='rU', maxfiles=20): if maxfiles < 5: maxfiles = 5 if mode[0] != 'r' and mode != 'U': raise ValueError, "To read a file, mode must start with 'r'." if file_extensions is not None: if not isinstance(file_extensions, (list,tuple)): file_extensions = [file_extensions] return filedialog(file_extensions=file_extensions, x=x, y=y, title=title, mode=mode, maxfiles=maxfiles) def filedialog(file_extensions=None, x=100, y=100, title="Open", mode='rU', maxfiles=20): # file_extensions is a list of types (reading) or a 1-element list (writing) writing = not (mode[0] == 'r' or mode == 'U') filecolor = color.black dircolor = (0,0.5,0.5) selectcolor = (.7,1,1) inactivecolor = (0.8,0.8,0.8) activecolor = (0.6,0.6,0.6) winwidth = 300 hitem = 20 # pixel height of each menu listing ctrls = 20 # button area hcanvas = hitem*(maxfiles+3)+ctrls # approx height without title bar currentdisplay = display.get_selected() menus = display(background=color.white, foreground=color.black, exit=0, range=100, x=x, y=y, title=title, fov=0.001, # allow 30 pixels for title bar width=winwidth, height=30+hcanvas+ctrls) if menus.width >= hcanvas+ctrls: hmenu = 200.*hitem/menus.width ytop = 100.*hcanvas/menus.width-2*hmenu ybottom = ytop-maxfiles*hmenu ytopscroll = 100.*(hcanvas+ctrls)/menus.width ybottomscroll = -ytopscroll xmax = 100. xmin = -xmax scroll_edge = 87. okaypos = (20,ybottom-1.2*hmenu,0.1) cancelpos = (60,ybottom-1.2*hmenu,0.1) okaysize = (35,1.1*hmenu,0.1) else: hmenu = 200.*hitem/hcanvas ytop = 100.-2*hmenu ybottom = ytop-maxfiles*hmenu ytopscroll = 100. ybottomscroll = -ytopscroll xmax = 100.*menus.width/(hcanvas+ctrls) xmin = -xmax scroll_edge = xmax-14*menus.width/hcanvas okaypos = (20.*menus.width/hcanvas,ybottom-1.2*hmenu,0.1) cancelpos = (60.*menus.width/hcanvas,ybottom-1.2*hmenu,0.1) okaysize = (35.*menus.width/hcanvas,1.1*hmenu,0.1) okay = box(pos=okaypos, size=okaysize, color=inactivecolor) if writing: t = 'Save' else: t = 'Open' okaylabel = label(pos=okaypos, text=t, color=color.black, opacity=0, box=0) cancel = box(pos=cancelpos, size=okaysize, color=inactivecolor) label(pos=cancelpos, text='Cancel', color=color.black, opacity=0, box=0) go_up = box(pos=(cancel.pos.x,ytop+hmenu,0), size=okaysize, color=inactivecolor) go_up_arr = arrow(pos=(go_up.pos.x,go_up.pos.y-0.4*hmenu,0), axis=(0,0.9*hmenu,0), fixedwidth=1, shaftwidth=0.3*hmenu, color=(0.9,0,0)) showdir = label(pos=(xmin+0.2*(xmax-scroll_edge),ytop+hmenu,0), text='', color=dircolor, opacity=0, xoffset=1, box=0, line=0) if writing: # A bug in Visual 3 makes it necessary not to allow len(getname.text) < 1 getname = label(pos=(xmin+0.5*(xmax-scroll_edge),okay.y,0), border = 2, text='|', box=0, xoffset=1, line=0, opacity=0) z = 0.1 curve(pos=[(getname.x,getname.y-0.5*hmenu,z), (getname.x,getname.y+0.5*hmenu,z), (okay.x-1.2*0.5*okay.length,getname.y+0.5*hmenu,z), (okay.x-1.2*0.5*okay.length,getname.y-0.5*hmenu,z), (getname.x,getname.y-0.5*hmenu,z)]) labels = [] for n in range(maxfiles): labels.append(label(pos=(xmin+0.5*(xmax-scroll_edge),ytop-n*hmenu), text='', opacity=0, box=0, xoffset=1, line=0)) scrolltrack = box(pos=(0.5*(scroll_edge+xmax),0,0.02), color=color.white, size=(xmax-scroll_edge,200,0.001), visible=0) scrollside = curve(pos=[(scroll_edge,100,.03),(scroll_edge,-100,.03)], color=(0.8,0.8,0.8), visible=0) scroll = box(pos=(0.5*(scroll_edge+xmax),0,0.04), offset=vector(0,0,0), color=inactivecolor, size=((xmax-scroll_edge+1),0,0.1), visible=0) shade = box(pos=(0,0,0), color=(.95,.95,.95), size=(200,hmenu,0.01), visible=0) select = box(pos=(0,0,0.01), color=selectcolor, size=(200,hmenu,0.01), visible=0) clicktime = -1 while menus.visible: shade.visible = 0 select.visible = 0 highlighted = None selected = None changedir = False drag = False topmenu = 0 showdir.text = os.path.split(os.getcwd())[-1] allfiles = os.listdir(os.curdir) files = [] for f in allfiles: is_a_dir = os.path.isdir(f) if is_a_dir or (file_extensions is None): files.append([f,is_a_dir,False]) # file name, whether a directory, whether selected else: period = f.rfind('.') if period: if f[period:] in file_extensions: files.append([f,is_a_dir,False]) Nfiles = len(files) need_to_scroll = (Nfiles > maxfiles) if need_to_scroll: Nfiles = maxfiles hscroll = (ytopscroll-ybottomscroll)*maxfiles/len(files) if hscroll < hmenu: hscroll = hmenu dy = (ytopscroll-ybottomscroll-hscroll)/(len(files)-maxfiles) scrolltrack.visible = 1 scrollside.visible = 1 scroll.y = ytopscroll-0.5*hscroll scroll.height = hscroll scroll.visible = 1 else: scrolltrack.visible = 0 scrollside.visible = 0 scroll.visible = 0 for n in labels: n.text = '' for n, f in enumerate(files[:Nfiles]): lcolor = filecolor if f[1]: lcolor = dircolor labels[n].text = f[0] labels[n].color = lcolor if writing: getname.text = '|' ending = '|' blink = clock() blinkon = True while menus.visible: rate(50) # A bug in Visual 3 makes it necessary not to allow len(getname.text) < 1 if writing and clock()-blink > 0.5: blink = clock() blinkon = not blinkon if blinkon: ending = '|' else: ending = ' ' if getname.text == '': getname.text = ending elif getname.text == '|' or getname.text == ' ': getname.text = ending elif getname.text[-1] == '|' or getname.text[-1] == ' ': getname.text = getname.text[:-1]+ending else: getname.text += ending mpos = menus.mouse.pos if writing and menus.kb.keys: # event waiting to be processed? s = menus.kb.getkey() # get keyboard info; make sure string length never 0 if s == '\n': shade.visible = 0 select.visible = 0 ret = finish_save(getname.text, file_extensions, mode, menus, labels, currentdisplay) if ret: return ret if highlighted: shade.visible = 1 if selected: select.visible = 1 elif len(s) == 1 and s != '|': if getname.text == '': # should never happen getname.text = s+ending elif getname.text[-1] == ending: getname.text = getname.text[:-1]+s+ending else: getname.text = getname.text+s+ending # add new character elif s == 'backspace' or s == 'delete': if getname.text == '': # should never happen getname.text = ending elif getname.text[-1] == ending: getname.text = getname.text[:-2]+ending # erase character else: if len(getname.text) <= 1: # should never happen getname.text = ending else: getname.text = getname.text[:-1]+ending # erase character elif s == 'shift+delete' or s == 'shift+backspace': getname.text = ending # erase all text if menus.mouse.events: m = menus.mouse.getevent() mpos = m.pos nmenu = int((ytop+0.5*hmenu-mpos.y)/hmenu) if mpos.y > ytop+0.5*hmenu: nmenu = -1 if drag and m.release == 'left': drag = False elif need_to_scroll and m.pick == scroll: scroll.color = dircolor scroll.offset = scroll.y-mpos.y drag = True elif m.click == 'left': # Check for clicking go up or open or cancel if m.pick == go_up or m.pick == go_up_arr: os.chdir('../') changedir = True break if m.pick == cancel: return finish_get(None, mode, menus, currentdisplay) elif m.pick == okay: if writing and getname.text != '|': shade.visible = 0 select.visible = 0 ret = finish_save(getname.text, file_extensions, mode, menus, labels, currentdisplay) if ret: return ret if highlighted: shade.visible = 1 if selected: select.visible = 1 if selected is not None: filename, is_a_dir, s = files[selected] if is_a_dir: os.chdir(filename) changedir = True break elif not writing: return finish_get(filename, mode, menus, currentdisplay) # Handle doubleclick on a name clicktime = clock()-clicktime if topmenu+nmenu == selected and clicktime < 0.5: filename, is_a_dir, s = files[selected] if is_a_dir: os.chdir(filename) changedir = True break else: if writing: getname.text = filename+'|' else: return finish_get(filename, mode, menus, currentdisplay) # Handle singleclick on a name if (0 <= nmenu <= Nfiles-1): select.y = ytop-nmenu*hmenu select.visible = 1 if selected: files[selected][2] = False selected = topmenu+nmenu files[selected][2] = True if writing: if files[selected][1]: okaylabel.text = 'Open' else: okaylabel.text = 'Save' clicktime = clock() elif selected: select.visible = 0 files[selected][2] = False selected = 0 if writing: okaylabel.text = 'Save' if drag: newy = mpos.y+scroll.offset if newy+0.5*hscroll >= ytopscroll: scroll.y = ytopscroll-0.5*hscroll scroll.offset = scroll.y-mpos.y elif newy-0.5*hscroll <= ybottomscroll: scroll.y = ybottomscroll+0.5*hscroll scroll.offset = scroll.y-mpos.y else: scroll.y = newy newtopmenu = int((ytopscroll-0.5*hscroll-scroll.y)/dy) if newtopmenu != topmenu: topmenu = newtopmenu select.visible = 0 for n, lab in enumerate(labels): lab.text = files[n+topmenu][0] if files[n+topmenu][2]: select.y = ytop-n*hmenu select.visible = 1 elif files[n+topmenu][1]: lab.color = dircolor else: lab.color = filecolor else: if need_to_scroll: if menus.mouse.pick == scroll: scroll.color = activecolor else: scroll.color = inactivecolor if menus.mouse.pick == go_up or menus.mouse.pick == go_up_arr: go_up.color = activecolor else: go_up.color = inactivecolor if menus.mouse.pick == cancel: cancel.color = activecolor else: cancel.color = inactivecolor if menus.mouse.pick == okay: okay.color = activecolor else: okay.color = inactivecolor if need_to_scroll and mpos.x >= scroll_edge: shade.visible = 0 highlighted = None else: nmenu = int((ytop+0.5*hmenu-mpos.y)/hmenu) if mpos.y > ytop+0.5*hmenu: nmenu = -1 if mpos.y < ytop+0.5*hmenu-hmenu*Nfiles: nmenu = -1 if (0 <= nmenu <= Nfiles): shade.y = ytop-nmenu*hmenu shade.visible = 1 highlighted = nmenu else: shade.visible = 0 highlighted = None if changedir: continue break currentdisplay.select() return None def finish_get(filename, mode, menus, currentdisplay): menus.visible = 0 del menus currentdisplay.select() if filename is None: return None return open(str(filename), mode) def finish_save(filename, file_extensions, mode, menus, labels, currentdisplay): if filename == '': return None if filename[-1] == '|' or filename[-1] == ' ': filename = filename[:-1] if filename == '': return None t = filename.split(".") ext = '' if len(t) > 0: ext = '.'+t[-1] elif t[0] == '': return None if file_extensions is not None: if ext != file_extensions[0]: filename += file_extensions[0] try: fd = open(str(filename), 'r') # see whether file already exists except: menus.visible = 0 del menus currentdisplay.select() return open(str(filename), mode) fd.close() for a in labels: a.visible = 0 inactivecolor = (0.8,0.8,0.8) activecolor = (0.6,0.6,0.6) templabel = label(pos=(0,15,0.3), text="%s already exists" % filename, box=0, opacity=0) overwrite = box(pos=(-30,-5,0.4), size=(50,15,.1), color=inactivecolor) overlabel = label(pos=overwrite.pos, text="Overwrite", box=0, opacity=0) cancel = box(pos=(30,-5,0.4), size=(50,15,.1), color=inactivecolor) cancellabel = label(pos=cancel.pos, text="Cancel", box=0, opacity=0) while menus.visible: rate(50) if menus.mouse.events: m = menus.mouse.getevent() if m.click == 'left': if m.pick == overwrite: menus.visible = 0 del menus currentdisplay.select() return open(str(filename), mode) if m.pick == cancel: templabel.visible = 0 overwrite.visible = 0 overlabel.visible = 0 cancel.visible = 0 cancellabel.visible = 0 del templabel del overwrite del overlabel del cancel del cancellabel for a in labels: a.visible = 1 return None if menus.mouse.pick == overwrite: overwrite.color = activecolor else: overwrite.color = inactivecolor if menus.mouse.pick == cancel: cancel.color = activecolor else: cancel.color = inactivecolor return None # Test routines ##fd = save_file('.txt') ##if fd is None: ## print 'Canceled' ##else: ## print fd.name ## fd.write("This is a test\nIt is only a test") ## fd.close() ##fd = get_file() ##if fd is None: ## print "Canceled" ##else: ## print fd.name ## data = fd.read() ## print data visual-5.12_release/site-packages/visual/primitives.py0000644000175000017500000003634011243332661020164 00000000000000# Code to complete the various primitive types # Users should never import this module directly. All of the public types and # functions will be explicitly imported by __init__.py from __future__ import division import cvisual from cvisual import vector import crayola color = crayola from math import pi from numpy import * NCHORDS = 20.0 # number of chords in one coil of a helix # Scenegraph management: # Renderable objects which become visible need to be added # to the scene graph using EITHER # - display.add_renderable() if not in a frame, OR # - frame.add_renderable() # Renderable objects which become invisible need to be removed using # the corresponding remove_renderable function. # If the display or frame of a visible object changes, it needs to # be removed and added. # The py_renderable class encapsulates this logic, as well as # a fair amount of construction and attribute access common to # all renderables. class py_renderable(object): def __init__(self, **keywords): _other = keywords.get("_other") if _other: del keywords["_other"] super(py_renderable,self).__init__(_other) self.__dict__ = dict(_other.__dict__) self.__display = _other.display self.__frame = _other.frame self.__visible = _other.visible else: super(py_renderable,self).__init__() self.__display = cvisual.display.get_selected() self.__frame = None self.__visible = True if keywords.has_key('display'): self.__display = keywords['display'] del keywords['display'] if keywords.has_key('visible'): self.__visible = keywords['visible'] del keywords['visible'] if keywords.has_key('frame'): self.__frame = keywords['frame'] del keywords['frame'] if not _other: self.init_defaults(keywords) self.process_init_args_from_keyword_dictionary( keywords ) if self.__frame: if self.__frame.display != self.__display: raise ValueError, "Cannot initialize an object with a frame on a different display." self.check_init_invariants() if self.__visible: if self.__frame: self.__frame.add_renderable(self) elif self.__display: self.__display.add_renderable(self) def __copy__( self, **keywords): return self.__class__(_other=self, **keywords) def check_init_invariants(self): pass def set_display(self, display): "For internal use only. The setter for the display property." if display != self.__display: # Check that we aren't screwing up a frame. if self.__frame: raise ValueError, """Cannot change displays when within a frame. Make frame None, first.""" if self.__display: self.__display.remove_renderable(self) self.__display = display self.__display.add_renderable(self) def get_display(self): "For internal use only. The getter for the display property." return self.__display display = property( get_display, set_display) def get_frame(self): "For internal use only. The getter for the frame property." return self.__frame # Overridden by the frame class below to add extra checks. def set_frame(self, frame): "For internal use only. The setter for the frame property." if frame != self.__frame: if frame.display != self.__display: raise ValueError, "Cannot set to a frame on a different display." if frame and self.__frame: # Simply moving from one frame to another. self.__frame.remove_renderable(self) frame.add_renderable(self) elif frame and not self.__frame: # Moving into a reference frame when otherwise not in one. if self.__display: self.__display.remove_renderable(self) frame.add_renderable(self) elif not frame and self.__frame: # Removing from a reference frame. self.__frame.remove_renderable(self) if self.__display: self.__display.add_renderable(self) self.__frame = frame frame = property( get_frame, set_frame) def get_visible(self): "For internal use only. The getter for the visible property." return self.__visible def set_visible(self, visible): "For internal use only. The setter for the visible property." if visible and not self.__visible: if self.__frame: self.__frame.add_renderable(self) elif self.__display: self.__display.add_renderable(self) if not visible and self.__visible: if self.__frame: self.__frame.remove_renderable(self) elif self.__display: self.__display.remove_renderable(self) self.__visible = visible visible = property( get_visible, set_visible) def init_defaults(self, keywords): self.color = self.display.foreground if isinstance(self, cvisual.light): self.color = (1,1,1) elif 'material' not in keywords: self.material = self.display.material def process_init_args_from_keyword_dictionary( self, keywords ): if 'axis' in keywords: #< Should be set before 'length' self.axis = keywords['axis'] del keywords['axis'] # Assign all other properties for key, value in keywords.iteritems(): setattr(self, key, value) class py_renderable_uniform (py_renderable): def check_init_invariants(self): if not self.display.uniform: raise RuntimeError, "Do not create " + self.__class__.__name__ + " with nonuniform axes." class py_renderable_arrayobject (py_renderable): # Array objects are likely to need special handling in various places def get_red( self): return self.color[:,0] def get_green(self): return self.color[:,1] def get_blue(self): return self.color[:,2] def get_x(self): return self.pos[:,0] def get_y(self): return self.pos[:,1] def get_z(self): return self.pos[:,2] # Also none of them support opacity yet. def set_opacity(self, opacity): raise RuntimeError, "Cannot yet specify opacity for curve, faces, convex, or points." opacity = property( None, set_opacity, None) ################################################################################ # Complete each type. class distant_light (py_renderable, cvisual.distant_light): def set_pos(self, _): raise AttributeError("Attempt to set pos of a distant_light object.") pos = property(None,set_pos) class local_light (py_renderable, cvisual.local_light): def set_direction(self, _): raise AttributeError("Attempt to set direction of a local_light object.") direction = property(None,set_direction) class arrow (py_renderable_uniform, cvisual.arrow): pass class cone (py_renderable_uniform, cvisual.cone): pass class cylinder (py_renderable_uniform, cvisual.cylinder): pass class sphere (py_renderable_uniform, cvisual.sphere): pass class ring (py_renderable_uniform, cvisual.ring): pass class box (py_renderable_uniform, cvisual.box): pass class ellipsoid (py_renderable_uniform, cvisual.ellipsoid): pass class pyramid (py_renderable_uniform, cvisual.pyramid ): pass class label (py_renderable, cvisual.label): def init_defaults( self, keywords ): if not keywords.has_key('linecolor'): self.linecolor = self.display.foreground super(label, self).init_defaults( keywords ) class frame (py_renderable_uniform, cvisual.frame): def set_frame(self, frame): #Check to ensure that we are not establishing a cycle of reference frames. frame_iterator = frame while frame_iterator: if frame_iterator.frame is self: raise ValueError, "Attempted to create a cycle of reference frames." frame_iterator = frame_iterator.frame py_renderable_uniform.set_frame( self, frame) class curve ( py_renderable_arrayobject, cvisual.curve ): pos = property( cvisual.curve.get_pos, cvisual.curve.set_pos, None) color = property( cvisual.curve.get_color, cvisual.curve.set_color, None) x = property( py_renderable_arrayobject.get_x, cvisual.curve.set_x, None) y = property( py_renderable_arrayobject.get_y, cvisual.curve.set_y, None) z = property( py_renderable_arrayobject.get_z, cvisual.curve.set_z, None) red = property( py_renderable_arrayobject.get_red, cvisual.curve.set_red, None) green = property( py_renderable_arrayobject.get_green, cvisual.curve.set_green, None) blue = property( py_renderable_arrayobject.get_blue, cvisual.curve.set_blue, None) class points ( py_renderable_arrayobject, cvisual.points ): pos = property( cvisual.points.get_pos, cvisual.points.set_pos, None) color = property( cvisual.points.get_color, cvisual.points.set_color, None) x = property( py_renderable_arrayobject.get_x, cvisual.points.set_x, None) y = property( py_renderable_arrayobject.get_y, cvisual.points.set_y, None) z = property( py_renderable_arrayobject.get_z, cvisual.points.set_z, None) red = property( py_renderable_arrayobject.get_red, cvisual.points.set_red, None) green = property( py_renderable_arrayobject.get_green, cvisual.points.set_green, None) blue = property( py_renderable_arrayobject.get_blue, cvisual.points.set_blue, None) class convex( py_renderable_arrayobject, py_renderable_uniform, cvisual.convex ): pos = property( cvisual.convex.get_pos, cvisual.convex.set_pos, None) class faces( py_renderable_arrayobject, cvisual.faces ): pos = property( cvisual.faces.get_pos, cvisual.faces.set_pos, None) normal = property( cvisual.faces.get_normal, cvisual.faces.set_normal, None) color = property( cvisual.faces.get_color, cvisual.faces.set_color, None) class helix(py_renderable): def __init__( self, _other=None, pos=vector(), x=None, y=None, z=None, red=None, green=None, blue=None, axis=vector(1,0,0), radius=1.0, length=None, up=vector(0,1,0), coils=5, thickness=None, color=color.white, **keywords): if keywords.has_key('display'): disp = keywords['display'] del keywords['display'] else: disp = cvisual.display.get_selected() if (not disp.uniform): raise RuntimeError, "Do not create helix with nonuniform axes." if keywords.has_key('frame'): fr = keywords['frame'] del keywords['frame'] else: fr = None self.process_init_args_from_keyword_dictionary( keywords ) if x is not None: pos[0] = x if y is not None: pos[1] = y if z is not None: pos[2] = z if red is not None: color[0] = red if green is not None: color[1] = green if blue is not None: color[2] = blue axis = vector(axis) if length is None: length = axis.mag self.__length = length self.__axis = axis self.__radius = radius self.__up = up self.__coils = coils self.__thickness = radius/20. if thickness: self.__thickness = thickness self.__frame = frame(display=disp, frame=fr, pos=pos, axis=axis.norm(), up=up) self.helix = curve( frame = self.__frame, radius = self.__thickness/2., color = color) self.create_pos() def create_pos(self): k = self.coils*(2*pi/self.__length) dx = (self.length/self.coils)/NCHORDS x_col = arange(0, self.__length+dx, dx) pos_data = zeros((len(x_col),3), float64) pos_data[:,0] = arange(0, self.__length+dx, dx) pos_data[:,1] = (self.radius) * sin(k*pos_data[:,0]) pos_data[:,2] = (self.radius) * cos(k*pos_data[:,0]) self.helix.pos = pos_data def set_pos(self, pos): self.__frame.pos = vector(pos) def get_pos(self): return self.__frame.pos def set_x(self, x): self.__frame.pos.x = x def get_x(self): return self.__frame.pos.x def set_y(self, y): self.__frame.pos.y = y def get_y(self): return self.__frame.pos.y def set_z(self, z): self.__frame.pos.z = z def get_z(self): return self.__frame.pos.z def set_color(self, color): self.helix.color = color def get_color(self): return self.helix.color def set_red(self, red): self.helix.red = red def get_red(self): return self.helix.red def set_green(self, green): self.helix.green = green def get_green(self): return self.helix.green def set_blue(self, blue): self.helix.blue = blue def get_blue(self): return self.helix.blue def set_radius(self, radius): scale = radius/self.__radius self.__radius = radius self.helix.y *= scale self.helix.z *= scale def get_radius(self): return self.__radius def set_axis(self, axis): axis = vector(axis) self.__axis = axis self.__frame.axis = axis.norm() self.set_length(axis.mag) def get_axis(self): return self.__axis def set_length(self, length): self.helix.x *= (length/self.__length) self.__length = length self.__frame.axis = self.__axis.norm() self.__axis = length*self.__frame.axis def get_length(self): return self.__length def set_coils(self, coils): if self.__coils == coils: return self.__coils = coils self.create_pos() def get_coils(self): return self.__coils def set_thickness(self, thickness): if self.__thickness == thickness: return self.__thickness = thickness self.helix.radius = thickness/2. def get_thickness(self): return self.__thickness def set_display(self, disp): self.helix.display = self.frame.display = disp def get_display(self): return self.helix.display def set_frame(self, fr): self.__frame.frame = fr def get_frame(self): return self.__frame.frame def set_up(self, up): self.__frame.up = up def get_up(self): return self.__frame.up pos = property( get_pos, set_pos, None) x = property( get_x, set_x, None) y = property( get_y, set_y, None) z = property( get_z, set_z, None) color = property( get_color, set_color, None) red = property( get_red, set_red, None) green = property( get_green, set_green, None) blue = property( get_blue, set_blue, None) axis = property( get_axis, set_axis, None) radius = property( get_radius, set_radius, None) coils = property( get_coils, set_coils, None) thickness = property( get_thickness, set_thickness, None) length = property( get_length, set_length, None) display = property( get_display, set_display, None) frame = property( get_frame, set_frame, None) up = property( get_up, set_up, None) visual-5.12_release/site-packages/visual/Makefile.in0000644000175000017500000003123311243356545017467 00000000000000# Makefile.in generated by automake 1.9.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ top_srcdir = @top_srcdir@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = site-packages/visual DIST_COMMON = $(dist_pkgdata_DATA) $(pkgpython_PYTHON) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgpythondir)" \ "$(DESTDIR)$(pkgdatadir)" pkgpythonPYTHON_INSTALL = $(INSTALL_DATA) py_compile = $(top_srcdir)/py-compile dist_pkgdataDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) srcdir = @srcdir@ VPATH = @srcdir@ pkgdatadir = @pythondir@/visual ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@ BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@ BUILD_EXAMPLES_FALSE = @BUILD_EXAMPLES_FALSE@ BUILD_EXAMPLES_TRUE = @BUILD_EXAMPLES_TRUE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ FREETYPE2_LIBS = @FREETYPE2_LIBS@ GLIBMM_CFLAGS = @GLIBMM_CFLAGS@ GLIBMM_LIBS = @GLIBMM_LIBS@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKGLEXTMM_CFLAGS = @GTKGLEXTMM_CFLAGS@ GTKGLEXTMM_LIBS = @GTKGLEXTMM_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADEMM_CFLAGS = @LIBGLADEMM_CFLAGS@ LIBGLADEMM_LIBS = @LIBGLADEMM_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ # override the name of package PACKAGE = visual PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PANGOMM_CFLAGS = @PANGOMM_CFLAGS@ PANGOMM_LIBS = @PANGOMM_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHONPATH = @PYTHONPATH@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WIN32_CWD = @WIN32_CWD@ WIN32_PYTHON_VERSION = @WIN32_PYTHON_VERSION@ WIN32_SRCDIR = @WIN32_SRCDIR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ visualdocdir = @visualdocdir@ visualexampledir = @visualexampledir@ pkgpython_PYTHON = __init__.py controls.py crayola.py factorial.py filedialog.py \ graph.py materials.py primitives.py site_settings.py text.py ui.py \ earth.tga turbulence3.tga wood.tga dist_pkgdata_DATA = vpython.glade vpython_notoolbar.glade logo_t.gif pan.png all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign site-packages/visual/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign site-packages/visual/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-pkgpythonPYTHON: $(pkgpython_PYTHON) @$(NORMAL_INSTALL) test -z "$(pkgpythondir)" || $(mkdir_p) "$(DESTDIR)$(pkgpythondir)" @list='$(pkgpython_PYTHON)'; dlist=''; for p in $$list; do\ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ f=$(am__strip_dir) \ dlist="$$dlist $$f"; \ echo " $(pkgpythonPYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(pkgpythondir)/$$f'"; \ $(pkgpythonPYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(pkgpythondir)/$$f"; \ else :; fi; \ done; \ if test -n "$$dlist"; then \ if test -z "$(DESTDIR)"; then \ PYTHON=$(PYTHON) $(py_compile) --basedir "$(pkgpythondir)" $$dlist; \ else \ PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pkgpythondir)" $$dlist; \ fi; \ else :; fi uninstall-pkgpythonPYTHON: @$(NORMAL_UNINSTALL) @list='$(pkgpython_PYTHON)'; dlist=''; for p in $$list; do\ f=$(am__strip_dir) \ rm -f "$(DESTDIR)$(pkgpythondir)/$$f"; \ rm -f "$(DESTDIR)$(pkgpythondir)/$${f}c"; \ rm -f "$(DESTDIR)$(pkgpythondir)/$${f}o"; \ done install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-pkgpythonPYTHON install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-info-am \ uninstall-pkgpythonPYTHON .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-exec install-exec-am install-info install-info-am \ install-man install-pkgpythonPYTHON install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-info-am \ uninstall-pkgpythonPYTHON # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: visual-5.12_release/site-packages/visual/__init__.py0000644000175000017500000000654311243332661017532 00000000000000version = ('5.12', 'release') # Copyright David Scherer and others, see license.txt import sys as _sys visual = _sys.modules['visual'] # This is called (visual._fix_symbols()) from modules in the package # that (unfortunately) must "from visual import *" because clients expect # to be able to import them _instead_ of visual. This prevents them from # binding symbols to other _modules_, which may overwrite symbols imported # directly from those modules. (yuck!) def _fix_symbols( modg ): for sym in ( 'controls','factorial','ui' ): if modg.has_key(sym): del modg[sym] all = set(modg.keys()) & set(globals().keys()) return list(all) # The following manipulations of math and numpy functions is a workaround # for the problem that in going from Numeric to numpy, the return by numpy # from e.g. sqrt is numpy.float64, not float, which is not recognized as # matching float in the operator overloading machinery, including Boost. # This means is that right multiplication scalar*vector is not caught # and the result is returned as numpy.ndarray instead of vector, which # can be a big performance hit in vector calculations. # There is an advantage to this workaround: sqrt(scalar) is much faster # this way than when using the numpy sqrt, and there is little penalty # for the numpy sqrt(array). import math as _math import numpy as _numpy # TODO: be selective instead of importing * from these: from math import * from numpy import * for ufunc in ('ceil','cos','cosh','exp','fabs','floor','fmod','frexp', 'ldexp','log','log10','modf','sin','sinh','sqrt', 'tan','tanh'): def _uf(x, numpy = getattr(_numpy,ufunc), math = getattr(_math,ufunc), mathtypes = (float,int,long)): if type(x) in mathtypes: return math(x) return numpy(x) globals()[ufunc] = _uf for ufunc in ('hypot',): def _uf(x,y, numpy = getattr(_numpy,ufunc), math = getattr(_math,ufunc), mathtypes = (float,int,long)): if type(x) in mathtypes and type(y) in mathtypes: return math(x,y) return numpy(x,y) globals()[ufunc] = _uf import crayola as color import cvisual cvisual.init_numpy() from cvisual import (vector, mag, mag2, norm, cross, rotate, comp, proj, diff_angle, rate) from visual.primitives import (arrow, cylinder, cone, sphere, box, ring, label, frame, pyramid, ellipsoid, curve, faces, convex, helix, points, distant_light, local_light) from visual.ui import display import materials # Undo side effect of from... import * that puts modules in package namespace del ui, crayola, primitives if 1: # Names defined for backward compatibility with Visual 3: import sys, time true = True false = False crayola = color from cvisual import vector_array, scalar_array # Allow cvisual itself to load files from the visual package - used by GTK # driver to load glade data files import os.path as _os_path cvisual._set_dataroot( _os_path.split( __file__ )[0] + _os_path.sep) # The following ensures that __waitclose will be run # when we reach the end of the program, # to permit viewing and navigating the scene. import atexit as _atexit _atexit.register(cvisual.waitclose) import site_settings # Construct the default display object. scene = display() visual-5.12_release/site-packages/visual/Makefile.am0000644000175000017500000000070211126545125017445 00000000000000## Process this file with automake to produce visual/Makefile.in srcdir = @srcdir@ VPATH = @srcdir@ # override the name of package PACKAGE = visual pkgpython_PYTHON = __init__.py controls.py crayola.py factorial.py filedialog.py \ graph.py materials.py primitives.py site_settings.py text.py ui.py \ earth.tga turbulence3.tga wood.tga pkgdatadir = @pythondir@/visual dist_pkgdata_DATA = vpython.glade vpython_notoolbar.glade logo_t.gif pan.png visual-5.12_release/site-packages/visual/vpython.glade0000644000175000017500000001472710732127233020130 00000000000000 public VPython GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False logo_t.gif True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False public True False 0 True GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_BOTH_HORIZ True True public True Close all VPython windows gtk-quit True True False False True public True Full screen gtk-fullscreen True True False False False True True True True True False False public True Use rotate/zoom mouse interaction Rotate/Zoom True gtk-refresh True True False True False True public True Use panning mouse interaction Pan True pan.png True True False False rotate_zoom_button False True True True True True False False public True Recenter and scale the window contents gtk-zoom-fit True True False False True 0 False False visual-5.12_release/site-packages/visual/crayola.py0000644000175000017500000000063011103612477017415 00000000000000import colorsys black = (0,0,0) white = (1,1,1) red = (1,0,0) green = (0,1,0) blue = (0,0,1) yellow = (1,1,0) cyan = (0,1,1) magenta = (1,0,1) orange = (1,0.6,0) def gray(luminance): return (luminance,luminance,luminance) def rgb_to_hsv(T): if len(T) > 3: T = T[:3] return apply(colorsys.rgb_to_hsv,T) def hsv_to_rgb(T): if len(T) > 3: T = T[:3] return apply(colorsys.hsv_to_rgb,T) visual-5.12_release/site-packages/visual/vpython_notoolbar.glade0000644000175000017500000000260511075530343022200 00000000000000 public VPython GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False logo_t.gif True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False public True False 0 visual-5.12_release/site-packages/visual/materials.py0000644000175000017500000005200111110305410017723 00000000000000""" VPython material tools and definitions Stable Interfaces: materials.unshaded materials.diffuse materials.plastic materials.rough materials.wood materials.marble materials.earth Individual named materials. The exact look of these might change in future versions of Visual, but the names should continue to work. materials.texture( data, channels=None, mipmap=True, interpolate=True, name="texture" ) Create a material by "extruding"/projecting a 2D image. See VPython documentation for more details. materials.loadTGA(file) materials.saveTGA(file,data) Load and save uncompressed TGA files; typically used to supply the data parameter to texture(). file may be a filename or file object. Unstable interfaces: materials.shader( name, shader, version, textures=(), translucent=False ) This is the low level interface for constructing a material based on a GLSL shader program. It is not fully documented because it is subject to change in future versions. In particular, it is likely that some or all programs using materials.shader() directly will require modification to run in future versions of Visual. If you come up with really nice new materials, be sure to post them to visualpython-users@sf.net, so that they can be considered for incorporation in new versions of Visual. As well as benefitting other users, this will remove from you the burden of updating your shader for new versions. If you want to learn how to write shaders, look at some of the examples below (such as "wood"), and consult the GLSL reference specification which is available online. To minimize the likelihood that you will have to rewrite your shaders for future architectural changes in Visual, avoid accessing the built in gl_* variables defined in that specification; instead use only normal, position, mat_pos, object_color, and object_opacity as inputs and write your output shaded material color to material_color and material_opacity. Many of these are currently simple macros expanding to gl_* variables, but in the future their definitions may change. Use lightAt() instead of the light_* uniforms if possible. materials.raw_texture( data, interpolate, mipmap ) materials.tx_turb3 materials.tx_wood raw 2D textures useful only for filling in the textures parameter of materials.shader(). """ import cvisual from numpy import array, reshape, fromstring, ubyte, ndarray, zeros, asarray import os.path, math class raw_texture(cvisual.texture): def __init__(self, **kwargs): cvisual.texture.__init__(self) for key, value in kwargs.iteritems(): self.__setattr__(key, value) class shader_material(cvisual.material): def __init__(self, **kwargs): cvisual.material.__init__(self) for key, value in kwargs.iteritems(): self.__setattr__(key, value) Lheader = 18 # length of header in targa file def convert_data(data): data = asarray(data) if data.dtype != ubyte: data = array( 255*data, ubyte ) if len(data.shape) == 2: data = reshape( data, data.shape + (1,) ) return data def saveTGA(fileid, data): data = convert_data(data) dims = data.shape height = dims[0] width = dims[1] bytes = dims[2] length = width*height*bytes attributes = 32 # byte 17; start in upper left targa_type = 2 # rgb or rgbo if data.dtype.kind == 'u': databytes = data.flatten() else: databytes = 255*data.flatten() if bytes == 1: targa_type = 3 # 1 byte per pixel (luminance by default, or opacity) elif bytes == 2: # luminance+opacity targa_type = 3 # luminance + opacity (not in the targa spec) attributes += 8 # signal presence of 8 bits of opacity elif 3 <= bytes <= 4: # rgb if bytes == 4: attributes += 8 # signal presence of 8 bits of opacity red = databytes[0::bytes].copy() # make copy; must reverse byte order rgb -> bgr databytes[0::bytes] =databytes[2::bytes] # blue databytes[2::bytes] = red else: raise ValueError("Must have 1, 3, or 4 values per pixel, not %d." % bytes) output = zeros(Lheader+length, ubyte) output[:Lheader] = [0,0,targa_type,0,0,0,0,0,0,0,0,0, width & 255,width>>8,height & 255,height>>8,8*bytes,attributes] output[Lheader:] = databytes if isinstance(fileid, str): if fileid[-4:] != ".tga": fileid += ".tga" fileid = open(fileid, "wb") fileid.write(output) fileid.close() def loadTGA(fileid): if isinstance(fileid, str): if fileid[-4:] != ".tga": fileid += ".tga" fileid = open(fileid, "rb") data = fromstring( fileid.read(), ubyte ) width = data[12]+256*data[13] height = data[14]+256*data[15] bytes = data[16] >> 3 image = data[Lheader:Lheader+width*height*bytes] if 1 <= bytes <= 2: image = image.reshape((height,width,bytes)) elif 3 <= bytes <= 4: red = image[0::bytes].copy() # make copy; must reverse byte order bgr -> rgb image[0::bytes] = image[2::bytes] # blue image[2::bytes] = red image = image.reshape((height,width,bytes)) else: raise IOError("%s is not a valid targa file." % filename) # Photoshop "save as targa" starts the data in lower left; last byte in header is zero. # Visual and POV-Ray start data in upper left; last header byte is nonzero. if data[Lheader-1] == 0: image = image[::-1] return image texturePath = os.path.split( __file__ )[0] + "/" data = loadTGA(texturePath+"turbulence3") # the targa file is 512*512*3 tx_turb3 = raw_texture( data=reshape(data,(64,64,64,3)), interpolate=True, mipmap=False ) tx_wood = raw_texture( data=loadTGA(texturePath+"wood"), interpolate=True) def get_default_channels(data): dims = data.shape bytes = dims[2] if bytes == 1: channels = ("luminance",) # default; else must specify opacity explicitly elif bytes == 2: channels = ("luminance","opacity") elif bytes == 3: channels = ("red","green","blue") elif bytes == 4: channels = ("red","green","blue","opacity") else: raise ValueError("Must have 1, 3, or 4 values per pixel, not %d." % bytes) return channels def texture(data, channels=None, mapping="rectangular", mipmap=True, interpolate=True, name="texture"): data = convert_data(data) if channels is None: channels = get_default_channels(data) if len(channels) != data.shape[2]: raise ValueError( "Channel combination does not match number of values per pixel in data." ) channel_code = { ("luminance",) : "luminance", ("opacity",) : "opacity", ("luminance","opacity") : "luminance_opacity", ("red","green","blue") : "rgb", ("red","green","blue","opacity") : "rgbo" }.get( tuple(channels), None ) if not channel_code: raise ValueError( "Unsupported channel combination: " + repr(channels) ) raw_tx = raw_texture( data = data, type = channel_code, mipmap = mipmap, interpolate = interpolate, clamp = (mapping in ("rectangular","sign")) ) #< TODO: clamp y for spherical p2x,p2y = 1.,1. while p2x < data.shape[1]: p2x *= 2 while p2y < data.shape[0]: p2y *= 2 if interpolate: # We want non-wrapping axes to end at pixel centers, not pixel edges cax,cay = (-0.5/p2x, -0.5/p2y ) else: # Trim just enough off the edges to avoid broken wrapping cax,cay = (-0.01/p2x,-0.01/p2y) # Adjustment for interpolation, rectangular, and non-power-of-two textures m = max( data.shape[1], data.shape[0] ) adjust = ( (data.shape[1]+m)/2./p2x + cax, (data.shape[0]+m)/2./p2y + cay, -2*cax-m/p2x,-2*cay-m/p2y, -cax, -cay, data.shape[1]/p2x + cax, data.shape[0]/p2y + cay ) # TODO: Creating shaders here is inefficient if there are lots of textures. # What we want is multiple materials sharing one shader program, with uniforms, but that's not # supported by the core at the moment. if mapping == "rectangular": return shader( name = name, version = 5.00, textures = [ raw_tx ], translucent = "opacity" in channels, shader = """ [fragment] uniform sampler2D tex0; void material_main(void) { vec4 C = texture2D( tex0, clamp(vec2(%f,%f) + vec2(%f,%f)*mat_pos.zy, vec2(%f,%f), vec2(%f,%f)) ); material_color = lightAt( normalize(normal), normalize(-position), C.rgb*object_color, vec3(0.,0.,0.), 0. ); material_opacity = C.a * object_opacity; }""" % adjust) elif mapping == "spherical": if p2x != data.shape[1] or p2y != data.shape[0]: raise ValueError("spherical textures must currently be 2**N x 2**M.") raw_tx.mipmap = False return shader( name = name, version = 5.00, textures = [ raw_tx ], translucent = "opacity" in channels, shader = """ [fragment] uniform sampler2D tex0; void material_main(void) { vec2 tp = vec2( atan( mat_pos.x-0.5, mat_pos.z-0.5 ) * (0.5 / 3.14159) + 0.5, 0.5 + atan( (mat_pos.y-0.5) / length( mat_pos.xz - 0.5 ) ) * %f ); vec4 C = texture2D( tex0, tp ); material_color = lightAt( normalize(normal), normalize(-position), C.rgb*object_color, vec3(0.,0.,0.), 0. ); material_opacity = C.a * object_opacity; }""" % (1.0 / math.pi * (-2*cay-data.shape[0]/p2y))) elif mapping == "sign": return shader( name = name, version = 5.00, textures = [ raw_tx ], translucent = False, shader = """ [varying] varying float front_face; [vertex] void main(void) { basic(); if (gl_Normal.x > .001) front_face = 1.0; else front_face = 0.0; } [fragment] uniform sampler2D tex0; void material_main(void) { vec4 C; if ( front_face > 0.5 ) { C = texture2D( tex0, clamp(vec2(%f,%f) + vec2(%f,%f)*mat_pos.zy, vec2(%f,%f), vec2(%f,%f)) ); // Texture is decaled over opaque color C.rgb = mix( object_color, C.rgb, C.a ); C.a = object_opacity; } else C = gl_Color; material_color = lightAt( normalize(normal), normalize(-position), C.rgb, vec3(0.,0.,0.), 0. ); material_opacity = C.a; }""" % adjust) else: raise ValueError( "Unknown mapping type: " + str(mapping) ) library = """ [vertex] uniform mat4 model_material; // object space -> material position void basic(void) { position = vec3(gl_ModelViewMatrix * gl_Vertex); normal = normalize(gl_NormalMatrix * gl_Normal); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; gl_FrontColor = gl_Color; mat_pos = vec3( model_material * gl_Vertex ); } [varying] #version 110 // These are available to fragment shaders and must be set by vertex shaders. varying vec3 normal; // eye space surface normal varying vec3 position; // eye space surface position varying vec3 mat_pos; // surface material position in [0,1]^3 #define VPYTHON_SHADER_VERSION 400 [fragment] // Available inputs (see also the varying section) #define object_color gl_Color.rgb // the .color attribute of the object being rendered #define object_opacity gl_Color.a // the .opacity attribute of the object being rendered uniform int light_count; uniform vec4 light_pos[8]; uniform vec4 light_color[8]; // Outputs of a material_main() function #define material_color gl_FragColor.rgb #define material_opacity gl_FragColor.a // Return lit surface color based on the given surface properties and the lights // specified by the light_* uniforms. vec3 lightAt( vec3 normal, vec3 to_eye, vec3 diffuse_color, vec3 specular_color, float shininess ) { vec3 color = gl_LightModel.ambient.rgb * diffuse_color; // All this ugliness is to deal with the need of Geforce 7xxx (and probably similar generation // ATI cards) to unroll loops at compile time. If you are trying to understand this code, look // at just the else case. int count = light_count; if (count <= 2) { for(int i=0; i<2; i++) { if (i= 5.10: raise ValueError( "shader version " + str(version) + " not supported." ) if shader.find("[vertex]") < 0 and library: shader += """ [vertex] void main() { basic(); }""" shader = library + "\n".join( [l.strip() for l in shader.split("\n")] ) return shader_material( name=name, shader=shader, **kwargs ) materials = [ shader( name = "unshaded", version = (1.00,5.00), library = "", shader = """ [vertex] void main() { gl_Position = ftransform(); gl_FrontColor = gl_Color; } [fragment] void main() { gl_FragColor = gl_Color; }"""), shader( name = "emissive", version=5.00, shader = """ [fragment] void material_main() { float d = dot(normalize(-position), normal); d = pow(d * 1.5,.4) * 1.1; if (d > 1.0) d = 1.0; material_color = object_color * d; material_opacity = object_opacity; }"""), shader( name = "diffuse", version = 5.00, shader = """ [fragment] void material_main() { material_color = lightAt( normalize(normal), normalize(-position), object_color, vec3(0,0,0), 0.0 ); material_opacity = object_opacity; }"""), shader( name = "plastic", version = 5.00, shader = """ [fragment] void material_main() { material_color = lightAt( normalize(normal), normalize(-position), object_color, vec3(.8,.8,.8), 64.0 ); material_opacity = object_opacity; } """), shader( name = "rough", version = 5.00, textures = [ tx_turb3 ], shader = """ [fragment] uniform sampler3D tex0; void material_main() { // Displace the surface normal using a 3D noise function vec3 N2 = normal + noise3D(tex0, mat_pos, 1.0) * .4; // Compute lighting based on the displaced normal material_color = lightAt( normalize(N2), normalize(-position), object_color, vec3(.5,.5,.5), 16. ) // TODO hack to reduce ambient - object_color * gl_LightModel.ambient.rgb * .7; material_opacity = object_opacity; } """), shader( name = "wood", version = 5.00, textures = [tx_wood, tx_turb3], shader = """ [fragment] uniform sampler2D tex0; // wood cross-section uniform sampler3D tex1; // 3D turbulence void material_main() { // Compute a position in the 2D cross section texture vec2 wood_pos = -.85 * mat_pos.zy + //< simple rectangular mapping -.10 * mat_pos.x + //< slight skew to display wood grain on xy and xz surfaces -.05 * noise3D(tex1, mat_pos * .5, 1.).xy; //< turbulence so grain isn't perfectly straight // Look up the color in the texture vec3 C = texture2D( tex0, wood_pos ).rgb; // Apply lighting material_color = lightAt( normalize(normal), normalize(-position), C*object_color, vec3(.5,.5,.5), 5. ); material_opacity = object_opacity; } """), shader( name = "marble", version = 5.00, textures=[tx_turb3], shader = """ [fragment] uniform sampler3D tex0; void material_main() { vec3 noise = noise3D( tex0, mat_pos, 2.0 ); // "marble" varies between two colors in a sine wave pattern in y, // displaced heavily by a noise function. float a = 0.5 + 0.5*sin( mat_pos.y*16. + noise.x*10. ); vec3 C = mix( vec3(.4,.3,.3), vec3(1.,1.,1.), a ); // We are also doing a normal displacement similar to "rough". // TODO: Is this desired? I normally think of marble as smooth! vec3 N2 = normal + noise*1.; // Modulate the marble color by the object color, and apply lighting material_color = lightAt( normalize(N2), normalize(-position), C*object_color, vec3(.8,.8,.8), 100. ); material_opacity = object_opacity; } """), # TODO: fancy earth renderer with atmosphere, gloss map, bump map texture( name="earth", data=loadTGA(texturePath+"earth"), mapping = "spherical"), shader( name = "show_mat_pos", version = 5.00, textures = [], shader = """ [fragment] void material_main() { material_color = mat_pos * .5; if ( fract( mat_pos.x * 10. + .021 ) < .02 ) material_color *= 0.5; if ( fract( mat_pos.y * 10. + .021 ) < .02 ) material_color *= 0.5; if ( fract( mat_pos.z * 10. + .021 ) < .02 ) material_color *= 0.5; if ( mat_pos.x < 0. || mat_pos.x > 1. ) material_color = vec3(1.,0.8,0.8); if ( mat_pos.y < 0. || mat_pos.y > 1. ) material_color = vec3(0.8,1.,0.8); if ( mat_pos.z < 0. || mat_pos.z > 1. ) material_color = vec3(0.8,0.8,1.); material_opacity = object_opacity; } """ ), ] for mat in materials: globals()[mat.name] = mat del mat visual-5.12_release/site-packages/visual/graph.py0000644000175000017500000006707311107417325017101 00000000000000from __future__ import division from visual import * __all__ = visual._fix_symbols( globals() ) + [ 'gdisplay','gcurve','gdots','gvbars','ghbars','ghistogram'] # Visual 3 ten iterations 0.14 s each (labels for points) # Visual 4 hundred iteractions 0.02 s each # A graph package for plotting a curve, with labeled axes and autoscaling # Bruce Sherwood, Carnegie Mellon University, begun April 2000 # minmax[xaxis][negaxis], minmax[yaxis][negaxis] refer to absolute values of minimum negative values; # minmax[xaxis][posaxis], minmax[yaxis][posaxis] to maximum positive values. # This graph package forces the origin (0,0) to be on screen, at the axes intersection. grey = (0.7,0.7,0.7) # color of axes tmajor = 10. # length of major tick marks in pixels tminor = 5. # length of minor tick marks in pixels border = 10. # border around graph frac = 0.02 # fraction of range required before remaking axes minorticks = 5 # number of minor tick intervals between major ticks maxmajorticks = 3 # max number of major ticks (not including 0) maxminorticks = (maxmajorticks+1)*minorticks # max number of minor ticks (4 between major ticks) lastgdisplay = None # the most recently created gdisplay gdotsize = 6.0 # diameter of gdot in pixels dz = 0.01 # offset for plots relative to axes and labels xaxis = 0 yaxis = 1 negaxis = 0 posaxis = 1 graphfont = "" fontheight = -1 # font point size charwidth = 12 # approximate character width znormal = [0,0,1] # for faces def labelnum(x): # determine what labels to show, in what format if x >= 0.: sign = 1. else: sign = -1. mantissa, exponent = modf(log10(abs(x))) number = 10.**mantissa if number < 1.: number = 10.*number exponent = exponent-1. if number >= 7.5: number = 7.5 marks = [2.5, 5.0, 7.5] extra = 1 elif number >= 5.: number = 5. marks = [2.5, 5.0] extra = 1 elif number >= 4.: number = 4. marks = [2.0, 4.0] extra = 0 elif number >= 3.: number = 3. marks = [1.0, 2.0, 3.0] extra = 0 elif number >= 2.: number = 3. marks = [1.0, 2.0] extra = 0 elif number >= 1.5: number = 1.5 marks = [0.5, 1.0, 1.5] extra = 1 else: number = 1. marks = [0.5, 1.0] extra = 1 if exponent > 0: digits = 0 else: digits = int(-exponent)+extra if digits < 3. and exponent <= 3.: format = '%0.'+('%s' % digits)+'f' else: format = '%0.1E' return (sign*(array(marks)*10.**exponent)).tolist(), format def cleaneformat(string): # convert 2.5E-006 to 2.5E-6; 2.5E+006 to 2.5E6 index = string.find('E') if index == -1: return string # not E format index = index+1 if string[index] == '-': index = index+1 elif string[index] == '+': string = string[:index]+string[index+1:] while index < len(string) and string[index] == '0': string = string[:index]+string[index+1:] if string[-1] == '-': string = string[:-1] if string[-1] == 'E': string = string[:-1] return string class gdisplay: def __init__(self, x=0, y=0, width=800, height=400, title=None, xtitle=None, ytitle=None, xmax=None, xmin=None, ymax=None, ymin=None, foreground=None, background=None): global lastgdisplay lastgdisplay = self currentdisplay = display.get_selected() if title is None: title = 'Graph' self.width = width self.height = height if foreground is not None: self.foreground = foreground else: self.foreground = color.white if background is not None: self.background = background else: self.background = color.black self.display = display(title=title, x=x, y=y, width=self.width, height=self.height, foreground=self.foreground, background=self.background, fov=0.01, userspin=0, uniform=0, lights=[], ambient=color.gray(0)) distant_light(direction=(0,0,1), color=color.white) self.autoscale = [1, 1] self.title = [[xtitle, 0], [ytitle, 0]] # titles not displayed yet if xtitle is not None: self.xtitlewidth = len(xtitle)*charwidth else: self.xtitlewidth = 0 if ytitle is not None: self.ytitlewidth = len(ytitle)*charwidth else: self.ytitlewidth = 0 # For all axis-related quantities: [x axis 0 or y axis 1][neg axis 0 or pos axis 1] self.axis = [[None, None], [None, None]] self.zero = [None, None] self.lastlabel = [[0., 0.], [0., 0.]] self.format = [None, None] self.majormarks = [[None, None], [None, None]] self.lastminmax = [[0., 0.], [0., 0.]] self.minmax = [[0., 0.], [0., 0.]] # [x or y][negative 0 or positive 1] if xmax is not None: if xmax > 0: self.minmax[xaxis][posaxis] = abs(xmax) self.autoscale[xaxis] = 0 if xmin is not None: if xmin < 0: self.minmax[xaxis][negaxis] = abs(xmin) self.autoscale[xaxis] = 0 if ymax is not None: if ymax > 0: self.minmax[yaxis][posaxis] = abs(ymax) self.autoscale[yaxis] = 0 if ymin is not None: if ymin < 0: self.minmax[yaxis][negaxis] = abs(ymin) self.autoscale[yaxis] = 0 if self.minmax[xaxis][posaxis]+self.minmax[xaxis][negaxis] == 0: self.minmax[xaxis][posaxis] = self.lastminmax[xaxis][posaxis] = 1E-35 if self.minmax[yaxis][posaxis]+self.minmax[yaxis][negaxis] == 0: self.minmax[yaxis][posaxis] = self.lastminmax[yaxis][posaxis] = 1E-35 self.gscale = self.calculategscale() self.setcenter() self.minorticks = [ [ [], [] ], [ [],[] ] ] # all the minor ticks we'll ever use for axis in range(2): for axissign in range(2): for nn in range(maxminorticks): if axis == xaxis: self.minorticks[axis][axissign].append(label(display=self.display, yoffset=-tminor, linecolor=grey, visible=0, box=0, opacity=0)) else: self.minorticks[axis][axissign].append(label(display=self.display, xoffset=-tminor, linecolor=grey, visible=0, box=0, opacity=0)) self.majorticks = [ [ [], [] ], [ [],[] ] ] # all the major ticks we'll ever use for axis in range(2): for axissign in range(2): for nn in range(maxmajorticks): if axis == xaxis: self.majorticks[axis][axissign].append(label(display=self.display, yoffset=-tmajor, font=graphfont, text='', border=0, linecolor=grey, visible=0, box=0, opacity=0)) else: self.majorticks[axis][axissign].append(label(display=self.display, xoffset=-tmajor, font=graphfont, text='', border=2, linecolor=grey, visible=0, box=0, opacity=0)) for axis in range(2): for axissign in range(2): self.axisdisplay(axis, axissign) currentdisplay.select() def setcenter(self): if self.title[xaxis][1]: xright = self.title[xaxis][0].x+0.5*self.xtitlewidth*self.display.range[0]/self.width else: xright = self.minmax[xaxis][posaxis] xleft = self.minmax[xaxis][negaxis] # a positive number ytop = self.minmax[yaxis][posaxis] ybottom = self.minmax[yaxis][negaxis] # a positive number if (xleft==0): xleft += 3*tmajor/self.gscale[0] if (ybottom==0): ybottom += 3*tmajor/self.gscale[1] x = (xright-xleft)/2.0 y = (ytop-ybottom)/2.0 self.display.center = array([x,y,0]) def calculategscale(self): if self.title[xaxis][1]: xright = self.title[xaxis][0].x+0.5*self.xtitlewidth*self.display.range[0]/self.width else: xright = self.minmax[xaxis][posaxis] xleft = self.minmax[xaxis][negaxis] # a positive number rangex = xleft+xright rangex += self.xtitlewidth*rangex/self.width ytop = self.minmax[yaxis][posaxis] ybottom = self.minmax[yaxis][negaxis] # a positive number rangey = ytop+ybottom if (xleft==0): rangex += 3*tmajor*rangex/self.width if (ybottom==0): rangey += 3*tmajor*rangey/self.height self.display.range = (0.55*rangex,0.55*rangey,0.1) return array([self.width/rangex,self.height/rangey,1.0]) def setxyparams(self): global x0, y0 if self.minmax[xaxis][posaxis] >= 0 and self.minmax[xaxis][negaxis] >= 0: x0 = 0. else: x0 = self.minmax[xaxis][negaxis] if self.minmax[yaxis][posaxis] >= 0 and self.minmax[yaxis][negaxis] >= 0: y0 = 0. else: y0 = self.minmax[yaxis][negaxis] def axisdisplay(self, axis, axissign): if self.minmax[axis][axissign] == 0.: return self.setxyparams() if axissign == posaxis: sign = 1. else: sign = -1. if self.axis[axis][axissign] is None: # new; no axis displayed up till now if axis == xaxis: axispos = array([(0,y0,0), (sign*self.minmax[axis][axissign],y0,0)]) titlepos = array([self.minmax[axis][posaxis],y0,0]) else: axispos = array([(x0,0,0), (x0,sign*self.minmax[axis][axissign],0)]) titlepos = array([x0,self.minmax[axis][posaxis],0]) self.axis[axis][axissign] = curve(pos=axispos, color=grey, display=self.display) if (self.title[axis][0] is not None) and (not self.title[axis][1]): title = self.title[axis][0] self.title[axis][0] = label(display=self.display, pos=titlepos, text=title, font=graphfont, xoffset=tminor, opacity=0, box=0, line=0) self.title[axis][1] = 1 if self.minmax[axis][posaxis] >= self.minmax[axis][negaxis]: newmajormarks, format = labelnum(self.minmax[axis][posaxis]) else: newmajormarks, format = labelnum(self.minmax[axis][negaxis]) self.format[axis] = format if self.zero[axis] is None: if axis == xaxis: self.zero[axis] = label(display=self.display, pos=(0,0,0), text='0', color=self.foreground, font=graphfont, height=fontheight, border=0, yoffset=-tmajor, linecolor=grey, box=0, opacity=0) elif self.minmax[xaxis][negaxis] == 0: self.zero[axis] = label(display=self.display, pos=(0,0,0), text='0', color=self.foreground, font=graphfont, height=fontheight, border=2, xoffset=-tmajor, linecolor=grey, box=0, opacity=0) d1 = newmajormarks[0] d2 = d1/minorticks nminor = 0 nmajor = 0 marks = [] for x1 in newmajormarks: if x1 > self.minmax[axis][axissign]: break # newmajormarks can refer to opposite half-axis marks.append(x1) obj = self.majorticks[axis][axissign][nmajor] obj.text = cleaneformat(self.format[axis] % (sign*x1)) obj.color = self.foreground obj.visible = 1 if axis == xaxis: obj.pos = array([sign*x1,y0,0]) obj.yoffset = -tmajor else: obj.pos = array([x0,sign*x1,0]) obj.xoffset = -tmajor nmajor = nmajor+1 nminor = 0 for x2 in arange(0.+d2, self.minmax[axis][axissign]+1.01*d2, d2): if x2 > self.minmax[axis][axissign]+0.01*d2: break if x2 % d1 < d2/2.: continue # don't put minor tick where there is a major one obj = self.minorticks[axis][axissign][nminor] obj.visible = 1 if axis == xaxis: obj.pos = array([sign*x2,y0,0]) else: obj.pos = array([x0,sign*x2,0]) nminor = nminor+1 if marks != []: self.majormarks[axis][axissign] = marks self.lastlabel[axis][axissign] = self.majormarks[axis][axissign][-1] else: self.lastlabel[axis][axissign] = 0 else: # Don't show y=0 label if there is a negative-x axis if (self.zero[axis] is not None) and (axis == yaxis) and (self.minmax[xaxis][negaxis] != 0): self.zero[axis].visible = 0 self.zero[axis] = None # Extend axis, which has grown if axis == xaxis: self.axis[axis][axissign].pos = array([[0,0,0],[sign*self.minmax[axis][axissign], y0, 0]]) else: self.axis[axis][axissign].pos = array([[0,0,0],[x0,sign*self.minmax[axis][axissign],0]]) # Reposition xtitle (at right) or ytitle (at top) if self.title[axis][1] and axissign == posaxis: if axis == xaxis: titlepos = array([self.minmax[axis][posaxis],y0,0]) else: titlepos = array([x0,self.minmax[axis][axissign],0]) self.title[axis][0].pos = titlepos # See how many majormarks are now needed, and in what format if self.minmax[axis][posaxis] >= self.minmax[axis][negaxis]: newmajormarks, format = labelnum(self.minmax[axis][posaxis]) else: newmajormarks, format = labelnum(self.minmax[axis][negaxis]) if (self.majormarks[axis][axissign] is not None) and (len(self.majormarks[axis][axissign]) > 0): # this axis already has major tick marks/labels oldd1 = self.majormarks[axis][axissign][0] else: oldd1 = 0. oldd2 = oldd1/minorticks while newmajormarks[-1] > self.minmax[axis][axissign]: if len(newmajormarks) == 1: break del newmajormarks[-1] d1 = newmajormarks[0] d2 = d1/minorticks newformat = (format != self.format[axis]) self.format[axis] = format needminor = (self.minmax[axis][axissign] >= self.lastlabel[axis][axissign]+d2) or (d2 != oldd2) needmajor = ((self.majormarks[axis][axissign] is None) or (newmajormarks[-1] != self.majormarks[axis][axissign][-1]) or newformat) if needmajor: # need new labels start = 0 if (self.majormarks[axis][axissign] is None) or newformat or (d1 != oldd1): marks = [] else: for num in newmajormarks: if num > self.majormarks[axis][axissign][-1]: start = num break marks = self.majormarks[axis][axissign] for nmajor in range(maxmajorticks): x1 = (nmajor+1)*d1 obj = self.majorticks[axis][axissign][nmajor] if x1 > self.minmax[axis][axissign]: obj.visible = 0 continue if x1 < start: continue marks.append(x1) obj.text = cleaneformat(self.format[axis] % (sign*x1)) obj.color = self.foreground obj.visible = 1 if axis == xaxis: obj.pos = array([sign*x1,y0,0]) else: obj.pos = array([x0,sign*x1,0]) if marks != []: self.majormarks[axis][axissign] = marks if needminor: # adjust minor tick marks nminor = 0 for x2 in arange(0.+d2, self.minmax[axis][axissign]+1.01*d2, d2): if x2 > self.minmax[axis][axissign]+0.01*d2: break if x2 % d1 < d2/2.: continue # don't put minor tick where there is a major one if (d2 != oldd2) or x2 > self.lastlabel[axis][axissign]-0.01*d2: if axis == xaxis: self.minorticks[axis][axissign][nminor].pos = array([sign*x2,y0,0]) else: self.minorticks[axis][axissign][nminor].pos = array([x0,sign*x2,0]) self.minorticks[axis][axissign][nminor].visible = 1 nminor = nminor+1 while nminor < maxminorticks: self.minorticks[axis][axissign][nminor].visible = 0 nminor = nminor+1 self.lastlabel[axis][axissign] = d2*int(self.minmax[axis][axissign]/d2) def resize(self, x, y): redox = redoy = 0 if self.autoscale[xaxis]: if x > self.lastminmax[xaxis][posaxis]: self.minmax[xaxis][posaxis] = x+frac*self.display.range[0] if (self.lastminmax[xaxis][posaxis] == 0 or (self.minmax[xaxis][posaxis] >= self.lastminmax[xaxis][posaxis])): redox = 1 elif -x > self.lastminmax[xaxis][negaxis]: self.minmax[xaxis][negaxis] = -x-frac*self.display.range[0] if (self.lastminmax[xaxis][negaxis] == 0 or (self.minmax[xaxis][negaxis] >= self.lastminmax[xaxis][negaxis])): redox = 1 if self.autoscale[yaxis]: if y > self.lastminmax[yaxis][posaxis]: self.minmax[yaxis][posaxis] = y+frac*self.display.range[1] if (self.lastminmax[yaxis][posaxis] == 0 or (self.minmax[yaxis][posaxis] >= self.lastminmax[yaxis][posaxis])): redoy = 1 elif -y > self.lastminmax[yaxis][negaxis]: self.minmax[yaxis][negaxis] = -y-frac*self.display.range[1] if (self.lastminmax[yaxis][negaxis] == 0 or (self.minmax[yaxis][negaxis] >= self.lastminmax[yaxis][negaxis])): redoy = 1 if (redox or redoy): self.gscale = self.calculategscale() if redox: self.axisdisplay(xaxis,posaxis) self.lastminmax[xaxis][posaxis] = self.minmax[xaxis][posaxis] self.axisdisplay(xaxis,negaxis) self.lastminmax[xaxis][negaxis] = self.minmax[xaxis][negaxis] if redoy: self.axisdisplay(yaxis,posaxis) self.lastminmax[yaxis][posaxis] = self.minmax[yaxis][posaxis] self.axisdisplay(yaxis,negaxis) self.lastminmax[yaxis][negaxis] = self.minmax[yaxis][negaxis] self.setcenter() def getgdisplay(): return gdisplay() def constructorargs(obj,arguments): if arguments.has_key('gdisplay'): obj.gdisplay = arguments['gdisplay'] else: if lastgdisplay is None: obj.gdisplay = getgdisplay() else: obj.gdisplay = lastgdisplay if arguments.has_key('delta'): obj.delta = arguments['delta'] else: obj.delta = 1. if arguments.has_key('color'): obj.color = arguments['color'] else: obj.color = obj.gdisplay.foreground if arguments.has_key('pos'): return arguments['pos'] else: return None def primitiveargs(obj,arguments): if arguments.has_key('color'): obj.color = arguments['color'] if arguments.has_key('pos'): return arguments['pos'] else: raise SyntaxError class gcurve: def __init__(self, **args): pos = constructorargs(self,args) self.gcurve = curve(display=self.gdisplay.display, color=self.color) if pos is not None: for xy in pos: self.plot(pos=xy) def plot(self, **args): pos = primitiveargs(self,args) self.gdisplay.resize(pos[0], pos[1]) self.gcurve.append(pos=(pos[0],pos[1],2*dz), color=self.color) class gdots: def __init__(self, **args): pos = constructorargs(self,args) self.size = 5 if args.has_key('size'): self.size = args['size'] self.shape = 'round' if args.has_key('shape'): self.shape = args['shape'] # For now, restrict to single color self.dots = points(display=self.gdisplay.display, color=self.color, size=self.size, shape=self.shape, size_units="pixels") if pos is not None: for p in pos: self.plot(pos=p) else: if type(self.color) is ndarray and c.shape[0] > 1: raise RuntimeError, "Cannot give an array of colors without giving pos." def plot(self, **args): if args.has_key('pos'): pos = array(args['pos']) else: raise RuntimeError, "Cannot plot without giving pos." c = self.color if args.has_key('color'): c = args['color'] if pos.ndim == 1: # a single position self.gdisplay.resize(pos[0], pos[1]) self.dots.append(pos=(pos[0],pos[1],2*dz), color=c) else: for p in pos: # an array of positions self.gdisplay.resize(p[0], p[1]) self.dots.append(pos=(p[0],p[1],2*dz), color=c) class gvbars: def __init__(self, **args): pos = constructorargs(self,args) self.vbars = faces(display=self.gdisplay.display, pos=[(0,0,0),(0,0,0),(0,0,0)], normal=znormal, color=self.color) if pos is not None: for xy in pos: self.plot(pos=xy) def makevbar(self, pos): x,y = pos[0],pos[1] if y < 0.0: ymin = y ymax = 0 else: ymin = 0.0 ymax = y d = self.delta/2.0 return [(x-d,ymin,dz),(x+d,ymin,dz),(x-d,ymax,dz), (x-d,ymax,dz),(x+d,ymin,dz),(x+d,ymax,dz)] def plot(self, **args): pos = primitiveargs(self,args) self.gdisplay.resize(pos[0], pos[1]) for pt in self.makevbar(pos): self.vbars.append(pos=(pt[0],pt[1],dz), normal=znormal) class ghbars: def __init__(self, **args): pos = constructorargs(self,args) self.hbars = faces(display=self.gdisplay.display, pos=[(0,0,0),(0,0,0),(0,0,0)], normal=znormal, color=self.color) if pos is not None: for xy in pos: self.plot(pos=xy) def makehbar(self, pos): x,y = pos[0],pos[1] if x < 0.0: xmin = x xmax = 0 else: xmin = 0.0 xmax = x d = self.delta/2.0 return [(xmin,y-d,dz),(xmax,y-d,dz),(xmin,y+d,dz), (xmin,y+d,dz),(xmax,y-d,dz),(xmax,y+d,dz)] def plot(self, **args): pos = primitiveargs(self,args) self.gdisplay.resize(pos[0], pos[1]) for pt in self.makehbar(pos): self.hbars.append(pos=(pt[0],pt[1],dz), normal=znormal) class ghistogram: def __init__(self, bins=None, accumulate=0, average=0, delta=None, gdisplay=None, color=None): if gdisplay is None: if lastgdisplay is None: gdisplay = getgdisplay() else: gdisplay = lastgdisplay self.gdisplay = gdisplay self.bins = bins self.nhist = 0 # number of calls to plot routine self.accumulate = accumulate # add successive data sets self.average = average # display accumulated histogram divided by self.nhist if color is None: self.color = self.gdisplay.foreground else: self.color = color self.histaccum = zeros(len(bins)) if delta is None: self.delta = (bins[1]-bins[0]) else: self.delta = delta self.vbars = faces(display=self.gdisplay.display, pos=[(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0)], normal=znormal, color=self.color) self.gdisplay.resize(bins[0]-self.delta,1.0) self.gdisplay.resize(bins[-1]+self.delta,1.0) def makehistovbar(self, pos): x,y = pos[0],pos[1] d = 0.8*self.delta/2.0 return [(x-d,0.0,dz),(x+d,0.0,dz),(x-d,y,dz), (x-d,y,dz),(x+d,0.0,dz),(x+d,y,dz)] def plot(self, data=None, accumulate=None, average=None, color=None): if color is None: color = self.color if accumulate is not None: self.accumulate = accumulate if average is not None: self.average = average if data is None: return n = searchsorted(sort(data), self.bins) n = concatenate([n, [len(data)]]) histo = n[1:]-n[:-1] if self.accumulate: self.histaccum = self.histaccum+histo else: self.histaccum = histo self.nhist = self.nhist+1. ymax = max(self.histaccum) if ymax == 0.: ymax == 1. self.gdisplay.resize(self.bins[-1],ymax) for nbin in range(len(self.bins)): pos = [self.bins[0]+(nbin+0.5)*self.delta, self.histaccum[nbin]] if self.nhist == 1.: for pt in self.makehistovbar(pos): self.vbars.append(pos=pt, normal=znormal) else: if self.accumulate and self.average: pos[1] /= self.nhist # (nbin+1) because self.vbars was initialized with one dummy bar self.vbars.pos[6*(nbin+1)+2][1] = pos[1] self.vbars.pos[6*(nbin+1)+3][1] = pos[1] self.vbars.pos[6*(nbin+1)+5][1] = pos[1] if __name__ == '__main__': from time import clock # If xmax, xmin, ymax, or ymin specified, the related axis is not autoscaled # Can turn off autoscaling with # oscillation.autoscale[0]=0 for x or oscillation.autoscale[1]=0 for y oscillation = gdisplay(title='Test Plotting', xtitle='Time', ytitle='Response', x=0, y=0, width=800, height=400) funct1 = gcurve(color=color.cyan) funct2 = gvbars(color=color.red, delta=0.8) funct3 = gdots(color=color.yellow) print "start timing" tt = clock() for n in range(1): for t in arange(-30, 76, 1): funct1.plot(pos=(t, 5.0+5.0*cos(-0.2*t)*exp(0.015*t)) ) funct2.plot(pos=(t, 2.0+5.0*cos(-0.1*t)*exp(0.015*t)) ) funct3.plot(pos=(t, 5.0*cos(-0.03*t)*exp(0.015*t)) ) tt = clock()-tt histo = gdisplay(title='Histogram', x=0, y=400, width=800,height=400) datalist1 = [5, 37, 12, 21, 25, 28, 8, 63, 52, 75, 7] data = ghistogram(bins=arange(-20, 80, 10), color=color.red) data.plot(data=datalist1) datalist2 = [7, 23, 25, 72, -15] data.plot(data=datalist2, accumulate=1) print '%0.1f sec' % tt visual-5.12_release/site-packages/visual/earth.tga0000644000175000017500000600002211101051072017174 00000000000000 ӻļÿ¿¾گþ~nÿ¼½´¿ÿľÿ獂qĿܝ{ºl_J_Q9xnZ¼»霕þݾճý̧taubȶwlYrfQ⿹žȢ}wots{q\u`vck^HfY@thQ{q\{q\|}s_{p^ƾڢָøĿ¿Żƿݗ~xd¿ļځwd޼֥λrtay߶ߺ{im`Jo𮨟i[G½òʿpcMaT;QA$L="UF*VG*WH,WH,O>"K< WH-aS9_Q6[M2bU:]O0j]BwlWzn[qeNi\AdW`R7fY?t_rfOj^FsgPpwlS}yeqeLpdKk_En|qZqujTujS}i|}|hm~s_ĿȴѾƿ򠗊j\DpcLþý䩦зxkV~s_Ƽ{tĿň}lżj~»pcMXH-YJ0WH,YJ.WI-PA$N>!L< J:I8I9L"L< L!I9 H8H8K; O?"TD$RB#QA#P@#PA#O@"O?"P@"QA"RC#RB#SC%WH+bT:UF'^O2XJ*`S5`T6TD&_Q5^P5_Q4bT8UF&[M.]P3`R5cU9]O3RC&XJ.N> YK/YK/thTynXzg˪ػͶؽýصȿûſ׿ŽŖĺ趯þþȞӲuvjtxx}sgPzoYþthRTD(SC%fX=SD(XH.I9I9 J: QA"QB"UF$[M'YK&PA#M=!K; M= QA#O>"I8J: L< K; L< QA"PA"O@"K: H8H8H8K; I8 I8J9QA#P@"K;!K;!RC#RC#J9 I8 K;!N>"M=!J9 N>"O@"P@#N>"O?"VG)P@"QA#RB#SD$RB#RC#VG)\N1UF&dW9j^C`S5ZL,WH*\N/`S7dX>j^GwffY>WH*TE&SC&TE(O?"O@"TE(]N4m`Iqu}wv㱫ĕ|q龹⺸ͭ~߸ĿĿŽğ»Ҿǿǿ¼reRĽ񠘈pdJ[L.O? SC#ZL+fY9x\xnTw\ktuqieX8XJ&[M+YK'XJ'XI&WH%WH&TE$RC"RB#YJ-TF'RC"PA"[M/xmUzfwbT<`S:\O4UF)TE)}r]_Q6XI,WH+ZL/`Q5VF(RB#P@#P@#SC%O?"N?"P@"QA#SD$SD$SD$J: M=!N?"RB#O?"J: J: QA$P@"J: M=!UF%UF%RB#N>!M=!M="O?"TE$RB#O>"H8H8I8H8 I9 N>!RC#K; J; P?"RA#P@"M=!RB#SD$TE%XI)WH)]O2QA#SC%]O3fZB~lzf{i^H{q`wdynY¿vgZ@gZ?h[AgZ@j_GmaIxesqº}q^n{û¹taЯsn`~p}淲ýܭIJûƾ쥠}tdĿĽȼrthTqdNxem_HZK/YI.ZK/pcMnaDVH&[L*ZL+YJ)^P/\M,YK(YK'ZL'\N*[M([M'ZL(YK'ZM'YK&XJ'XJ&YJ'YJ'XJ'WH&VG%SD$l`Ef\C{r_vdwdxiaPujVt``S:dW>`R8TE)RB%P@$QB%RB%TD&^P4VH)UF%QB#M>!QA#PA"N>"M=!L< P@"M= P@$O?!SC$RB#P@"N>!O?"RC#P@#QB$RC#QA#N>"O?"O>"N?"N>"N>!QA"WH%\O'WI%RB#RB#RB#RB#P@"PA"UF&VF(P@"P@"QA#YJ.VH+eX>^O4i]Ek]Dv|ϭ{xqeNXI-aT9gZ?vapdMnĿ~{jzrfPw̹vûƿȼqmحxeŽڞzhzgz^hl\dfbhknuzxq}ج¹ĝԺqĿþvjXXI1eWDj\HeWBk_I^O6ZK1ZK/[L0\M1\M1\M1\M1\M1\M1\M1\M1[L0ɪ^P/[L*XJ'[L+YK)_P1cV9gZ;k`C~t\zol`EuqeY>}weyq^~wxe}ؙ}s^]O3[N4\N2O?"QB#PA&M>"P@"RB#QA#YJ-YJ.P?!SC%RB$P@"RB%SD$QB#O?"O@"L; M!N?"P@"SD$rfM~s^}r]{gxe~kpƭ~{qZqfMnxy}kpེн澿ΨǮixXix^nzP`jhwχ^rTixQetUhw}aqyqɶȰ平տ|j[M1\M1\M1\M1\M1\M1\M1\M1\M1]N4ʛynUeW:ZL+WI&YJ']N-ZK(YJ'XJ(VG&WH(mŶʿ~}tuh{u`ĴvŹŵȸ—}k_D\N2YK.WH,_Q6[L/eX>UF*M>"M=!SD'YJ-SD&XI+N?"O?"QA#SD$RB#O?"P@"UF$RC#RD#N>!P@"O?"L"P@"L;!I9 K;!QA#UE$UF$RB#P@"SC#P@"PA"RB#QA#SD#RB#QA#RB#QB#RB#P@#P@"O@"O?"TE$SC#QB#QA#QA#P@"O@"O?"PA"QA$RB#QA#TE&UF(P@"RB#QB#PA"N>"P@#O?"P@"QA$P@"WI*RC$O?"QB%RC&`Q5YK.[L0O@#UF)l_GmunvtiTvkWgZBeX>yrgPj^DeX=zgqYJ/xdnaKnaL}^P5XJ,PA"J: J: N>!L< K< O?"N?!M>!N?"PA#TD&VF*XJ.yg~qpt`mԝ~ӿ⽸³ڪYclku׽׿̻Ѭ~~kss`jh`jk`lqZfmࢬizcvXhtPbm[qkpxu`r]n}jzՙgwdyg{㮹ï˚ɨĠ̹»ṲrfP\M1\M1\M1\M1\M1\M1\M1\M1`Q8|p\znZymYuzndW>aS:vc}yf쎅rZL-UG%VG&XI'XJ'XI&[M+^P/WH&]O/^P1dW9cV7ZL+h\>ϞƷ~kjW{ҷ{eynYi¼tnnaHSD(PB&N>#TE)VG*aT9]O2gZBZL/QB%QB%N?"PA#P@"O?"N>"QA#QA#TE#UF$TE$QA#P@"TD$TE$RB#O?"O?"L< M!N?"L=!O?"O?"P@"PA#QB#N>"N>!PA&QB$O?"O?"RB%_Q5shQnz|i]CmaJgZAZL1WH,N>"M=!J: P@"O>"N>"P@"N>!M>!L=!PA"O?"N?!N?"M>!L=!N?"PA#P@"UF(TE(RC%vkQeW!N?"N?!O@#M>!^P6ʴ{pZ¹䏅rj^D~j}lxc^P2WH(TE$TE$TE$UF%VG%WH&XJ'YK']O-`R3ZK(ZL)XI&_R3tqae\?pƻҹĦþsj`BPA$dX>[M1SD'YK+rfInbFj]Cu`k^Fj]DgY@bU:bV?YJ-XJ-PA%e[DjaKshRi]D^P6]O3_R6SC&QB#RC$N>"N>"N>!O?"P@"P@"SD$TE$TE$RC#O?"N>"L!P@"SD$WH&TE$RB#TD#SC#SD$SD$PA#RC#P@#P@"QA"P@"N>"O?"O?"QA#QA#QB#QA#N=!O?"N>!P@"O?"O?"P@"P@"QA#PA"P@#P@#N>"O?"P@"P@#P@#O?"N?"P@"QA#M>!P@"O@"P@"O@"O?"P@"O?"O?"O?"PA#P@"L"N?"O?"PA'RC&L="^P4cV:h\BpeMi]BmtiSrfNfY?bU:bT9[M1VG*O?"QA#P@"O?"O?"O?"K: L< M=!N?"O?"O?"QA#O?"M>"M>"N?!L=!N?"PA"SC%QA#UG*vbU6]P,TE$P@"N>]O3bU8bU8xlTvjSpdL[M.VH)gZ?WI)WI,TE(]N1^P0VF(XH*lbJynxuidgcNX\hqvẹ¾žū{ql|dudutΖčcq|yݶڗ搜iwxRakWgsTftizhypeufwjz_r֠t}krtZhtWhwUhzRdtT`m_kwfnvyޫżֻľҚsdW>^P5O@"O@"O@"QA#PA"O@"QB#UF%h[>eW9UF$TF%UF%[L-RC#PA"QA"P@"QB%O?!SD'N?!P@"O?"M> P@"P@"QA"QA"PA"QA"RC#SD$SD$SC#SD$VG&WH&WH&YJ'YJ'ZL(ZL)ZK(\N,^Q.XI&h^C~zl{w`~h~ù薜{q{|mqƶuZL1{q\_R9TE*cV:\N0i\B`S9TE*\M2SC&PA$^Q:\O7TE'SD'SC&RB$UF(XI+UF(TE'XI'VG%TE$ZK.O?$O?"N>"O?"O@"RB#RB#SD#VG%QA#M=!L"P@#O?"P@#P@"O?"P@"O@"P@#P@"N>"P@"P@"O?"QA#RB#O@"O?"QA#QA#P@"O?"O?"N>!N?"M>!P@#RC$QA#P@"O@"N>"N>"M=!P@"O?"M=!L=!N?"K< L=!M=!M=!M>!M>"QA#TE'UF)QA$PA&WH*O?#XJ,VG)eW>]O4XJ.RC(O?#P@#N>"N>!L!O?"O>"N=!N>!O>"O?"L"O?"O?"M"N>!O?"PA#P@"P@"P@"P@"QA#Q@#RB%~txam[M,bU4\O(VG%QA"QA#TE$VG%TF$TE$QB"O>N=QA"SD%YK-XI,VG*WI+UF(WH*k^Dwcv琓۹ȸʥhvgtՙ_o|Pbs\qh}pյķƵƕιͳ¾y`o|ER]LXa_muSbmŠϼי¸ѱ{iĽТ٫_Q6N?"N?"N?"O@"SD$SE$TE$RC#QA"PA"O@"P@"P@"PA"PA"SC$UF%UF%RB#QB#RB#QB#QA#QB#QB#P@"P@#P@#PA"PA"PA#QB"RB#RC#SC$UF%TE$TE$VG&VH&WH&XI'XI'XJ'ZL(\P(]P)]P,`R/aT2^XCsjUrfLsmWuqo[ifNpmXeeZyzx{uͳodKdV:}w\v{vznotpfg^fZ@[L1VG,gZAXI-J; QB#P@#M=!N>!SD#RC$J9 O?"SD%]O0bT8_Q4]N0^P1[L-RB%O?"K: N>"P?"P@"O?"N>"RC#QB#TD$QB#K;!K; QB#SD#O@"N>"K; K: N=!QB#M=!QB#ZM(RB#M=!QA#QB#RB#PA"P@#O?"O?"O?"QA#QA#P@#QA#RB#RB#N>"O@"P@#P@"N>"P@#PA#P@"P@"N=!P@#PA"O?"P@"P@"O?"O?"P@"P@"QA#P@"SD$RB$O?"QA#SD$RB$P@#P@"P@"L=!M=!L=!M=!N>!N>!N>"L=!J; L=!M=!O?"M=!M>"P@"N?"RC&L"M=!M=!N>"SD&O?"O?"P@"O?"N=!M=!O?"P@#P@#O>"N>!N=!O?"O?"O?"N>"N>"M=!N>"N>"O?"N>"RB#RB#O?"P@"QB#SD$RC#WH+YJ.cU:sgN¼t{di\Bj]@l`DaS5sgMznU^P2m`FqeJbT5uiOYJ*TE#UF%VG%WH&VH&XI&]P)\O(WI&RB#RC#VG&TD#L;K9J8H5H6L:SC&L<bT;Ѳȵ֗ϫܮŜɦerMYcO]gOXXlslkz瘐vbZL0PA#g^FmxĮɻ⠤𸳨wļcU>cV"P@$K; M>"N>#J: SD$SD$QA#SD&VH*O@$N>"N>"M>!N>"M=!O?"N>"QA#P@"M=!O?"N>!N>!PA"P@"O?"P@"O?"P@"P@"P@"P@"PA#N?"O?"RB#PA#QB#RC#QB#RB#QA#RB#RC$SD$RC#SC#QB#RB#RB$RB#P@"RC#P@"N>"O?"QB#RC#TD$SD$P@#QA#P@"TF%RC#RB#RB#RC$RB#RB#QB#QA#TE$TE$UF%UF%SD$TF%QA#PA#P@#QA#O?"O?"QA#O?"N?"O@"P@#O?"N?"M=!M>!O?"N?"N>"M>"N>"N?"P@#P@#N>!O>"PA"O@"QA"N>"P@"QA#PA"QA#O?"O@"P@#P@"N>"L"N>!O@"RB#RB#PA"RB#P@"O?"O@"O?"N=!P@"O@"O?"N?"P@"QA#VG%TE$RB#SC#RC#RB#TF$WH&VG&YJ'\N([N&ZL&ZL(YK'YK'XI&VG%TF$TD$QB#RC$SD$VG&UF%WH&XH&WG&VG&WH&VG%WH&VG&WH&VG&WI&WH&VG&UF%SD$YJ'\P)]P)XI&SD#P? K9I7I8I7H5YI.~kݱƳ٠DKOIOS^ab񖢬Zm~f{rlaqx~zcjipxyeos_kujyá~ؘmaI_Q7TE)YJ/\O3SF*j`Jj_GWK0UK2|vaojSzxc~{dvvhmsmOuqT˛juisymtqvvh{ɿа|r^odLaS8xe¹ûpeNYK0YK/O?"N?"O@"RD&PA$PA$N?"PA#P@"L=!N?"L= M>"TE$K< N>L=N?#M>!TF*M>!M>!M>!N?"PA"SD$SD$SE$SD$TE$VG%VG&WH&YJ'YJ'XJ'WH&VH&XI'WH&WH&WH&WI&WH&SD$RB#QA#PA#P@"O@"N?"N?!N?"N?"M>!O@"O?"O@"O?"N>"N>"N=!N>!N>"O@"O?"PA#WH&ZL([M([N(\O*^Q+cV1mbEqfJrgLj^?aS3d[@}y~p³_Q4]O2YJ,k_Fh\@utay|vnìv^TE'WI)XJ+VG(RB#UF%N>!K: O?"RB#O?"QA#N>!N>"P@"SD$L"N>"P@"QA#SD$QB#N=!N>!P@"O@"N>"O?"P@"TE$YJ'VG&WH%YK'\N)[M([M([M([M([M([M(XJ'WI&YK'ZL(ZL(WH&UF%TD$VG%WH&TE$SD$SD$SD#RB#RC#RC#RB#SC$VG&UF%RC$VG&WH&SD$TD$XJ'WH&XI&XH&WH&VG%VH&VG%VG%XI&SD$SC$QB#SC#SD$SD$SC#RB#UF$TD$RB#QA#QA#P@"N?"QA#P@"QA#QA#SD$O?"N>"N?"QA#TE%SD$SD$RC#SD$RC#QA#PA#QA#PA#QA#QA"QA#PA"O?"O?"O@"O?"O?"P@#RC#SD$SD$UF%TE$SC#P@"O?"N>"O@"P@"P@"O@"O@"RB#WH&SD$TF%SC$QA#RC#UF%VG&WH&ZL'\P)]Q)\P(\N(ZL(YK'YJ'VG&TE$VG&QB#QA#QA#UG(]Q6VH(WH&WH&WH&WH&VH&WH&XI'WH&WH&WH&WH&XI&[L)\M+WH&ZL([N(\O*\N-QA!J9I6K9UE(汬y|yrww`hjbmrvhlhuüƑvO?#RB'F5fX@]N4xkW|⼿ɶȺԑh{hj~ƻ־ݼprytv~ÿƾrfNXJ.O@"O@"PA#N?"N?"M>!N>!O@#XJ/RD'b[IŽûsyz|vsgs|ոshR`R8WI-_R7aT9`R8|ixeh\Cj]GSE)O@"L=!J; M>!O@#O?"RC#QB#O?"N?"N?!M>!M=!K< N@"P@"PA"N?"L=!O?"O@"O@"PA"O@"N?"PA#P@"PA#XI+SD$TE$VG&ZL([M([M([M([M(ZL'YJ'XI'WH&WH&WH&XI&VG&UG%VG&TD$P@"O@"O@"O@"N?"O@"O@"O?"O?"O@"O@"N>"L=!L!M>!L"UF%WH&WH&YJ'XJ'UF%TE%\N-`R1aU3bU1fZ9_R.bZ>x䟝tjOzp[{p\nbIg[Ah[BYJ-VH(ZK*^P,maEdV8zpXuq]`U;h[?ZL-^P2UG'XI(UF&O?"O?"UF%TE&O?"O@"P@"P@"O?"PA#O?"N>"QA"P@"O?"QA#SD$SD#QA"RB#RC#RC#QA#QB#O?"QA#M"M=!RC$SC$QB#P@"RC#RC$WH&UF%XI'XI'WH&VG&WH&VG%UF%UF%TE$SD$TE$SD$SD#RC#WH+PA#O?!RD$VG)SE%QB$RC$VG&XJ'XJ'WH&WI&VG&RB#O@"P@"O?"O?"O?"O@"SD$WH&RC#QA#P@"QB#SD$SC#TE$WH&YJ']P(\O(\P)\N(ZL(YK'XI'UF%SD$TE$UF%SD#RC#QB#RD#SD$TF%UG%VG&WG&XI&WH&WH&WH&VG&WH&XI'\N-YJ)YJ(YJ'YJ'f_Hj`EdbQcW:XJ.O>M=pcK¹çiopGT^N\fVdmYfnWckSbkTcjUchYdfY`_~I9J:E4E4H6J9P?$F5F5E4E4D3F5uchZFƳ_jtU`jS^iVeo[kzeouxWk{K_lVj{h~~ܫҼƾÑ󞩴ɰž{úwk^F\O4RC'O@#SD'O@#RC$PA"O@"N?"O?"M= QB$N?"N?"N?"N@$[S?ʡदʚ~z{kjhRmkYw|{egbaU;WH+O@#bU9`S7j]DxemaIRD(N?!M>!M>!K< N?"O@"O@"O@"\N)PA#SD$QA#P@"O?"O?"QA#P@"QA#PA"QB#QA#O@"O@"RC#RC#QB#QA"RB#RC#SD$TF%WH&XJ'XJ'YK'ZK(YJ(XI&YJ'XI&WG&VG&WH&VG&WH&WH&TE$TE$SD$RB#P@"P@"P@"O@"O?"QA#QB#QA#P@"PA"P@"O?"N?"O@"O@"N?"N?"N>"L=!O@"RB#RB#SD$UF%TE$SD$TD$RC#RB#UF%_Q0{qWqfLdW7eX:\N.SE%^X?췶ncHvbnpdMpdLocJ_R4TE'WH,VH)SD$\N/ZK,YJ)\M0|pZj]CPA$M=!`R6ZL.ZK.TE)SF)O?"O?"N?"O@"RC$SD$UF%UF%SD$SD$VG%UF%SD$RB#RC#RB#SD$TE$UF%VG%VG%UE%TE$TE%WG&VH&VG&VG&UF%VH&ZM(XI'ZL([M([M([M(YJ'XI&YJ']P)`T,_R+_S+_R*aU,]P)^Q*ZL'\O)^Q*[M(ZK'XI'YK'ZL(UF$WI&ZL'ZL(YJ'XI'WI'VG%XJ'XJ'_S,bV-\O)^R+[L(\N([M(ZL(YK'VG&XI&YJ'XJ&YK'XI&UF%SD#SD$TE$XI'UG%TE$TE$RB#RC#RC$PA#P@"QB#RB#VH&WH&\O*[L(ZK(YJ'XI'ZL(YK(YK(YJ'WH&WH&VG&TF$SC#QC#PA"`S7ukSٸg]?YK)[M(\N(ZK'ZL(XI&SD$QA#O?"O?"O?"O?"QB#TE$QB#QB#PA"P@"QA#RC$TE%SD$WH&ZK(\N([N(ZL(YJ'XI'WH&UG&TF%TE$UF%TF%SD$SD$RC#SD$TF%TF%UF%VG%VG&VG&XI'YJ'WH&XI&WH&WH&UF%YJ'ZL'YK'YK(WH&YJ'[L*WH'L<L;L;K:J9J9VG)O> _R7bU;i\C誣}|EU`>P\7ITQ^fmx_ksK[e=MW>NYL[e}[jsVepsL<"E4E4E4E4H7H6G6F5E4E4E4RB(vjY強ɳT_jFQZGQ[NZdP^gTdpYhtvo͜鲲ur|вԾœբζǾÝeX>QA#N?!N?"N?"M>!M>!L>!N?!N>!M>!L=!L=!M>!N>!N?"N?"O@"P@"P@"ZK0rgQc\Exxj~}ǿ֙~mzvzpnp]tpWyp]cV!QB#O@"O?"O@"N?"N?"N?"O@"O@"N>!N?!O@"O@"P@"O?"RC#SD$QB#RC#UF%VG%XI&XJ'XJ'XJ'XJ'WH&UF%SD$SD$TD%TE%VG&VG&UF%RD#RC#QB#RD#TE$UF%TE$QB#P@"QB#QA#N?"N?"P@"RB#QB#QB#P@"M>!M=!M=!M>!N?"M=!K< M=!L=!M>"N?"O@"P@"RB#PA#M>!O?"QB#RC#RB#PA#RC$ZL,cV9\N-qfM_Q3]O1\N/\Q4ohOtiOj\Ch[?]N1shPxbgZ=[L-UF&RC#SD$UF%UF%TE$XI)TF'^Q3\N/`S6TE%QA#QA#VH*\R6RC%O?"M=!RC#SD#TD$SD$TE$UF%TE$UF%WH&VG&SD$RC#SC$RC#WH&TE$VG&XI'ZL'[M([N(ZL(YK'ZK'YJ'YJ'YJ'ZL(ZK'YJ'YJ'ZL'ZK(XJ'YJ'YJ'YJ'ZL(ZL(ZL(YK'YK'YK'YJ'XJ'XI'XI'XI'YJ'XI'VG%YK'UF%RB#RB#YK'\N)\P)ZL'[M(]P)_S+cX.cX.eZ/dY/`U,[M(YK'ZL(TE%UF%YJ'YK(ZK'XI&WI&VG&YJ'XI&VG%VG%\N)VG%SC$P@"SC#SD$TE$UF%TE$TD$UF%WH&XJ'[N(XI&VG%XJ(laCqgJcV:ZM/i]CmbIYL-aV9i_AvlPmۙZM.WH'YJ'YJ'[N(YK'XI&SD$O?"O?"O?"P@"PA"RB#QA#QA#PA"PA"QA#PA#QA#QB#TE$WH&VG&VH&XJ'YJ'XJ'XI'XI'WH&VG&WH&VG%UG%TF%SD$RC#RC#SD$TE$SD$RC#QB#RC#UF%YJ'WH&YJ'XI&XI'XI'XH&ZL(\O(ZL(YK'YJ'VF%N=L;K:L<L;K:L;N=N=RC&G6YJ/`R7j]Erº|¼ˊ|nwycqwRcn?Q\!N?"N?"L=!M>!M>!N?"M>!M>!L=!N?"N?"O@"O@"O@"QA"P@"O@"P@#RC#WI,pfRŻɽjwWô|rV|dvi^>[N.laCl`B{pWhz嵷{tbvjTqrhUjcPUF*\N2fZ@qeMeX>UF,M> UF%TE%P@"N?"N?"N?"O@"O?"N?"P@"O?"M>!P@"O@"P@"PA#O@"O@"N?"N?"N?"QB#TE$TE$UF%WH&WH&WH&XI'YJ'YK(ZK(YK(YJ'XJ'YJ'XI&UF%RB#PA"PA"O@"RC#RD$RD$RB#PA"PA#P@"O@"QB#RC$QA#QA#PA#N?"N?"P@"PA"QB#P@"P@"O@"N?"M=!M=!L=!L=!L=!K< L!L=!K< K; L"M>!N?"M>!O@"QA#[L.m`GcV:eY=ZL+TE%_Q1`R3ZK,dV9YK*TF%TF%UF%TE$UF%VH&VG&WH&WH&VG&VG&UF%VG&WH&SD$QA#P@"QA#RC#RC#RC#RB#QA#SD$TE$SD$RC$SD#TF$VG&WH&WH&WI&XI&WH&WH&VH&WH&WH&WH&XI'ZL(YJ'YJ'ZK'YK'[M([M([M([M(\N(\N([N(ZL(\O(\N(ZK'YK'YJ'YJ'YJ'YJ'YJ'YJ'ZL([M(\N([N([M(ZL(ZK([M([N([M(YJ'WH&VG&VG%WH&XJ'\P([M(ZL(^Q*`S+^R*]P)^R*`T,^Q*XI&SD$RC#SD$TE$WH&[N(ZL(WH&YK'WH&XI&[M([M(\O)XI'XI&WH&XI&ZL(XI'WH&UG%TE$VG&WI(XL*XN+b[:ovoUūznsgOYJ-QA"VG%SC#RB#WH&XJ'VF%VG%VG&P@"P@"PA"PA"QB"QB#PA"PA"O@"O@"O@"P@"P@"P@"P@#SC$SD$UF%WH&YJ'YJ'YJ'XJ'XI'WH&XI&WH&UF%TF&VH(ZM/ZM2WJ-SD$TE$SD$RD#SD$TF%VH&XJ'YJ'XJ&XI'XJ'YK'YJ'ZK'ZL(XJ&YJ'TD"L:J9J8H6I7P?"wkTdUS_!M>!N?"O@"M>!L=!M>!M>!M>!N?"M>!M>!O@"O@"O@"O@"O@"O@"P@"QA"QA"SD$O?"N?"O@"O@"N?"M> M= TE'TE'N?"O@"N?"O@#O@"P@"O?"N?"P@"QA#PA"PA"TE$QA"RC#XJ)ZL+ocD}azʿɽzwlW}r^thQ_Q5]O2RC$SE)TE)O@"QA#QB#N?!PB#PA"O@"N@"O?"P@"O@"N?"RB#P@"O@"N?"N?"PA"QB#SD$UF%XI&XJ'YJ'XJ'YK'XI&WH&XI&XJ'YJ'WH&VH&VG&VG&VG&RC#O?"O@"O@"O@"N?"N@"N?"N?"O@"P@"QB#QB#P@"P@"P@"N?"N?"M>!O?"P@"QA#P@"O@"N@"M>"M>!M=!L< K; J; K< K!N?"N?"RC#WH&VG%UF%TE$SD#TD$TE$UF%PA#TE$WH&VG%VG&WH&XI'VG&VG%UF%WG&WH&TE$TF$VG%UF%SC$SC#RB#RB#RC#RD$RC$RC$RC#RB#TD$TE$TF%UF%VG%VG&WH&WH&WH&XI&YJ(YJ'YJ'WI&YJ'XI'XJ'XI'XI&WH&XI'YJ'XJ'YK'YK'XI'WH&XI&YK'XI'TE$ZL'YJ'WH&VH&WH&XJ'YJ'YJ'YJ'WI&VH%VH&WH&WH&VG&XI'YJ'YK'\O(]P)[M(ZK([M(_R*ZL'WH&[N([N(ZL(YK'WI&VG%TE$VG%VH&VG&WH&WH&WH&WH&UF%UF%XI'XJ'WH&WH&WH&WH&VG&VG&WH&XI'XI'XI'XH&WH&UF%UG'VI(aX;pżúĹ~t^dW;ZL.PA"O?!P@#RB#RC#PA#RB#SC#UF%RC$P@"TE$SC#QA#TD$QB#O?"PA"PA"O@"O?"P@"QB#QA#PA"PA"P@#QA#QA#QA#QA#PA"SD$TE$UF%XI&XI'YK'ZK(YK'XJ'XI'WH&UF%TF']Q5\P2ZP.UG)SD$SD$XJ'WH&UG%TE$VG&XI'XI'WI&YJ'YJ'ZK(`R0[L*]O+YJ(^Q/dV7VG*VH+`U?yjx}rxy\elJW`GS^AMXFT`Yit]ipIZeN^hH[cCV``nwr}HXgRbobr}ZjwVfrTdojzdsQaoOanGZhDTc@P_?O]DVbL]kK]kTgxYm~fxjz~x~dovIV`DR\FS]cmtjtyYdjJW_N[bP\cN[bP\`R]ZLY\\gjrePL<E4E4E4E4E4E4E4E4E4E4E4E4E4G6E4E4E4E4I7VF-YUIPB&D3ӌBPT8IQ7FJ7GL6FJ9IP?OWYccx~}޴r~`hjXbdirrz{wetvnjk_qVizJ\lVbkYem\lzl}y\q`vg}[qQg{J`tLdzOh~Nexÿn{iwdܦżԸǰ˪օzfRB&O?"O?"O?"P@"N>"O?"O?"O@"M>!L=!M>"N?"N?"N?"M>!M>!O?"O@"O@"N?"N?"O@"O@"O@"O@"PA#QA#O@"N@"O@"N?"O@"O@"N?"N?"N>"N?"O@"SD$SD$RC#RD$O@"PA#PA#QB#P@"SD$O@"O@"QB#WH&XI(XJ(ZL+g^;oǾ»}þCRZS_d}rnazgdW<]O5j]E_Q5VG+^P4QB#QB#L= K< L< N?"N?"N?"N?"N?"O@"QA#RC#SD$UF%VG%WH&XI'YJ'YK(YK(YK(YJ'XI&UF%QB#P@"QA"RC#SD#SD$RC$RC$RC#PA#N?"M>!M>!N>"N?"N?"O@"O@"N?"N?"N?"P@"PA#PA"O@"N?"N?"M>!M>!N?"N?"N?"O@"O@"O@"P@"N?"M=!L=!L=!L!N?"N?"P@"RC#TE$TF%VG&WG&VG&VG%VG%VF%TE$TE%UF%UF%XI&WH&VG&UF%UF%SD$TE$TE$TE$VG&VG%TE$SD$VF%VG%VG%WH&TE$SD#QA#RC$SD$SD#RC$RD$RC#SD$TE$TE$VG%XJ'XJ'YJ'VG%VH&WH&VG&WI&VH&WG&VG&WH&XI&XH&XI&VF%VG%WH&WH&XJ'VG&O@"QB#RB#RB#RB#RB#RC$RB#RB#RB#P@"P@"N>"O>"O>"O?"QA#O?"N>"P@"RB#TE$TE$TE$UF%TE$WH&XI&[L(]O)[M(YK'YK'VH&TE$TE$TE$TE$VG%UG%VH&VG%VG&VG%VG&UF%UF%VG%VG&VG&VG&TE$SD$RC$TE%WI)\T9gdOmkT÷w~g{pS]O/UF%QB"[M/aS7ujQ\M0SD$TE$SC#P@#QB#VG&XJ'SC$QA#RC#RC#QB#QB#PA"PA"PA"P@#PA"PA"PA"P@"O@"P@"P@"SD$SD$PA#PA"QA#RC#RC#RB#UF%TF$VG%VH&UF%WH&VG%WH&YJ'YJ'XI&XH&UF%UF%a_MXL0WI&WI&TE$TE$VG&WI&XJ'VG&[L*\N,bT3\M+XI'YK(ZL)iZ@ujT^]OT[X\edXcdWfl]ktVeqVbnR]hXblHT_s|}uvdoxS`lGTa?N]AP^@N\AP\AP]@P]=N[=NY@P]CTcJ]lK^mJ[jM^nM]mK\lFUdHWfHXgL]j^nyusar|J[fDT`GUaQ`jLZeFU`CQ]N[gHUbDR\APYAP[GS^YdlZdldms`ipFRZdmrmv|irx`kq\hnVbi?MS!N?"N?"N?"N>"N?"N?"N>"P@"P@"O@"O?"QB#QB#QA#PA"O@"N?"N?"N?"N?"N?"N?"N?"O@"TE$TE$QB#P@"RC#TF&QB#QB#RC$SD$SD$SE$UF%WH&WH&XI'YK(\N-f[:zpP°¼{ziyzrfQfhaX`awvn|tbvo\WI,WI,WH,PA"VG'QB#N?!XJ.N@"M>!N?"N?"O@"PA#SD$XI'XI&WI&ZL(\O)]O)\O)\N(\N(\N)XJ&WH&SD$QB#QB#QA"P@"O?"QA"RC#QB#RB#O@"N?"M>!M>!M>!M>!M>!N?"P@"PB#QB#QA#P@"N?"N?"N?"M?!N?"N?"N?"N>"M>!M>!M>!N>!M>!M>!PA#PA"N?"N?"N>!O?"O?"N?"M>!M>!M>!M>!L=!L=!L=!K; K; J; L=!L!N?"N?"O?"O?"QB#QA"PA#VG%XI'XI'WH&VG&VG&UF%UF%UG%UF%VG&TE%SD$SD$RC#RB#RC#RC#RB#SD$TE$WH%VH%VG%UF%TD$TE$TE$QB#QA"RC#SD$TE$SD$RB#RB#SD$UF%VG&WH&WG&VG&RC#RB#RC#TD$UF%VH&VG&VG&XI'XI&XI&WH&VH&\N)[N)XI'VG&QB#P@"QA#Q@"P@"O@"O?"O?"N?"N?"N?"N>"N=!M=!N>"M>!M=!MMZ>MZ>LY?LY?LXAN[CP\BO]DQ]ZgpjwcpzZht\iuJXeL[hL[iHWfDTcGWhHXiDTdBScHYjParHYkIZlHXiN_pO_nHXgFUcGWdBP^@N]DRaHXeM\hL]iZirScnXhpEV_BPZJWcIXcHXd?NZ!QL=IOJMT8HQ8IR>NUO]cZ]V[N4D3E4E4E4D3E4ûĿº|WcjQ^hP^kGWbDTbCTaP_mbp{irv}~wֶÿÿǷײО૴ְƻӮȕ}~ÿpUF)RC#O?"O@"PA"P@"UF%TE$PA#RC#PA#QB#RC#SD$RD$P@"PA#UF%TF%P@"O@"PA#O@"P@"RB#SD$QB#QB#O@"PA"P@"P@"O@"PA#PA"QA#RB#PA"O?"P@"QB#TE$TE$RC#RC#TE$TE$UF%UF%WH&WH&VG%VH&VG&VG&YJ'YK'XI&cU6[L,^Q2ndHngOز]gdvwdyfZL0RC%O@"TF'VG*_Q5h\B[M.QC$N?!O@"O@"N>!N@"O@"N?!PB#SD$WI&ZL([M(^Q*_S+\N(ZL(\O)[N(ZL(ZL(ZL(QB#O@"OA"O@"N?!N?!N?"PA#QA#PA"N?"N>!N>!M>!M>!N>!M>!N>!N?"OA"QB#OA"O@"O@"O@"N?"N?"N?"N?"N?"N?!N?!N?!M>!M>!N?"PA"PA#P@"O@"N?"O@"O@"N?"N?"N?"N?"N>"M>!L=!M>!K; J; K; L!M>!N?"N?"O@"O@"O@"P@"O@"QB#WH&XI'YJ'YJ'VG&SD$UE&SC#RC#RB#SD$RC#QB#SD$TE$QB#RB#RB#UF%VG%RC$QA"P@"P@"P@"P@"P@"P@"QA"RB#SD$UF%SD$VG&WH&XI&XI'XI&UF%VG%UF%VG&SD$WH&VG&YJ'XI&YJ'YJ'YJ'WI&UF%TE$WH&WH&WH&RB#SC$TE$TE$RC#QA#P@"N@"O?"O?"O?"O?"O?"O?"O?"O?"N?"M=!M!RB#XI'[L(]O(^Q*]Q)ZL(UF%VG%VG&XJ'YJ'\O)YJ'WH&VG&UF%TF%VG%VG%TF%UF%TF%VG%VG&WH&UF%UF%UF%UF%SD$P@#O?"PA#NJ5Z^PĬ|qi`IWJ)ZL(ZK(ZK(YK(YK(XJ'VG&VG&XI'YJ(XI'YJ(XI'XI'YJ'WH&RC#QA#QA#RB#SC#SC$WH&VG%QA#P@#PA"P@"RB#UF%XJ'WH&PA"QB#XI&[M(\O)WI&SC$RB#QB#QA#QB#QA#TE$UG%RB#P@"P@"P@"P@"RB#^R6XJ,SE$UG%UG%YJ'WI&WH&VG&XI&WH&XI'UF%XI&\N,YJ&g\>_X?dbQ\b]V]XT\\U`d=MY7FQ8GR8GP6EP6CN4CM8FR;KXLX;JV?N[KTR_iVbkTajP^hES_JYeIWcCQ\=LWFT^?KSJU]HV^FT^HWa?MX>MX8GO!M>!M>!M>!N>!M>!M>!N>!M>!N?!N?"O@"N@"N?!N?!N?!N?!N?!O@"O@"N?!N?!N?!N?!O@"N?!N?"N?!N@"N?!N?!M>!N?!M>!M>!M=!L= M>!M>!M>!L=!L!M>!N?"N?"O?"M>"N>!O@"O@"RC$UF%XI'WH&UF%TE%YJ-YL3VG*YK/UF%TE%RC#SD#RC$P@"QA#PA"PA"QA#P@"RA#P@"O?"O@"N?"O@"O@"QB#TD$WH&YJ'YK'YJ'XJ'YJ'ZL(\O([N(YK(ZK(XI'VG%VG%WH&WH&VH&VG&XI&VG&WH&VG%SD$VG%VF%VH&VG&WH&UF%UF%UF%SD$RB#P@"O?"O?"O?"O?"O?"O?"O?"O?"P@"P@"QA#SD$XJ'ZL'\O(`U,bW.cX.aU,^Q*ZL(WH&VG&[M([N(YJ'WH&UG%TF%TD$UE%WH&UF%RB#P@"O?"N>"O?"O@"PA#PA#PA#P@"O?"O?"QB%UQ:}s̹Wa\[W@[Q4TE$WH&XJ'XI'ZK(ZK(XI'XI'YJ(YK(YJ(XJ(YJ(UG%WH&WH&XI&WH&VG&TE$QB#QA#P@#P@#QA#RB#SC#TD$TE$QA#P@#QA#QA#TE$VG&SD$RB#UF%XI&YJ'VH&WH&VG%VG&TE$RB#RC#RB#RB#TE$RC$QA#PA#P@"P@"QA#RC%TE&UG%TE$TF%ZM(YJ'WH&WH&]O.XI&]N-VG&WH&YL-YQ7YQ6WQ=WR:XYIQWNLYZK[`BS^>O[>NZPZ:KS=LV2@E@OZ?NZBR_FUb@O[>LZ>LYDPZCQ\N[e^hpO[dIVa?OZ@Q^:JS;JT9IR9HP:KT=MW>NWJX\[\R`[Ab^A`^DVZHLWS:LY;LVCT\wjWj]H}䯨ncU=N>!ZK1l^H^O5n`I~r^m`ID3E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4WJ2Q@%L;G6E4E4F5E4F5M< G6E4H7O?#MD/PI8L>#aR;rfRWH/UE+N>"E4E4E4E4E4E4E4E4G6E4F5E4E4E4C2D3E4E4K:E4H6E4E4F5E4E4E4E4E4E4E4E4E4D3O?#l]G|o\~r^»ú캵u㇏VdqDTb@Q_8JW6HS:KVCVcDVbCTaGZhNbpEVaCS\EUacnrSetaucwbv]phsxϵ¼ʻŽŜ}jù½ұ¾ƿ𡚋eX"QB$RC$dW!N?"PA"N?"PA#SD$SD$RD$TE$UF%UF&QB#N?"M=!L< K< K< N>!QB#QB#N?!O@"O@"N?"N?!N?!N?!N?!M>!M=!L= L< L< L< L= M=!M=!M>!L> M>!N>!N>!M=!M>!L> M> N?!N?!O@"QB#PA"O@"N?"N?"O@"O@"O@"N?!M>!N?"N?!M>!M>!M>!M= M>!M>!M>!M> M=!L< L= L= L< L< L< K< K< L< L!O@"N?"M>!N?"P@"P@"RC#SC$RC#SD$TE%UF%YK+ZL-TF&XI)UF%TE$RC$QA#PA"QB#QA#P@"O?"P@"QB#QA#QA#RC#UE%WH&YJ'\N)]O)[N(ZK'YK'ZL(\N(\O(\N(YK'YJ'YK(YJ'XJ'XI&XI'VH&SD$SD$QA#QC#RC#RC#TE$SD$SE$SD$TD$UF%XJ'WH&VG&VG&VG&VG&SC$P@#P@"O?"O?"QA#QB#RC#TE%WH&YJ'ZL([M([N([N(\N(]R)aV-dX.cX.cW.bW-]P*ZL(_S+_S+ZL(ZL'WH&SC$QA"QA"P@"N>"N>"M=!M=!N=!N>"O?"N?"O?"O?"O@#RI3^\NoxyjpdVUDSF(UF%WH&WH&YJ'YJ(WH&XI'YJ'VG&XI'WH&XI'XI'ZK(YK(XI'XI'XJ'ZK(XJ'UF%QA#QA#QA#QA#P@#QA#SC$UF%TE$SD$SD$RA#UF%UF%RB#QA#QB#SC$SD$TE%TE$SD$TD$SD$TE$TE$SD$TD$SD$RC$RB#QB#RC#RB#QA#SD$UF%WH&XI'WH&TF%TF%WI&^Q*YJ'WH&_T9^T:rlVxp]\P4\S9YM/WM/UN/UW=^cObeXajeLXV7HJ8JN:NUMXAO\IXeJXfP`nSboRbpasdw[n~ZnVi{O`oKXeHS^GS^FS^FR]AOZCQ\FVbGVcCS^HWdQ_jR`lZgrRcoUgvHWcTblGV`9GNer}R`lETaDRaAP^?N[@O[AP]>LZ>LXLZ?O[EWeBTa@O[?NZ?Q\HUVV]QY^OZ`QNUQJQGOTBU]T]_I]]AZZAXZG^^LaS:I9E4E4D3J:K:F5`R8yvcqcMG6E4E4E4E4E4E4E4E4E4E4E4E4E4F5UI/L>RG'YR4SO5\U7XP2PD$H7E4E4E4E4F5I8H7F5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4G6H7RD)PK:RK7H6J9E4F4G6E4F5E4G5F5OA'IQNEMIWR>OE.LD/J?(QB(gXBE4E4G6E4E4E4E4F5F5F5E4E4E4E4E4E4E4F5G6H6F4F4F3F3F3F3F3F3F3F4E4E4E4F5E4F3F3F3E2E2K9fW?{hpܸƿľ~ZI0hZE亸ensCR_@P]>MZ>NZDT`FVcGWcHYfGXd@QZDU_FV`K\iVixOcsK`pCYgF\kF_nKbqKaoMallw{洸Ͱn{UhuwlzhtzmhxlPzcϪϮĴǶŬȪΒƝȧlaIRC%[M._U?rl^~~yuws{Ľsssh}}sjh]f`N`XAXK-UF&UF&TE$SD$RD$UF%VG%RD$TE%VG%UG%WH&XI'XI'WH&WH&WH&WH&TE$QB#QB#RC#QB#N?"SD$VG%WH&TE%VG&UG%RC#O@"RC#SD$RC$TE$QB#RC#SE$PA"P@"SD$VG&VG%RC#TE$QB#TF$ZK(WI&TE$RD#UF%YJ'aU-bW.]O-SJ1VRA`[E~ûǧyxu\i|~cq|jv~JZeKZfHXd`il`R8cU:pdKnaGdW;_R6gZ?WH*RC%N?"M>!O?"O@"O@"QC#O@"N>!M>!PA"RC$UF%QB#O@"O@"PA#SD$RC$PA"M>!L< L< L< L< L= N>!M>!M>!M>!N>!M>!M=!M>!N>!N>!M>!M>!M>!M>!L= M=!M=!M>!N?!N?!N?!N?"N?!N?!N?!N?"O@"O@"N?"O@"PA"PA"O@"O@"N?!N?!PA"PA"N?!N?!N?!N?!N?!N?!M> M>!N?!M>!L= L< K< K< L< L< K< L< L< K< K< L= L= L< K< L< M>!M>!M>!M> N?!N>!N>!P@"O@"O@"P@"PA#PA"PA#QB#QA#QA#SD$QB#QA#RC#RB#SD$WH&TD$RC#RB#RB#RC$RB#TE$VG%WH&XI'\N([M(^Q*_S+_S+^Q*]P)\N([M(XI&UF%WH&XI'XJ'YJ'ZL(YK'VH&TF$RC#TE%UG%UF%SD$QB#QA#TE$RC#RC$UF%VG&WH&XI&VG%VG&UF$QA#O?"N?"O?"O?"RB#UF%VG&WI&XI'XI&WH&XI&\N(ZL([M(]Q*^R*^S*_T+aV,bW.cW.aV-`T,_S+[M(VH&UG%SD$P@#P@"O?"O?"O?"N?"N?"N>"O?"O?"O?"P@"NA%HG5]d]fppoz}u}xPQDPG.VG&XJ'YJ(ZK(YJ(ZK(ZK(WH&XI'XJ'ZK(YJ(WH&WH&UF%XI'ZK(YJ(XI'WH&XI'VG&SD$RC$RC#QB#RB#RB$TE$RC$RC#SC$TE$UF%VF%XI)]O0TE%RB#RC$RC#SC$SD$SD$SD$SD$SD$TD$TD$SE&UK1XM1UG)QB#RC#SD$RC#TE$YJ(UF&WH&YK(TE$UI,SL3SM7SO;QQBPQDTVK`d[cg]\`VRWRT][P\]LZ\Q]]DU[FV_DT^BS^CU]P]>N[?P^?P]>N\@P]CSaHXeM]jRaoJZiK\kM]kFT`DR]BQ^AQ]ETbETbBP]AQ]@P\FVbFUbCR]?NWCR]@O[Zhu^lzVesK[hRbno{uXgs[ivQ`nL[iIXfCSaEUb@P\@P^O]kGVd?O\@O]@O[;LVAPZ?NUERSU`aR][ajeloats^deQioc^ifP^`KZ\=NV7ISEV_LZ^M[[KZYAU]NRHNE/LI6NLEG9IF4ID/GC-IE0HC+OF'K>F6E4E4E4E4E4E4E4E4F5XQ:PXRUabDRVCORNUP]bSehSa`FUP6UL/QM4XP8\V?YO3RG(N?!H6H7F4E4E4E4E4E4E4E4E4E4E4E4E4E4E4F5E4G6I8H6E4E4E4E4E4G5H7H6J:J:O@%GH=5HM7JP8LQ7KP7IMBLJIG"O@"QB#VG%WH&WH&SD$UF%UF%RC#PA#P@"N?"N?"O@"N?"O@"RC#VG&SD$UF%WH&TF%UF%RB#RC$VG%UF%WH&VH&VG&XI'YJ'[M(`T+^Q*]Q+XL.VR?`_Hsvdļrxz~z{}ttte_^N~{iyz}za_SQH3OB(TF)UH,[M1cV:wlVvcpcLVG)PA#PA#N?!O?"O@"O@"O@"N?"O@"N?"N?!PA"OA"PA"PA#N?"O@"SD$RC#QC#O@"N?"QC#O@"PA"QB#N@"PA"O@"O@"N?!M>!L= L< L< L= L= M=!N>!N>!N>!M>!M>!N>!N?!N?"N@"N?"O@"O@"PA#PB#QB#PB#PA#O@"O@"O@"O@"O@"N?!O@"N?!N?!M=!N?!N?!N?!N@"M>!N?!O@"N?"N?!M>!L< K< K< K< K< K< K< L< J; J;J; L< L= L< K< K< K< K< L= M>!N>!L= M>!M>!N?!N?!M>!M>!O?"O?"O@"P@"O?"O@"PA"QA#RC#QB#QA#TE%UF%VH&VH&VG&VG&UE$UG%VG%YJ'ZL(YK(]O)_S+`T,`T+_S+_S+]P*\N([M(]P)^Q*^Q)]O)[M(]P)_R+_S+^Q*\N(ZL(ZL(ZL(YJ'WH&SD$RC$UF%VG&VG%TE$SD$SD$UF$SD$UF%TE$UF%RB#P@"SD$ZL(\O)ZL(ZL(YJ'YK'\O)ZK'XJ'\P)^R*_S+aV,bV-aV-`U,`U,bW.bW.dY/eZ0dY/bW.bW-`U,\O)XI'VH&TE$QA#P@#O?"O?"N?"O?"O?"O?"L@'KH5KNKQ:HOHQSVTFSD%SC$SD$SD$SD$RC$RC#SD$SD#TD$VK0RN9Z\M\\KTI.SC$SD$TE%UF%WH&SF)QB$SD$VG&QF,LWW?Q[=NXNY>NZ@R]HYcFWaBR^GWcAR]CT^@Q\=NXDV^=OY?P[=PZS^?Q_?R_@R_>Q_@R^BTa@T`PZOY?O[Q^@Sb=Q]>Q];NY:NXS]@T^?R[?R[@S]=PX6HO9INovinmWPF%NF)MB&I:L;E4E4E4E4G5K:niWKWZ8GO9HQ:HQ:HQ7FM4BI2AG0=A,87'48(58'565>!N=!E4J9\O7_YG\RHNEMTMBLGT`aP[AS`AR^BQ]CS^DUaDVaDVbDVbRerzpy{O\bDUa?S`BUdAWeK`pVk}iu~psnU_caggľ㽽½ifc}^v_wi{jy|sz|Ģ_r|WqUnZsMdrdpt[ehOUTpqjpfLl`BzxjjqpqUfyj䱫|q\SC&aR7|iնզЛɗŌŐZP9QB"\XN`flX_d[ekUagVcmn||||ao\jyfskxLU[bX;OTPP\doyƻk`JRB#QB#TE$SD$SD$TE$QB#O@"O@"UF%UF%VG&WI&WH&XI'RC#UF%UF%O@"SD$TE$TE$VH&VG&UF%UF%SD$PA#RC#PA#P@"RC#UF%UF%TF%TE%VG%TE$UF%UF%UG%WH&XJ'TE$TE$UF%VG%ZM(YK'[M([M([M(ZL(YK'YK(XK+YP6VR:QUHpsaʭ¹{~xhj^WT?jnju~~u}}s|~[c`ahenofg]CM>"L=!M>!QB%TE(WI,UG)QC$M>!PA"O@"N?!M>!O@"O?"O@"O@"N>!N@"N>!O@"P@"PA"O@"PA"PA#PB"QB#PA"PA"QB#RC#SE$UF%UF%VG&UF&TE%SD$PA"N?"N>!M>!M>!L= L= M= N>!N?!N?!N@"N?"N?!N?!N?!O@"OA"OA"PB"QB#QB#QB#QB#PA#PA#O@"O@"N@"O@"N?!N?!N?!N?"N?!N?"N?!QB#PB"PA#O@"N?"N?!N?!M>!M= L= L< L< L< K< L< K< K< K< L= L< K< L= L= L= L< L< J; K< M= L=!M>!L= L= L= L< I;K< M>!M>!M>!O?"M>!O@"QA#QB#QA#QA"PA"RC#WH&]O)]O)YK'YJ'ZL(ZL(XI'XJ'XI'YK'_S+`T,`T,_S+_R*\O)YK'ZL(ZL(XJ']P*^Q*ZL(\N)`U,aV,`U,^Q*^R*`T+_R+_S+^R*XI'XI'XJ'YK(ZK(YJ'WH&SD$TF%VG&WH&WH&XI'XI'VG&WH&ZL(^R*^Q*[M(\O)\P)]R*_S+_S*^S*_T+`U,bW-cX.fZ0f[0f[0eZ0eZ/cX.bW-aV-cX.bV-_S+\O)[M(VG%RC#QB#P@"P@"P@#P@"O?"P?"OD,IE3W`\gtyanpOYVSG.SD$UF%SD$VG&XI&VH&WG&WH&XI'XI'XJ'ZK(ZK(ZK(VG&ZL(ZL(YJ(ZL(YK(ZK([M)[N)ZL)ZK(VG&TE$SD$UF%SD$QB#SD$RC#RC#RB#RC$RTJSUGIPKJRLPTFMP?QUIUP:YL0TF'RC#SD$RC#RE'HKDRXPQO;VJ.TE%VH(TH+RD&QA#RB#SD$UF%QF)BF??HJVJ-YK(YK(UN5AS]BR]AQ\AP\?O[?O[BR]@PZR\=S[>S\N[CVa8KR8KR7JP7JQ:KTM[@P\>NX;LVBO`BQ]?NZBQ`@P]=NW@P\=MWDT`CS^?PZAR[AR\BQ]@P\>OZE[i>OX=NW>PZ?Q[;MV9KT8IR9KT9KTPU=MP9KNBQQELCCD7CFB2AG,;?+9=-<@-=?/@C3BF.<@+9;'58"03"12,75]YDRH+G6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4J9ZK3L<E4E4E4G6G6H7M {p[dW>XH,fYAũ½Ŀң|k㿺ᘐcV;pdLxhNVYDT_DT`EUaDT`DTaCT_CUaDUa@S_BTaCTaAR^CT_CUaHYe^oɤospT`e@S^8KU=P]>Q^ATaBTa@R]K^lZqVhn^ijcrzczXqRgyRdvPdwLatýcmqbsn|u`}]y]u_wYoRgx~ЊZtNfqWfg\mrSgpTiw^t[sRixUnQhvEXfAQ^JXe^fotwtvlRvkNro^}XfoRdlV][zfzegZA\N3L;SC&n۶Ӊn}VM5RB#llftZfwhtYgtP\gXcpiv}ymuzohSrlS_Y9\S5ZO/ZR7ORLPWWƾxeqhWZTAUG*TE&QA"P@"O@"O@"QB#SD$SD$TE$RD$SD$TF$UG%RC#UF%TE$VG%VG%WH&UF%UF%TD$QA"SD$QA#RC$QA#QB#UF%UF%UF%WH&VG&VH&UF%XI&TE$VG&XJ'UF%UF%SE$TE%ZL([N([M(YK'WH&WI&ZL([N)]Q*[N)ZT>RPBQWWHKD!N?!P@#PA$UF)SD&TF'O@"N?"O@"N?!N?"N?!N?"M>!M>!L= M= N?!N?!O@"N@"N?"PA#O@"QB#QB#RC#SD$RD$SD$TE$UG%WH&SD$PA"M>!O@"N>!N>!N?!N?!N?!N?!N?!N?!N?!N?!O@"O@"O@"O@"O@"O@"PA"PA#QB#PA"PB#PA#QB#PB#N@"N?!N?!N?!N?!N?!N?!N>!N?!M>!M>!N?!N?"N>!N?!N?!N>!M=!L= L< K< K< L< L< L< L< L= L< K< J; J;K< L= L< L< L< L= L= M>!L< L= M>!L= K< L< K< L< J; I;I:I:I:I:J; L!N?"P@"P@"P@"QB#RC#UG%ZL(WI&WH&YK'XJ'ZL(\O)_T+`S+_R+_R+^Q*^Q*_S+^Q*\O)ZL(]O)_S*_S+_S+]P)]O)\O)\N)_S+]P*]P)^Q*_R+^Q*_R*_S+\N([N(\N([M(YK(YK(YJ'VG%TF$UF%WH&WH&VG%TE$WH&XI&YJ'\N(ZL(ZK(ZM(\N(\P)]Q)]R*^R*_S+_S*_S+_S+_S+cX.cX.`T+]Q)\P)`U,`U,_S*]O)UF%RC$QB#QA#O?"O?"O?"O?"O@"P@#PA#RB#NH3DONR_eZgmwKW[LJ:QB&RB#WH&YK'WH&UF%XI&VG&YK'XJ'ZL(XI&XI&ZK(ZL)ZL(WH&XI'YK(ZK([M)]O)_S+^Q*\N)[M)YJ(VG&VH&WH&ZK(XJ'TE%WH&TE%TE%RD&BOQ=MV=MW;KU8IQ;LT>NW;KT;LV9IS?JLZ^MSF(SD$SD$UG%XK)CLKP\[XT:XL+UG&RE&RI0FE9CB6IE2TH*RH.QH.WK+[M)[L)QK5>OW;LVAR]@P\@O[AR\?PZ?PZ@P[AS]@P[CT_AQ\BU^?Q[@R^=NZQY?RZ7LR6JP8JQ9LS:MU:LU;LU=OW=NW=MXMY?O\AR]>OXOW=NU?PX?PX?PX>PW=NV:LS=MU8JP9JQ6IN8KQ:MS:KS7JO6GN4DL2BH0>D8GM9IP6HO5GN6GO4FM5GO7JQ9MT:NVOZ?QZ9NU5JP4KP7MU:LT:LU>PX?PX=NW?OW>NV>NV?PW=OV8HN0@D,<>-=?9HLTdk9JQ;KQ8HL6EG1AC1?=BJALG0NG*J=E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4K9L;G6F5E4E4M?!PH2NE.LB)MF4M\`8LS>ML;KL@OPANO?MNALLAKIAGDCG@CD8=:)?7"D6F5H7F6E3E3E4E4E4E4F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3G4K9pbMsuvhSWE+[K1ֵ}j[L0I8L;J9WG,WH-ZK1\N3rfRnaK|kpcNWH-RB'L<J9F5E4F5J9H7H7I8I8P@"SD'P@#żvbWH-P@"cU<¼ĻqfNL;J9G6F6I8I8N= SC'SC'P@#L;N>XI-qӶz½췲ncLP@"L<J9LC1DOWHXdIZeFWbCT]DU_CT^DVcDWdFYfDVdFXeHYfJ]lWl¿¹ZS>T[VI\jAUa=OZ=OZ=O[=O[;MYFZjShy?Q_=O\G[kSj~PfyH[lOcuOcsJZeNY]Xen`uZpVj}Uh|O`qVh|H[mvrhŽYr\v]v\rIanPetIZfureih_\bZLYVMcoNfvOixTo^{`~TpRixSi{DS`CQ^Y[RzrT`S0gY9t}wO]dvrdSC'RA$QA#M<SB$I6G4H6\N2ؾִԴֈ}{\YITH,XN2LLBKLCJPPKV]Ubm^mztorUdtbr~ap|iiXok]Zfj[eifi`x{t~{jcV:VF'P@"O?"N?"O@"QB#SD$RD$SD$P@"SC$TE$SD$VG%VG%VG&SE$RB#SD$TE$TF%SD$RC#P@"RB#TE$SD$SD#RC#VG%SD$SE$SD$QC#TF%QB#QB"WH&VG&WH&WH&XI'WH&ZL(YK'UF%XJ'ZL(ZL([M(^Q*ZL(TG(RI1FF:IMJDOSWaeS^d]efĻyjmfWS@aX@wq_|qQB&PA$O?"QB$O@"O@"O@"O@"N?!N?"N?!N?!N?"N>!N>!M= N?!M>!N?!PA#PA#PA#TE$RD$RC#SD$TE%TE$SD$UF%VG&VG&WH&TE$QB#O@"PA"N>!M>!M=!N?!N?!N?!N?!N?"N?!N?!N?!N?!N?"O@"O@"PA#PB#PB#PB#OA"O@"O@"PA"O@"O@"N?"N?!N?!N?!N?!N>!M>!L< L< L< L< L< L= L< L< L< L= K< J;J; J; K; K; K< K< K< K< K< J;J;I;J:J;K< L< K< L< K< L< L= L= L< L= L< L< L< L< L= K< K< I;I;I:I:I;K< M>!N>"QB#SD$SD$VG%VG&VF%RC$SD$TE$VH&[N)^R*`U,aV-aV-^R+ZK'[M(ZL(_R*_T+^P*[N(^Q*`T+`T+^Q*[N(\N(ZL(YJ'XJ'YJ'YK(ZK'[M(ZM(XJ'YK'\O)]P)[N(\N(ZL(YJ'XI'YJ'VH&TE$XI&XJ'YK'ZK'VG&VG&UF%WH&ZL(\N(\N(\P)]Q)]Q)]P(]Q)]R*]R*^S*_S+^R*`U,aV-^Q*ZL(ZK(YK'ZL(]O)[N(YK'SD$P@"O?"O?"O?"O?"O?"PA"PA"TE%PE(RE&EF7AQZSbk^js\iqpzhtzq|NWUN=!N>"RC$XJ'^R*[M(YJ'XJ'XJ'YK'ZK'\N(ZL'\P)ZL(ZK(ZK(YJ(YJ'ZK(YK'ZL([M)\O)\N)[L)\N)\P)\O)ZK(XJ'YJ(XI'XI'XJ'UF%TD$KK<>NXBT^AQ\>OY;KTNUYVDTF&TD$TE$XJ'[N)FNF?OT[fWV\CW_HX_PP\XHUW=KML\_YgkTbfN[^PYVSRBTN7ZO3RF+RL1NJ5EE7?NR:MTOX=MW@,QY=PZ:LT8KR6HN;MU:LT;NV>R[=PZPV>PW>PWQX=QX9KQ:LM,AC.?@;GIEMK@JJ>GF9A>8?:?A8FF6H@*I7F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3G5F3G4F3F3F3F3F3F3F3O=!O="M:\L3|iƿ½zgJ9L;K:RB%XI.RC%RB%VF)VG,VH,ZK0[M3ZK1L<K:M<H7J:G6G6E4F5H7G6F5I8I8J9G6G6L<N>L<L<K:H6G6I8K:[L1sgQ{gK:H5J7H7J9L;K:J:H6G5G5F5H6H7H6G6K;J9I8H7N=^O4sgPwbt`xlWsgPgZAdVOXAS]DWcCVbEWdI\jL`pH\iEWePduxI7H5QWRIZhIZgDVc@Q\=MX@Q]BS`BTa@S^CUa?R]?S`Ri}`|Ti|AR_?NZCQ]FUaDTbGXeHZgPdtMarTgwZo_uZqI_rN`nӂTk}ZsTm|>Xe!N>!O?"N?"PA"QA#QB#TE$VG%XI&VG&TE$SD$SD$QB#RC#RD$RD#TF$TF$RC#SD$SE$SD$TF%TF%SD$TE$SE$TE$SD$RD$SE$UF%SD$XI'XI'WH&XJ'YJ'YK(YJ'^Q*_S+ZL([M([N(YJ'ZL)QJ4TXP_hiQYYqy~xrqby{r罼ĸļhpr^YAeX=dW<`S7\O4O@#XJ-N>!O?"O@"N?"N?"N?!N?"O@"O@"PA#PA"QB#QB#RC$RB#RC#RD$UF&TE%TE%UF%TF%UF%VG&WH&VG&RC#SE$SE$RD$O@"N?!N?!N>!N>!N?!N?!N?!N?!N?!N?!N?!N?"N?"O@"O@"PB#PA"PA"O@"O@"N?"N?!N?!N?"N?!N?!N?!N?!M>!M>!M>!L= L= L< L< K< K< L< L< L< L< L< L< K< K< K; K< K< K< L= L< L= K; K< J; J;J;J; J; K< K< J; K< J;J;L< K< K< M= L= K< K< L< M= L< J; J; J; J; J;K< L< M>!O@"SD$TE$VG%VG&TE$UF%TD$VG%WH&XJ'[M(_R+`T+]P*ZL(YJ'ZL(\N(ZK(\N([M(ZL(\O)\N)YJ'YJ'XI'YJ'XJ'XI'XI'WH&VH&UF%UF%WH&UG%VG&SD$TE$UF%SD$WH&ZL'XJ'XI'YK(YJ'WI&XJ'ZL(YJ'XI&WH&YJ'YJ'ZL'[M(\P)]Q)^S*`T+`T,`T+^S*]R*^S*^R*]P)[M(]O)\P(\O([L(YK'YJ'YJ'WH&WH&WH&VH&RB#O?"N?"O?"O@"O?"PA"QA#<>1*;@8IO>OWIYbiv~iu}`ltER\CS\BQZEONO?"P@"UG%XI&[L([M(\O(ZL'\N(YK'XI'ZK'ZK'ZL'[M(ZL(YK(YJ(ZL([N)[N)ZK(ZK([M)ZK([M)\N)_S+]O)ZK(XI'ZL(YK'WH&WH&SD$XN4CSYCS]CT^CS]AP[>NX;KT>NV>NW=MV>NUUXOVG&UH)NL:INCDOL=NT:NUfvpjvi]mfCUXHZ`Zjl]mj_pkGYYH[aQbhAT[;NTMTFMHTL3]Q,OB$H>'CJDDJD>MRHYaIXa=MW8IR8JRBS^KZe=OY7KR5HO5IO7LR2JO.FJ5IO7JR1IO4KP:PV6KO7KP9NS;NV:LT;NU:MT;MU;NU;NT-@A.BC2GI1GH1GJ9OTAT]CVaJ_jI]hI[gNanI\hGZgFZgH\iMaoMbpK`mCW`3FL2FI.@C2DH6HMPW:KRNRTXHPRBNE(H9E4E4E4E4E4E4F8EE8[V!I8K:M=L;P?!K:L;K:L;H7J9F5E4E4F5F6I8H7I8I8I8H7G6H7G6G6H7K:I8G6G6J9J:H7H7G6G6H7I8K:I8H6K:J9J9I9J9J:K:L;L;J9J8I8G6F5G6G6G6G6G6G6H7G6H7H6G6G6F6F5G6F5RB$i\DQB%ZK1thRN>!saS:~iqqfX?YJ.ZK1YJ0WH,\N4TE(r̗~v~il`GUF&WI(^P0]O/XJ+TF%RC$gZ>sgNoo¢¹ٞ_Q7\N3`S8cU!M>!M>!N>!N>!N>!N?!N?!N?!N?!N?!N?!N?!N?"O@"PA"PA"QB#QB#O@"O@"O@"N?"N?!N?!M>!M>!L= L= L= L< L< L< L< K< K< J; K; J;L< L< L< L< K< J; J; J;J;J; J; I;J; J; J;J; K< K< L< M>!K< K< L< K< J; K; K; K; L= M>!L< M>!M= M= M= L< L< L= L< M>!N?"L=!K< K< L< M>!N>!RC$VG&XI'ZK(ZL([N(\N([N(YK'WH&XI&XI&ZL'[N(YK'XI'YJ'XI&WH&ZL(XJ'YJ'[N(YJ'XI'VH&VG&VG&VG&WH&UF%TE$SD$RC#RB#RC$RC#RB#P@"PA"QB#TE$TE%QB#QA#TD$UF%VH&XI'YJ'XJ'XJ'YK'\O(\N(\O(\P)]Q)`U,`U,aV,`T+`U,^S*]Q)^R*`T,^R*\O(ZK'YJ'YJ'YJ'XI&WH&WH&XI'XI'WI&UF%UF%SC#QA"QB#QB#SC#RB#QA#RB#LB)KOBESUHUTHYcHX_FU_@OX=LU8HQHNHTF*RC$XI&^Q*`T+_S+_S+]P)\N([N(XJ'ZK'YJ'ZL(ZL(XI&XJ'WH&WH&YJ'XJ'XJ'ZL(ZL(ZL)YK(ZL'YK'XJ'WH&VG%VF%VH&VO8MRG?PX=OV@RYATZDU\FV`CT^DU^@OX?PYAQTTZTWTCUO:HPIED4QX=NWA)=>*>?*??*>@)@@)>?+@A1FJAT[L`mSguRftM`lGZd@T]@S]PZ?PZ;NX4HN0DH.CD/BD.BD0AECWa>PX>PYAS]=PY:LR0DF2EF2EH7HP5FL5GL1EH3GK5IM3GJ/DG*?A,CE.EI6MT=R\@T]>QZ1FJ,BC,DD*DB,FF8NS@V]EZdH]hF\fCY`>TY;QU4JL?RXEV^FW_GW`@RZCW_CVa>Q[?QZ>MRDJEL=N?"F5E4E4F5E4E83BF1DK;KLHN:JD(MC#OF%KI/AH98D:3@9:E<@H:HM;EL=FMSC"QB"RC#TF$RC"QB!SD#TD#TD#SC"RB!N?!FA5:?=@A9HE8TM8VK3M@'L:I7I8I6H8J9G6G6H7E4F5L<M<H6G7P@"I8E4J:N? RB&L<K;J9I8K;O?I9M=L;L;PA"`S7ZK.aS8RB%O?"O?"QA"P@"RC#SD$TE$VG&RB#RC#TE$UF%SD$SD$SD$YJ*WH'{pVfY=[M/WH.O?"N> QA!WH&QB#P@"XI'WI'RC$\M0u񤝏WH+RC$H6TD'O>O?P@!OB&OVVQ[_TUJWQT]?V^@U\@U\AZf:PW3GLCVaMZ]YJ,dW=`S:¾ʯttiT`R7qfO}s_hj^Yl|K[dCS[HXcIV`LYcHS[AMVTl~apyH6J7J9J8K:VF*ocLrwloanwkirghqdfyze|ZrUkzOcnIX]CSYCNKDIA;GO?KS>LWGWfHWfDSbJ[lTj}Zr_w]qObqDS^N\dGU^S^bO\dL]kL[hWdqVbmkvdp|lymyV_hnxqzznv|ƿygvkU^R5WH&XI'XJ'aS1^P.[L+SD$RC#SE$RC#PA"QB#PB"PA"PA"QB#RC#RC#SD$SD$VG&WH&VG&XI'VG&UF%VG&WH&VG&VG&WH&WH&XI'XJ'XJ'XJ'YJ'XJ'YK)aT4\M+]O,aT2RC#RD$[M.NE0EGAVL.|zj[U@VT@qo[qةԶ}tmmVzwV[WHR\P_n\nmwZO4O@"RC$O@"RC%PA"O@"PA"QB#O@"M= M>!O@"N?!QB#QB#QB#SD$TF%TF%VG&WH&UF%UF%WH&XI'VG&SD$RC#PB"N?!N?"N?!M>!M>!M=!M= P@$qfP[M2N>!N?!O@"PA#QB#QC#QB#QB#QB#QB#QB#PB#PB#O@"O@"N?!N>!N>!N?!O@"N>!M=!L= L< K< K< L< L< L< L< L< L< K< K< K< K; J; I:I:I:H9J;I:I;J; L< J;J; J< J;J;L= L= K< K< L< L= J; I;J;J; L= M= N?"N?!N?"O@"O@"O@"N?!L= L< M>!M>!L< L< M>!L= L< L= O@"QB"QB#RC$SD$VH&VG%TE%RC#QA#OB%RC#QF'SF%LG0JE/QD%TE$VH&VI(UM2RH*SG'XJ'XI&VG&RB#RC#SD$SD#SD$RC$RB#PA"P@"P@"N?"N?"N?"N?"N?"O@"P@"P@"QB#RC#SD$SD$WH&WH&XI&YJ'\O)_S*^S*`U,_T+`T+aV-_S+]Q*\O(\O([M([N([M([M([M(ZL(YK'XJ'XJ'WH&WH&VG&VG%VG%VG&UF%SD$SD$SD$SD#SD$TF%TE$SD$RC#TD$RB#OB'EB2;D?NL6JRHHUTCT[J\fGVbCR]9IRGRRf]HYJ(ZL(]P)\N)\O)]O)[N(ZL'\N(]Q)[M(ZM'ZM'XJ&VH&UG%TF$VG&WH&WH&XI&XJ'XI'YJ'VG&UF%SD$TE$VK.^e]Wdf>QX?SYBX]?SY?SY@SYCU\DV_AT[>QY@R[>PZ;LUHUWSXO[ZLXXGEPL:MT8JQ6HP6INATVM^aSaaZfdZii]oqRee_qlM_\7KN;OR2CE4GJ9LQ8JN7JOB/@F,>?,>?*<=*<=(:;(;:)><,AA-AB,BA,EB.GC/FD-BB.BD/AD/@C0DD.AB+<>*=<*;<+=>.AB/CE-CC;PWFYcL^iOanK\gFWaEWb>P[OZ=OX:LT;LU9JST\G]h=QZ9MQAT[GX`CT]9LT3FLJ\g@R\=OW=PZ:JS)F8E4E4E4E62>9.AF-@E,>B0BH3FM2EL5IN,@C(<=$77"45"46%88'99&994B=5B;#65(:;);<->B->A,?A.AD0EF1FG.CD0EG1EG/CE1DH.BD2FI2FJ.AE3GL3GK0CF2FI3HJ4GJ6IJ5HK2DF.AB/CF0EG-@B/@C->B-#M@'NC.K@+J>(H=&J=$K; H6H4F3F3F3F3F3F3F3F3F2F3F3E3F4TD*xǂubUC(Q@%}p\^O6E4E4J9aR<}q^~nu½m`II8D3E4F5F5RB'E4|p\t`naJM< E4E4gYBhcWKSU?P\>Q`~s_P?!L;L;L;M<L;M=M<L;K:M<M<K:J9F5E4E4H7G6G6H7G6G6F5G6J:N=QB RC!QA!P@ P@ QA QA P@M<N>O?L;K:RB!SD"N>P@P@!WI'YJ'VG&UG%UG&NC*FA2NK7NJ5IF2FB3>@91;>.<@.KJKWT2?A5CGKLBLG6IH!SD$L!N>"P?"QB#SD$UF%SD$XI'YK)WI)SE&XJ+uk^EM=N=w~jn`GWH+N>M<M;P? YJ-YJ-QA"M;I7I6H6H5H5I6H6OI9NWWDT]BQZL]lRgzObtQewSi|UlYq]wVm~\u^zYuUpK`mI`mH_oD[iF\kH^kJ`oMdwF\lF\lCYfDW^Jal>S^@V_@U^:OV7KP:OX=RZ@V^6LT:OVCRW`_NxҾzoZxcyeYJ/cifVnZsJ]lFVb@NWDOXIRYX`fHRXKVXLB+M:J9O? H5RA$noTmRjzYmuYmsUjsMbqN`lM`nI^mI]mHZh?MTK^oIZgCQ^DPYIT_HUaEP\@MZ=KV;JU8EM3?A9DK8FN:HNKSBOXJU^LU^PY`U_h[ht^lzbo~n~]lzm|o{kwoxΦ¯rxwlT|fk`F^P/\L+`Q/WH'UF%QC#QB#SD$RC#TE%UF%SD$RD$RC#TE%UF%XI&XJ'VG&WH&WH&VG&XI'YK'VG&WH&XI'YK'YJ'XJ'ZM(\O)\O)[M([N(XI'YJ'ZL)[M+]O/VI*ID3FB5F?-VN6bZ>SG*XM1]WDkcL^`NࠤedPtui¿ÿƻfnn^P6QB&\P6MVWFQZIXdSdsrmfLSD&\N2SD'PB#N>!N?!N?!M>!M>!J; N?!L= QB#QB#RC#PB#QB#PA"RC$PA"UF%TE%VG&UF%SD$SD$PA"N?!M>!N?!N?!N@"O@"N?!N>"]Q:QD)PB(O@#N?!N?!O@"QB#RC#RC#SD$RC#PB#RC#PB#PA"O@"N?"N?!M>!L= L< L= L= K< K< K< K< K; L< K< L< L< L< L= L< J; I;J; J;I:I:I:I:I:I:J; J;K; K< I:I:I:J< I:I:I:I:I:K< L= K< J; J;J; L< M>!N>!RC$QB#O@"O@"N?!L= M>!L< L< L= L= M= M=!M>!L= L= N?!O@"N?!N?!O@"OA$MB'HC+IC*MC)JE+IF2DPNEMD@LELL2ON:LTLUJ)HP@AQRAQPW[OKJ8MSKOH/QE*QD'QB#P@"O?"N?"N?"N?"N>!N?!O@"N?"N?"O@"N?"N?"N?"P@"QB#SD$TE$WH&XI&XI'XJ'[M(^R*`T+^R*^R*]Q)[L(YK'YK'XJ'XJ'XI'XI&WH&WH&XI&XI&XI&WI&WH&XI'WH&WH&WH&XI'WH&XI&WI&WH&UG&VG%UF%UG%VG%VG&VG%UF%SD$QA#P@"RB#RC$QC$MG1DMLKWYM\`=NV>NS9KP4FL2DFAPQIL@YT;WI&XJ&ZL(ZL'YL'VH&WI&WI&WI&WI&SD$SD$RC#SD#TE$TD$VH&UG%XI&VH&VH%WH&VH&SE$VH(cogI\VEXV:NS9MQ8LO7MO7LN9LQ@*==(<='<;&;:"86%98&::&9:'::)<=(;;)<<*=>-?@+>?)==*@?+>>,>?+<=*;=,=@.AC0BE.AD,?A3FJ5GM8JP9MSDV`>OW=NWOW=OX=NX>NY=NY'A?'?=,CA.CD*AA*A@*BA(DB0GJ.FG,CD5KQ:OV8LS:OU;OU5KP5IQ5GN3GI8KO9LR2EJ7JP+?B7JOPW5DM5GN7IP=IL@E>GG8D>)6?:/DL2JU1HN+?D(<@0FO1EN3IP5KP1FI,@B&8:!46$56$68'9:+=?.@D,<<.@C+=@*>@-@C.CH0FH0HJ1GJ1FJ4GL1DI-BG+@E,@E,BF*@F*AJ+AI+?F+@G/EH2GH3HJ1FH2FH.CF1EI0CF+<@.AE4FK2DG1DG0AD.?B->A+=@0@B7EHBG=DF7BB7AC:@E>?JI:HJ7JS1EQ2DM4HT4HS/BI5HR-AK2EQ5FN0>>6=8@B8H>)H5F3NA(J;F3TK0H8E4E4E4E4E3_Q9|jtan_IrdNH6D1E2F3F3F3F3E4E4E4O>"pcMG6F4WG.J:G5G6RA&O>#F5E4E4H7E4E4E4E4F?/HH?YYR|zq{iYJ/M= k_HQB$N> M<K:L<L;L;M<L;L;L;L;J9L;K:F6H7I8I8J9I8J9M<J9I8K;QB#RC$XJ'YJ'YK(WH&XI'XI'YK'ZL(XI&YJ'UF%WH&RD$SC$VG&WH&YJ'WI'VG%UF%TH*GB1@EA>GG1=D.:A,7<*59-9>.:@.=B.?E,"P@"SC#WH&VG&SD$WH&XJ'[L(\N(ZL(VG&UF%WH&VG%VG%PA#QB#RC#PA#P@"TE%P@"SD$PA#SD'O@#SD&TE&RD%SE'SG)UL-VP0TQ0RP.JPDJNDRI2^P5UF(UF%M<K:L;TE'hY@~r]YJ.TE'L;K:N>O? K:L;J8I6I6I7I6H6I6I6I7K:M@"ME.PH0RK3SM5MI2LF.J>$M@#OA"M=M;OASL2WV@X]LTfiFZb@S_EYeDWeCWeI_nCXfEZhDXe=P[9MU7KT^svg~AU^>R]R\:NW3FM8KS.BJ@T[I[[XccɶqeNZK/ZP9bt{Tm~WjxIYeCPYCQZHU^LV\R[bEOU@LTJUWWR8K;G4O= xmWvcyfm`H}s^ac]dnqVjwOfuMbqP`fJV]NY`R]fLV^JS[FOXDPXHR[EQ[HS^KT]JT\HS]IU_GR\BQ[HZgFXc;IR;IS:HOGPJQTINY^DNUJV`KXaKXaiulz`lznzXcnsxtRWPTWNV]b¿۾Úlrtc^N[N.WH&XJ)WI)TE&RD$SD$UF%XI'VH&SD$SD$TF%VG&VG%SD$VG&XJ'WI'XI'XJ'TE$SD$UF%VH&YJ'XI'XJ'ZL(\N(\N([N([N(YJ'XJ'WH&ZL(TJ.RE(NH5HNN`giYbgcntsy|pokV[YBdfZ»ce\{|qVUF[UAjbNi`HbU:XJ/VH/\VH\^Zdkkdf\ki_umWO?"PA"O@"PA"N?!O@"PA"PA"N?"M>!M>!L= O@"N?!N?!SD$RD$N?!RC#RD$VG%SD$RD#QB#O@"O@"N@"N?!N@"N?"N?!O@"O@"N?!N?!N>!N>!N>!O@"QB#QB#PA#RC#SD$SD$RD$RC#PB#PA"O@"N?"N?!N?!N?!L= L< K< L< L< L< K< K; K; K< L< L< L< L< L< L< L< J: I9I9I9I:I:K< L< J; I;I:I:J;L= M>!L= J:J; K; J;J; K< I;K; L< J; J;K< J; L= O@"QB#N>!M=!M>!L< K< L< L< L= M=!N>!N?!N?!N?!N?!O?"O@"N?!N?"O@"NB$OD&DF2=C2=HAJ=TfiEX_EW`N_hJ[aHOJDD4LA&N?"N?"N?"N>"M>!N?"N?"N?"N?"N?"N>!N?!N?"O@"O?"PA#PA#SC$XJ'XJ'[M(\O)ZL(ZK'[M([N(ZK(ZK(YJ'XJ'XJ'YK'YJ'YJ'YJ'YK'YJ'WH&WH&WH&VG&VG%VH&VH&WH&XI'XJ'YJ'YJ'YJ'XI'WH&VH&VG%VG%VG%UG%VG%VG&TE%RC#RB#QB#RC#RB#O?!SE'PH0TI,QF+VL4QK4QK4WT@[Q4VH%UG%SF$MH3NE,QA"PA#QB#RC#O@"QC#TF%SD$TE$SE$RD#TE$XI&WH&XJ&UF%VG%UF%RB#TF&egUft]L^X7KM7LN4IJ6LM6LN7LO9MSQZ@QZ?PY7HO0BI:KMZ`\XVGb]Ic`NARP5JL5JL4IJ0DD/BD/BD1BF4EK4FJ6HM8JO8KP7KO:MR9KP8JP8KP5HL1EG4GK0CE2E>/D>0F@?J;AE24HF6KN6JO6JP8KQ4GJ3JI1GG6JL5GK3DH3DI0AE.@E.AC0CE.@A/@C2CI/BH3FL1EI4HM6IO4FL2EJ0CI0CI/BH+@C+?@+@@,@@+@@(=<)?>*@?)??,BB-BC,@@,@?/BC0CC1FG5HL:OTA-AB,@@+A@,DA,CB*B@*B@,CB-EB.DC-DB+BA+A@+@@(?>*A@,AB+BB)A@*AA-DD,BB+CB-BD*AA)@A(@?)@B.BG1DI1DI2CJ3FN.AF,?A,?B(;<+?@,@C)=@*?A1FK:LRB,@C+>B-AG+>D+>B-AG.AL2FP4HQ8JS5HQ1DL2EN0BM2EO/BH+>B/@F2GL(;A1<:E5E4E4E4E4F5H8H7E4E4E4E4F5L<J9E4F4F3F3G5G5F3F3F3F3F3E4E4E4E4D3E4E4YJ0ZK2ⷰynZF5obOXI/D3cT>_P8M< E4F5M= K:E4E4E4E4F5F5L;SB(ZK/[L1[L0P@!M<RC&ZL0N> J9J9K:M<M<M<M<RB#P?M<L;L;L;H7J9K:L;L;L<L;M<M<N>UF%QB#QB#XI'YK'YJ'YK(UF%SD$YJ'ZL(YK'YK(YK(ZL(YK'WH&VG&ZR4HJ>9??A-?E+C+B/@C.=B-=C/>C/?E0@D3EJ:KS>OX>OZ>OY:JT8GQ:KU9KT?NQBLHGNEJPIMSOQVMNOASM4YN/i_C[U=PNMF3SG,_Q3QA#O?"QB#QA#SD$QB#VG%UG%UF%XI&YJ'XI'XI'XI'TE%XI'ZK(XI'RC#VG)TD$QA#QA#O@#WH+QB$RD'RF'RI*TM.WP1RO7FG6EH2FK8DMSE&SE$UG&P@!N>RL6VWKM>"J8J9J9J9K:J9RA#\N2O? K:J9I7I7I8J7I7J8K:K:QM=X\WV__VcgRbkVhqTjyWo]wWnK^iGYbJ[bKYZJ[bG]jF\i@Ua=Q[>PZ;MWCXdBWcCXgDYe>R[=Q[;NUQ[>PYzf}ynYocMnaJYI.XJ0_U?pkW[^Thjbv{~ioq`hr[ckNW_OW^NTXELONTXKQSELMELJEKEKUUJV]BOR6FPDXgFU_VO3OJ4XS!M>!N?!PA#N?"N?!PA"M>!QB#QB#QB#QC#QC#PB#PA"N@"N?!N@"O@"O@"O@"O@"N?"N?!N?"N?!N?!N?"O@"N?!N?!O@"QB#RC#RC#RD$RC$RC#RC#QB#PA"O@"N?"N?!N?!M>!M>!L= L< L< L< L< L< K< J;J; K< L< L< K< K< L< K; J; L< I:I:K; J; I:J; K< K< K< J:K; K< K< L= L= J; J; K; I:J: L= J; J; L< K< J;K; J;K< K< L< L< L< L< L< M>!N?!M>!N?!N?"O@"PB#ED+>B.DF/DG3MB%BE4HD,DA*BH;EQJ8D=8EB@A,8D64HJ0GG:PR4IJ?J9?QSI[d^nvEY^2HI0FH,CC(B<(C=.E@4D;:G!M>!M>!M>!M>!M>!N>"N?!M>!M>!N?"N?"N?"N?"P@"RC$SD$TE$VG&XJ'ZL(ZL(YJ'XI'WH&WH&WH&XI&WH&WH&WH&WH&WH&WH&VG&TF%UF$SD$TE$TF$VG%WH&XI'YJ'YJ'XJ'YJ'YJ'XI'XJ'WI&WH&WH&WH&WH&VH&VG&VG&TE$TD$QB"QB#QA#SD$TE$SD$P@#RB#QA#RB#SD#SE$RD$NK5=OS8JQ@JHHE4QD)O?"P@"RC#O@"UE$TE$M=!N>"RC#TD$WI&VG%O@"QB"RB#QA#TD$QB#TV7J\U3FG5HK6KM1GG6MM6KN6KN?SXJajDY^=NV8IQ/AF,>BO^W[`X]ZM\XC?RS8NO7LN3HJ1FG-BC3FI3FI7JN6GL7GN5FL4EK6EL2DH4EJ6GL8JQ9LR7JO0EE1GF0GE4II*B;7D48H?6HD0FG1GI2HJ0FH0EH/DF-AC-CC1EF1CG4HK7JL,@@*@@,@A2GJ6IO8JR7JS7JS:LW9JT9JU;LW8IS9KT8JT4FP4FP5GP4GN5GN1DI2EK+@B.BE7HQ5HL8JQ8JP6IM5JP4JQ:PXBU^DYcH^hI^iPetUjwOboEWa>OY;MU7JP5HN-@E/BG5GL0CI0BH;LVFT_@PY8JQ9LT:LTB+?B';>(=>(>>)?@)=@,@B+BA,CB,DB,BB.DD.DC-BA,@@,@@)@@*A@*A@)@?,BB+@A+@B-@C,?A,AB+AA+CC,BD)AA(@@+BD'=>,?D/@G.=D/?H*=A&8<'6<&7:*=@.@B/FI0HL5KO2HK3EJ=JP7FL3BH3DK8EL8KS8OX9QY2HM1EI+?B.DE,BC2HI.EG2JP7MU5JO.BF1FM5IP4IP5KP/DG1FJ1FH/FG/EG2IJ2HK8LP8MR:OT4KP5KP2GL,AD/HK2JL4LP.FL.HK,IJ+IJ-GJ/IL-JL/FK.DH.CG+?B(>?%9<$7<-BE2GL7MU6NW6OV4LS6MT5MT5MS4JP4LQ3KP1HM3HM7LR3GN.BH.BH1DJ)D/BID8E4E4E4E4E4E4E4E4E4E4F5E4H7I9E4E4E4E4E4E4E4F5K=!LA'H7F4E4E4H6I@-C:(E:%G: H9K:xlVXH.H7G6I7SD*F5K:H7RB(L;N= bT PA"N=^P4k_GXI-M<N=K:L;M<M<N<N=XJ&ZM(VH%QB!O?RB!RB!P@ RB!QA!N?QA!SC"SD#TE$UF%TE$SE$QB#VG&WI&UF%XI'VG&ZK([M(ZL(ZL(YJ'YK([M(]P,NQC7DH2AI2AH1@H1BK3EN4HP3HN2GM1GJ2IL3HN3HN4HO5IP3GL4JP4LP6JN2GK3HK2GK0BH-=C-=C/?E0@F2AF1AG->D/>C2EL,;E<2><-;:6@7:A2;A/9A1;F9?NB2D@-AB/DE1GH3KLHQFWJ(VH&l_BXT@EPMCU`HD.L<J7M@%DFQ[BU`;PZ9NTchY[bRCMNGRTDNT!N?"N?!SD$QC#QB#SD$RD$TE$RC#PA"PB#QB#PA"QB#O@"OA"PA"N?!O@"QB#PB#O@"N?"O@"OA"PA"QC#RC#PA#O@"PA"QB#QB#QB#QB#PA#PA"PA"O@"O@"N?!N?!N?!M>!M>!L= L< L< L< L< J; J< J< K; J; K; K; J; L< K< L< L< J; L< L< J; K; K< J; J; J; L= M>!L= L= K; K< L< J: I:J; K< I9I:L=!L=!J; J; L= K< J;K< L< L< L= M>!M>!M>!O@"O@"O@"QB#QB#SC#KA%@C27C79ID4D=@B/RZPDG77E>3DADPM5D?8HL=NS-BC&=<,AB.@B6JP7LP%<<*AA5JL3GK.CG+AC,@D*;?)>@';>)>@(=>(=<2@:6?48?3@A2BB0JC*BG87D==B6AB3OB$N?"N?"N?"O@"N?"N?"M>!M>!N?"N?"N?"M>!N?"N?"N?"O?"P@#QB#TE$XI&YJ'XI'YJ'YJ'XJ'XI'XI&XI'YK'YK'YJ'XI&WH&XJ'XJ'YJ'XJ'XI'YJ'YJ'YJ'YK'YK'ZL(ZL'YK'WH&XI&WI&WH&VG&VG&UF%UG%XI&VH&VH&TE%TE$UE%WH&XI'XJ'WI&UF%VG%VG%UF%UF%WH&XJ'XI&QD'LF-CF79D@7DAGE/AF:DE5HF4JH5ID1ME-QE)UF%XI&N>"P@"QB#O?"P@#QA#TE%=MK8LM4IK2HG2IG1FG2EH7JO9JO3FH/CD/CD/BE.@C,CC,CC=KCTK3TJ0EOGBWZ8MO/DE,?B-BC0FF/DF0DG0DH4DK4EL5EL5EM4DM1CH2DH8JP:LT9KR8KQ4GL4HM2GJ5JL1HH-EC,DA3D;1E=6ID/DB-BA)><*?>*BA,CC-DD,CA,AA5GI0CD0FF8LSPZ8LQ5JN8KR5HN7GR7GSD,>C-@E.@E4GN:KT:NV?S[AV_=QZAU_>Q\AUcLaqEXfCVa=OZ:KU1CJ0CI0AG.>D+;A,=B/>E7GN;KU7HP=NV;LW8JS8JRNV4FN4FN0BJ0AI/@G/AH&8>%7<&:=(:=(*=@*=?'<>(<>*>@)))?>)A?(B?*CA(??$;:';<(?=)=?);?+-BB0FG1IL0FH0DH,?D+9>6DI2@E1?F6CI6FM6KR3IP2GL2EJ,@C)=?0EE/AE5JP7JQ:MS5HM-BG,@E)=C.CF/DI8KR5JN:OTCV\?SY=QW@RX>SXSZ9PXA)=A$80EN2GP3HO5KQ4IQ7MU8PW5JT8LU7MV6JR5JR1EK1EL/BJ1CK2DM5HP3FN.AK0BL1DL0CL0CM-@I+>G+=E,?D-AF+?C,@D.BE0EM-CH/:4?8&E9 F5F4F5F4I:I&FC2H;!G5G5G5G4E4E4E3F4C8!BIG?NT$oxgUE*P@$G5M< F5RB$fY@_Q7L<K:N=N>M<M<RC&UF)N>M<M<M<M<O>XJ&\O)ZL(VH&WH&ZL(ZL(XI'UF%TE%WH&UG%UF%VG%UF%TE$SD$QB#SD$TE%RC#TE$XI&YL'[N(\O)YK'XJ'ZK(\O)][87GK3EI2FI3HL2HK3HN6LR5LP5KO4JM3JL4KP4KP5LP2HN1IM4KO5KP4JN5KN3HJ2HI2II3IK3GJ4HJ2GI4HJ5JK3IK1FJ1EH1EG/BE3EJ2EM0DJ3FN6JS7JR5HQ4FP0BJ0EJ4IO3GM4IN4JP9LP>NT>NU;NU7LQIY_ARZ;LR7HO7JP7HO6FM6IN5IM6IP8KP:LO:NQ:MN>MJ=KANM2VJ*UG&WI(VK+YS6YYF_]QdbXZ[SHOJAIB3=84@;R\WP\WFRL&76'755@6BNJ)842=46A7'9:(:9(<=+@@+@A*>@+CB.DD2HI4IL8LR>LNGH:JJ5AJ@.?C2CGFF3IF3GD3CPP7HP5FO>NYHWdQctVk~SetORKNH6MC,NA&L=N=O?L;K:K:TE%VWKUcgPepOfvLbrEYeFZeDYe@T`AT^BWbCXcAT`>QZBVaAT_AUa@Ta7JR ^P5O>!eW>vcxgCR[@OY@NX@MUBOXEU^G[gFWaFRPZT<_^JYQ4SD%RD$WR2WV!O@"N?"N?!N?!N@"PA"N?"PA"QB#PA"N?!OA"N?"PB#QB#SD$TE$RD$RD$TE$SE$SE$SD$SD$RC#PA"O@"N>!N?!O@"QB#RC#RC#QB#RC#RC#RD#SE$SE$RD$RC#RC#RC#QB#RC#TF$TE%QB#N?!M>!M>!N?"O?"N?!N?!N?!N?!L= L= K< M= L< I:J; L< K< J; I: I:J; I:K< J; J; J; J:L< K< L< L< L< I: K< L= L= N?!L= L= K< K< J; K< K< J: J; K< K< K< K< M>!N?!N?!N@"N?!N?!QB#RC$RB#QB#NB%RC$RC$E@(9C8/@84A18D61A53F>:LG[gd=J@?OPO]c9JN6IL>(>?*>A(=?(??":8#<:%>=)?A+@C%9=$89!46#54!44!34 23!5655"86*=?(;>$;:'=?*BC0DB:F<;C4CE3NC'MC(NG-VG&TD$RB#P@"N?"O@"PA"PA#O@"N?"N?!N?"N?"O?"P@"P@#QB#TD$TD$TE$VG%WH&YJ'ZL(ZL(ZL([M([M(ZL(ZL([M(\N(\N([M(ZL(YK'[M(]P)^S*[S0HO@@KBCNALK4UI)WH&UG%UF%UF%XI&XJ'WH&XI&XI'WH&WH&XI'XJ'YJ'YK'_S+_S+_S*_T+\O)ZL(\N(]P)[M)[N/TF&WH&UF%IG31BE1EI3HL3IM5JN4IM2GJ0GH2KJ6LK=LD@C5OG,XJ'RC#UF%TD$UF$ON3LN8RQ4BN@0EH3HK5IL3FK1CJ1BI/@E.AD,AB(<='>=)?><)??&98(@>)@>-CB/DD/AD-=C,AC6JM/DB*A>'<:/@C.>A0?D1AI->F5EQ9JW4EO6FQ2CM6FQ4DP1BK1@K7FS4DQ1AL/@J4EQ.@G2DN3EL8KS:NV=QYAV`=RZ6JR7IS8KU@T_BWa9KU5GQ9LT4EL.@F1BG1BG.?E.>E4DJ7HO1AH5FN7IR6GQ6GQ4FK6IM5HN8JR3EM4FN4GM7IQ1BJ0BI1DK.@F0CK.AG0AG0BH.@E/AF0EH*>B(;>()=?+?A,AB+?@,@A,?@.AD/BD0CF2DG/CE/AD,AB*@@+@?)@>(@='><*@>*>?(?>&=<';=)<>':;20 31&87&;;%;:'?<+CA-DD/DF0AF+9>0AH,;@*7=0>D5BI5HO7KS1GL2FL2IL1EI.DD,BB3HL1GM+AC(=?':=*>A)A-BF.CI0DJ=NU:MU7IR4HR3HQ:NT>QX:PY8MU8MW5JS0FO2FN4JP1HP/FN8MT4LT3JP3IO2FL0EK,AF-BF.CG/FJ.FJ-DH-DG*>A)(;>(:?):@'9<&8>*F,?D,@H+?G)=A+@C+AG%8=$7<*;A'6:!21$5:/:=AF;9@=:FI5HT5IV2GS4IU8JW6JW9LXJK?HE=DA7DG0DR0DRFRGZU$WT*RH!E4F4H9JG-5HM9KR5GO4FM8HO;LU9KS8IR8JS9LT7KS6KT8LS7KR9KS:MTDW`BT^?QZCPQFKCGH?D@/MA)K:H6O@#N=_Q6Q@"P? O>P@ M<M<YJ/QB$O? P@!M<N>M=N<O>VH%XJ&XJ'XI'YK'TF%WH&UG%RC$SD$UG%VH&TF$WI&VG&TE$TE$TF%XI'YJ)ZL)YK&ZK&[M([N)ZN*WM*SO3KTD9MQ7LP7MP7MQ4KL8NR7MQ9OU9OU7NR7NQ7PR4NR4LP6LP4KP5MQ6LR5KP5LP5LO5LM3IJ2GI1FI1GH2GH2FI2GI0FG2GI1GI1FJ0EJ3IL4JO2GM.CK2HR4IQ3GQ4GQ5HP4IO6JN;LR:LS7IO>LS3BH3DK=MT[gm6GNP^e`mrLZa8GO<'63%75)81(8.&62'75(8:&89%68(9:'7:'9<)<@-AC*=@+=?-AD0CG2FJ0DG/BE1CF3EJ8HN:JR6FK4CG5EJ9JQGG7GO;HQ!M>!M>!N?!O@"QB#RD$TE$SD$RD#SD$SD$SE$SE$TE$SD$QB#RB#RB#QB#PB#O@"O@"O@"N?!N?"N?!M=!L= L< L= M= L= L< L< L= L< K< J; J; K; J;I: I9I9J: J;K< L< J: J: K; L< L< L< K< J; J; K< L< L< L=!M= M>!L= L= L= M>!L= L= N?!M>!O@"RB#PA#N?"N?!O@"O@"O@"QB#SC$MC&ND&;C2=B/LD'KB&=@.:@./A6.D<%?:'A<&>9.EB;PP>QT6JL>PRBTW4IK,BD'=(@?)>A(=@)?@'@?%>;$=;"98$:<#:9 520.)5/.5)'3+.-2031"98!53"86 97$<:!77 86"88"99$=<*>;'94$:;+>A+>A1B?0DB5E@:A8ED2PF+UE$PA#N?"N?!O?"P@"PA#RC#TD$QA#QA#RB#RC#TE$VH&YJ'ZM(\N(\P)]Q*]R)]Q)]R*]Q)\O([M(\P)\P)\O(\P(]Q)_T+7EB6LN6NN6LN6JLGSLZN+YJ'YJ'YK'[M([M(ZK(ZK'YJ'YM-[S7\U9YP1UK+UJ+WJ'WJ'YK'\N(aU,^Q*[M(\N(WK'RK.SO4VJ)VG%]P)QO3;LH2HJ6LN5LN7NP7PR5LN5LM1HH,CD*@@,AB4GD;F=FL:OM1XJ']P)[M(XJ'XK*DJ>-=B.?C$9;*?&;<(=>HM=VN2\R4ZQ2JP@NP;CE7?>/G<&F9"A;+=B4>F;1@=.?D.AG1DJ/CI.AG.AE0BG/AE/AD.AD/AE0DG3GJ3GK3GL2GK/EF,CD-DC+CA,DB,DC)@?$;8#97$<:(>=-BB0EG5IN,?D.AG2CL6FQ>M[>MZ:JW3BL/@G2BK7GT;JW=LX8IT1CM2EN5GP6HQ6GQ7HQ9IT8JS4IO1FL2FK4HN1DK0BI2DK3EL2DL8JR0AH4FK1CI+@*>@)@@*?A+@B+=@,@C-?C.AD1CF1DF*@@*>?)?>*??(<<)@?(?>'>='?>)>>'>=&;;(<<&9>42 65!31"33&<;&;<,BA(@?*@A*=A(LRkuw7HP4JQ5KQ6LS3IQ3IP1GJ-DG2IM4JO4JP,@D)=@&9=%7<+<@$:;$:=(=@(<@&9=&9>$8>&;A.DK-CK&:C(?I2IS:NV@V_2JT0GP0FL/EJ0FK+BF,CF-CG/DH*?B0BG2EK/BF/BG.AG*AB*?B'<>&9<'::&9>$6<#6=$9<';>*>@,?C&;>"79"68$55$58"36&9@(<@%8<%7:$7=#59#58%69'8<'8<&7;$6;#59$7<):A*:@(;A*>D,@I$7=$7:%67'99&9=$6:#49&7=&8=+?B1DM1DO7JU8IU1ER3FQ7JW>NZ:LW@Q\>NZ;KV5GT5HT7JU5HS4GR7JU9NV?OQ@LGFJ9I8F5I9MC;HD3FN5JP3GN2EM3FO7HP7HR8IR:KT8IR4HQ6HQ8IRDS\;NV;NW;OVEV^M_lDWa@RZN=L;L;RB%g[CRB$L;N>M<N>M=M<L;K:M=VH&XJ'QC#RD$RD$TE%QB#VG%VG&WI&\N(\O)ZL'[M(YK'ZL'YK&XJ%NZXDTX>QQ;OR8NR6LQ7MP6NS6MP6LQ9NT7LR;QV7NS7MS;QX;QY;PXMT;JR7FM6EM3BI4CK:JR5GO4FO6HP5HP3GO4HP8LR3HO7LT=R[6LR3JO4IM3IM0HJ2HL/DG0FG0DF0DD5JF>QJ(?8";2&<6-DA.CD):8+94+71'88*;>+:>(8=*9>)8<(8=*8>'48&49$37(8<$39%4;'6>%4<'5<'6:-::*9;-=A3BJ9JR8IO G>%HA+GE4CF<;FC9JP=JJ?EATJ-RH.TI/VJ,TJ1RM8RL6TN9\R5XXGWYM]O0aS1leFZ_RdX4[M*ZP2[P3UUETWHFRMKL;KL@U_ARMSJ(TK*d]meInnKWe]OXFWU6^]BVYFNTE6CI=GD;IM7CH:FK9DK?HN@IN?IO?LTEQYEQZO\eur~|nvkVWH'QB#QB"UG%WI%XJ&XJ&YL(YK'ZM']P)]Q)]P)]P*^Q*cW-`U,`U,[M([N(]P*YK'XJ'YK'YJ'XI'ZL(ZL(ZL([N([M(ZL(WH&ZK(ZL(_T,bV-bW.bV-^Q,UH'LD+LF0LE.NB%QC$JJ;ALNxrfPbU:`R6XI,]O3TE'PB#PB#PA#O@"N?"N?"M>!QB#RC$PB#PA"PB#PA"SD$SD$TE$WH&XI'XI'RC#O@"N>!O@"PA"N?!M>!L= N?!PB#SD$UF%UF%UF%UF%TE$TF$TE%TF%VF%SE$QB#PA#PA"PB#QB#QB#QB#OA"O@"N?!N?!N?"N?!L= L< K< K< L= M>!L< L< L< L< L= L= L< L< K< L< K< K; K; K< J; K; K< J; K< L< L< K< K; K< K< K< L< M=!M>!L< L= L= L< L< L= L= L= L= M>!M>!N?!N?"O@"O@"PA#RB#RC#RD$;A-4A14A1.B;6B6*?6<@*4>20A9/D?2IF?#<;$==&<=(>=*>B*?A,@D)@@#;:76"8944333321%60 2.0.3163513/2-61#81#6/!5/ 748394!:5!<7$:9&==&;=*?C*@C)<=)<>-?C-?D.BF3CA@D7LD,RC#TE$VG&UG%RC$RC#SD#SD$TD$VG%WH&YJ'YJ'\P)_T+RO0YS/bW-aV-aW.`T-_R*[N(^Q*^R+^S+^S*^R*^R*RQ;CJ;IO>NQ;WN/ZM([M(\N(]P)\M(ZK'XK+MI3@G;-<9+<>YfdYd\S\MPXGTZJQVELSFPXGTXF]]FRWD=I=4C@':<$5:RW=DH4FF2@KA-@B,AC0EH3IJ2II1HI2HI3JK1HJ0FH/FI.FF0GH/DF/EG3HJ4HH7F@GK4ZN)[M(\O([P+:HD,>B,>B,?B.BF-AD-BD+AB1EF1FG/CC>IASP7\Q/ZN*WN-4A?/AC1DJ1DK2DLLN>d]4d]72CG0CH,=D(:@.@F*=A*=B,?C+=,@A+>?/@E0AG4DM7FP4DM3DN.@H8GR1CJ8HS8GR3CL/@I2DM.@H1CK1CI2DL3DM4EN4EO5HN4GL.CF*@D.BH-@F)&8>(9>';>&;>+@B*=@)=@+@B+>B/AF0CH2EI1EF0AF.@D,>C,?D.BF-AE/BG/BG/BH1DJ0CI/BH-@F,@C)>@(=@'=>(B+>C(=@,>B*=@,?B,?B-AD,@A+?B,@B(>>*@@)??)>?)@@'?>&=='>=(?>(>?%<:)A= 66 54$<9&=;':8%78#78%<<&<>)?@'>>&<=#89&9=?MSepu:LS8LS3GN5KR0FK0CH.BH7MT8NU0DJ+?B*>B)<@':>%6;+=B&:>'>@,BE*?A';>(=@*>C0EK2HOAU\:NV,BK*':?%9:"79"68$9:%8;%8:#79#69&8;&8:'':?(;?':@%8>(;@':@(:=%9;)>A%:;'<=,@C/CG.@H/AK2EJ3FK2FK-@F2DN6GP:JT7JV5HT9LW?OX9KU8KT6IS4IS8LV8MW:NXAKD;D@:GG-?F+=F-?H/BJ2EM5HP4GQ;MV7IR8KV>PZAR\@OX;LT?LU=LUBQ[KZcDU_IZgJ]iQdp>RX>QW?OU@PW>PXM]gBS]@R\>QZ:JO@FBFB/J< L;SC%vkTj]EL;I8L<M=N=N<L;J8I8TF$ZM'PA"PA"QC#VG&UF&WH&VG&UF%YK(\N(^R*\O(YK'XJ'VI(MI1:NNDX`PW?QYPX@RZ=QY@T\;PW9NT9MS8OV;PW8PV:PY:PY9MT6LP9LUPXAQZ=NW?PY=NV9JQDR[AOY6GO6GP:JR;KS7GO3EL/@F+9/AF+>C)OWBS]DVb?OZCS^BS^DT`EUcEVcTh{PctDT`9@:?NXFVd=MX:JS0@J,=E1AH3BH:IP=NYDVbCSa=PY@T] H>$J<J8J9K;L;QG+ISO9LT@KF>HA?KDDL@IK9EI?>JKCODKTELO<`W3^P-ZL+^Q.]O/\N/ZK+YJ*ZK+cV5d\;]O.]R2^P-aT0aW5hhRU\NMbeBV\?NKNL8HG5TK,WL$VHYL!XL!\X)FQI=NU:LV>NYLT>PZ>Q\Qclj|~u^xueS[_MVZU]bW^bPW\KRXFPVDNUDPXEPMPT?^^D^U5ZO0\R3g^>kd@rpLpqQcn^nxRrlNkaEcY;lfDtqPcfTck\akYfqWUgYacK^^HZW?GQM?LL!N?!N?!M=!M>!N?!RC#TF%TE$TF%VG%VG%VG&VG%VG%UF%TE$SE$QB#O@"O@"N?!N?"N?"O@"O@"N>!M>!M=!M=!M=!M=!L< L< L=!L= M=!M>!L= L< K< K< M>!N>!M>!L= L= N>!N?!M>!L= L< K< K< K< K; L< J; J: I:J; K< L< K< L< L= M>!L= K< K< K< K< K< L= L= M>!M>!M>!N?"O@"O@"O@"QB#MB&EC+FD*G6@D06B5+<1?H<;F;&>>(@A*@C(@A$<>!:: 87 97 76!77$:;!87!76"9976423221335536#69#69#89 67 87535052606/%70 8685634366!52!:8$=%;<+@C+@D)=@*=@*<@+>C,?D4B>BC2IB+RB"RC#SD#TE$UF%WI&XJ'XJ'[M(]P)_T+bW-aV.SQ5BPA2JH0HF.FC3JDDSFZY;_U.bW-bW-`U,`T,_T+`T,_S+]Q*]O)\O(XO,KP<@OD:IC4IC8KDAQG0FH3EB5B9HPAOP?TUDAOK0EG0II.LI0LK.GI1HG,CC1JI3LK0JG/HF>L=CO?6JE)B':>*?C1JI2JI0FG-BE0EI/EG,BE.CE6JM7JP6IO2HL2FFA,?B0EG/DF2HJ@2>6i`2OP:.@D,>D':>&7<*D(9@&6<(:?+=C+?B.CG-CD.DE,ED.FE,ED/HG0HG/GG.ED(?>#<8#:5&?9)B=,E@0FC/B<(<2)<4"84"64);52C+>:+==0@B.@D.CF,>B0AH2BI0AG,?D1CL3DM3DL8HR0BJ3DN.@H.@H.?E+=B1DI1DJ1EK0CH3EL3FK+@B)?@'=?)<@)<@)<>,:4&<=&:=%8;);?'9?*=C*>B)<@)=A);B(9@':@(:@(;?)D+>B+=A*<@(<>(>?*?A)>@*=B)=@(=@*>A)>@-AC/CE/ED-DC,DB+BA*BA+BA+AB+BB+@@*A@*@?'?='><)>>)@?(@<22"77%<<&=;(?>*??,@B*BB*CD-CD(>@%9<"580@F[fl=NU5GN/BH6GN5JP2FL-@D4JP0DJ,AG*>A*;?*>B)?@+@A(=?*?B+@C(>?+BC,BD0EK,BF)=B/DI,AG-@HARYXgo/DM)?D6JRAT\FYc;OV3IO7KQ3GK-CG*=C&9>&:>#7<%:=$8>()=@+?B'<>1EI,@B"46(<>(<@(<>)<@):?'8=(8;&89$88!46&76$9;%87%75)A'*@@+AA.BD0BF0BH,?C-AC*>@.@F.AF2EL1EM=NXES\=MW:KU=MV;LV>NW9JS6IR9KU8LW6JU3GS2FR.BL0BN/BL,=D1@J4FPOYC+>C(;A*=B.BG*?C&:>&8>';@(<@&:<$:;(;>)>A!47"47$6523#89(<@,@F.EI2HP1GM9IN4FJ>PW:JQ7IN,BD0*.(!84/("64$57#34(79'7:&6;"36$59$6:%8;$6:&6;)8=*8?&5;%5:$48&5;"25!15!11#28$37$4:%4:!18$4:,=A/?A5EJNXOPML2SI*QC!OA!M? L<M>M=L;K:J9K:K=MC$EC2KB)L@#JE)SH.SK1PL5EH9BE;?D@9IH4EH3BG2AH1CG2CH>POO[MNYKIWS\bKfc=dY4eZ5kbPUIZ\UdeXN"NO5EL@FQE6GN;MV=O[>NY>LV?LUBLT>IPALUES\FV`DS\AP[J\jJ[hGXeGXdUdggleHiaEZW@>P]|uejdEMRHPTMTX]dgNUXKRWJQWKRWFOVALTMRB^T5]Q3`S5eZHLAKPLU[NXaIV^N\eXdnap}^qfuݴxwm\S:a^PKF5QH2TF#WH&VH%RD#QB#TF$VH%ZM'\O)\O(]Q)^R*`T+^R*]Q*\P)[N(\N)_S+]Q*\O)]Q*]Q*[N(^Q*]Q*]P)^R*aU,_S+YK(JA'@A79@=7@?9C?@HABH=CHVF*P@"L=!_R8YK1L="M>#TF)UG)YJ+UF%RC#PB#N?"PB#SD$SD$XI*UF&WI(UF%QB#RC$OA"QB#VG&SD$PA"N?"N?!N?!M>!M>!L= M>!N?!N?!N?!N>!M>!M>!M=!N>!N?"RC$VG%UF%UF%UF%UF%VG%VG%VF%TF%SD$RC#PB#N?"M>!L= L= M>!N?!N@"N?!M>!N?!O@"N?"M>!M>!M=!M>!M>!N?!N?!M>!N?"O@"PA"O@"O@"N@"N?!N?!N?"N?!M>!K< L< L< L< L< K< J; I9I:K; K< L< L= M=!L< L= M>!M>!L= L< L= M>!L= M>!O@"N?!N?!N?!N?!N?"N?"I?$CB-FB*KB&N@"N?!HA&>@+4=.+906=1CRSN]`>OQM]bSbgjtvL]_2HI0HG";885 :6!;7 <8 968685 9753535352544353524021#5142 53*602447444475!:9!:8534253":9!:8!:7-@B,A':>'E8>C5OF*YJ'[M(]P)\O(]Q)_T+f[0ia3h^2h_2X]B'@>*B@+CB,FB+FC-GFEQ=`V/cX/cW.aV.^T0`W0cX/ZT2KO96E=-GF-IE+FC*DB,GC-GD,DC'@= :494'=9.DB-CB-BD,BD,DE,FE)DD,FE*CB+BC-GE.GF-FD-FE.FD,CD.CG-DE1GH/FG-DD)??+CC*?B&8>+AC,FD)B@-DE/EG0GI-EF7LO?PT>NSC9D=?E4"78%9<%:<+?B,@E*=B*=C):@*8,8,*6-"83(=;%<:-DD2EJ+AC.CH,AC1EH.BD.DE,@@*??-BE0DI2CK/BH+>B-?E0AJ*<@/AH0BJ0BH0BJ2DM4DN.AF+>?.@B+@B-AE0CH.BF+>A-AC,CC*AA&<>"89"7:')=A)B+>B+>B))@@*BA*A@(@=(@>(@=*@>*C?!:6#66&::&=;#::'>>'>=*?@';>&;<&=<,>A(;?&9<"7:#597FMAPX3EL1CH:KQ4IN.CG0EJ0EI*>B*@A,BB.CE0EJ.DH+AB+AB'>>)?@*AD0DH,AE*@D3GL1FJ2FM4HP0FL4KP]lrHZc(=B=OV%:;$8:)??)>@/DF*@@(@=(?>(>?+@A,<@'8:(;>-?E*'>=$=;)A@*CA.EF-CF,CG0FL,DE(@?(=?'B,?D*)I8H8H7H7H7K:M<UF$RC#PA"RC#UF%[N)\O)]P*_T+`T+_T+aU,dZ.[M)TF%RC#TE%TE$WH&ZL(YJ'WH&RI,BD48HG3IL3KK.CB.@C7KO9NP>TYEYa>QW4JN3KM0GG?RXRZFYb>S[8MT4JR:NU3IP8LS4IO.EI+BG+CJ0GK*AD%:>+BE+AD*?D%9=,AD,@D*>C2EL3FN4GM-?D+>C&8>':?);A+>D&8=$6:%9=%:?"5:$8;"59!58!57$8:"68':=(A@*@A)=A)>B*?C)<@(HF9EA8HL3AF6DI>D;>IBSL0NH0MK6AIC5BF/=B4CI5EK1AH3BI1BH6GL3FJ/CG4HK8LP4IM6JL@OKL\XM[RR_SGVR>PV>QY;NT=NSFURKYRHZ[=OVLWMV]LO^VKS;FM?IP>GJ@IPALU?JS?MV=GNBMVDT`DS_@MWALVDNUEOX_d[^V8VJ*VI,UT@HRVGNUSZ_OV\SZ^NW[HPTGOSGPWENUEOUCMT>IQELHRJ5[M0YL,]P0[N.YK,YL-ZN-]U2fc@b]6utDRdfYsSm:MW'6>-BJZhWz~MpwYotWksYuzR|LdlU8CH3@A9EHCMT@IKAJOEPTS`iTbmYjz\sXpjҰ׹gmsty|SL9PE+RC#O@"PA"SD$VH%WH%XJ&ZL']P)]Q*]Q*]Q*^R*_T,^R*\P)\N(\O)`T,_S+^Q*[N(^S+]Q*^R*_T+_S+WI&=C>:@<6A@7@=6?<8?;!N?#J: N?"TF(WI*QB#PA"QB#SD$SE$SE$SD$TE%VG&TE$QB#SD$SD$SD$TE%XI'YJ'XJ'WH&VG&VG&TE%PA#N>!L< L< L= M>!N>!N?!M>!M>!M>!N>!N>!N@"SD$UF%UF%VG%TE$SE$TE$UF$TE$RC#QB#O@"N?!M>!N>!N?!N?"O@"N@"O@"N?!N?!N?"O@"O@"OA"O@"M>!N?"N@"O@"O@"O@"OA"QB#RD$RC#PA"OA"N?"M>!M= L< L= L< L< K; K; K< K< J; J; J:I9K; L= L= M=!M>!M>!N>!N?!N@"O@"N?!N?!N?!N?"PA"O@"N?"N?!N?"O@"M>!L>"N?!N?"O@"PA#OB$?$<<'=>%<<'><2A9FH2\O)\P)]Q*_T,dZ/i`2le5lg9BRE(>>#7:3HBKYBNT8TR4TU4YS0]T/\T2KN6FN9=K=.EB-GE+FB*EA*D@)C?(A>*CA*D@)A>$=:&@>$<:&;=,?D.GG(BA*ED+FD+FE+ED*DB)CA)CA)A@(@?(@@'>?)?A)?@+CC,CE)@A+CC*AB+AC,BD*@B*@@*AA*A@*CA+BB,CE-BE,BD-DD5IL=OS:MQ8KO5IM)>@(<>*?A.BD,@B->D*=A+=B*>A*@-BD.AC6C=8D8=F73A63C<,?>+@B,AD-AC,@B-BC-DD-EC+CA+BB+BC+CA+DC.HG0JH,FD+FC*DA*DC(A>741-72"<8.7+,6-&:6(B?.GE/FG5JM6KP2GK1EJ/EG/DG*B?)@>/EG+AC,BD*@C0CI4EM1CK(=@(=?*=C+>A,?D,?D+?C/BI0BJ3EM,@H,?D+?A+?C/BH*?@)@@.CC-DC&=>#:<48 67%;<(>@(>@*?B)>B*=B+=D(;@+>B+=B-@D,?C-?D.BF.@E.AG.BF.AE/AF.BF.AF/BF.BE,?C-BD.AF2DJ2FJ1EG0DH/BI1DJ.BG/DF-CE/DF.BF,BD+@C+@A*?B+>A-@B,AC,BB,BB,BB+@A)@?(A>*B@)B?)B>(A=(@=(B<(A=$;9)<;+>?';=&:8$;:#99&9;(=>)=>+AB-AD+>C&9=%9=JWZ@MS2DJ0CH.CH.EJ-BF,AD+AB+@B.CF+?C+BB+BB)=>->C2EJ+AA*AB)?A%:>)>A'>?%<=*@B*AC)?@2HKPW0EI1EI,AD+AC(??*?@0CG/DJ*>B*@B*AA(=?$7<(9?%9<&9<$8:&9=)=?+@B*?A)@A*AB/EI1FM-BG-BD,@D+?B,@C)>@&:<.BF&:=%98)>@/CE+AB&>?)?A(>@'>>&<<'<="57&9;$::(=>2FJ0EH,AF-AF+BE/DG.DF+CC2HK3HL.CI-CG/EG.CD,@@-@C)>A*>A+?C-?D/BI.AJ1CL3EO/AJ.BJ/CH,@E,>D6EM6EL0BI3DLO[%;<(>@"8:&:=*>B+>B*=B':?(;?&:>!49(=@#8:#99 7662634366 551153 77 77#9: 87!88";7!965514361503032537 58#8:!47 3524*=@5HL2HK)?A%::!44$79$68!34#67#68#78"46$67!56!33%8;&8<'9=%59'6; 25"37"38"37!27!16"36"24.6/.60#10%68/85"13!14#37$36$37+:?2>@3AF2CG3CG3DH2DG4DG5DH6EI2BG:JQ4CH2AF0AF1BF5CE3CH5DI5EJ2DI2DH5FK7GN7GN8HO7FK4CD5CG4CG6DG9FK6DH7DH4BD5BG3AG7EL6DI8HK>NGPY=NV?PXP]UQZHYfX?MVJRAMVCOXBLUBMV@KS>HP@KTANX?KTCMUBLTAKSFR]JY`hhWXYHHMGAJQ9CH@JPALSFRXFRXDOVHRYDPXALS>IOBLS?JR=IPGLKZM/YJ,[M/YJ,[M/XJ,UH*YO.YQ.YO-d`8epWPdeI[[=MIFWPR^Lgi@jh>c_7a[6e`9eb8fe8hh8KZZ=Q\>Q\:GL9DHLR9GN>LQ8FM6CI?LR]io՛j_FTF&M=!M>!N?"O?"O@"O@"^S,]R,RC$QB#RC#RC#M>!N>!PA"TE$QB#RC#QB#SD$WI(XI)UF%UF%RC#RC#RC#PA"QC#QB#QB#SD$UF%UF%UF%TE%SD$SE$UF%VG&QC#N?!M>!O@"QB#RC$TF%SD$RC#RC#O@"O@"O@"QB#RC#SD$SD$QB#PA"PB#PB#PB#PA#QB#PA"O@"O@"O@"O@"QB#QB#PA"O@"O@"O@"O@"O@"PA#PA"OA"O@"O@"O@"O@"N?"N?"N?!N@"PA"O@"N?!M=!L< L< L< K< K< J; J; J; K< K< K; K< K< L< L= K< L= M> M>!L= L= N>!N?!M> N?"RC#RB#PA#PA"O@"O@"O@"O@"N?"N?"O@"N?"N@"O@"L?"I@&4=.6C;1B9-B>n}Ucc:KJ9MQ{~Qdf/FE-@A#86!:8227575517386744243425363523141505241426442212142323333447787!:8639583522-3.4241304241533323!79"79 56352515"69#9:%==(?@'>>'>>&==%;)A@)@?,@?LVAWZ;XT2XS0XR0YR0XR0QT6(<;(D@+CD+CD&@?%><&>=&==$?<$@<$?: 85%?<&AA)DA$>;'A?(B@(C@)DB(CA&??&??(B@)CA%;="48#7:%;;$;;"79&=>(=@)@@)?A)@C,BE,BE,AD)>A&;>)>@)?A*?A)?A+BC-DE.CE3HJ8MP8NP;OR';@)=@,@D+?C+?D*?B,AE-BF+@D+@C2BBPK;RJ6RH1TH-CH;-CD*?B-AE+BF*>D,@E,@G(:@&:=+BA(A>)B?)@@(=>+CB-ED*@@)?<)E@&@>)D@'B=(C>(C? 94#<7"6/!;6!:6%@;+FB0JH0IG1II.FF-FE+CB&>;(B>'@>+BB+AA,AA,BC,@>-CE1EI,BD0DH-AE+@C)@A-BE*@B+@C)=@1CJ/AH-@F0CJ-@F-AF+?C+@C*@A.CD+BB)@@'?>%<<&=>%=<"::#;;(??+?A,AE*=A)=A,AD-BD-@C+?B+?B(;?(<@)=B*?B,@D,@D,AD-BE-AE*=B*=A+?A,AB0CE1CI/CF-BC,@D0CG-?D,AC,AD,@C-@D-BE.DE.BE.BE*?@,AB-AC+@A+AA*?@,CB+CA*BA)A@,DB+CA)C>(B='@=+AA%5:(:=->=&8:%=:)@@(>?*>?)==)??&<<*AA,@D*=A&9=/@E+C'=>)A@)>@*<>)=?2GK8KQGV]>OVL]dSdl5KQ2FM/CJ*AA'=>+@C(>@(<>*>@-BE-CF(>B'=@)>@)>@*>A*?A(:@);>*?@(@?*@A(@@,DE-BF/DF/CD/CE0FG-BC-CE+BB,BC-CC#;9(>>'>=*AA)@@(??(?@(>@+@D)@A(@@)@A)@A)?A)>A)>B,@F*>D.BF-BD1GH2FI,BC+AD-CI)@E*?F)>B)A@(>?)=@+?E,@H-AG-?E,?F+>B)MWKZgDT`DVaCS^AS`9LV;P]>R^@P\:LV6IS5HR:LV@PZBR\BT_@Q]L]k`nz_nyN^hO_jRalN^jDU_@Q[anwJZd6IR6JR4IP8KT?R[FXbDU`AT_7NXS]H^hG`mB\jCUSOF(QJ2CF8JL!O@"O@"PG*MF,LN:ALA7A7DH5/A>*@@*>>+A@-DD&?<'?=.EE/DF,AB,?A+?@,AA(@>)@?,BB.EE.EF(A?&><(><%<:$<:"97"98"98":85243 554466$:;+?C1EJ2EJ)>B"79$9; 4644 66 66!6551524244%:;63#;9"86!877272631044':>$8<25"8;+AC#9< 5724 4733022226$8;1FL-DG":: 86 66'8;'5;!04#57$69%7<#79&7;#59"46$87(;;(;=!56%58$48#36#15 17 16 04/4#26082/84&49.62)5:$26$38$46#24$46*9>0=D/=B-:?.?6=<;>6A@2=>12:7*8;+;?/?C6EK=JQ;IO6DJ1CG1CF1CG1CH3CH4CJ4CG2BH0AF1AD4CD5BC8DH9DJ;GL8EJ9GL6DI:GMLQC/=D.?F,@E.AH.@G0BI.@E1CI3HM2JM5KO5HN5GM4FM5GN7IQ7GO:MV6IQNX;IR:FP8EM;GNANV@LU>LV?LVANVCNVDNVCLS@JQ?JR?JR@IQ@IP=GM@IPAKR>IQ;EJHO?IOGF;HP;HO;GOJL=A:@JO?IP=HN>JQFPVDOVEOVDOVCOWBNVR^frz⦪\emT[XVXO[XK`\L^`ZVL5RC"SE$WI&YL'\P)bV-aV-`T,]Q*]Q*]Q*]Q*]P)]Q*^R*\P)ZL(ZL([M([M(WH&MB'DJCEOO:ED>HH7CG4>@5BBANJANR8FMlvzl^GRC%XJ/UF)J;M>!N?"M>!PA#RB#UF%PA"O@"O@"QB#SD$UF%QB#O?"RC$QB#QB#XI*YK*VG&TE%O@"N?!O@"RC$QB#PA#O@"QB#SD$SD$RC#SD$QC#SD$QB#P@"RC#TE$VG&YJ'ZL([M(ZM(\O)]Q*YJ'SE$RC#RC#PA"PA#PA#QC#SD$PA"N>!N?"O@"O@"O@"O@"PA"PB#PA"O@"O@"PA#PB#QB#PB#O@"O@"O@"PA"RC#RD$RD$RC#RC#QB#PA"O@"O@"O@"N>!N?!M>!M=!M=!L< K; L< K< I:I:J:J:K< K< K< K< K< L< L= N>!N?!L= M>!M>!M> L= L= M>!N?!PA#SD$WH&UF%SD$RC$SD$SD$PA"O@"O@"O@"O@"N@"F@%8A23GCAVU,CB(B?=RU?QRTee>PT=PTAWY,DA'<;!83"968551311/53645274857453859593625151625220203141623/5153203153646474604-304,2+47%8;(3-#61!65!424220 43553425 46!7745!78!88"99$<;'>='?>&>=&>="8736DJ5`U,cX/dX/dX/dY/eZ0h`2e`76D?1505"78MVBWX=WW<#>;#=<#=:"<9#@;#@:":7 96 9765";9";9$?<%C>%B>'D@&@?&B>%A<$=;&?>$<;":9#::#::!:8$<;&?;&?=+CB/EG,CD'<>$=<'??+BC-BD,CC*A@,CD*CC,FE.HH4NLCW];PT8KN2FI.BG,?D+@E*@E';?14#7:!68!58';?*?B*AD&<=(=?3B@9?;JIERL?UK5UL5HK@3FF+@B-BE,@D+?D.CI0EL0CJ-AG+?D&9>75$<:,CE0GJ/HH-EE#;9 64324264#<9)B@)@?+EB%>:%;5%=9%=;#;8&?<&?6!<5!<8#=9 7060 ;4#>7#@8#<5"9361 62":7%>;-ED$>;(B?)CA/EF-DD,CB+C@+B@,A>,@>,DE,BD0FH.DH(?A%<<)@A.BG/CI0BI)C.BH+@C)>A-BF,CC*BB*AB(?A*@C&<@)@A)@B(?@&A*?A)=@*>A,AB-@C-AC,@C*?B-BE.BF,AD,@E.AF.CG/CG.BF-BE.BF,@D+?B-@E0CH/CG.DE,BD,AD.BE+?C+?C,@D*>B*>A+@B,BC0FF.FE,DC.CE+?@(<<*A@*B@*C@*B@*B@*B@*C@(D=*C?*D?+BB.>E.>E*<@)>=$67$:8)B>+A@*=>*<>%9:'>>*BB*@A,?B)A,BD/DF/DE+CB+BD2DI6KON^dVfm^ox[kv(<@*>@(0AG.BH/BG->E*?D+BD&;=(;?*>@(;=&:<&==(>>)A?,CB+BA.DD4JJ4JK0GG/HG+CB-DC,CC)A@&?=*A@(8;'7:'>?-CE0CG/CG*AC&>>*>C(=?(<@,@D(B(?B)?B*?C,@D0EH*?B+?B,@D(=A'=?,BD+@B)?@'>?*?@';=$7;,@E'=@)@A)@B(?C,BG5GO8HQ;KT6GO4GN2DL9JR4HO3IP2IP6LT9MV9MV9MX;NY:NZ@S^DXe>S_8OX:NX1GO3GQ3EO7IU;MX9KT9KUDS]AR`FVbAQ[BQ\JZeHWaOZ4HR6LZ7LW>S[>RZVhtEV_CT]J[gHXbFW`O`lEZePcpOcqPfrAYd@PQOL5WR6?SR9OW:QW;RYEY`>RZAWaGXYRQ<^R-^R+_S+aU,cX.dY/aU,]P*\O)cY.YK(ZK'SE$PA"PA#PC$QG(ID-DC0CB2NE)QB#PA"N?#F?*DC..8./;4BC4?D7*:6):<';;)>=+AA*BA/FF/FE0HG0HG1GH$<:!97";9!97";97474 95%>;$=8$=9'?=#;8#97$:9%<;%;;/DI0DH%<=64 86"<9%<; 56%;;$::"77'==#98"95#<7&@:$>8#?8&B:7340!:664!26!6643%<<33!78%<<47%9<664411326443!79&:=.DI/FL$;< 87":8#99$88(9<%49%9:$6;$6:'6=(8?)8?&49&49%39 27!37#49!26!27 17 15 26$48%6;%47$48)7=&44(66#26!25$25#38(790;:4<78<4><-E='J=!K>!F<$68.,51,9<2@F2@F2?B:>7.;=,>@/@@/AB.>@0AB/BD.BD.AE/@D0@E1?A4CD7CC9EJ9EJ:FK:FL9FJ8FL;HP>KS>KS=KQJR7EKF2?F4@G7EN/=E-;B3BI9HN1><5EK6HP5HP4FM.@G0@G3CK3EM9MV6JR9NW8LS@T];OXKT=JS@KR@KR@LT@LT?KSBNV@IP?GKBJP?HN@IO;BD:DH*BE1P]KCNG;GIHN?JOFRT?II7EM@NXʽ¯JUZϨtUO>QB#TF$WJ%[N'^R*^R*^R*]Q*aV-\O)`T+aU,_T+^R*\N([M(YK(YK(YK)[M,UF%I?&@D:EKF:DE;EE@KJBMN:FM?JR=IP=IRfovǝXJ.M>!TE&PB#M>!O@"M>!L= J< O@"RC#N>!L= L< L= M>!QB#RC#PA#M>!M>!N?!QB#TD$QB#PA"N?!N?!PA"UF%UF&RC#M? O@!RC#VG&TE$RD#UF%VG&WH&WH&WH&WH&YJ'XJ'[N(\O)]Q*YL(SJ,QH*XI&VG&UF$TE$RC$PA"RC#QB#QB#QB#O@"N?"N?!N?!N>!N?!N@"O@"O@"PA#QB#QB#QB#QB#QB#PA"PA#RC#SD$SE$SE$SD$RC#RB#PB#O@"O@"N?"O@"N?"M>!L=!M=!L< K; K; K; J: J:K; K; K< J: J;K< K< L= M>!M>!M>!M>!M>!M> L= L= L= M>!N?"N?"PA#P@"PA#SD$QB#RC$RC#RC#PA"PA"OA$M>"KB$=@+?NGbrv@TWM`gDW]=RU<$97'?=!:6 722/2/2/315242444241424273838261 4.5051 7340200/0.2.!3,3.1.000.002/2/0,1+1+1,$2).5(0,&4)::$I?"F@&<='-8,.9./,011234 24!68"58"79#8:#:9#=:#;9";9%98"68+<8MK0`U,aV-`V/UO/b\3h_3f[0jb4nj:5@:2524 47!8836 683625566786 =7"?:!>8!<7<7:6:7<7>8 ;6!;8%?;647594:495"<9#=9"=9!<79584:6 <8;6 <7#?:$@<%@;#<9$=;$=<"<9"<9 67"89&<>%=<&>=&=<'@>2JK@U^?SZ>QZ2HI(>>$;<$:;$99$67-. 23/1,+00&9<);> ,-//;F=2A;-@<:F@BGALF;ME5?D;7DA(;=,BF2IM/DH/EJ,@E,AG*@F-AH0EM,AJ(;@$7:33!67)@A+CD*CC*AC(<@'$;;#99 4331(C>&@<$=9$>:%?:$>8%?:$@:%=4#=7!;5 93 70!92:3 ;4 <5!93 :6#=:&@=&@=)B?*DA'?=%=;$@<,ED,ED)DA)DB+EC+DA,@;*DC,CF'=<+BC-CF'?@%<=(?@-BE,@E+@D*@C)?A.DI)@D,BE*@C(@?'@?(??+BB)@@*@A.CD*BA*AB*@@)?@(>>)??,AC+?B+@B-BD,AD.AE,AC.BF.AE,@D,@C1CG1DH2FJ1EJ/DG/CF.BE/BE2DJ1DI1EI1DH.CE.DE-CE+AC,AD+AB+EB+CB)@@*BA+BB)>@+AA)@@'@?(@>(A?+D@*C@,DB,FC,EB+EA*D?,D?*=A0BG+<@(8=%:;*>< 56'=;*B>(>='=;*A@-EE+BC,BD0CF+=C):?,C,AD.DF,@B+@C.DG1DI6IN.CG*@@-BD*?@.>C/@E+@B1EI@(>>)?@)=@)=@'=>%9:&;;(><+BA,DA-EB-FC.FD-FC+BA)??(<=2CI*6;*AA)@A*?A(>?'=?.EF+CD+AE*@B%<@(>B'>A&B4EO2DL4HL(??(=?)?B*?A+@C,@D+@C+AB'==)>A(7:&:<'=A(?C-DG+AF)AB+AD-CG.BH0DJ/DI6HN8IQ2GN7KS:QW4KR4HQ2HPW]@X^F^gCUZGMCTN4[O+`T+aU,`T,TE$WH&ZM(RC#VI&RJ.NK1HL;0AB0BE/BE0CF1B>QG'RC#N@"RC#P@"KC)BJ:;#<7&<:#<8#;9 54$99+@@+AA*@A$::411/4253637453"87 64622.3.6186#99'=> ;76072#=::55.4-62301045%;='=@-@F9LS571132747676!8966&<>5JR,CF%;=(>?#::$99+=?*:>$69$7:$49$29%39%48"77 35130212 37$7; 26!47!36#34"59$7:#69%68'68(9<5:039/58-<:)A;%E;"<:)7:-9;+?;)I="K>"K>"E<&@:&=<.@=.><-@<+G=$@:')3/'9<(8:-=?)9;):;,==+=>,>@+;>,E1BH1@G5EM7GR2CL4DM2BJ1BK/?G3BI7HQ4DJ7JR9MP>QP:MN6GK6DJ8FO5EO7EOJR:FN:GP:FN;GP@JQBLSDPY@LT?JRALTBLQEOTCLQ@IM@IP=GM8CJ9CJ>HOGM-=@6=?4;@86?>7DJ5@E7?A3<<<<3A?/JA&LL<>EDDQWkwzippluw篵}oukPNATO@O@#QB#SD$TG$WI%WJ&XJ&[N(\N(\P)aV,cW.cX.^R*]P)ZL(YJ'VH&YJ'ZL(cV7\O0@D:DSVӞouzYahelpZbhƈ~}wyvduo[]O3O@!TE%O@"O@"N?"O@"O@"N?!PA"N?!N?!N>!L= K< L= N?"N?"N>!N>!N>!N?!N?!N?!M> M>!N>!O@"QB#RD$RC$PB#JD-KH7oyuYVFOA$UF%WH&WG&VH'WH&VG&TG(SL1VH'WN3WI'XL)OI-XP10BA,>C@E6II2IG3QD%PA"O@"N?"N>!N?!O@"PB#QC#PA#O@"N?"O@"O@"PB#RB#RC#RC#QB#RB#RC#RD$RD#RC#SE$SE$SE$SD$RC#RD$QB#PB#PA"O@"PA"O@"N?!M=!M=!M=!L< K< K; J: K< L< L< L< L< K< L< L< L< L< L= L= L= M>!L= L= L= L< L< M>!N>!O@"PA"N?!M>!N?!O@"PA"QB#QB#P@"PA#N@"D@%AA(8G?>PK6KE&?<,EC6MO0FI9NS4MN-ED$>:72#50"5020311000102030303042414263516162 :585626272 7262412/1-2.0/.+1. 3.0,0./-,',(%1'#2)/+%2*0,/-.+/)&2(9:&KB%VG%XI&UG'IB'DA)<=);>,3:+(5- 230023!66'861>48H?7F?8FB8B<9=43:2)@A*>C)=A'<>(;A(;B+>D+@F%7>(9@&9?*?F0DM(9?':>&==22-CG'A@)CB&>>&>?&>>(@@%<6 ;5939293 ;4!6/:283;6 <7 <8+FD+DC'@>$=:#>:"=9$A;*FB&A<%@<'C@+FE+FD*CB&?=*EC$>=(AA'@@'?@*BC'=@&>?(AA,DG-CG+CF)@B)@B*AA+DC0FH,CD*B@)A@+CA+CB+CA,DB,CB,CB-CB-CB0FF-EE.ED.EE1HI.CD/DE0DF-CD.DE/CF/BF/CF1DI1DH/DF/DF/EH/CH/CG/BG0CI3FK0EI0FG/EF.BE-DE.DE,CD)@@'=='==(@>+BB(@?*BA)>>+AB*@@,CB+DA)C?'C>+EA)D@*CA+CA&:<):@1AG/>C+:?';<":8*;< 45%:9&=;'?=,CA)@@(??'?>$<;%;<%:<.?E3GL1FJ6HN9MT3IN3IN/DJ-DH*?A*?A)<@,@C+@A,BB+@C+>D/CG/EJ-CI,BE(@@)A@*@A+AD)?B-BD1FI8IP=MT6GO5JQ?QXJZbGX`;PX8LT:NU8KQ1EJ/EH)AA*CB.DC+BC(>@(@C+BF.BHGW]8HN7GM)=A)?B(@B$=?%==+?@(<<'<;(=>'$99(?>*B@/FC0GD,DB(A?-CE1GH)B?*BB(@@+BF*AC+BF(@D+BE*AB(?A'=?$<>)@A+@C)=@1DJ2FK+AC(?@(=@*?C.CH+@G,@G2FL+AF,AD)?A-BG,@E,AF/EJ/DI-CI,AG0EJ4HM5HO3GM2GN8MS=OW9LU;NVDV_S\M^jJ\fAT\IZePcq@GCO? P@"KN<4GR7JTJ\hUj|NbqCVa@Q[EWaBV`=R\8NU:OW;QY4JQ:OW9NU:NTAS[BT[M^hK]dFXaDXaNQDVO5YO-\P*\Q,]P)TE%ZO,WT8OUC>QM5NP5MN5LN3IK1HI4JN4IL3IK6IJ5GH2HG5IF6IF6HD5KK2HF6KN5JL7LN8LO7LP2JH2JH*C>&=8(?<%:8&;9'?<*@>(>=#;9!:7!:8$::(?A,CD$<9#;9'=<*@@,@C0EH0EG.EG 963.635173$:8#97&<<&>=&=<)@? 87!88#::":9 ;9":9":9#89%<=(B=!;7725/624/2.0/12'>%<;#;9 87!97 76 7645!68 66!66 55!45!56#79"88"7754);="79 57%7:"48#79+<=%8;&6:&7;)9>'9<.62)53"57&79#47"12 03/:68:-67+9;+J>"K>"K>"K>"H="G=$H=$J=!?:&+86'89&67$57'8;(8:%69(8:+:;(8;'7<,<>,:=.=A2>A2?D5=;5@E6BF:A@8BF6CI4AF4@E8DK;FL7DI8EK7DJ6DI4AG6CH5CH4AH2@F4BI6DL3AH1?F2@H2@H5CK4BK4BJ4CM1BL1AK5BI6DM2BH5>D0D0>D3DK.>E1AH4AG8EM7EN6EN4DN9HR>LUIQ@KQALTIP@IMEICFHB=HM;FO=HO=GM:DI:DI:EJ:FOJLDTL4STGSPSC$SC$UF'WI*XJ+SD$SD$TE%ZP0^Z4XU/[X6WP,ZS/`[5_Z3gc;onCjj=rwF}oQ_a:JV5HSDZiG]lPi~Nev>Q\2BE;GN:GO:GO9FN8EM4BH5?D9CI8>;=>6?=0J; J; J;JB.ROEJOMQXZgqx͌ly|glhTK6PA"QB#VG&QB#QB"SE$SE$TF$UF$VH&WI&[N(]P)[N(]Q*YK'WH&ZL([M([M(YK'YK'YJ)PE)INBxÿ⣥jlckspqp]|s^O@$N?"QB$M>!QB#TE%QB#M= L= L< L= M>!N?!O@"O@"N?!M>!M>!M>!M?!L= L= M>!L= L= M>!M>!L= N?!O@"O@"O@"P@"QD'@E:9MS]kn9F@=PSk}FX\NH1XJ(SE%4EE?E8KH.8MS^syN[TZidYik4D>;NW+@D4GK4EL3EL2FL4D@F@)N?"M> M>!N?"O@"QB#QC#SD$RD#SE$QB#PA"PA"PA"QB#RC#RC#RC#QB#RC#SE$RD#RC#RC#QB#RC#RC#SD$TE%SE$RC#QB#PA"PA"O@"N>!M>!M>!L< J:J9J: K; L< L< L< L< M= N?!L= L= L< L< L< L= M>!M>!M>!M>!N?!M>!M>!M>!N?!O@"PA"N@"M>!N?!O@"O@"PA#PA#QB#PB#MH&>D.3C>/FC.FF*B?Qca-GF-ED7NP(CA,FD%@=#<9833/'3,!3/1/0.20205342412.3/514/$:3%9061&92%:3(=5":463414354112110102021/,1/101,0+-+1/ 1*+4)4.(6,0+1/(3+/,/+.,/.-7-PE&XJ'YK'YK'XJ'XJ']P*^R+VG&PC$QE'VJ'YK'\M(aV,d[1DH2-91#5101000101-235(/':9..1021201122/103354400546374838373624041533.65#99405/727271618564849471844175417271;573648684748674!<8'B>4LM%:<&;<(??'??(A@'@?)A@42,*23(=?)>A*BB*BD)=B':?$6=!29$7>*>E#6=(:C&9@#5:!16 56&=>(A?*C@(A>&@>(CA$;;";9!764321 85 7684";8!>8;5:5:4:5:595 ;5:4"=6!=5#92 8162 95":7&?<#=: :7#>:#>;$><%@=(C?$@<">8%B<&C?+HF*FE(CA$><&A?&@>%@>"=;%>=%?=*CC&??'@@*BB(@A)BA*CB(@?)B@+DB-ED,DB(A@.GF/GG2HJ/EE,DB+CA+C@*B@,DC+DB*CA+AA1FG/EF-DD+AC.DE*AB-BD/BE-AD.BE-BD,BC.BD.CD/CE-AD-BF/CF0FJ1FI/EF/EF/DG.DE,BD,AD+>A+BB-DE.FE+DB,BB*DB*BA)C@(B?'A='D>%A<&A=(C>(B@(C?)>?&9=&9=*;@+'?>(@?*@@+?B4EJ0BG;KQ@(MS.AG-AD8LR3GJ.DF*AA&>>'@?)@C'>@)>B)?C-CG6JO@OV2EL-AF,CF*BD(AA)@@(>>)A>+C@*A?'=<%=:)@=(C=*B@+BA*AA,BB-BD*@A'=A.BI+BF0FL/GK7JQ5FN.BG&=@(>C)?B+@B)@@3HJ,BB)@C$9>,?E,@E*>@+?D/CH/DK3GN4GN8IP?OW7IR6JR9LT6IQ2FM7JQ:JR7JQ0CI4FM3HL2IL8LR7JP0FJS]7MS=QX4IPFNHLPHLM?+BC*AB';>*?@$;<"9:*@A/EF/CE.DD)??63626485516141%<:+@@)??,@B0DF'=>+AC(>?#;:6421 776564 87523122221324/FI4JO/CH;OU6JP0EH(=@-BD7IM7HL(=@ 79!7965 88!78"99+BE'@A*BB,CE0EH,DE.EF'??'>>#::7776!:8 8766%8:&9:!66%8:*<@#99$9:"78%87!77(6=+5545/40402 36 45(63;<-H="J="H0=@3==1?B2?D4?D3?F3>>6=:5@@2?B1>B5@C5BD6CG6CH8DI8EJ4CH0?E0=D1?F4AH6CJ1?F/=E2@H4BJ3BJ6EM5CK5CL3DP4CL2@I1AI3DM4DM6FM6DL.:?4CK3@G2@J2>B2@G6CI2@H5BJ8EL6EN6DN8HT:JV:JUHOAJRAKQ@IO>IPAKPJQ:DJ:EL>EAKF1TE%R`gM`lRgrlk^[XIVH)aXA[UBaW>XJ,SD$UG'TE%XJ,RC$SD$SD$RC$RB#RB#RC#TF'VM,UO+UP.YW7]\6db7ec8prBrvFuzIs{L{det\^uw4IS8MW:Q^G]lGO@JRAKT6I<#L=!L=!L=!L>!PPD[fkJU[[gn}RVJSO@KG7TI3O@$PA"RC#N?!M>!N?!O@"PB"QB#RD#SE$UF%WI&aV-\O)VH%VH%WH&XJ'YJ'\O)YJ'TE$UF%VH&QH1RVIz{_mqBPVBOW!L= L< L< L< L< L< L< L= M>!M>!N>!N>!M>!L= L= L= L= N>!M>!M>!N?!O@"PA"RC$QB#PA"KC,GLB;JLAIBMRIAH>>LJ:KI3FEMI1HK9>E60EC/GJ-GG8LUYkuJ_f=UW:R],DF-@C/>E.>G7DL9HR0DJJ]bThk6D>S[MMB'N>!N?!N@"O@"QB#TF%SD$QB#PA"PA#QB#RC#RD$SD$SD$SD$RD#SE$TE$SD$RD$RC#RC#SD$SE$TF%SE$SD$RC#PB#PA"PA"O@"P@"M>!M=!L!M> L= K< L< M=!N>!N?"O@"QB#RC#RC$QB#PA"O@"N?"N?!N?!N?!N>!N?!O@"P@"P@"O@"O@#IA'FC'4C9>PU5IL*B@-EB+EA.HH(DA#;5&>872503/305220 312.0/1/..0-101/2/3/5/):0?@,ND'[S.bY0\R.[N*ZN*GB(7<+4121/00/12220.312110/.0/....0-1,3131'4,28,"30200,/-/003.7/SF&VH&YJ'ZK(YK'ZK'^Q*^R+\O)YK'\N(YK'\O(cY//:+1.2131...001/.3.4/02,/,0452455451221.2+10314141332524163547575765362":83.3-1.6071746451606273735010224/5/826393 ;6"<8:6$?='A@/HI;QS;NR)@@$<< 97 86";9";8"71.)2,41!656466#79!78"89#:;%9<&:=16"5:(=?(>@(?A(=@&;>&;?&:=#8:"9:04#7;'?=(A*?B"5;05151624 56$:<45 77";:$><#>;&B=$C<#>: 974041"<7:6=8 ?8!>6 >6!=8!=7 :673749494:4835.7384&?<&>=%<;#=:%@<&@>%?:)C@%A>$A>'B>&B>$?9%@;*FB'EA'C?$><&@<$A>%@?%@>&@>$?=%?>)CB)BA,EC)B@)B@*B@*B@*BA+DB+EC*EB+DA0GE.GF.FF,CC)CB-FE,CB*BA'>=(?=,CC.DF+CC-DE-EF+BC+BB+BB/FF,DC-CE.DF/BF0DG.DF)AA.DE/CF,BD,CD-ED/EG/DH-CE,CC.DD-CC,BC.BE+BB+EB-GD,GC(A>,FC*D@'B=&A<$@:!>9%A<%A=(D?'D>'C=(B?'<>(&7='<=)A=!:7-=>$6:)@=.GC)A>(?>(@>)@?'==97$<;)>?*=A0@G7FM>OW9MU3IP2IN4KR2HM-DE.CG-AF,@C.BG.BF.BF.BE0CG.AE.AG)B,BE(;?,?D,@E*=A*>B+?D)?E/@H9JQ6HO:JR;KR=LS4DK?NYBQYDRY6FKARW1DI7KP6JQ8LP2GK:NU6MS.GP.FL)@D*AD/HK6LR3LP+EH(AC-CE.FG,EB,EC,CB)>>*@@,CA+E@(@>,BC-ED*@?,AA*AB(>@&=?%>>+CC0FH-FE.DD2GJ/DI)@C'=@(?A/FG.FF(?@'>@&<='<>5GL7IN9JP5GM-AF2EL,@G2CJ0CJ1DK4HP8MV6JS5MT:PV?NV8KS=NW>MU:JQ4GM3IL2HK0GI/FG0HJ7LN5MN5MN2MN3LP2LO0FN0FM4NN6KO0EL6LO8OT;QW;PU8MP6LO0DG3FL5JP7MQ3HN2GN6LT7LU5KR:NU=OY:MW7IR:DEKB*WH&XI'VG%WH%VF%WH&XI'WH&TE$RH,GV^O`kGYbAT]N`kAT^AT]EYb=RY6JMIC*TE$ZL(\N(]P*]Q*^R*]Q*\P)\O)`T+]P*_R+^R*^T.QQ5DRI7NP/B@0DE0GG2HJ3HK:OT?RY:8240*<=#66 54$;:$<;'>=$;;(?A2FH;NS/FE$;:#88 7553 75":8 95 85 :6$>;#<9!:7 744.3-2.55431021!88!98#98%;<)!67337463563145#9:%:=+@D)=C&=C,AG2FL*>C.BG4FL2DJ4GL3EJ5GL=NU.CH,AF,AE$9<-BF;MT3FL6IMFXbJ]hK\fDU^8KQ=OU8MR7JP8JO2FJ6IM1DH(;>%9: 6642!87#9:#89(;;!7723$8;#6:#6: 28#58-5,<:(K=!K>"I=!!1-!4417,>9#47++85#56"3638/(51"20 35$77'89(:;'79(8;)9>,<@*8:-=>-=@,::.;<0>>1=>2><0>A4AE1=>-;>1=>2?@1=>0=>1=@3?B3@B4AD1@D4CI7EI4BH4BH1AG0>E3AI0?G0@I3BK3BK.?H/>E,;D.;@/>E/>F2@I0>G6DN3AJ0@J7FL2BK2BK3AL1@H1>E.;B3@F9DH4?C5@D7CH8DI7CI8FN9HQ?JQ?JQ?IN?JQAKQBLS>IQ=HO;FNHQ@JR@IN@EECFCBGE@HJAHGID2RB#VI,[sjdTabRetLSRSPBTM:TF(XJ,TD%UG(VG(UF'RC$P@"P@#PA"P@"P@#QA#TE'VJ,RJ+OQB?MW;KU=LQHUOGTSMZQAPS?PZ7HP8JS:>9:CG=JR@MV@KTAMWDOXAKTCNVBLR@JR;GN=@8J< M=!O@"QB#PA#OG2ORKPVW\flbfcI:K< O?"RC#O@"PA"RC#PB#O@"O@"O@"QB#RC#RD$XJ&YK'YK'YL'VH%TF$WI&WH&UG%UF%WI&TE$SD$XJ'VG&RD$ME->F@JY`APXAOWPY[T[_覞v_bU;M>!N?!M>!PA"O@"QB#RC$QB#N@"PA"O@"M>!M= L= L= L< L< L< L< L< L= L< M= M>!N>!M>!L= L= L= L< L< L= L= M=!N>!N?!N?"PA"RD$RC#RC#SD$SD#RC"TE$WH%RF%CH7;IC1FH2ED0HH/EJ.BJ/BK2CO4FP8JXFZlFYgPap;LW3?G6DM=KU;GP3BJ/@F.AF6NOgx{WhfHC+M>!M>!PA"RC$TE$UG%UF%RC#QB#QB#QB#RC#RC#RC#RD#RC#SD$SE$TE%SE$SE$SD$RC#SD$SE$SD$RC#SD$SD$QB#N>!M>!N?!N?!M>!M>!M>!K< K; J: I9J:J:J; K; K; K< K; K< M=!N?"N?"PA#SD$TE$RC#QB#O@"PA"O@"O@"O@"O@"N?!N?"PA"QB#PA"O@"N>!L>"G>&5@.,<37JK/CE6KNH^c;SV.HG&@<*EC'@<3.1,3,4030201/311/10102143414261>?*TG&XJ(XJ'WH&WH&XH&XI&WH&OD'ND(511/1/111000312.20403/2/0/.,/+3-!2+ 2,3131422-1/11.1.0==(UF%WI&D?%RH'_S+XO*ED(PE&VH&VG%XI&YJ'[M(\N):=(/-/-101-0/0/1/2/0-2316356:4454464721580311202/2/3.50515061624140635/525354876385424/3/5276969474 974/4.82823.84(A>BUY%==&:>(?@'??"9:"48 77"9: 57(<@#;;(>?%7;"29%5<%:<#:;4604+./2*)+BG'=>$:;'?>(@@&?>!:8"<:$<:41.-1/2174 =7>7!?7#A9"@9 <7!=7"<8"<8868461 :7835/6193%@=/HH%><'A>(B@(BA'A?&B@)DC'C@*EB%@<#A<#>:#?:&B;&B<'C?&B?$@<%@<&B>)DC&@@)CD(B@)B?)C@,FE,DD+CB(A@)B@&@>'@>%@='?>)DA*EC,FD*FC+FE,EE+EC)C@*DB*CA+DB)CA+DB,ED)B@(@@(B@*B@(@?)DA*CA,DC,CD*BC+CB)BB)B@,DC-EF,DD,BD,CC,CD+DB,DC,DA,DB*CA*B?,DA*A@*C@(C?)CA&C=$C;#A:$@;"@:<8#?;#@;&C<&C=%B;%@<'B<%@;,AD7LT-=E*:@)@>#77#48#7:,DA%?:$;:(?>*B@*CB+DC*CA(@@,AC0DI7GNA.@C2DJ;KS3FM9JT3FNDS\JZd1GM-AE*>B9MSFV_:MR1GL6KN4JK-HE+ED+@B)>?&<<*A@*A@&@<-EC-DD+AB+BB'>?&>>+CC)?@.FF+BB)BB'?B(?@)>@'8;'>?)AB+@C+@B&=@*AE,CF&<>)>@,@B%:>&:?-AG7JP:KR5IP6IN6JP0FM7KR1GN9MT?PY'@>!:6 83 62$:7)==%<:$<9#;7#<874$;:7442-+,,).,-0/11316544!768461!76#98650-3/!96 851.0-2/4265!77,AC,>B.AE8GM2AF->B3DH0AD)=>(<=202110!78+?B/CG5IP8MT0FM0DK6IP2DI*=B-?D+>D-@E6GM;MTN^fCSZ8HO4EL3EL>PZCU^CU]>S[=P[OZGWb?OY>NV*>?341345"59!4:$6?%7@!16"22)42 03*3./4,*31#4724"57&79%69%40)4/ 21#43%77 44&75'9;'8:(8<(8;*9:(6:&68'6;'6;+9;-=A.=@.==-<=0=<.;;.A.;;,;=/;:.<=-G-G5EQ5DO2BL4CN3BL7GR2AK4AG6??3>B1?H2@F2>E7?>>EB8EM:FN:FN;HP;GO7CJ4@F7EN8EN7CK5@E6BJ8DM@JR?JRHP?GGRF+RC$XT@PetMcpYqH]jBMVGQZGQZKV_LRRVRDYO7XJ,UF'RC%QB#P@#O?"P@"P@"P@#RB%UG*TL5ALT?NW?NW@OWBQY?LT8FL:EG:IO@LL8EK;GK?KREWcUjxVoJ`o;PT=@2E>*@A47@B=JS7CK=HP?LUBNYCOYGT_IU]KX`?KT>ECBB9QL=SH0PB#P@"M>!K< PC,OD-L=!M>!N?!O@"N?"O@"QB#O@"O@"N?!N?"PA"PB#RC$SD$TE$RD#VH&UG%TE$TE$VG&TF%RD$XJ'VG&SD$VG%SE$PA"O@"GA-5><1==7DDO[WNXVT^]½xkM_Q2YK,M>!N@"O@"N?"O@"O@"N?!RC$RD$QB#PA"N?"M>!L= L< L< L< L< L< L< L< L< L< M= M=!M>!M>!L= L= L< K< L< L< L< L< L= N>!N?"O@"QB#QB#RD$SD$PF*HJ:HI5@G:#L= N?!RC$UF%VG%VH&UF%TE%VG&TE%RC#RC#RD$SD$SD$SD$SE$RC#RC#RC#QC#RC#SD$RD#RC#SD$RC#QB#QB#PA#PA"N?"M>!M=!L< L< M=!L< K; K; K; J: K; L>*8;(%4.$99+BD*@D*@A.A=-GE*B?-FE)B@#966240402/0/201./,0./-0-1-/,2/4072<@+XI'TF%TF%TF%UF%UF%UF&ZK'ZR.2A46E6*A;8531310/102/2/2/0,0,/-.+-).*2.1-303-2/2132641.2012/1ID+]Q*VM*`U-VM*%1#*&-)%2%GD-KF*TL)_S*aU,_V/HK80+.,1-0-31541-2.4153655564431123241.-+-*0/.).*2.2.0+3/50504.4.3,4.5/60616352824.6162503/5161703-4/320-72#?;/GF7MN3HI'@?,CC%<= 97"<985 888786736566 631..(2.0-11..0/64 :7 88 8735!68#8;$9;!69#4:&;> 37 /6#6:%8<$8;#8;!15"49';?%6;$6;!48,3/5"39!28041302+,$7%@=$?;&A>%@?&C@$?<">9#?;!>9"?:">8!=6!=7#@;#@<#@<"?:">;#?;$?=%B?&A>)CA)BA)BA)A@)BA&@=$?<&A>'B?$><&@<'C>(D?&C?(EA*EC)DC*EB*DB&A>*DA)D@&B>'B>&A>&@?&B?&A>'C>%A=*DA)B?*BB*BB'@@)BA,FE*DB+DC/GF.FE,ED+DC*BB'A@*C@)BA)B@&A<'B=*D@)B@(A?%@<&@<%><%<;$<:!=9!<9$><#77$=<%B<"?:"=:%@<"=: 98%4;*8?);?)8>'9<)??"78%6:$58#99$>:,CC'@>-GD0IH0FH4IL3GJ3HK6JN,AD3GK8JO/CF0DH3HK4JL6IM2IK3HL-BE5JN1FK7KR9MU7LS:MR2GL.BF/EH2GL4IN2HL4IP6JP3GM0DJ0DI.BG,@F3EK5FL0BH)@E2EK.DH1DI1DI0@F+@B.BE7KR6KR2GN3FL=NU5IPL_eEW^>RX3GM1FL4JP5KP1GL2IM4JN,ED,FD-BD*>A*=@)@>+BA(A>)A@,ED.FE,CD&?<$>:#=9$>;#;9.DE,CC(B@*>B-DD.FF(>>#69&:>,AE*>D->D/AG,AD,CD+AC+AD.AF1FK4HO;LS?OV@QY=PV5JP;OU?QY;NV@-FF0LL6PR5OP2NM-GI)A@+CE1HO3HP5HN4HL8LN9IF8E>>POEUS4HK6KQ;OW8MV;KN?HELE-P@"PA#O@"O?"RB#TE$TE$UF%YJ'\N)^Q*[M(ZK'YJ'XI&WH(TO8LW[UenYkvRZVOO>ZM(\O(]P*]P)]P)\P*]Q*]Q*^R*_S+aV,bW-`U,`U,`U,`T,_W1QR9LQ=EM<>J?CI=%=:%=94363841-00324320311124 7874865413/-64$;:42635343 234375 75/,41305421 77)=@+=A2DH1CG+?B&:<#99 67%;<$:;!874355$9:"8:%>?,BE5HM-BE/DF.BF)>A-AD.CF/DG2GI/FG1GH8KP-@D2EK:MV+?C4HM@U\:OUAW^>TZFX_HXaK]fN`mK]j9JV3EMDV`FXcJZgKZfHXb5=7-::*9=,:;)67'7:'7<,:<0=@1>A1?C2?D4@E1@F/>E/?F,=D0BJ.?I.>J,;E.>G.?J+;E->F.?F,=D.@H,>;?92@F2BK1@H.F1@H3@I4BK4BK9DM:EL9DK:DK9CI?JPHRVLTYALR;GO:FP;HQJI=RD$PA#P@"OZYEZeF[h4JS.DK=KU=HSAMWDR[ER\FRZBNWFOTUN;WI,QA#QA#P@"PA#P@"O?"QB#WH*TJ1FMNEPW;JR?MV@LT?LRJOGKI:EJFFNOON>MQGNTOCNP>JP?LS!N?"O@"PA"P@"QA#PA"PA"RC#O?"N?"PB"PA"PA"RC#PA"PB#QB#QB#QB#QB#PA"N@"PA"PA#O@"SD$QB#SD$RD$PB#VG)RD&F@-0=D@D:NP>NQ!N?!O@"O@"O@"QB#TD#UF%XJ'ZK'JG/7G?0HE,DH;MZvLZd2@LBP\>JR^flrUgn@KENA#M>!N>!N?!N>!N?"O@"N?"N?"O@"N?"O@"QB#QC#QB#PB#QB#PB#QB#QB#PB#PA"PA#QB#RC#RD$RC#RC#QC#RC#RC#PA#PA"RB#QB#O@"M=!L6?7>6"@9"?9!<895 ;763725000//-..*6/814.6194 ;7%@="=:#>:"=:#>9!<8">9$?;!>9#>9<6;4<6 >8 ?8<6 =7">9!>:%A=#>:#>9 >:$>;'B?%A?)DB'A?$?=#=;"<:#?;"=:'B?&A=&C>%C>)FA)EA*DB,EC(C@)E@'B>&B>'B?'B>&A>)D@&@>&A>'C?(B>)C@(B?(B@'B>&B>'B?'A?'B@&B@(CA(DA,FD)EA)D?(B>$>='B>(B?)DA+EB(C>%C<#@:$?9%>:$>:%>;&?=$?:">9">:#@;"A;#?;&?='>>(??)C@(D>$?:";:&;<(9>);>+<@);>)A?%=-EC1HG4IK7JN3GH4HI0EF5FJ-BB'>>%><*@@-AC1CG+>A/@D5GK2EJ1EI6HO8JP?PV5HN8KP1GI/CE5HL4HM4IO2GM4JP5KQ4HO1EJ1EK0DH5GN5GN2DK.BG2DJ+@D(>@(@A&?A,AE-BF-CF$=?'?B)@C,DI.DI5KQ5KS@S\AVaI\f6KQ0GK2HM0HM.GK/FH,ED'@>)CA.ED/GE+D@'?<'@=&><,BB-ED'?>*C@-BD%<<&<=*@A-AD*AA&9;&:;$57&9<)BB,DG1FJ0EJ.AH0BJ6GP4FL/EI-CG,BE/EI.DH5IN7JP6JOFW`5KO,DG2HK4KN8NR.FI1KL4MM6NO4LM6NO8NP4OM2LK6LN3MK3NL.KH,JG,FE#<<$>>(DD-IH/KL1NN5OP5OO4NL0HK+BA+@@4LK5MN6NP1FI0CE7IJ#8:!68$::#78 76 87 77 7866324454(@?&>=(@@$=<&;='=>'>>!99":: 66!88667665!;:#>>#<;";:+BD1FI3IM:PV6NR1HL@TZ7JP;NX>Q]4HP2EL8IP>NW8IQ:KS5HM-BD#9:"8942 67*:A*=?+?B+>B&8;"69!5:2716,/-3.4/4 1/"26 /1"12.4 37(9="34$61!43 21&42$56"44"21'8:$57%68%58%5:&69'7<*:?+9=+;@(69'6<&6>0:;'7=(7;,;=.::4:2+8;/<=3?@4AE2?A.=C*9?*,7:-9;(7<-9>,:@.;@,:@+;D.;@,;A,;B*2.+0+-55.77-9=0>G6BG3?E0=E1=C2>C5@G6@C9DK8CG8DI:EJCJH=FFN[:IQLQGXT@VM6OD*RC%RC$RB#QB#SD$SD$SD$PD)RF,SG0NH5OF2O@#M>"M< L;M=O>!PC&LE-PK9DJG:HO7FM;IP>MVAR[EVaBR]EVa=NX?LS@LVDQ[DPXEPYGU_LZeBOWK[hXckxxkZT@NA&O@!P@"O@"N?"P@"QB#O@"N?"QB#RC$N?"QB#QB#PA#QB#N?"O@"N@"O@"N@"N@"O@"N?"N?!O@"PB#O@"O@"OA"PA"O@"QB#SD$QC#KA(GD4HK>NSJT]\:GG6CHmvzr\N2[M2XJ-WI.QB#TE$VH&XJ'\N)`T+]Q*XJ'RC$N?!L= L< L= L= L= L< L< L< L= M>!L= L< L< L< L< K< K< K< K< I;I;I;I;I;L< L= L= L< L< L< M=!N?"N?"PA#VG&XI'SH*UH(AD1,BE-BE+CF+GF,HG)=E'5<*9B3?@QXYovwz{pRR=SN3QI-RC#M>!L< M>!L!N?"O@"N@"N?"N>"N?"O@"PB#PA"PA#QB#RC#RC#RC#RC$RC#RC#N@"N>!M>!N>!M>!M=!M=!M=!L< K; K; J: J9J: J: K; K; L< N?!N?"N>!O@"QB#QB#PA#RB#QB#N?"M>!M>!N?!N?!N?!N?"O@"M>!M>"N?"B<$'7/"9973 701-!52 78!68,@C*BC#<9":: ;8/-2-2,3-1-302/1/0.0.0-0..+0-1-0-30&8,KB&TF%SD$RC#SD$TE%OD'1<,836150304151404150)6-3.3.3.2.1+0+0+/,0-0.41531.2.0-212042324/2//-1.0.3?2d^6aX0h^2ol:`X/ 6.322/31524230402,41!;84/2/0+2.3123414332.+.+.+.,311.+%-'/*.(0.4073411.1-0*2,403/704.616/503.5/50526264743/0*3-213,1*3,50*C@=7611-4.1.104185749675349695 <7844/2--(5193848463534376!99 9:$==67 37 4633 363513+. 2603/3/3*-+.+//5!36./.2/103.322*+,-.-10653/405262843.30 =8 >8 =7!>8;4 :7858473943/54650.-)1.3/4/7273 <8"=9 ;7 <795 <7 =9;8#>:"?;"@9<7=6 ?8<4;4!?7=6<683;7 <8!;8"=9;6!<7!>9"@;$A<%@<$>;$=:)B@%@<$@:#A;%B=(D?(C?(D?)E@*DA)EA)CA%B>%@<%B<$A<%@=)D@&A=%A<%@<%@=$?<&A=&A<%B='C<%A<&A>&C?%:<&9=(CA)BB0DH.CF*CB(B?&A='C?(D=(D>%A;#>9"@8#>7#=8$?9"?8"A:#@9"A8"@9"A9"@9?7!>9$?<,JH,DD5HP-BH,ED"C:!A7&@<&<;%9;'6;*7<%5:$9:"9:54 77"98%?;,DB+DB.GF*B@/EE+DA-CC(A?*B@*CA)A?%>;&<;,@@.@C,>A/@C1AF)=@.AD/CE+AB,BC-@B)=>*?A+AC+BD6GN-BG1FK7JP9LR6JQ4IO5IP4HO0CI,AD+AC,BC*@B-AF'>A/CG;KQ?LT4FM)@D(>@*AC-EH+CG.EJ6KT;OY?QZ;PV;QW1HM2HK-CG,BE,CD,ED2HI*DA-ED-EB,BB)B@+AC*?B+DB+DB)@?*@@,CB,BB*BA)?@-DE1GI(@C&9>*AE3FL3HO.CI.>G.AH=NW9KR1EJ,AE.DF2HJ2GJ.CF6JN7KP9NR6LO+BE-CE0EH+EE+BD/HI.IH-HH.IH1JJ.IH3LL7NP7OQ5OP5NO5NQ2MM.KI,IH*CE)AD+DG/JK3MM7OR6PQ9QS8OR.IH1JI5MO6NQ2GK*AA*A@.AF0BF.@F5GJASU6@;PA"UF%ZL(ZL(XJ'[M(ZL'\N)\O)]O)]P*dY._S+RD#SD$WH&WH&WH&XJ'ZL(\O)\P)\O)\O)]P)[M(YK'VM/]Q+ZK&XK*UK+YJ'YK'\O)^R*`T,bW.dY.aV-_T+bX.dY/g\1h_3f`3if8ff9ga6dZ0aU,]Q*dY/f\1f[0g\0f[0f[0LU@(@@-EE)C@85"77!76&9=&;;!48"8866"78!77"6955546754"9:":9442135"67 5522$98!66&=<$<;,CC)B@-FD%=<0HI?U[#::55"7831435365"99 8654"9932312043"755355320021336564%;<*BD*BE2JO.HJ.EH.DH:MSBS],;@,;@,G2CL1DL0BK1BJ2BK.>G0?J0@J2BL0?G/=E.;B-;A.=D,:?+:A+8;196,8?7AA7BE5AD6ADOW\uogOamXR>VH)RB#VH(RB#QA#QA#QE*RD(NA(QB#RB#RC$PA#QA#QA#P@#RB#QA#P@"M<M?"LK>EJEENO@KP@LUAMVJV`KXbGT]DQ[FE@IL=IPIT[Q^iTdrEQ[NZbPOBNG4O@"PA#QB#QA#RC#RB#O@"QB#SE$UF%SE$SD$SD$RC#PA"O@"PA"N?!N?!N?!O@"O@"O@"O@"QB#RC#RC#RC#RC#SD$TF%TE$SD$QB#N@#FE5R^^箦PA$O@"SD$VG%WH&XI'ZL(\N(]P*XJ'RD$N?"N>!N?!N?!N>!N>!M=!M>!L= L= L< L< M>!M>!L< L< L< K< K< K< K< J< J< I;I;J< J;K< K< K< K< K< L< L< L= M>!O@"UF%XI'FB-DC2BC2EG4LL3CM96LC,HG+@G8GNCQV$9=%;>-84@>/HD3TR?SG)QB#QB#PA"N?!L= K; J:H9I9J:J: K; K; J; J: J9J:J; K; L< L< L=!L< L< K; L< N?"O@"PA#PA"PB#PA"OA"O@"N?"N?"N?!M>!M>!M>!M>!M>!L< K; K; L=!N?"N>!L=!K; K: K; K; K; L< L= L< L=!PA"PA#O@"N?!N?"N?"N@"N?"N?"M>!N>"L>"C<'I>#N@"BA+(6+43'6.2:(&;05278$;;%85%;8%>>851-0,2/2/1-2.1,2-2/2/1.0.0-/,2.2.2/!6/19(H?#TD$UF%VG%WH&?=&.:-!9262635252942/4062738362202-2.302.0,2./*0+1)"2+3132314230%4. 3032#2**5)/'1*512-2/'90.;0EN5-;12.3.61724.63745/5/3-30401,1-2.1-518586310.*((%+&+%,&502-1)0+603/51412/1-1,/+434282714/5/6/4-5.725/1/3/4/3.42323/1*.(1,61.GE513.411-4/,)0.416486947182943230620,1-.+0/.-/123//,.-/11-.57..-.+.)-(*+.**/0-1,.-/+.05):A,0+-)*,,.0,.(')*)*.-,,////224310..0044320//.426442 4587 :5644453503010,+,&513-4.516261518281829383<6;6!>:"?;!?:">9"=:<7:5:6 :7:5:6:573949596:6;6 =9 >9$B>$?<)C>%A<$A:%A<$B<#@;'A?)DA&A=*E@)F?&C>%B='D?&C>%A<$A;&@>'C>%A;$A;'B>$@;$@<&B<(E>'C=)D?*CA%@?&D@(D@'==)D?+DB*FC+FC*EB&A>&@=$@<'B=*D>&C:&D;$B9$@8%A:#A9 >7"?7!>7 =6 ?6 ?6"@8 =6=6<5!?8$?:&?<#;8"<996 96 :8">9#B<(F?%C=+FC+FC&A='@>(@>&><$<:'@<'=;%>;&?<,BB)@?,AB+@@'>>'>?&>=&<='=>)?@(>A)?A*@B)>B1EJ4IO9MT;NV:MU1FL1GL1GK/FI/FI-CD.DG.EH-BG-CF,BF8IO;LS5IP0FL,BF,BD*BC-DG6KSRX5KN3IK.GF+CB*CB,EC*CB*AA,CB*@A)@A,AA(=>$78)CB'B@(@@(?>.BF,=B+=B.@F%5<*BF6JP5JP6JP9KS:KQ0DJ1FK2HK6JM4IM6KO6LN0DH5KN6KP6JP5KN2IJ3KL2KL/IK.IH4KL5JL/HH-GF-IH+EF/GM/FL1KO4OR6PR5PP0LL0JL)AF,EJ/JI3LN3NM6PR:QW>QW7OR4MN2LK2KM3LM0HH/EF/DG2GK3GK2EI/CF1FI4IL4HNEG8TE$XI'\N)[M(\O(_R+`U,aV-dY.f\0i_2`T,YK'\O)XJ'VG&XI&XJ'XI'XJ'ZK'\N)\N(ZM([M(YJ'JPH>JKFG9BKG9NVBIBIG4QI.VN/\O*_R+`T,cX.eZ/`U,bV-fZ1f\2gd:hoQmsRtz]qpTa[>`^DbcJ[e\CUKO[JLUBDRF1LJ*GE3NN+GD#<: ;8$:;%7;2735#68+=A$7;47$:<$:: 87!77 88#<:/-223224012265!:8'B?0IGG\^TfkPbg>RU.CC8LQ2JMOdhzwm|^qvsNbh1HK&<=31.,4602000154 66":8!97412021212041413/2/3020412/10524543!984512100//-2043)AB8NO%??AVY2KL/HJ6NQ8MS8LS;LU(=@)+99'7:&7>(7=)7=(8?*9A*;D,=G(;E*;E0@I5DM4CL/?I/?H/>F1>B480262283-;B+8=+:@(8A*:@&6;&48"18!17.:;*:?*8;+;@,E1@F3?@0@I7DIBHBDHASJ0XJ)\N(ZL)XI'VH&WH&XI'VG&VK*PL7VO0VK,SF&fspa|`~SdhYQ4QA#QA#P@#N?"P@"RB$TJ/XVGeke`W>\N/ZL,UG&RC#RC%OD+IIAHH!N>!M>!M>!M>!L= L< L< L< L= K< L< K< L< L< K< L< K< K< J;I;I;K< L< L= K< K< K< K< K< L< N?!RD$UF%VG&YJ'YJ'ZK(YJ'YK'YJ'XI'NH.LI1VVDmpcGI>=>/DB,XJ(VG&RD$O@"QB#QC#O@"M>!L= K< J:J; I9H7H7I9I9I:J: I9I9J:J; K; K; K: K; K; K; J:K; K; K; L< L< M=!O@"N?"L=!M=!L=!N>!N?!N?!M>!K< K; K; J: L< N?"O@"O?"M>!O@"M>!L< L< L= M>!M>!L=!M>!N@"O@"N?"M>!N>!N?!N?"M>!M>!M>!B=(D<&-6,(4+29+"4//;,3>/19(4. 76#97(>?"96 7283302.1,0-3./+/,3.1,2-1,0+/*0+1,1-!6->C+OJ+`T+[N(WH&LB%TH'VM,;A-9584417352424/3/2- 3,3,5.50!82513-2.1.3-(5*3-1,0*1+2,2/1.2030 2*0**6,$602..7,*6,#4,3032101.302.413140503.614.5/50835060843,.*-)*&-)0,/*4/2-402.4..)1*4,3.1-2*3-5/4/.)-(/+3/0*2/43505.4/5/93503.6253412-3/206521-'.)2,0*%@;!=71,1,0-1/3.,*0+1+2040834060613.0.523.4-6253505122+./00012,..0-0.1.0+-++)*-.00.1-0,.-./1"6824/3 4602-/+-.--.,++)+*1/3253413274:6<6;584426354326373:7644241513/21.) 0*616/5.6040705/71829382 <692:4:4 >9!>9!>: <8"@<=8<6 =794 ;6 ;88383:6 =8<7 ;9<5;4>8!?9#?9%B=#>:$@=$A<#@<&B>&A>$B;#B;$@;%B>#@;!>:#B;#@:#@;">:$@9%B=$B:%C<'C>'D>$B>&@>'B@*CB&A<&A;&A;$@9"@8$B:&C;$B9">8 >6 >6 >5#?9!=7#=9#>9$>:$@9!=8"=8$><$=;'>?(;>'>>'>@#><$;;(>A$:<'<@">:%@<:Q]#A:*E@"@8 =6#@:$B<"@: 97$>:$?;$<9"?8!=7#?9$B;&@;%?;%?:(B>+C@(@>(B?)B@&:;(@>'@>'@=)BA&@=!=8%>>'?@#<<,BEA+@D+AE.EK.EK4IP1FKAQX7KO0FI5JM5LO0HJ0HH0HH3IK.FF0GG.GE1GH*CA-CC,DC-DD&<=(A?/FE2FI+BB*>A)?A*>A2HL3GM*>C4IO9LS7IP8JP3HK9NP1IJ1IH6LN0HH5KL=PU8MQ7LP;OT:NS:NR7LO3IK/GI6KO:MR7LO7OP5MN0LK.FF(LJNM9QP9_S-_R*ZL(^Q*eZ0cX.aV-eZ1d]4bgCmv^ktg7LH.GDETNYc[M`c9SV6RT7SU9TV5QQ$B='C?"=997 87$<:!58 36$7:&>?&?B"<=668744/21210../.22465633 77#;:Nbbݼ`os2JHDYZI\cDW^4JN3JN)AB3KM4MN0HI1JK2KLLcdWno`tv^qu(<=.0#48%69#68"46*8:/:;'67*9;(7:(68'56%45#36(79'78&69$57&7:'8;'8?-9:0;:*:A,;B)9A.>E*9?)7<(8?+"::..=E+;B'6=)5:186&5=)8=*78$26"29#49'6;(7<*:A*9=-;=0?G2@E.;?."KK@FOOBMSLUBPXN[fJXcQ`kR`kNWXGC4I:KA+HI@FLMMW[P\dbnxRSML>#QB#RB"SD$WI&XK(SE$RC$RC#UF%WI&VH&SD$QB#O@"RC$PA"O@"N?"N?!N?!N?!O@"PB#RC#TF%UF%TE$TE$TE$WH&WI&WH&VG%UF%TE$TE$RC#K?%AD7DPMallemk֚c^NQB#O@"QB#QB#O@"O?"PA"PA"N?!O?"N@!N?"PA"PA"O@"N?!N>!M=!N>!N?!N>!M=!L< L< L< L< L< L< L= L= O?"M=!K< K< K< K< L< K< K< L< L= L< K< L< L< L< M=!M>!O@"WH&XJ'XI'[N([N(\O)]Q*^R*ZM(YJ'XI'WH&WH&UF%TE$UF%TE$RC#QB#O@"N?!M>!M>!N?"N?!L= L= M>!M>!M>!J; I9I8H8H8H8I9I9J; K; J: I9I9J:J:I:I9I9I9J: J:J; K; L=!L=!L< K; K; L< M=!L=!L=!K; K; K; L< L< L< L< K; K; L< L< M=!L< M=!M>!L< L= M=!M>!M>!M>!M=!M=!L< L=!L=!E<#=;&78$*6(%90#;7#<9615140!6685#;<'??,AC0EF*AA'?>!8775&6, 5.0,/*/*1,4-2,2,1+3,2+%4*JF)YN)]P)]P)^R*\Q*ZO+CC)+;/";5 ;7 ;7!<952$8141420. 1*1+!3*2-"3*1+5-"91 5- 4-0,/+2,&3*"3*/*1+.+0-1,1*2,0,0)%6.$4*0,0+1)2,31656742100./*.&0-714-5.3,3-4.4/2+6097734/1*.),&*$+%,&-&/).'/*0*0*/(3-405071616161312,504050506/6/5/4/2,3-3-3.4/3.2,3/3/2.1,.),&/(/+#=9&@<0*1+2.4-1..+3/30627462522.+*/-304/5.817185837071636352343504)-&)%),..0/001-0,.,/+0*--./012!78016465 765522.-+*,+1/..00415031:5<7;4:2:3838584 :882;6:5947433605112+*+(4.6/6/6.805/6071726072949593:6 <8 <9"=;<8 <8<6 =9;8<6;59384<7 =9">; >9<7;4>6"A;;5 >8<5<6!?9!?9"@:#@:!@;!@:"A;!?: ?8$B=#B<%A<"?9%@<'C?$A<$A<#?;$>;"=9#>;"@<%A>"?9$?<$91%<4'=4%:1#<5&>6"@9#?9!;8 =7">8$>9"=7$@9"?7#@8"?8"?8"@8 >5!=6:5!>8#?8#@9(B>$>:%?;$>;$><$>;#:;%9<&;='<>&==%;<$9;%<=$7;&:>%7<+@C$=;"?;)C@&D=#B:$=9'=<"B; A9#A:";8 >6!@7#A8&C;#B9"@8%@=$@;!<8%B=&B>(A>+D?+C@+CA)C?%@< ;8!;9*BB&=>$<<0CG9KRAR[6JP1FK+AD,CF)AB,BD,BF/DH,CF,CE+BD+CC+CD+CE,BF2FK(@B)?@)AB)AA*BB'?A&??*CD4JN5LP-FH'@@)CC,IF-FF-FE6LO2HJ*DA'@=&A>.FE4IK2FH,EC.GD.FF4JM*BC&>?+CE-DF-FG3HL=PV0DJ5IO?QYASX7NN1HJ9MP8MP4KL-GD0II5JK4JK7LN6LM1IJ1HJ5KM/GH1HJ-@C-AF(;A$5<'9?$6<&:?&<@'BC+GF-HH0GM/GK1IM2KN5OQ3MN2ML6PQ/KJ0KJ1LL,IE/JH1KK3KL3LL6MO4KM8MR:NT=SY6697!97$;:&@?#><%=>$;=%=>#;= ;=*EB65310.../3.0 77";8";:11555LMQdfΒo=TS8NK=56#:;"9; ::66453312"==(?A!;<6MO/HH4413-//1344263$;:":975 8664 75420/64"87!87315343200-31 78!78342265313243642/30&><&@>$><%?=4HK5LN2HLLakM`o=PZ.AGET^FT^@PX7HO&;>%<=#9:"88546475":8 55':>#4;%5<$36 /7#3:%3;#1:"19"28,5-3!08%4:"5823(=>7MM%77 35#59'8;%66'7:(7:.:=*8:/1"24(763:2==/98(<:*9:.49.27-"26*;A,=E2EM0BL,=C.:<,/8714./41(7<)7;%39+43+57$4;)7>085;!N?"PA"O@"N@"N?!N?!O@"O@"O@"PA"QB#RC#RC#TE$TE$UF%WG&VG&VG%XI'WI&VF%WG&VG&UF%TD$QM1O]X۱tzylWK1RC$QC$O@"O@"O@"PA#RC$TE$RC$PA"PA"RC$QB#PA#O@"N?!N?!M>!M=!M>!N>!N?!N?!N?!M>!L< L< L< L< L= M>!O@"N?"L< L< K< K< K< L< K< L< L< L< L< L< L< N>!RC$RC#RC$TE%[M(\P)]P*]Q*\O)\N)^Q*\O)XJ'XJ'YK'VG&TE%SD$SD$SD$PB#N?!M>!L= L< L= M=!L= L< L= M=!L= K< I:I9H8H7H7H8I9I9J:I9I9J: J: K; I9J9J:I9I9J:J: J: J:K; K< K; K; L!L=!M=!M=!M>!M=!M=!J>"E<#9;(.<-(<0(@9.@82GA7NO5JL)A@ 87'A@*DD(DB(B@%=;-FF(A@";;42445420/*.*-)/+/*0*0)0+2,3-6=*VO+]P)\O([N([N(]R*aU,`V.(;.624062965241301-/,1.1,1+ 1)2)#3*$3)/*#3* 2)"3*$3(2,"6.'5,/*/*1-0,.+1,0-1-0*2/2.3+1+)5).7*$3)1+4.75330/100,3/524.6/6/4-5.3,3+4.4.82614/626/3,5/-',&-&*#.&.(/*,&*%.'2-4/4.6/4.4,3,3,52625.827375704.0)1*0*2+3*2*2*3,6452442/+$-%-&3-4-2,/*2-404.4-0.235754509452,.(*..,(3-5071:28382716254-.(**,(+"$'&%&$$$$##%$&$$$&%&$$%&*#%'*&*%')+&).2-1/1,-,-34643262..+,5294;383618431737582 :7867486 867452300/5150624.805.4-5/816050504/4161627496;7 ;8!=: <894:4;6<7<6<7!?:>8=8<7 <8 ?9#A<>8 A9!A:!@9 >8>7 ?8#@: >7!@:$B="B;"A<#B>!B;$B=$B=!?9#@;%B=&C=$B<%A="?:!=8:6(D@(AA&@@&B?&A?%B>%@:.:0'<8$<8&=6$?;%@<#>:#A9!@9"@8%B<%><"=8$?;$?< ?9 @8=695;5!=7%@;">9">9"=:)B@'A>"=;#=;%>>%;=$:<";9%@<$>;#;:#<:$><&@=)A?%==%?<$@< =9"B:"B:#>:'7:#@;$B;"A:#?:,CD%;<">:"<:$<:!>7!=6$C:!@7!@8!B9!A9'E?&A=">9#>:"=9%B<(E@(B@)B@'A?"<9:7%>=/CG 98&;>1CI:LS2FK,@DEV^9NW1EL-EH*BF.FL)AE*AE+AF.CI+CE,DG+AF:KR,AE$=?(>@%?>&??&??%@?&A?.DF'A?/GI-DG$@>'C@'D@(A?$@=)DA+FC*DA'A?)C@*EB$A=*DB.EE0GI:OS7KP/DH'BC+FF.GI9LSFU^6JP1GJ6KN7MO1IH*DB1II4KM2JK5LL/FG.HH/JI.IG.IH-FH0IK:NM?PET[@W`:TY=X_BQJVG%YJ'WH&\O)YK'VG%PA"SD$XI&YK(XI&UG%ZL'\O)\O(ZL(XI'[M(_S+`T,bV-bW-`U,`T,aV-aU,`U,`U,_S+_S+_R*_R*^Q*[N(XJ'XJ'WI&XJ'`V.]]9djMouX`l^3GF,CC0GK,ED0HI5OO2OK+HB&@;*DF-KL#A;!;8:7!::";:&A@%>?%==$;=$<< 98%<< 87 98641/4412// 88,DG4JN(=?;MTw_st@#:; 3544 97!:886&>=.EF$<=1FI:MS,BEEXcYiv:KTN_kN]i?PZ?Q[6IO'):>'9=&8=#3:!262636 56 86#88:OM5?/-7-4;1 20!33!26!10 22 22%1-78(<8#58(-4)'3."33 03'6;!25#58'8;,;>,>E/AI->F+:>+F,>G+*:?+:?393.88-76(8<)64(56(57$39#39(8>&7=+68+76'7<(8>*:?'7=&7=(7;'7:,;>-9=+:@*:A*8?.<@AG;PK1RG(TF%TF%UG&WI'[N)[L)ZL)[M)YJ'TE%SD$SD$TE$UF%XI'UE%UF%WH&SE$RC$P@"N>"DH<=NXJaoPbgUR>Q@"QA#RB#QB#QA#SD$QM9W[STI.VG%XI&QF*CGBBPVFRXGQTILEIF6LD,NE,SG*RE%OD(FE8AE=JD1PA"QA"SD$TE$RC$N>!J; H<$J<"J< K=#DB7CIFANTCPXOZbLXaQK9J; K< M?%NI9LI;N?"QA#PA"PA"SE$UG%VG&VH&UF%WH&SD$N>!M>!N?"PA#PA"O@"O@"O@"O@"QB#RC#QB#O@"PA"QB#UF%WH&YK(ZL(YK'VG&VG&UF%VG&WH'XI'XI'VH&[N,|wTb`R]_۲VH*PA"SD%XK,QB#PA"O@"O@"N?!N?"N?!N?!N?!N?!N?!N?!N?"N?!N>!M=!M=!M>!N?!N?!N?!N?!M>!L= L= L< L< L< L= N?!M= L< L< L< L< L= M>!L= L= L= L< L< L< L= M>!PA"QB#WH&VG&VG&WI&ZK(ZM(YK'YK'XJ'XJ'VG&TE%TE%SD$SE$TE$RD$PB#N?!N?!L= L< L< L< L< K< J; I:J; K< K< J; I:J: I9I9J:J: I9I9I9I9I9J9I9I9J: K; F;$E>)B<)I: I8I9I9J:J:J: K; J; L!N>!J=">=(9B00@5)@8.F@DWUDWZDW]BU\M`fGZa2HK0IL'CB >;"@?)GH&>B,@D!6644225544420./+0+2.2,2,0)3,(9/JJ-_T,]Q*\O([M(ZL([M(\O(^R*_T,4A.7263626442202-/+0,0,0-0,3/2*0*.(/)/'1)/(0(.'(5).8+1+0,.).)/*0,1-1,301,1*$3*1(&3&1)#6.;;*1)3,#3+!3,2/2.1+1,5.4,4-633+3,3,4,3,41303-:89:;795602,0(3,0*-&,&.)+%+%.)1,3+4,4+7.5,5-5.6-819882605030503,3,3-1*-&2+3,0+3.5272-'+%+#-&,&5.0,2.1.4.5052302.6151524/1/322/0/300)0)4-7080947644//*+('))*,'(('%"&&((&#($'&((((%%)-')((+.(*()))(*())+&'*-&'&'-/1413.1**/04533./-.,.24261536456443744141616.83917.6.804,5-5.6/817192702-2.3/40626262727384;7!>9 >8=8<9>9?:=8;8<8"A;#A><7!?:"@:!?:=7"A:$A;!>8"?: >8%B<"?9#A<%C?$B9"?:!>8!=8$A< @8&C>&C=#?<:5#>;$@<"@;'B@%B>"?:"?9$<6);3#?:&@=&@=%?;$?<%@;%?:(C>%@<$?;">9 >7;6#=:;796;595:6";9!<7!<7"<8$?;"?:=8#@;">9">:">;87 :7$?<&?>"<:!98#>:!>:#A:#D;$?; =9"<:'@?#=;%A=&?>&>=#>;#@;$A;$@;(;&B>=7>6 >7!?7#@:!?9#@;'B?*DA&A>">8"=9*BB*AB"<:$<>/BF0CI;NUCU`SeoQcnTfsDXb4LT0FL$><$=<&@@*DD,BE.DF-DF%?>#?>$@>"><$A?%A@&B@(CA(B@'B?&@?-FC)EA)DC*DD-FFATY3GL4HK0FH0GI0FI@RZFXa>RX5JM.EF5KM(BA.DJ/DH1HL2KL-FC+FB,HDKSB`U.g^2TV8APE9ML.DF,BF,GG)DC/HH.GH/FJ0GK3HO1HL/IL2JP9NUMTLHP@TL.VG&XJ'ZL(ZL(YK'ZL(UG%TE$YL(ZL(XI&TE%UF%ZL(\N)ZL'ZL(YK(\O)aV-bW-`U,_S+`T,_S+]O)]P*_R*_R*]O)[N(\N(WH&VG&UF%RC#RD$XI'_U.ab=jjAWaQ$8:*>@-BD+FE+DA,DB0JH(B>$>9$;9.HK,IL&CA >; ;9!;9#:9&<=%>? 78!998755#68*<>$9:103588 98%@?,FFH_hQcm,AD7LN7OO=VU%C=4/732-1,0/3.1MIAWX|QenCZa;UW$@?21"7400223166H\b{Ѯ{wVej5INL_d/EH"782223333422$8:25"7:%8=(<>%8<45201/21355441 :8%==)?B!782312450/46 5733#::75,CD:PS9QT4KN`pwUfl%:<0CI4FL2DJ:KS);<(:9)=>'>=%<<#640/-,10/01334/*87%>868!07(+6/-5*(4+38+:8%27*'7501/0/1$47.::'58,:@+8>*8:'8:$5:&7='6<(9@*8>*;B)9B):D+H(7<*;C*8:)7;&6<&7>-)78*8<,9:*8=+9>,<@/=C4@?KK3TH)TE%UF%XI'TF%UF%XJ'ZN)YJ'XI'YL(VG&SE$TE%SE$TF%TE$XI'UF%UF%WH'TF%SD$RC#O?"OA$OC'QE(RC#P@"QA#O?"RC#RC#RB#PJ5H`nQgwVS@WH&TF%MG24FQ8JU;LVMV>MV;JP;KSBRZHT\FT]DNOEB3L= QB#TE$UF%SD$N?"K< J; J; J; J; KT[[XgqLH;J;J=$J;M>!N?"RC$N>"TE$VG%ZL(WH&XI'VH&UG%RC#O@"N?!O@"PA#PB#QB#RC#RC#QB#RC#RB#QB#RC#UF%WH&XI'YJ'ZM(ZL(ZL(YJ'TF%PA"SD$WI&YK'YJ'XI'WH&SD$KC*@H>^f^ʿZK.PA#PA"QB#O@"O@"O@"O@"N?!N?!N?!N?!N?!N?"O@"N?!N?!N?"N>!M>!M>!M>!M= M>!M>!N?!M>!L< K< K< K< L< L< L= K< L< L= L< L< M>!N?!L= M> J< K< L< L= L=!M>!N?"N?!PA#QB#RC#VG&TE$TE%RC$RC#O@"PA"PA"QC#RC$SD$WH&SD$O@"N>!M>!M>!M=!M>!L< K< K< K< J;I:I:J:J; I:I9I9J: K; M=!M=!M=!M=!J: I9J: J:I9J:K; K=">@1;E;G;#I9I9I9I9I9H8I9K; J: J:K: K; L< K; K: J:J:J:J: K; J: J: K< M>!N>"N>"M>!M=!L< M!N?">=)/<0,@6-B:5KF:QNUihj{QchCW]: =8>8>7!@8=6!?8 >8"?:!@:=8 >8!>: >:!>:<7<8&A=(B@&B?&A=%@=">;64#@<&D>'D>#A:#@:"A:(C>&A<"=7!>8%@=%@<";8"=:%?;!<9";9)A@&@=&?>%><"?9"?99574:5 ;7;6 :7 ;7:6!=9#>;$A=%?=%?= ;9"<;$>;">;97#<:#<;$=;:8 78"::#<<"<:#>;$A<">:#@<">:!@;!@9"@:!;:%?=%@=(B@(>B >:$B>?9=7 ?8"@;*FA&A>%B="?9 ?8">:$@;%?:!@8!?8#>;%A=)C@!>9 <8"<:+@C75)BB/FH5HM1EJCT\9LQ5IOUfq`sGZdL^kFYeXjzViyOeuCXc<"<:%>=%??$A?&B@+DE7LO-DG%=<,BB+DD(CB+DD,FF.GG/GG+ED.FF,EF+ED,FF,EE+CD5JN@RX*BB/GI?UZDV]8LQ6LN3JK:OR)CA0G@6JG3JJ2II.EF.EI1KI.IH2KJ4ML2MK,HBd]3i`2\Z5-HF(F@*FC*CB*DC*BB,BE)=B,BC2JK1IJ0GJ.FJ/GK4IP9LT6IO3GL9LSEW`;NT5JO2KN/JJ.IJ5PR7PS2KL6LR6MQ;MKGOCRK0VH'UF%UF%WH&WI&XJ'YK)XJ&XH&[M)^Q*_R+WH&VG%WI&XI&YJ'ZL(YK(ZL(\O)\N(\N([N)^Q*[M(ZK'ZK'XJ'ZL(^Q*_T+aV,aV-_R+YK'VG&XJ'^Q)]P)XI'WH&TE$QB#UF%VG&UF%UF%\O*aW/c`5R^L5LJ(AB*AC&>A)?B(>>'==(?>)?@'>=$<;,DC$?;$::$8;%:?%?>'@@&@@#<:%>=$=<896653333413 68246697$> :966!78%<=EX\̓ftz[km7IM&:?%9<"8:43"76*<>+=@-?D.AF%8<#56+@E&:?24 97310.2030%=<#::4IL.EG/GH&??!89./222425"985320,DE?TX2IL:QTBW\4HK3GJ&:=!784814!592FK9JP#89320+#::202/0-2.0.0-1/43#;:$=<"99"79#::$:8834110,,.../129:,35%57$<8:8 *9=+:?)7;&6<'8@&6<*:@"27$5:*;@,:=/?E'7=&7=%49$38#28$37$48#36#38%6;&790:5*9=':?(9?$4<&6;&7;(8:&7<(8?)8?:D?PJ0RE&VH&VG&TE%VG&VG&UG&YK(XK(XK(WH&WH&SD$RD$TE%TF%SD$QB#TE%VG&WH'WH&VG%QB#RC$SD$QA#PA#SD$O?"P@"SD#QB#TD$SD$RC$QD'LXMRXOVH&TF$RC#TF%9@80BL1CN8HQ8IR6FO7EN!M>!SE$XI'VG&TF%WI'VG&TE$P@"O@"QB#QB#RB#RC#QB#RC#QB#PB#RB#RB#QB#QB#UG&WH'XI'ZL(ZM(ZL(YJ'XJ'TE%QB#SD$RC#TF%VG&WH&WI&WH&TE%KH2GPJUaflwzުUF'RC#PA#O@"O?"N?"N?!M>!N?!O@"O@"O@"N?"N?!O@"O@"N?!N>!M>!L= L= L< L< L< L= L= L< L< K< K< K< L< L< L= L< K< L= L< L= L= L= N?!M>!L= L< M= M>!N?!O@"O@"N?!O@"QB#PA"RD$PA#O@"PA#O@"N?!N?!N?"N?!O@"PA#P@"N?!M>!N>!L= L= L< L< K< K< K< L= M>!L>!L= K< I:I:J: J; K; L< O@"O@"N?"N?"N?"M=!K< I9I9J:K; J: J:A=)I: J9J: K; K; J: I9J: K; J:J:J9I9I9J: I9I9J:K: J: K; L< K; K; M=!N>!M>!M>!M=!M>!M>!N?"I=#6=06HH@SP5JE9MGj{`qsTdg+BB!;8#><(CC+DG#=>42#;=%>@!:; 994544473423/..-.,.*0,/*1+4-BC*^R*\O(]P)]R*[N(ZL(ZL([N(\P)aV-f_3);00+2.304/2,#3).)3,/)/*+4&0)1)%2'"1'0+.'/(.'&2''3(%3)3-0'/)'4(%4(/),(/(2,3,4,1*0)2+38)G>*G>*G>*17)4-4,3*2)1+1*2,3-713-3+4,4+5.5-5-2)4-612+2)1)2*4,4-606275:6622*5-4+5.634+6-7.4+7.8/ ;73-504.3,6-4+4-3-3-4,1*4/3,2./-30402.1,,')%($4/&D>0*3-3/3-4/50403061:594826041708383639593222.0)/)4.2-321301*,+.33//)+(&%'.2%&'' ,)*-+.&)"$,.0/.,-,/-3/4/8463:48331-0*,4513341///+,**'(&*&(-/)-*,)-1/506/3-6092815.807/7.6.8/6/2,4-3+4-4-6.5.4.4,2*1*1,5/4/8572948271:2:3:293:4<695;79684"?;:6:5<7#?9#>:"<9">:$@= >9=8 <9!>9">:!>; =8!<9#@<;7#?<$><$?*F@)E@'C=$@:"@8$B;&A=$@<"?9(D?'?>#=:96 =7!=7 ;7!<8#<:&?=(B?$@;#?: <6!?8!>8$@:!<7;5 :6:6$>;$?<<8#=;$=<"=:">:"<:&A='B?!<9#?<,DC">;!>:!=:!>: >9#?:)A?*DA"@:&@>">: >8 @9<8#A:$@=%;<%>>"A= ?:>: @;>9#B<"B;?8!?9$>:$?;#<9?7 ?6!>7"=8#@:&@=#?:$><(@?$=;*AB*CB)BB*CC*DF/GI=PV0FI0FH6LQH\f8LRBR[BU]BT]L_k(CB)DC)BB-CD'A@ 98.EF0FH-FG7KM-FF(CC,GF+GF*EF.FG2HK,FE)CC/GH.FHRY@SYMBHO@UR6VO1WJ'YK'XJ'VH&XJ'XI'YK'YK(\N)^Q*\N)YK'[M(VH&[M(WH&RD$WH&ZL(ZK'VH&SD$VH&XI&ZL(\O)^Q*]O)YK'XJ'ZL(ZL(ZL(\O)`S+^R+\N)^Q*^R*\N)ZL([N)ZL(XI'WH&VG%SD$TE$TE$TE$YJ(aU/d^4^]5Z_>GUI'>?$;>"7<(>B/FI*>B.BF0DI1FL)>B$9:$7:"49%8<'=A)BE)AB$<<)BB,FF(@A(B@%><32//46 68$:<$;>57 88"::PcmK^d}Tiq^szŏ2MF ;4"<54JD,@=3HB2IB.GDThfixvՙqAYYWloTjl@WX$<<+CB";9%<;6LOcswĊjw9LP6JN%87(935HL:NT+>A+>?%9;*?C$;%@>+DC+DC,CC-CE,AC#9:2/"87/DF1FI 984JN-DE*@B6544232301#9:,AC2EH2.4/"<9404/3.2.1.0./.0.2043556564$<640527375#7/"3.39)J>"I="B<"9C.;I8BTP&98"83$96%:<%87!563533// 0."10!10"66(7:(7;+9<$46"13%48+8;+8:&47%21 03$58)77%48/4"03%6;'7;&58(8=&6<%7<&8>(8>(8>0;:$14$13*9>&7<$6:'8<'66&33#39$6<%7?'8@&8>(8=%6:&6=5?@TI)UF%VG&WI'YL(YK(YJ(WH&UG&XI'YJ(XI'XH'VH&VG&TF%UF%TE%VG&VG&TF%UF%TF%SD$TF%SD$SD$TF%RC#QC#RC#PA#QB#QB#SD$UF%UF%TF%TE$SD$TE$TF%TE$SD$UF%OF,*;F.@J7HQ9JT8IR4EO4DN6GO;JR=MW:HP;HP6DN:FP@MVANVBPVLD,SC"QB"O@"PA"TE$UF%QB#M?!J; J; J; K< PA#O@"O@"RC#N?!L?'TRGP@#PA"O?"QB"QB#SD$VG%VG&UF%UF%QB#P@"QA#TE$UF%UF%UF%SD$QB#N?!N?!P@"PB#O@"PA"QB#TF%VG&WH&XJ'YJ'YJ'XJ'TF%RD$TE$RC#SD$UF%VG&XI'XI&WH&VG%OG-IK=LYZeno蘞z⿼[L0N?!N?"N?"M>!K< K< L= N?!N?"N?!N?"N?!N>!M>!L= L= L= M>!M>!L= L= L< L< L< L= L< L< K< K< K< J< L< L< L< M=!M=!L= L= M>!L= L= N?!N?!L= L< L< L= PA"N?!O@"O@"P@"O@"PA"QB#PB#PA"QB#PA"O@"O@"N?"N>!M>!L= L= M>!M>!N?!M>!K< K< K< J; J; J; M>!M>!K< K; J;I:J;I9J: K; L< L=!L=!K< L=!N?!M>!L< K; J:J: K; M>!L< F;$I:K; L< K; K; K; K; K; J: J: L< K; K; J: I9H8I9H8I9K; L< L=!M=!K; L< M>!M>!M>!M>!N?"O@"QA"K= 28)%;6$;7-D@Ob_Nd`1F>1EBH[]QbePac*A@$>;!=:;672#@=751.301/32781023.-0/0/0.-+.*0+2+1,!2*^R,_S+_S+`U,^S+[M(ZM([N(\O(]Q*cW-b[1';0:54/513.0*50!4,2+/&.&-6(0).'/'-(,&!0&+4)15&$2(/(0*2+ 3+@>*LD+JB+GA*,7*3)/(0(1*1*2)2*4,4,&6+C=*G>*4:,3+3+5/1+1,5.*8,2+4,5.5-4+5,7-4+4,5/4,2(3*5.4+4+5,4*4+6-81:786837351503+6-7.5,6-806/5-6/5.2+4.3,3,2*1+221.1,/)0+1+4.6/5.6.2+-&,&+(!;71,5.6/3-4-405061606160956173727160424374310032("-&3-4,+',)*()(.-0-0.-,*)-.*-000301+,)),,0200211/0/405/4/1/1100.002--01--,-.-''+*0-3/3.3/1.304151212.0.1/8082604.7.80:27/906.4,3+4,5-704.5/2+3+2*0*0+1,3-4.61725072827/7091;4;6;7 ;8:7#>< ?;"A=;8 <8;5 <8">: =9$@==:<8 =9#>;<7 <8!>9!>9">9%?<(EA*EB*DA&A;;5"@8#B9&D<#A:#A9%A;&C=&@;#=:$@<%?=#>;:6!=9;5 <7:6 ;7:4#>:$?;">9#>9$@;<6 <6!=7#>8$=:;7"=9;7 <8 <8 <7!<9<7"@;"=:$A:#@;"?9$@<#@<'B?&A>$A= ?9@9!@;)E?(F?*B@#A<$B= ?9<8!=: ;9$=; =9>7>8 @: @9@8>8>6 ?7!?:;6 :7!>8 >7$A:&?='?=">8=6 >6#?:+BB*BA$?<$?='A@(@@)DC*DD/GH4IL,DD,BC,BC2FJ6JN9LP.DF9MQ-DE4KN0EGDU]8LQ?RY2GJ(A@0FI4JM0GH0HJ/HI*BC-DE(A@">=)CB)BA.EE)BB&B?.FH,EE/GH6MO-GG,FF+FF/GH-EF1IK3JM*CDDW^?RW3JJCV\@H8XJ'^R+YK'YJ'YJ'aU,dZ.g_0b[1:JA1JH.HE5MM4KDHR9e`4ia3ic4ib3d`4FYL0FJ,AC0FH7NP,HF*EC*EC,FD+EC+DC*CC(A@-FE,FD3HJ8JP/FG+BC0GJ2HL,DEL?HF0WJ'YK(YK(XJ'YJ'ZL(ZL(\N)]P*]P)bV-cX.bW.\N)^Q*]Q*`U,`T,aU,YK'UF%ZL']P)ZL(TE$N?!O@"PA#QB#TD$YJ']P)ZM(^Q*^Q*^Q*^Q*`U,`T,ZL(UF%XJ'[M(\N(]O(ZL(\N(YK'WH&VG%VG&WH&VG%VG&\N+aW0g]3e]1bZ0c`8V]EFUK0DC/BC+?C)=C&9?%9>$7;!27%6>+?C(?>*>B+@E+GF/LJ <:$=<,GE*EA 8501 972277":;%==$>?!=&<>45&<=#;<&??#94773264+BA.DE1-317553!:9 97$=<$<;&<;4420,)$;:!75#::653264653146//4476.DF%><513.4/0,0,0.3121202/0..,2065!98 865430 4152 63&708:'=<';;&6<-2@36KE8LK(==125486$;<$89#79#79 44/-!0,&34#24"34)8<"57#25 /3"05%37)58&24#01 /2 ..$12'23*45"15#25!15&57$5:%7=(:@,87-:9);A'9?&7<0>D.<@+:@&58"59(55)8:"4:$5<$5;*:@*;A(9A%7>"3: -3OI0VG&VG&VG&VG&VH&ZM(VH&VG&WH&XJ'UG&WH&WI'VH&WH&VG&UG&XJ'VG&UF%TE$RC$QA#RB#TF%SD$TF%QB#PA"TE%TF%SD$SD$TE$VG&VG%XJ'WH&XI'WH&SD$VG%VH&VG%RF*:CB3EN5EN4EP1AI6GP1?F6EM9HOINBLQ?KTCNV?MW=JS>JR?KQ@KO?FDCF@JH;JA,HE4SD$RC#N?!L=!L=!N?"QB#O@"RC#SD$SE$RC#QB#RC$QB#PA"RB#QB#P@"QB#SE$VG%UF%QA#RD#RD$TF%TF%VG&VG&WH&PB"O@"PB#SD$UF%TE%QB#QB#WH&YJ'ZL(ZL(ZL(YK(YJ'VH&RC#SE$RD$TE$YK'ZL(YK'WH&VG%WH&VG&RD#NG.@I?itvWZNGLCDLAZiqĺ}t]N@!N@"N?!M=!M>!N?!M>!M=!M= L= L= L< K< L< L< L< L< L< L< L< L< L< L< L< L< L= L= L< K< K< K< L< L< L< L< L= L< K< L< M= M>!N?!OA"N?!N>!M>!N?!M>!QB#N?!N?!N?!N?!N?"N?"N?!N?!O@"N?!N?!O@"O@"N@"N>!M>!M>!M>!L= N?!M>!M>!L= L= K< J< J; I:J; J; I:J; J;I; J< K; J; L< M>!N>!N?!N?"N>!PA"N?!L!O@"M>!K; J: L=!K; J; I9J9J: M>!K< K; L< J:I9I9J: L< K< J: H8H8H8K; L< L< J9K; M>!N>!N?"PA"QB#QB#D=(/9.*:26GD5IF0D?>PM5EBBW[BZ_*LD,MD,NE,NE,PG,A@+:22*1)1*2,3+4+5-3:+09,5,3-4,4+3,4,5/746-4+3+4,4,6.6-5-714.4,5/817/7.806.6.5,5,5,<54-6,6,807/4+4+4*6-91808/806/7.6.4-2,2,1*0)0)0*/+3-1)2*5,4+3+4,3+0*.*4/743.6-6-5.7.916.5.60627332 78 7965231/1101434-2/--20/*1,-')$+%/*0./,/+.*1,4/1.74954073733/0021415085"98"661.///.2/20201010402*3+4.4162214160705-7.5.60-1/21/-.2/516.4/404194703.3//'4+2+5-60926/6/703.5/1+4,3+5/1*5-616/:492928282:5 >8!@:#@<<7=9 @: ?:>8=7$A<%A=$?;:7!<:<8#?:">::6">8"=:<8&B=#?9#?9%A;%A:!=7=6 ?6!@8&C=%B<=5=5=6 ;7#<:6386:685!<8;5;6:593:4:5717171;6#=::5;5 =6"=7;6!>8!>9=6;6;4 =8<5<6 >8$@:$A: >7!>8#A;%B= >9@9#B7=7 >8 >8<6;6?6<5=7<6>6?6>6>7?8?9 A9?8&B>#?: ?8 ?8!?8&@:&@;%A;)C?&@< =6 ?7>7=6*CB'@>&A?$@=.EE*BB+CC-FF3IJ1GH(A?%?=)B@5JL:MQ,CC,CD(A@&@?$?>)CB&A?(B@)B@,FE$><'A?&B?.GG(CA3KL1IJ@TZ3JL'CA'A@&?>2GI*BB,DD1HK)DE3KOEW`;PT6LN0GH3JL6KP!N>!N?"N?"SD$XI&TE%TE$VG&UF$TF%YK'\R2[P.ZK'aU,aV,^Q*_R+[N(XJ'XJ'WH&WH&WH&XI'ZK(]P+^S.`V0aY0d]5b[3b[2Y_AFYR2LL8MN9JLJZ\)?F)>D%;@'A+?C-EG+FG-JH0LK/KI.KJ-JG'B?"<9'@?$=<%><%?=*CB(BA :9"::#;:+CB2HIQcgYmiCSCdnYM\N5/.)0+%?;0NLVqm¿ur<)@A%;;.CF.DG#<;420,1/2/7441/+76110.$>=+AC"::/-.+0.,'-(.*0-.*/,0-20/.10210/75#;;74404/4/3/413220!3/*5-02221/552243103342'=A&>?!9854 87 77":9651311212134758655"53!57$8:$99#6621 21!55 464413/3-0.1-0%38(46%14"/0!13$36%33,4/&20 /0)43085,88'45*79*9:%7='9@(:@+=B2?B2:7,;A*;C,>E+=D*9?(:B*:A'8>*KT:HR@NXDPY?MV>LV:IR;IQ@NV:JRO@#QA#RB#RD#SD$RC#TF&TE$QD'VH+TF$QB#QB#RC#P@"QB#QB"RD#RD#RC#SE$TE$SE$SD$SE$UF%SD$QB#SD$UF%XI'YJ'YJ'WH&UF%VG&XI'XI'WH&WH&WI&WH&RC$QB#RC$PB#SD$XI'YK'VG%XJ'VG&VG&WH&WH&UG'JD0RG(SH(RF(LC*HC,A@19B!N>!M=!L< K< K< K< K< K; K< L< K< L< L< L= L= M=!M=!M=!L= L< L< L< K< K< K< K< K< L< L< L< K< K< K< K< L< L< M>!M>!K< N?!N?!PA#O@"O@"N?!N?!N@"N?"N?!N?!N?!M> M>!N?!N>!M>!M>!N?!M>!M= M>!M>!L< M>!O@"PA#O@"N?!L< K< L< K< J; J; K< K< K< L< K< K< M=!M>!L< M>!N?!N?"M>!M>!N>"M=!K; K: O@"QB#QB#M=!J: J: K; K; L< L< L= N>!PA#M=!K; I9K< L=!L< G<$=<)A?*I: I:H9J; L= N>!O@"N?"M=!M>!M>!P@"QB"QB"QA"I=",7(':2,CA0KK+EC6LK[nsm~=SS*EB :730522./+1+ ;5&9./*/+2--*.*0.1//,.,-*1-/,1+,(.*1+0..8(JI,VM*[P*_T+^R*^Q*]Q)\P*\P*UL*DH.%=4 ;552;5<7 ?950/)3.:59472849594946.4.3+,:*):.2,2,3,0(3*KH-OF,OF,PG-QH-ME,2<-404.3+4,4-2+2+3+4,3+5/835-5.5.60$80$6.4+5,5-4-5,5,6/5/6.8081:3:37/91817.6-5-:5816.6.7/7/6,5,4+4+5,7.5.5.4-4-5.4-1/4/1,3,5-3,3-4,644.6.7/604+5+4,.(0+0,,)3,7/907.5.;390905/959573$86 56 57 32"1.210//-/02355.,/..//0,,)%+$513/2...0-1/4/6062/+/++*-.1,4/1/1.4.80;574656400..//001/5120//./624051633//.500-0//0).+/4/71206150524.60400165/1)+.'/(.(1,709382816/945.7/706.1+3,2,937061:2827070:5=7>9=8<5;5<6 ?9#>: >8<4:583:593!=:9495;7<8%B>"?:'A>">9!>7!>8=6;4;3<4;3<4928284 85 :7967261:68281817071728583617461":986:6 :7%<<";9:3:3;3<5 ?7>6=4 >6=5>6 ?8"@8"?7!?7=6>7=5<5=5<5>6>8>7;6=6=7;6 @9!@:@9@7 >8%C> A:>6"@:$B<?6?6>5"@8"@8#A8"A:$A;%A<"?9%C<"A:>5'C?$@<%@=(C@"?;8LN.EF0HI5IL+CC,DC&>>(A>%@=1HI5JM0FF)BA&A>(C@)DB*DB-FE,DB&B>'C@'B?(B@,FE&C@*ED,EE)DB%@=*EC/HG+DD8LPBU]9MR,CE.GH0HI6KN7KN@SY@SY3HK?RW5LO(CB-FF2IJ5LK=I*BA,FC0JG3JD!M>!N?"N?"P@"O@"N?"O@"P@"SD$WH&]O)[R4XO1`T,dY/f\0eZ0`T,ZK(YJ'XJ'XI'XI&XJ']P,^W0^[7W_IT_NHZWGYPP[Cd^4V[>>ND%:=%:?"6<&;B(?E-@C2EI(;B0CI0EH1LJ0JJ0LJ6PS@\_A\Z,FA/HH2ML.IG$==,DD.EG,DD*DC'@?'?=&?=,A?,?7DWVÄTiaNU:dc73.CXRv[pkjzu@M:>?(OD%FG.PH)DJ1VS3gfEU^H^cO@RC,F<5KDzzRhi>XZ:TV%>;=QU/CB4HL?RY,BE 76412/ 96742.1,1- 87#:9+CD'=>#::-++(-,-+,(,(0.637430-)/++)*'+'.*1-623-2.2-3.6263734/31211133200-302/301-1.1.5255!8966%:?$9<87651/0.4286"<98621 77 67"55!77 53#54*8;$67.0/0-/.1%25.0 /2/0"00/.!14'32'33&53#57&6;'55#15.85A?,(67)9>&6< 14#36(782:2/95)9=$6<*=D,>E)!28 0826.VH&WH&WH&WH&WH&WH&VG&UG&TE%UF%XI'XI'XJ'XI'WH&WH&XI'WH&XK(WI'XJ'UG%TE$TE$SD$SD$UF%VG&VG&SD$TE$RC$RC#TE%TE%TE%UF%VG&WH&VG&UF%VH&WH&VG&UG&UF%UF%TG(3>?*?1@F0=C2BH1AI8EL9FN?MV@NW>MW>MX!M>!M>!L= L< L< L< L< L< L< K< L< L= M>!N>!M>!L= L< L< L< K< J;J< J< J; K< K< L< L< L= M>!M=!L= L< M>!M=!M=!N?!N>!N>!N>!PA"O@"N@"N?!N?!N?"N?!M>!N?!N>!M>!M>!PA#N>!L= M>!N?!L= M>!N?!N@"O@"N>!N?!QB#RD#N?!M>!L< L< L= J< J; K< L= L= K< L= N>!N?!O@"O@"PA"O@"N>!N?!N?!N>!O@"P@"PA"SD#PA"PA"O@"M>!L< J:I9J:L=!RC$SD$N?"K; J:L!PA"QB#RC#N>!L= M=!O@"QA"QA"PA"QB"59(*;1)>82B7FUN?RU1HJ2EJ-BE-CD&?>85531.1-4/1,6/3,0*0*+'.)/+/,-+,*,*-)/*0,51/*0+2-402-3,0<+VM*^R+JE(.=/<@)JC&JE(IG(CH*:E./B2!;4!;5412.8440&?8-A73A03A.KM/WT1]V0[Q.[P,`T+\P)@@'+7)3+"4(/)3-6-PK.NF,?B.GE.AA,834.3-3+3+1*2*3-3-5.605,4-.8+2;,7.7/75605,4,6.3*4,5,6.4,806-6.6-7.6.705,3+4+5,7/82936-7/7-7.5+5+7.806-6.4,4-5,606/4/40743.3-403/64674.5.6152605,6.2,411-";84-808.6-6/7/80908.7/849594 73!87!674410331312 6856530.0...*(.+/)3,2,4,2.0+3-2,2//---.,,,0,/,2/4.402.5082921-4/">:43*--.,./0.130116272312.--+,,+-,.*3.0./000.-504,5,7/4/653/2/3246202,0).*0,3/506/70828372;6=6;4705-5.2-5092:37170806.80<4;39293:4809193 <793:2:5;3<6<47274<6#@;">9 >7 ?7=5;3827192:3=5 >6 =6:3"<:7453">:623.3,5/5.604/40613,4.935/727296(>>$;:96:5:4;4;4$:;';>74:4<5=6 ?7=6 >7 =7 >7?6>6<5>6;5<6<7"<:!>:!<9">:!=9 >9@9>9!>9%@=)E@*DB$B=$A<#@;%B!@9!@8!?9$A=?8$A=-FE,ED(AA,ED$?<*BA$=<'A?(A@0GG.FF+EB'A='B>'C?+EB&A<-ED/GF">9&B?&A>+DB$A<#B:%B>&C>(DA&D@"@<&A?)BB.GH6MO!>:*DD3KL+DC3IJ&@<$>:!M>!M>!L=!M>!M>!O@"PA#QA#O@"O@"O@"QB#VG%XI&YK'\N)_R+jb3jb3eZ0`S+\N(XJ'XJ'XI'XI&[N)[O,]U0SV:FRD?RN;PLCM;e]2jb5gb8\_G-><*;;-=>9IDETNUc]1FK0EL2JN1ON5RQ3OO6STdA\V+@8%<9#:;#9;(=@.BE*?A+CD+CD/GF-GF&?<(?<>1-305610/+/(/,42#;:65*@@53+)*'+(.+/,30424/-(.+411-0-.*+'-)0+724-5.2,515263524231543232102.3//,31101-4143!99 98756553300/.*1,7564423142 66 46103133!0/&20#22242303/2.0/1&31 /,../.0/%2.&21"45&6:)8<'7:%34+75*:<-(9@):B$6="29C@-WH&WH&WH&XI'XH'XH'WH&VG&UF%TE$UF%TF%XJ'YJ'XI'VG&YK(YL(XJ'ZL(XJ(XI'TE$VG&VG&YK(XI'VG&WH&UF%SD$RC$SD$RD$SD$RC#SD$SD$UF%TE%UF%SH-VG%WH&TE$UF%TE$SE$JF/.>F-@I,?G':D);F-G-<@3CM7FP7HR8HR6GQ7GP4DM4DK5DI8DG!O@"TF%UF%UG%TE$RC$SD$SE$QB#SD$XI'[N)\N(\O(ZL(VG%UF%ZL(_S+ZL(WH&OC'OH4NM?NRJbhc^_SRF*SE$TE$UF%WH&UF%N?"L= L< L< L< K< K< L< K< L< L< L< L< L= L= L= L< L< L< L< K< J< K< K< K< K< K< L< L< L= L= N?!N?!N?!N?"N?"O@"N>!M>!N?!N>!N?"O@"N?!N?!N?!N?!N?!N>!N>!N>!L= M>!M>!M>!L= K< L= N>!N>!M>!N>!PA"QB#PA"N>!N?!N?"N>!N>!L= L< L< K< L< K< L< L=!L= M=!L=!N?!N?"O@"O@"O@"O?!N>!PA"RC#RB"P@"O@"PA"PB"RD#TD$RC#QA#N>!K; L< PB#PA"N?"J: K< L=!M>!N?!N?!K; I9D?'K; K; K< L!P@"P@!PA"PA"PA"@:$*2%08(GYUXkm^rxPej2IL5KN*@?$<:40311-3.6.%7.712-*&.)-&,'1+/*+(+(*',)*(-(.*40522/73:6513-':.VN)]Q)SJ(JF(MG)QH)QF(KA%LB%EA&BD+2<*0<,:C.MO1OP1d\2bW.`U,aV-aV,aV-]R,aU,`U,\R+aW.SJ(GD)4>*?F08"=9/1+--/10112042310/0-1.2-2,1,.-'**-0/0.1-1./0-/12212001543-3-2*2+1,.'.(/*/*2.4/94<6:584847193723-6/5.5/92:28193937181=792719282928293:38270;4$@< =782 ;7:4;5:3<4 =7<4=5<5 <6;39192:5"<8!;9 :7615/50502+1+505/4061:5 9772966362#>:%@=!<8!:7";9:495;683:5<6;4:3:4<5 >8;7>8<8 ?9 ?: >9#B=!@;>9 @9#><>9"?<;7=7!>;!?; >9>7>7?6=5!A;)DA*DB(C?&B="A;'C?"@; ?:%C>&C>"?9$A;?6$@9!?8$A;'B>&C= >8%A>)CA"@:$@>(CA(B@,DC,DC$><&?=&A=&A>)DA*DA#>9!=6'@<&@<'B<'A=)B@'A?$>:!;6$@9'A>$?:'B?#?:#@:+BA'>>)B?%@=*B?'B?)DB%B@#><&A?&B?-GF'A?'CA-EE%@=$@<$><&>=+A:GE+J; QB#WI&]P(YK'YK&XJ&WH&ZM'VF%ZM'aV,dY.cX-dY.f\0h^1h^1\W1,B3%C<'D?+HF.NK.NG>K9KL2TQ2MR:;I9bW-_S+JK1CI6[P+ZM(\O([N(]P)bW-cX.dY/bW-]U1PS!M>!M>!O?"QB#PA"O@"N@"P@"QB#RC#RD#TF%UG%_R+f\0dY.`U,\N(VG&VG%XI'XJ'WH&WH'XJ'XK(YL)WJ'VI'ZK(`T,dY/bX.cW.h`:liAkhAff=]cGVdOSe_2OQ0ON2OL0OJ2RN/NK4VP0MF)<453)@B+AE*>A,@C0EI3IM5FECJ;BG6CF01>1+?8:PIMQ6OK,YK(SD$RB#@A*8A1rwhXQ6QD$TE$SD$RC#RC#RD#RC#P@"P@"QB#TE$VG%WH&VH&UF%SD$SD$P@"N?"O@"PA"RC#SD$TE%XK(WN/TN1_X2QS26L@tNee}avtvvevxBUV':7$2+*BB0GI%<=1-+&63+BB,AB*BA0DG"99/.+(0-+(,)1/504,-'1+4/610*,&/)0,3.1*3,3.4/3030402/30514130313/ 1* 97972/203152741./,65533032/,5242624063"9832./-/013126'/2%%0,"/-%11!34 3321.,.,-,.,.- 01#4501&68'69*7<'6:%68"36)9<,;>+::)79"14$21$35&48(6<%6<#5;&69(9<':A*=E);C->F(:A(9@ 07A?,VG&WH&XH'WH'XI'XI'XH'XH'VH&UG&UF%SD$TD$UF%UF%YK(YK(XK(VH&XJ'VF&XH'WH'VG&TE$VG&TF%TF%TF%TE$TE%UF%TE$TE$QB#RC#RC$SD$TF%SD%QD)TE$SE$UF%UG%TF%TF%LI3.=A,>E':@'9@*;D'8@'8?-*9@+;B.>F0AJ5FN2BJ.=C1AJ2CL0@G0AJ0AK5CIRG)SD$RD#TE$QB#QB#UF%TE$UG%TF%XI'PI0!L=!N?"QB#SD#RB#QB#QA#QA#RC#QA#SD$SE$PA#P@"RC#SD$N?!M>!N>!N?!N@"OA"O@"PA"O@"N?"UF%XJ'XI'VG&SD$SE$UF%UG%WH&WH&UF%UF%RC$RD$YK'XJ'XI'ZL(ZL(XJ'UF%\O)g]0]Q*YK(XI'WH&UF%TE$RC#TE$YK)UF%VG%VG%SD$PA"N>!L< K< L< L< L< L< L< L< L< L< L< L< L< L< L< L< L< K< K< K< K< L< L< L< K< K< K< L< M>!N?!O@"PA"PA"PA"O@"PB#QB#O@"N?!L= N?!N?!N>!N?!N?"N?"N?"M>!N>!N?!M>!M>!M>!M>!M= L< N?"N?!M> N>!O@"PA#QB#QB#N?!O@"N?!N?!QC#O?"M=!L< L=!K< K; M=!K< L< M>!O@"N?!O@"N?!O@"O@"O@"O@"QC"RC#QB"PA"QB#RB#RC#RC#RC#RB#O@"N>"N?"RC#O@"N>!O@"O?"PB#QB#O@"M>!M=!K< J; K; L=!K; J: M=!SD#QB"SE$TE$SD$SD#PA"O@"P@"O@"O@"N?"O@"F<#+6*%5*'<6,B@;NQ2FK+CD525253421.0-3.*9.%8/3.40,'-)/(.(4/2.30.),(-)1-1.8585!:6!:7":58495!6.:@*KB%WJ(\O(\N(\O(\O)[O)[O)\P*\P*]Q*^Q*^S+`T+aU,UN+SO0JI,CF,4=*=F.HK/ZV1`Z1d\1TR0$:.5->5?7 B9$F>!B:705/3-4-7/5-415.40606/4-61405/3,5/626.6-505/ 4*80"=4*<0:4808/7/707/956/6-5,6-6-6.3*5,80:37.7.5,5+5,7.7.8.7.8.:26,6-8.7090:08.91;561405.6- <7933,8/7.8091:67.6-90612.2-605,7-8/:27-7/:26.3,6.726.84829290817/3-401/30/,.-.,.-//0/2,1,203/302/0-/-/+,+/,0-0,.+.),+.+1+0+-++,.+/,/,613/2,:5 ;8856442-./0011/200/3.4/1.-/)-,.1.3-220/1.00),)+..5/3,1-3/5161/*.&2*0(/).)/)1.3/72:36/5.5182722-2,2,5060606184624-80:1805.4.4/707071:5828393;6815/4.6/6/93;5;5;4<593:1;46/5.8172725150605/4-3,2.645062";9 97";9!;:#>=!<:$?>'A@!=9#>;!<9 <8;6<7:394;6<692 ;672:6>6=6#@: >8 >9"@:!?<$A9>8>8 ?8=8<7:5!>:$?= =9?9@8?9#C>)FB.HF*DB(C@>7>6!@;%B>"@:#?;!@9<3:1 =6;4 <6!>7>6#A;*EC'C@%B='B@%B>&B>(CA&A?'@@*CB$@<">8!=7$?:"=9%>:"=6#<7&<9+A?%=8%@;$@;)BA'@=#=9">8(?9$<9";9!67&>='B="?:)=3AC-RE&QI*LP44D86D6=E6/A=$><">;#@;)E@'B<'A=8C7DA(E=$N?![M(YL'WI&WH%\O(^R*aU+\O(^Q)cY-bW,cX-g^0ib2WW4:I4=4%D?3NO5RT3RQ,ICAM8cX.WI&XI'_T,bV,`T,_R*]O)ZL(]P)^R+^R+^S+_S+_T+aV,bW-`U,`U,bW-bW-bW-aV-aV-`T,\N)\O([M([N([N(ZL'ZL(\N(\P)\O(WH&YK'[N)VH&UF%SD$SD$ZL(XJ'YK'YK'XJ'O@"N?"QB"RC$QB#N?"L=!L=!K< K< L=!L=!L=!M>!O?"O@"O@"P@"QB#RC#QB#RC#SE$TF%UF%ZL(aU,cX.`S+ZL(TE$TE$SD$VG%XJ'WI&TF%TE$SD$SD$VG&ZL(\O)\O)ZL([M(_S+dZ/h^2ia4dd;GZR6RN/MJ1MI,LE-IF,JD,KB)C<$;6)A@)?A)>?,?B+AA*@@)A?*@<2A9,B<;YZ:SP=K:VK)TJ,VG&TE$RC#J@#.<-BH6\ZDPF&VH&YJ'XJ'WH&SD$RB#QB#O@"O@"P@"P@"PA#QB#RB#RC#QA#O@"P@"P@"O@"N?"N?"N?"N?"N?"M>!N?"N?"O@"QA#UF%_W5MR5jvfawoÿ쳺t}r⵽Rcc.:042 97%=;0,-)64+BB*BB0EF.EF/DE"8730!76.,0/0+4,/(+&52$<:73610,.)-'/)0*2,5.4/2.402032523-2.2-2/3/2.2.31623/72956457454554652/3.52:8!:9#<;&=>!98#:934.,+4,A<%G>%KE/A=+FA-FE7/:4'63$50#5/ 2-1/"74)6/#3023#47"24"/2%23%48"47,:='56)7;*9<*9=&7:+9<(79+9>%59,67$5:"4;!38!4:%8>$8>%9@%7?%6=-5>=,UG%UG%VG&VG&VG&WH&XH&XI'WH&VG&UF%SD$QB#QB#RC#SE$WH&XK(WI'WI'WH&XI'UF%UG%TE$VH&VG&VG&VG&VG&SD$TE$UF%SD$QB#RD$TE%SD$SD$RC%RC$VG%TE%TF%UF%SD$ND*7A>+=E*=E)E':C'9B'9@*;D-=F*:?'8=(:B+>F+>I0CM(;C2DL3DK3DM3CM0BI0AHBI?QF)SE$VI&XJ'VH&WI&WH&YJ'\N)[O+>H=6HLARZScnDU`FSWLI:QB#O@"N?!QB#QA"O?"P@"QB#RC#O@"RB#QB#QB#SE$N?"M>!L< L= M>!M= N>!M>!L= M>!O@"O@"RC#TE$WH&VG&SD$TE$QC#QB#QB#RC$RC#QC#O@"RD$TE$RD$WH&YJ'XI&\N(XI'[N)^R*f]1g^1`T+\O)[M(YJ'XJ&XJ'XI&WH&UF%TE$QB#L= K< J; K< L< L< L< L< L< L= L< L< L< K< K< K< L< L= L< L< L< L< K< L< L< L< L< L< L< N?!N?!O@"PA#RD$QB#PA#O@"O@"N?"N?!N?"N?!N?"OA"O@"N?"O@"N?"O@"N>!N?!O@"O@"M>!M>!O@"PA"PA"O@"O@"PB#PA"PA"N?"N?!N?!N>!N?!M>!PA"RC#QB#N?!M>!M=!L< M>!N?"M=!L< K< L= M>!M>!N@"O@"O@"PA"PA"QB"RC#O@"PA"SD$UF$RC$PA#O@"P@"O@"PA#RC#WH&UF%QB#QB#RC#UF%PF(GC)JD&N?"M>!L< L= M=!K; K; L=!PA"SD$SD$SD$TE$UF$O@"N?"O@"N?!O@"O@"O?"G?%7;)8:$%4+-BA9JN/EG#<;1/0. 1.0./+4.4.->1DD,':20.-'-'+%2-,7,=<+8:,1-0,96!=9'8/"706273511,!95"851:)F@$XJ'ZL([N([N([M([M([N([N(\O)]Q*]R*^R*XO*8A.(<0!>7!?9 ?74->7$F= @871:472927050:27/5.924-4.6070814.614-6.3,5.5-603.20526242436450!>7;5"?8:291 A8&G@93:2916.5.6.6.8/7-905,5,5,5-5+6.6.:1:27.6-4,80808/:28/8.7.:1<6:18080704,6-6.5,:3#@;#@;;47.7.7/5/7180808/916/4.6-6-7-8.7.7.6/60615-8.7.6-:38382;5715271:5631/./,,//..3/4.5.5/3.0.2/1,.+.,++)*1-/+0+/*.,.*,)/,+,-,.-/-/-0-0-0-..-./00063 9531310/1011.//./1./,-0.//..0.//201////.+.00001031611*0+51500)3+0(0).*/)/*4-5.6.6/6/60503-1+2-3.8371816.6.6.6/6.6.6/6.80706/5/5/5.7/5.6/5.4.5.7172;5 <7<6<5<4=57/5-4-:3824.6263403-504.2+3,2+85":9$=<)@B&@?&=?*CD(@A$==(??&@>#@<#@6$@=">993:5:5&@<$?:;5<5;5"@9 @9=7%B="A<"@;>:>9>7=8<6 ?:>9;79595=9!?:?9 ?8=8 @9%D='C?(A?(C?%C<$A; =8:483:2<5 >8:3;4!=6!=8#?:#A:>6$@*BB(BA&A?&A?!@:"?9'C>'A>!<7'>66@.@A*H@&H?%N@#KA%LD'MC&N@#L@#4>0K@$NA%H@&??+HB(RE&@C-B>&N?"SC$WI&[M)PC%RC#I@&BB+1>/&?<&@>*B?;D77E<)@<9C66E9FA)QB"UF%XI&VG%TE$]Q)bW,bX+\O(ZM']Q)dZ.c]1;J3%B9 @9'EA;UY:VY4PM/LF2KANO2h^2ZK(LF*QJ*`S+[N(YK'^R*]P)^Q*^R*^S*_S+`U,_T+_T+aV-bW-cX-`U,aV,bW-`U,`T+_T+]P)\O(\O(YK'XJ'VG%XI&WH&VH&XI&YJ'YJ'WH&TF$RC#P@"N?!QB#UG&WH&UF%UF%PA#QB#QB"VG&VG&QB#O@"N>!N?"L=!L=!N?"M>!M>!M>!M>!M>!N?"PA"QB#RC#RC#QB#RC#TF%VG%YJ'`T,cX.cW._R+ZL(WH&WH&YK(YK(VG&RC#QB#QB#RC#TE$UF%UF%VG&WH&YJ'\N(`T+aU,f_4Z_=3PN6NC>P=YZ5EN9=M;5L?%<!M>!M>!L=!M>!L=!M>!M>!N?"N?"N?"N?"N@"O@"SC$UF%VH'XL*_dOú^o]|fhP~룬=SQ2.!96!960-*(86%@=";840"97";:'?>+BB(>?#;: 97#=;1,41%>=+DD5JM86632./*/*0+1,4/402.61513.3/72724061 <7!=961404050846165$8:&68233/2,3-73728697$??$?>";:#:9%74,;-)4,&654FLBV]):?(56$46$58):> 58#78(;="78"42!66 344424#47 13$58&46%54"24"23'59+:=-:<)89(76)8:&44%44(67)7:'47"1506"28&6:&7>$6@#6>/7)86PJ,OG)LF+TL.WH&VH&WH&WH&WH&WH&VG&UF%RC$P@#P@"QB#RD$TF%VH&XI'WH&WH&VG&TF%TE%UF%WG&UF%TF%TF%RC#RD$UF%TF%SD$SD$QC#RC$RC$RD$QB#RC$TE%RC$RD%HE0.=B%8@&:B%9@&9A*E);D':D)F?@C8TN2\R+^S,[P*[O)ZO+RN3BK=/AB9JO?PYJYbIZeHXbGV_JL@UG&PA"P@"PA"QA#PA#SD$QB#QA#RD#P@"O@"RB#N?!M>!L=!M>!N>!L< L= L= L= L= L= L= N?!O@"M>!N?!PA"RC#QB#PA"O@"O@"PA"O@"O@"O@"O@"QB#XJ&_R*^R*\O)RC#QB#VH&\N)ZM([M(TF$YJ'XI'ZL([N(ZK(UF%N?!O@"PB"L< L< L< L< K< L< L< L= L< L< L= L< K< K< L< L< L< L< L< L< L< L< K< K< K< K< K< L< M>!N?"O@"N?"O@"PA"O@"O@"M>!L= M=!M>!N>!M>!N>!N?!N>!N?!N?"N?!O@"N?!N?!O@"N?"O@"RD$SD$SD$SD$QB#QB#QB#QB#QB#QB#PA"O@"N?!N@"PA"QB#RC#RC#RD$QB#N>!M=!M>!M>!N?"N?"L< M>!N>!M>!N>!M>!M>!N?"O@!N?!O@"M>!M=!O@"PA"PA"PA"QB#RC#RB#WG&VF&WG&TE$TD$SD$TE%WH&BB.@F/OB#PA"N>!M=!N>!M>!L< K; L= M>!M>!N?"O@"N?"O@"N?"N?"O@"P@"O@"O@"PA"PA"HB'.A4$:5/DD%;<'==56012210.+!0'C?&IC'UG%YJ'DB+0-.+/+ 2*C=*<;*G>*59)!5-.(4.0-/+.)2.6150$8.;D.ID'SH&ZM(ZL([M(YK(ZL(ZL(ZL(ZL(ZL(YL(LI+%;0OR3LR5)E<;5;4=692<5"B9<5>6 :1<<+=<+7/6/5.5/4.4.6071823,6/606/513.4,5-3,4084616/7174;7734.50#5-0=0:25,808/<3<47/806.4+8090;2806-8/81807.8/8091:2 ?9>79280<5917.=7;4;4<6:4=7908/8/7/8/:0 ?9807.>7"A<#@;;380#8/$6+6.8.:15,6.4-8090908/7.8.8/80:1917.7.808.807/9161414080;3937332300/2/3.6/6.3.0/0.0./-/,2.0-0-,,-,/.1--*-&.)1-/,1/0.2-2.3.402/3.3.4/304.2-5/1. <710/.0/1//.,.1-0-//./10/10/00..-.0/0.0,0*6-6/2.302+1).&2*904-.&.(/)/(2+3,6070604-6/3-527060:5 ;68250706.4-5-708/8080707/6.4-6.5.721*3,4-9492:48494=7>6816.7.6/603,1+40514.2+1*/(2+4/524164%><.CD(?A*@D)?A$>=$><#=; =9 >7>8%A=%B= >8 =794:5<6 >8"?9$B:;3 =8<6;5=7 ;8#@;"@:">;=8=8;5>8:5:5;5;6:5;6<7=6>6?8>6=6>6%A<&B==5=68171:3:3 =7?7#A9%A<,CA&?<">9<6@8#A<)BA$@<%A<&A>%A>'C@+BB*BA'B@'B@-FE(C@%@=921@0L="M=!M=!N>"O?"QB#P@"O@"P@#O?"N>"N>!P@"P@#RC#RC#SE$VG%WH&XI&YK'[M(\O(\P)TH(TE$?A/B.LD'DD.SE%QA"P@"SE$TE%SD$PA"RC$SC#VG%\N(cX,dZ-`T*cW,dY.bX-bW-f]14G7"@8$B<'D>6STA]c:WY,LE2K@OQ4\O)UL*/F9:K:LM0]P)^Q*_S*`T,`T+`U,`U,]P)^Q*^R)^R*\P)_S*aV,aU,[N(]O(_R*ZM'ZL'[M(YK'TE%VH&VH&QB#N?"O@"O?"N?"N?"O@"SD$XJ'YK(WH&PA"O@"N?"M>!O@"O@"P@"O@"RD$WH&XI&WH&TE$O@"M>!L=!J; L< SC$N>!QB#SD#QB#N>!N?"O?"PA"RB#RC#RC#PA"RC$VG&WG&XI&]P*`T+aV-bV-`T+]O)ZL(YK(YJ'VG%UF%SD$RC#QA"PB#QB#SD$VG&YJ'\N(`S+_S+]R.XU6RP3\W1TT3[O*WI'TE$XL)beEkoFE[O,FC,DB+B8);/.C8,DA=XWQheRR!N?"P@"QB#SD$RB#O@"N?"M>!N>"M>!L=!M>!M>!L>!M>!N>!N?"N?"N?"N?"O@"O@"O@"O@"QA"QB#RB#QK/4E1?I3_tkX`MX_Kp|gxx@TS&=;86&>>/DF1.!;72.1,%@>'A@$=<+AB1FH/CE%<=&?>62+BB2JL1FIL_g9LQ< ;:;9-EL@W_'B@$=;'?=$99(;?"69"78!47"59%8=&8=+D(:>,>/?C2?B12!33&52*51&44 45#45*65(78$57%36"48%69#55#56 46#34,64"28-2,1!38#6:$6;/5/60717"5535/3+2VQ3XJ'XI&WI&WH&WH&WH&WH&UG%SE$RC$RC#RD$RC#SD$UF%WH&WH'XI'VG&VG&VG&VG&UF&UG%TE%RD$SD$TE%TE%RC#QB#PA#QB#RC$SD$RC$RD$SD$SD$QA#KB+&9?$5;&8?&6=%7='9@)9@,>E.@G,=E,>G1CL,?F,?F+>G.AI1CI2CI-@E2DC,?D+B5FE3DG:LRAQY?OW@OXBT`FV_JTSJH7UG%RC#PA"SD$TE$SD$RB#RC$PA"SD$RC$P@"M>!L< L< M>!M>!L< K< M=!N?"N?!N>!M=!M>!N?!M>!M>!O@"QB#RC#RC#PA"O@"QB#QB#QB#SD$TF$SD$SD$\N(\O)XI'QB#OA"TF%WI&SD$YK'aU,aU,XJ'YK'XI&UF%PB#M>!L=!L= K< L= L< L< L< L< L< L< L= L< L= L= L< L< L< L< L= M=!L= L= L= L< L< L< K< K< K< L= M>!M>!M>!L= M>!M>!M>!L= L< L= L< L= N>!M>!N?!N?!N>!M>!N>!N>!M>!N?!PA"RC#PA#RC#UF%TF%SD$SD$SD$SD$RC#RC#RC#RC#RC#QB#RC#PA"O@"QC#SD$RD$TE$UF%O@"N?"N?!M>!N?"N>!N>!N?!O@"N?"M>!M>!M=!L=!M>!M>!M>!M= M>!O@"RC#UF%XI&YK'WH&PE(NC*TE$VG&C?-=D;!N>"N>!O?"VG%YL(VH&N?!P@"O?"O@"N?"O@"QB#OB$6C5%;764205410/-/-.*49&SE%RC#PA"TE%XI'WJ)$<73.51,>38>0/@6%=6 =86148*/>5$?7$90OM.^R+]Q)\O([M(ZL(WJ'ZL(YK(ZL(ZL(XJ'XI'XI'JE(7?,.A26H6OT5,B596$?;<672 @8>7;5 @8?72<.D=*5-4/5.4-5/:3>69160"?9$<43,2-3,2+3,5.;560816/718291>6:2:381.9.;;+A>+*:.:3<3;3:27/6-<570<4;39180816-8180;570<480:0:2=5<5?8"C=%F@ ?9 @: @:#B>!>9 @:?7<3:290:2917-90<4;4;4;5"@;!=8 <8(<491908/5-5-5-6,908/8/:17.6.7/90=4:1907.8/7/7/7.7/70:171739472947341300,5-4/4.5-601.2.0/0/520...,-0...0-0.1,0.401.0.3/62403.40515/5051635240716/6/51 :6:62/202/421020103152413/4/602.3-3.514092:16.0'4*8.7.<2<46/2*0)-&/'0)816.704-5.5.6/5/728350827/71806-3*5.92905,4,93:480935.2+2,3.#<8%A<=6;592:3>883:370706/3-3-2+2*4/2,3,2+3-52638596!:9$=<.@B%<<#;<#=<$?<%>="=:(BA*DC%A=#A<(E@#@<%@<">: >8;6!=9"=9!<7"@: =7:47297$>> <9 ?:>8:597:7;8"<<<8;7:59595 <7<6=6:5:594838561705/84;6:4<5">:%@<'A=$>9$>;#>: =7=5>7!?9%B>%B<)D@$B=&D?)CB0FI0GH-GF3JL+DB0HF3C8?@+M>"M=!M!L=!N?!PA"TE$SD$N>"M=!M>!N?"RC#WH&YJ'TE$N?"N?"N?"L=!M=!N?"O?"SD$XI'YJ'WI&YJ(WH&QB#M>!O@"O@"O@"VG&RC#M>!RC#VG&TE%O@"O@"P@"QA"QC#RD#RD$TE$[M(\O)[M)YK'YJ'ZL([M(_S+aV-aV-aU,bW-bW.^P*XI&RB#PA"QB#RC#RC#UF%VG&XJ'ZL(ZL(YK'ZL(ZK'XJ'XJ'XJ'XI'VG%XH&ZL(ZK(YJ']P)_`=.LG.HE4JC/JF0KGC]]xeupIF,WH&SG'8A-#6+07%A<#SF%XJ'WH&VG&VG&XI'WI&RC#P@"P@"N?"M>!N?"N?"QA#QB#P@"N?"N?"N?"N?"N?"M>!L>!M>!L=!M>!M>!M>!N?"N?"N>"N?"N?"N?"O@"O@"O@"O@"P@"P@"QB#QD%IJ0:F16F3:>'6='8<%1H8M\Isz6LM64 9550/(2.:76LM#;:"<:!<:":8*BB2HI'>=#;;!98&?=2IJJ_dhzJ\f3HL731*3,3+2+1+3.50623/3.3-3-5/4.4.2,2-738362'@=2OJ"?98293716050603,6/:372 =7";9$:;+>B563355$8:$7:!48#6:(:@'9>(:> 14&79'9:,>@*<@1>>&8; 33"311138*:;,!10#34!32&57$46$47$37$47%69&8:251412 2502+/-.13 25"5:37!68#6;0607,3,3,3,96YN)WJ&YL'YK'YK'YK(YJ'XJ'VH&UF%TE$TE$SD$RC#RC#UG&UG&XI'VH&XI'WH&WH&WH&WH&TF%SD$TE$SD$SE$RC#QB#PB#SE$SD$RC#SD$VG&SD$RC#O@"P@"O?"LB*CE90@C);@$8<%6<'9?*;A+89'9?*9?-=B0AH/AI1CJ.AF.AF-AF.BI/AI*+=?+=A)MO@IFLB+RB#WH&UF%P@"RC#PA"RC#QB#TE$WI&SE$PA"L= L= K< K< L< M>!N?"O@"O@"O@"N?"O@"O@"N?!O@"QB#RC#QB#QB#PA"RC$SD$RC#SE$TE%SD$QB#SD$XJ&XI&UF%TE$RC#PA#SD$WH&YK'`T,ZM(XI&VH&SD$L= L< K< J; J; L< L< L< L< L< L< K< L< L< L< L< L< L< L< L= M=!M>!N>!M>!M>!L= L< L< L< L< L< L< M=!N?!N?"O@"M>!M>!M>!L= L= M>!M>!L< L= M>!M>!N?!N?"N?!O@"N>!M>!N>!O@"QB#TE$RC#PA"SD$TF$SD#SD$TE$VG&VG%TE$SD$SD$SD$SD$TE$SD$O@"N?"N>"RC#UF%SD$O@"O@"N?!N?"O@"QB#PB"O@"O@"O@#N?"N?"M>!M>!M=!M=!N?"O@"QB#UF%VG&XJ'XJ'RG*2=7.?ARH+YL'OF).>?/EK.DI-CH2>:FA*PA"O@"O?"N?!N?"N>!M>!N>!L< K;!M>!N?"O@"O@"VH&cX.[M)SD$RC$SC$RC#O@"O@"P@"PA"PA"L?"<;)$4,1,/*$4*18'MC&TE$QB#QB#RC#TE$VG&XI'CE0)>34.72"@;!?7!=7 @8!@9<6&90"6.4.4-6/4.82;3@7 @91@5/6)3,3-4-5.1*5.92706091805.4-<3@8!B:<4;3+<16;,*=290=5=5>5?6;3;5>7=5:3;4:480926/92814-:3;45-5,90<5<5<6>892;4=6=6"A;!@;#B=&D@&FA&GB$EA#C>$D>"@; ?9 >8%B=$B>&B?"?;<7:4!:47.=4=5;35,5,8/908/<46-80908.;290:1:1=691807.7.6.82:3=5?7>6?9>7 ;650!>8<5726/5.100-0/10./--,.-.0/1/.,.,1./,..2.3/1-4.5/514-93615-5/60817/919442404.3/71 ;7722,3+2*503.5.715/4/41400/30708/:1;28/8/:27/6.9/;1=4>7:36/5.4,4,4-5/2,,%.'4.:392;3!;8 :67182823,5-5,4-4,4,6/5-92<59370602,2,3-5.82:2;49293 ;74.6/706/504/714.0(0)3,1)4/63 975272:6%><%><"<:"=;&>=!;:%?=&@?$>>'A?6LN/HI$@<%?=(B@1GI/FH*CD(@@(??"<;!;:$?< =875:8:8:7=9!>;=8:687 ;;"<< :;!:=!<;<8;9;996#>;*@A+AB+@B!:9'>=#<;#>;!<8 ;8:7 <9<7 ?8 ?8&A< >7>6!=7 <7">9 ?8 @9 @9"@:"?;$A='C@%C>*CC1HK4JM+DC#>:&@;GA'M=!M=!M=!M"QA#SD$TF$RD#RB#SC$UF%UE%UF%WH&XI&ZL(ZL(WH&XI&[M([M(\O(_R+^R*]P)[M(bW-ZL(RB#QA#UF%TE$VH&VG%YK'ZL'\N(UF%SD$ZL(^Q*`T+]P)]Q)]P(_S+aV-QP11G8%B:&E=(H?$E<(FAv7RP-LE,I>f]2aT,aV,`T,_S+`U,dZ.f]0e[/eZ/bX-cY.dZ/eZ/cX-bV,`T+bV,_S+XI&]Q*dY.bW,_R)\O'ZM&cX-e[.`T+VG%O@"L>!M>!N>"QB#RB#O@"O?"PA"QB#O@"QB#QB#P@"O@"K< L"N?"QB#UG%YK(XI'SD$TE$UF%WH&TE$QB#N?"N?"QB#WH&YK'[M(\N(]P)_R+`S+_Q*[M(XI'VG%UF%YK'\N)]O)[M(VG%TE$RC$TE$VG%TE$RC#TE$UF%WH&YJ'ZK([M(ZM(ZL([M([M(ZL(XI'YJ'XI'WH&VG&XI']O)NY@(DA+EB6C4=J=0E@9MEBH5XJ'WH&VG&?F08C/1F89G7?>%VF%WH&VG&WH&WH&VG&VF%TE$QB#M>!M>!L=!M>!N>!N?"O@"QB#O@"O@"O@"O@"P@"P@"M>!L=!L=!M>!L=!L=!L=!M>!M>!N?"M>!N?"N?"N?"N?"O@"P@"PA#P@"O@"O@"IA%;K@/IC%=$'D;0;%?D(o|q釔Wik!97%><624HH(@?845277 77550/(@@.DE;PR5JL533/51,ECSfgM`e:NS(@@612,1*0*0)0(0*1*2+4-3,2-2-606/6082 ;6;4"=85.5/945.9550613/2,3.6285624050%:;"8965$;< 68 55$58);>+=A/@F+=B->C&78(89+;>+;?&8923!44010020(60 2///+2./6,27.1000$45$4524&5425$6910 24 14/0.0!13"47232345&79#8:#6:!39,4.5/6TV'9>):@+E,@H*>D(=@(>>(?@)>@"9:#8;(=A$9=&;>+>B/@E,>C1DK6JR8JR:KT9IR!QB#QB#QB#PA"O@"M>!J< L< M>!N?"O@"PA"O@"N>!N?!N?!N?"N?"O@"PA"O@"O@"O@"O@"QB#SE$TE$TE$RC#RC#QB#PA"PA"PA"PB#PA"PA"O@"SE$XJ'TE$O@"PA#O@"M=!J< J< K< K< J;J; K< L< L< L< L< K< L= L< L< L= L< L< L< L< L= M>!L= L< L< L< L< L< K< L< L< L< L= M=!L= M>!M>!L= L= L< M>!M>!L< K< L= M>!M= N?!N?"O@"O@"O@"N?!N?!O@"TE$UF%RC#QB#QB#RD$SE$SD$SD$TE$TE$UF%TF%TE$UF%TE$VG%VG%TE$QB#N?"O@"QB#N?"O@"QB#PA#RD$TE$VF%SE$O@"N@"N?"O@"N?!M>!L= N>!O@"P@#SD$WH&XJ&VG&[M(YL(QJ,BE8NE*VH'LG,>G@5HQ+AI&<>;K=PC$KB(MA$MA$MA$QD&RC$PA"PA"QB#O@"M>!M=!M>!O@"RB#SC$UE%VG%RB#RC#SD$SD$RB#PA"O@"PA"QB#O@"O@"QA"PA#PA"SC#TD$SC$RC$SD$SD$SC#RE&TG&XJ'ZN*7H:73/)2-717130'903/5//).*/+1,6<)\P)ZL(YK'ZL(FF-4@2KF*WH&WH&XI'XI'XI'XJ'\O)YQ,[T._V.eZ/cY/dY/g\0.@082 ?6>581<5;4<694:6#=6$C=93:2:3@8A8:3>7@892705.;32+1*3,407170:4;3;581 A8&JA"D< A: A9"D;;5>7>7#C<%E>%F>"=7)E@<5?791=670926/:55/6/5.:3<6<5>7>7;3;3:2<3 A98293;6"?;%D@&E@$A<$B=#C>$C>'GC%FA#C><5 A;?8!A;"?;$@=93:4$A< ?9=6?7?79/;2;27.908/;4=5=4<4:1=5!A:<3=4<490<4<56-6.91<5=6=5:3;28191=6<4 =4=5 ?7;5:4;5:2804./,1-4.2.2,3,4,2*1+2-2.2/6/40304.4/51:4934.41718270738171504-7190:3513/504.5/705/4,5.4-4-7/918/807.90906-7-4-4+3+7.?6>6:3A8:45.5/5/5.601*0(2+92725/92:4814,4-4.813+703+4+3-:4%A;80!7/604-4-3,70705-8293:3:5;5;560603-0)6/;61*514.4/72!:8";: ;873"<9!:7";98485";:#=: <8%A>(A@(C@-DD4JM(A?+DD+CC(B@*CB+DD/FG3HL%=<*@A&>?$>=%>>9:8:#:<&>?"><<9 =: >; ;<"!<>"=? <<95 =<#<=#>=&>>%>>(@@&?>)A@&@?$@<">;$?:#?<">;$@< >9=5=5#@;>6;5">8!<8=6 >7#B;(??#=<#@<'EB%C?+ED+DC/FF.EE1C:ED0O?"M=!P@"QB#QA#QB#VH%\O(WI&YJ'ZL'XI'XJ'YK'YJ'YJ'YK'XI&ZK']Q)[M(\N(_R*`T+_T+f^0ke4f^.aV,[N(VG%UF%WH&YJ'TE$TD$WH&WH&YK']P)WH&TE$\O)_S+`S+`T,JJ/MN3/F9*E=(G?%G>%E<&H?(I?$D=Ndg@[[*MC(JA+G>GO5:J8@M8VR0bW-dY/f]0i`1dZ.dZ/dY.cX-bX-bW-bW,bW-_T+]P)[N(WH%\O)dY.dZ.cX,dZ-e\-f]/g_0`T+UF%TE$SD$VG%O@"L=!L=!L=!M>!N?"O@"M>!L=!K< J; J; K< L!P@"WI&XI&VG%SE$SD$QC#PA#PA#SD$VG%TF$TE$TF$UF%VG%RD#VF%VH&QB#PA#N?"O?"SD$XI'[M(\N(\N(^P)_R+_R*ZL'WH&TE%RC#TF$VG%WH&VG&TE$RC#TD$VG&ZL(ZL(YJ'YK'[M(\N(YK(YK(YK(ZL(YK([M(\N([M(YJ'XJ'XJ'YJ'YK']P)QS58QF(F@+B8,G@@NBLL6XJ(XJ'VJ(6H8*H=5J:Ljce~x?UH;C.UG%VG&UF%VG%SE$RC$O@"M>!L=!L=!L=!L=!M>!M>!L>!M>!O@"N?"P@"N?"N?"M>!M>!M>!M>!M>!L=!L=!L=!L=!M>!M>!N?"N>"N>"N?"N?"O@"O@"O@"N@"O?"O@"P@"PA"QD$4A/*;+'=.<;"&5$ 7)H> 0=*dtmˍOb_1GFQgn!:6I_b0GH9PPDY[+CD,FG$==(@@,CD2GG"98!870-/*502IILbe>RV!9864-(,'-(.)0+/*0,0*1+3/6172711+0(1*925/815.0*4-73!<9%>= 864/61953/756/40412,3.43 67':<):9$9:&9=,;A):?*<@-9907.49,&76#78!55!56441120 54#76*74><*:;,"2/!23!34/0 23#56"55"35&59 00*6. 2601 25025646"67$8;$8:&:=%:=&9>&8= 18"4;(:=db.?E.?E*?'>@'=@&>?%:;$9<$6:$8<$9<':=,?6C=FD0O@#O@"SD$SE$TE$RC#N?"N>!QA#P@"PA"O@"PA"N>!L= N?!O@"O@"O@"N@"N?!N@"O@"OA"O@"N?!O@"PA"N?!N?"QB#SE$TE%SD$RC#QB#PA"O@"O@"O@"N?"N?!N?!N?!N?"N@"O@"N@"M>!L= L= K< K< K< K< K< K< K< L< L< L< L< L< L< L< L< L< L< L= L= L= L= L= L< L< L< L< L< L= L< L< L< M> M>!M>!N>!L= L= M>!L= L< K< L= L< L< L< L= M>!N?"N?"N?"N?"O@"N?!N?"PA"PB#TF%VG&UF%UF%TE$TE%UF%UF%TE$TE$TE$SD$RC#RC#RC#SD$UF%UG%TE$TE$RC#QB#O@"PA"RC#RC#RC$WH&WH&VG%RC#N?"N?"N?"N?!M>!M>!M>!O@"QB#PA#SD$\N(]P)]P)YK'RH*?E7VK)9D61E?(@>!?/G<]Q*YN([M(VN,$;24,0,2.0,-+0,1-4.1*.*/+0,@A)XL([M([M(FF-!>:9A-YK'XI'XI'XJ'XI'XJ'[N(@G06,4.)>1RP.g]0dZ/h`26G3=5;4>6<582:3:48261!B:"D= ?9>792?7>66085923+4,5/703,2,4.5.3.:592<4;3;3;3:3 A9%H@#F< ?7:3:2<5#E=%E?#B<&F?%E>&G?=6 <6:392":36/5.4,5-7/707/$D="A:%D= >6!@8%D>+LF+MH,LG(GB#A;"B= ?:!A:;5;3:2:291<5;3"@9"A:%C>%D@$B>$>9!:4928/ A;$GA&JB$G@?6?5=3:191;492?7<5>8=6"A:=4;3"B:"C;"@:&D= ?7>6:3>6?7=6<5=4:260;3>5=4:2<4<68082 <6<4:2:3 =7!>6<5;5923-706.70603.0/2-2,0.1/3.1,5/4.3/6.7/724.6/8172:2;4703,4-;4!=71,4.3-4,81936-7.7.80906-6.6.6.6/6/3,5,0'5,6-:2=4;4 @881813-3,6/6/4/5-3,4.3,4.82:4603-2+2*4-806.4+4-4,708/#6+ 6,5-7/82716/815/4/617282714-602+2+1*2- 87)@@'>>!:987:7:7 <9"<:'?>$><"<:"=;$=<&?>.FF!=9:684"=9!<8)BA2HI/EF3JJ2II4JK.FG-DE*BB'A?.DF0FH2FI-DE$??&=A%?B&>A!;$>@%@@$@?:887 <:"<<$=>%==%>>&??%A?"?;">:!=: ;8*AA.FF.FG'B@%??$>=">;"?9#@;!>8;4(A>"@8">8 >6!>8"?:<5=7#?<&C@.HG2JJ(CA0GCEJ1[M(UF%RB#SD$UF%VG%TE$TE$YK'^R*YL'YJ'[M(YJ'[N(WH&SD$WH&WI&XJ'YJ'^R*`T+`S*cX-`T,\N)\N(`T+]P)^Q)ZL'WH&XI&[M(^R*_S+]P)\N([M([M(\O(ZL(\N(^Q*^Q*^Q*cX.GO7%F>%E=$E<$F=%D<&F?$G>#E=3NNQgm)LB)NB)MA*LA)K@'J@!L=!M>!N?"N?"M>!L=!K; J; J; J; J; L!M>!N?"UF%QB#QB#O@"O@"O@"RC#QB#SD$UF%TE$TE$UF%UF%VG&TE$TF$TE$UF%TE$PA"RB#QB#RC$UF%WH&YK'\O)WN.^R*^Q*WI&QA"PA"QB#SD#SD$SE$TF$VG&VG&ZK'ZL(ZL(\O(]O)\N([M(YK'YK']O)[M([L([M(]O)]O([M(YJ'WH&VG&WH'YP.6KB1LK.OHB`\WqpiwpQH*ZL'[M(YK(XJ(BK55OA9WMIWG?G1RF&TE$TF$VG&TE%QA#N?"M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!N>!M>!M>!L=!L=!L=!L=!L=!L=!L=!M>!L=!N>!N@"QB#QA#O@"O@"N?"O@"N?"N?"P@"P@"PA"P@"P@"PA"A?&4<'Qe^ZZJ2:(H@&<<$29$:I6豹Seaq3NJj}|VkjNed7SQ.JH0JG6NM)AA(?@$;:2GI*AB'>>1-1, 94*BA0FH63861,/*.)/+721-6261614-0)0,3.0)2+#@:%C=604,704-70825/3+2*1+2-3,4.5.5.(@?3,3,50#;:#9:+=?*>?":8!87'9:"68#68 32$57%68"46"440.3164533141 2-30>=*48,"43 1/"4100%44 44&87%8:#87+?<&96%42 4446%6636 4823#8:#68$79":9#9;$8;&:>$8>1EFZiUN[D=N=)>7&:;3D=GM6[W4\S+YN(XL'WK&VJ&VI&UH%UG%TE%TE$UF%TF%VH&YL(XJ'XJ'WJ'VG&XJ(VG&TE$TE%UF%XI'XI'UF%UF%VG&XJ'SD$RC$PA#N@#N?"P@#QB#MA&9FE'9>);@+E.AH0CJ0CK2DL0CI+@D,AD,AD+?D.BH-@F)>B$9: 46%31#69"58$7:&8<$7<&8=(:@,=D1DL7IQ9JR6GO2CL6GP4FM6HO4HN&:9AICKD/O@"TE$VG%TF%SD$PA"M>!N?"RB#RC#QB#N?"M>!L= N?!PA"O@"O@"N?"N?!N?!OA"O@"N?"N>!N?!O@"N?"O@"RC#RD#RC#QB#QB#PA"O@"N@"OA"PA"OA"O@"N?!N?"N?"N?"N?!L= K< I;J;J;J;K< K< K< K< L< L< L< L= L= L= L= L= L< L= M>!M>!L= L< L< L< L< L< L< L< L< L< L= N>!N?!PA"PA"O@"N?"N?!L= L< K< J< K< L< M>!M>!M>!N?"N?!N?!N?"N?"N?!N?!N>!N?!PA"RC#SE$VG%TE$RC#RC$SE$RD$SD$RC#QB#QB#RC#PA#PB#QB#QB#QC#TE$SE$UF%SD$PB#PA"PB#PA"RD$UF%VG&VG&SE$O@"N?!O@"N?"N?"M>!M>!N?!PA"QB"QB#QB#ZL(^R*ZL(XJ'QH*MH/ZL(RK,GJ9)>D$8< ;:#C=+MDUL,PA#RC#RC$RC$PA"RB#XI&\O)\P*ZM(\O)^R+^R+VH&O@"N>!N>!M>!M>!M>!N?"P@"QB#QB#PA"O@"P@"RC#WI'HK2DJ3CP:.IA)ID;O>aW/TY;\O*[N(NK-!>7/*.)/*1,0).(.(-*.(0,2,YP.IH.ZL(ZL(JJ.>J6ZN*YK(YJ'XI'XJ'XJ'[M(UM*:34-5.!D<:3OR1e_3QS5#81:381;3<4:3>8;5;4=6"E=@9@8=5 ?7!D;:472634,4-5.2+0*2+5.5/3+81>9 @8>6=5=7:5<5<5:3=5 @992<6%E>$E=>6?8?7"@9"B:%F>"B;"B;<6-@7 >9 >892936.;5707/;2)ID'G@(IA$B<*HD.MI,LI/NL(GC)IE'EA5-5.80<5 @:#D==692=6$C;&C>&@9#;4*@:'B=">96.!B;%F@#E>#D=@7=4;1907.7.:15/;4809281;3<3!A9"B:"B: ?8<492=6 ?8%C? >982:4809291;3>7!?8A9!D:A8@6!A9!A8>5=4!A8=4<4#@:!?8&D="?8<5;4;583737552643121././0/3020./2/4,3.7093;4>6400-1-51"B:">8703,4,7/#B=!?:<46.7/4-5-6-6.5,6-7.80:4:23+3+.'/'3+=5:24,2*93"<982828181:570608292!?8:44.2*3*4,804-817.6-;25,7/#8/$82:4815.80707/929272502-1+2,0(2-":9$<< <:$>=86 ;9!<;*BB%>>*BB*BB+AA'@?+DC(A?,DD,DD&A@+CC,CC*BA*@?1FI0EI0FI:NR7MO/EF&??0FG2IK2KL,EE+BB'@?#?=%?>#==(@B%>@!=<:8"><;997=;%;= <;;9:8#>=!;:"=<+CD*BB'@@$=<$@>#?<(A@'=?'?>&A> =9#=: ;7">:!=9!<9#?;%><">9">8 =6=6 ?8>6#@;"?; ?:%@?-FE2KK%C>+E>DG0YM(VH%TD$VG%VG%XI&TE%SD$RB#QA#PA"ZL(\N(ZK'WH&WH&VG%QA#P@"RB#SD#SD$TF$ZM(XJ&UG%XI'VG&ZL(\O(ZL'YJ'YJ'[M([M(ZL&_S*`T+aU+aV,`T+[N(WH&XJ'[N(_R*^Q*]P)aU,LN4'D;&F="D:#E=)GB&H@$C; A8(EA2ML(G@#F<)J>*NB*M@-MB*KA_Z2`S+`U,aV,bW-dY.cX-dY.dY.bW,]P)WH&UF%VG%TE%ZL'XI&WH&YJ'VG%QB#RC#TE$VG%TF$RC#VH&WI&UG%WH&VG%RB#O@"QA#M>!L=!N?"L=!L!M>!L=!PA"J; L=!N?"P@"O@"N>!N?"RC#TF%RB#QB#RC#QB#RC#UF%XI&WH&WH&UF%SD$UF%UF%SD$TE$WH&XI&XI'XI'YK'[N)XJ'UF%UF%WH&XJ'XJ'YL(YK'YK'XI'VH&[M(ZK(YK'XJ'VG%UF%UF%YK'ZL(WH&UF%[M([M(ZL'XI'WH&XI&RJ+AM8;SD8VQ=YV4NFDK6JD(TE$WH&YK'ZL(XJ'XI'XJ(LH+GG-SE$SD$UF%UF%UF%SD$O@"L>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!N?"N@"O@"P@"P@"O@"N>!N>"N?"O@"P@"QA#QB#QB#P@"O@"O@"L?!.=1L]WD; %6&%7'6+$9*9J8gxsdvrJ_[H`]YpnIb_(B>*EB(B>5KIMaa%=:$<;,CC)@@"98411,2-";7'?>#:841.*402,2-3-%B>#A<93513/-(.)-'2,5.(E@"@94.3-4.2,71704,2+2+705.4/715/4.5.502-3-41!7464 86#603/0-"3.%99551111#12.,.*30/,0-0+0+0*1+/6*/+0.32212//*320+%<6)@=&::!6642#77(9;55!66#69"79"8:54 75"::56 67!583646020416/4.2/31415$993E@HUFZU/YN(XL'WJ&UH%UG%TF$TE$SD$VG&YL(XK(XK(XJ'VG&XJ'VG&TE$TE$UF%YK(YK(XJ'UG%QG.RH-TG'RD$P@"O>"N?"O?"P@#O@"#48$7;$6;*=C-@E-AG*?E)=B-BF)=B)=C*?E+=D+>C45 57!66!1012 47 26!4803/4"5:/BI.AF5FM5EM6FO5FO9JR5FL->A2BC4A!PA"SE$SC$M>!M=!M>!M>!N?"N?"N?!N?!N?"O@"QB#O@"N?"N?!M>!O@"PA"PB#RC#RC#PB#PB#QB#PA"N?!N?!N?!N?!N?!L= M= M>!M=!M>!N?!N?!N?!L< K< L< L= L= L= L< L< L< L< L< L= L= L= L< L= L= M>!L= L= L=!L= L= M=!M=!L< L< L< L< L< L= M>!O@"RD$PA"O@"N?"L= L= K< L< K< M>!L= L< M>!O@"O@"O@"O@"O@"O@"O@"OA"O@"QB#SD$QB#SD$TF%TE$SD$PA"RC#QC#PB#PA"PA"PA"PA"PA"RC#RC$SD$PB#PA#RC#RC#QB#PA"O@"O@"QB#TE$VG%TE$QB#O@"N?!N?!N>!M>!N?!L=!K; L< O@!PA#RC#RC#TE%[N(YJ'YJ'TG&XJ'YJ'WL)HE+2C93LL3IM6JO/AD'<@";<(DC$CA(KFQT8XJ'TE%TE%SD$QB#PA#[N)]Q*ZL(XI'WH&YJ'VG&ZL(XI'RC$QA#QA#O@"M=!K; K; K; L< M=!N>!P@"RC$XJ'JQ8/I@4E:0JB,MG(GBRZ;aV-]P)ZQ,ZN([N(QN/$=40*/(1+-(1*1+-(-(0+0A3>K9[N)YK(YJ'VJ(YK(YJ(YJ'YJ'YJ'YJ'ZK(YO+!;3 B:<4A9?7"E<"D=82:571<5@9=5;3=6<6;5 B9!C;93:5>7;37/92#D=6/6/4,4-3-3-3.3,5/615.92>7@9:3<5!@:9570:3=5>6<570=5"B<#B;"C;>7:2>7!@:#D<>6?8=7"?9(=4<6:4:4;5:4=67/8/7/8/=5"?9-LG*HD'D@'EC)HF)FC&EA)IE;5 @9?8!B;$D=!A:"A:)FC+HE";5";4#A;#A<"?9 >8?9=7#D="D=@8%F>A8=3>4:1;2;570(E@>7!A9!A:'HA"C;&E='G><3=5 >7815.92>6"G>#G?93;3@8B: D;&H?&F>$E<#F<%G="D:%F=#C:!B9!C:$E<$F<&F>$E<'I@#D;%F>%E> >7"B:>8!?9?9 A9 B::58395=79563:79:30323.724.5.515/3130=5"@:;58270=5<5+KE%D>)FA =74,4-3+3+5-4-6-4,6. ?8"A:8/4+0(4,6-"?:$C<7/3*2*;5$@<%@=$@:"=7;4>6 @7"B:;45.3,7.4+4,3+5-2+7.707.6.807.9181808170806.:2822.61:562/,502-)??86#=;'A@$==%=>!<;&??%>>*BB-CD4HJ1FH5HK;MR3HK/FG*DD+ED%?=/DF-DE5IM9KP5IM;#>:%A>">;#@=%?>">=">=(CA$A@;999 <;:7<8<::8:9#?="=;"=;">:%@> ;9 ;9'??$=<'??*BB(B?&?>!>9 =9#>:(A@)@@'?>(=?$?;=6!>7"@:$@< @9%?<+BB&BB2JK4LK+GB=L>ZP+]O)XJ&RC#QA#RB#VH&YK'XJ'TF%TF%WI&QB#XI&UF%VG%XI'XJ'YJ'XI'UF%UF%VG%RB#O@"P@"O?"QA#XI&\O)\Q)\N([M(ZK'WH&WH%\N(\O([M'ZL&\O(]Q)_R*YJ'XI&]P)`T,_R*]P)XP.6K>&G?$G=%G>%F>$H>"F<"D;"B;-KHF_b%F=B8!@7*HB.NG.PG-LE(J?KR5XR/^R*_R*aV-bX-bW-aV,aV,aV,aU+_T+\O)YK'YL(ZL(XI&XI'WH&RC#RA#O?"L=!L= J; I:J; M>!PA"TE$TD$PA"PA"M>!L=!L=!L< K< L!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< K< K< K< L=!L=!L=!L=!L=!K"N>"N>"N?"N?"M>!M>!M>!M>!N?"N?"O?"O@"O?"O@"N?"O@"P@"M?"5F:L= (4$==#/>+6C*5F1;O>E^Ut}ʈAZT?ZU-GB 92"<7*B>5051 52'?=;PQ"9820-*4/2-1-*??,&+&.)2,5.<5%B<*HC#A;83=7$A<(GB%B=70"?9&B<'C>;54-5/8282932-3-4/715/5.4.3-5.6/2+4,714.51'82533/1*1*2/(9:$6853#5632-),(,*/+#41#511-(6-'4+/)0)/*#6420 1,0-#990,1.0. 66"88!62!97)> 9745-/.1240413251515 4624.11414-325!667C:\W2ZO)VJ&VI&UI%UH%TG$TF$VH&XI'XI'XI'VG&UF%VH&TE$VG&VG&WH&XJ'XJ(XJ'PF+JE0@C9JE0MB)PA#OC$O@#QA#QD%>D9#7946'9=$6<&67(8:$48%56%69$7<#7<%:@$8<%:?%;?"7:&8=%7:(;A+>B&::"42!4547 342603,.-..2 59-?E3FK5GN3DK0AI1BI/AH.AG+=B,<8:B6FD/QD&VG&PA"TE$TF%RD$SD$PA"N?"O@"RC#N?"M>!O@"M>!N?!N?!N?!O@"N?!N?!N?"O@"O@"O@"PA"PB#PB#O@"PB#PB#PA"PA"PB#N?!N>!M>!N>!N?!L= K< N?"O@"N?!N?!N?!N?!N?!N?!N>!N?!N?!N?!N>!M>!L= L< L< L< L< L< M=!M>!M=!M>!N>!M>"N>!M=!M>!M>!M=!L= L= L= L= L< L= L= L> M>!O@"N>!L=!N?"PA"O@"L= M= L< M>!M>!M= M>!O@"O@"N?"N?!N?!PA#QB#QC#RC#TE$UF%TE$TE$VG&VG&SE$TF%SD$TE$RD$O@"QB#QB#SD$SD$QB#RD$TF%RD$QB#RC#RC#PA#O@"O@"O@"QC#TE%RD$O?"N?!N?!N?"N?"N?!N>"N?"M>!L=!L= M>!O@"QB#QB#SD$\O)_S+\O)XI&XJ'TK+VJ(7B4:H83C7.JL3PT,GG,GE(HC.PJ/PJTY<^R*YK(VG&UF%SD$PA"TE$VH&ZM(TF%O?"M=!M=!L"M!O@"O@"QB#TE$\N)/J?+G?(HC'GD*IE+KG0KA5K=]R,[N([N(\O(YN*>I4:3/*/*/*-'-&.*.*#9/RV=QK.YJ'XI'XI'XI'WH&XI'XI'XI'YJ'YK'[M(PO2<5"DA9!D;*MF(LD*NF$F> A96/:2>6=7 @:#E="B:"A8?781814.7092$E<$D< ?88/82604-4-5/:271=6>6;4 A: B:>6:292?8?8"@:>7 ?9=5 @: A9&F@,ME1QJ%D= >8#B==7>985539686*GD'C@62507170833-4-3-3,1,3/2,;6!>9&E@)GD.MI.NI)ID?8=6?8%D>%D?*HD,JF/LI#@;:3 >7+JD*JD'FB(GD!C<>6@8:2$D=)JC A9<4<39/90703,:3"A:&H@$F>#C;#E=%E>$D=$E=B: @:#A7$E<&I@%H@$E>#D='GA&H@%H>"F<&H?&G>'F>(G?$D<$G>'J@&F?&H?#G>%G@$E>$H?%G?&IA?8"B;&D?&G@&GA%F?!C;B:?9!C;@:;674;8:6975543262485414/93(H@(G@<4 =6'C>#D<:2#E=%F@%E>%F?#D<:3:2914-<5)GA#B:%D<&F>?64+3*4,5,<6(D?.JE:31)2*3*!<7.GE,IC&D= =6<5;3=4<3:24+7.5-4,3*6-6-8/=5#:2<4808091707/<65-3-4.6/4.3-5171944/3-$<:%<<";:+CC*CC(AA+BB3GJ6HM;OS'@?!>:&@?-BD5IL?QW2HJ(BA%?> ;9 <8">;#>;&B?,CD+BC+BB+CD-CE5GL/HK-EH,DG0GK-GG+DC*DD ?;=9#A@"?=!?<&BA&BA"@> >: ;::8;8:8;9 :9!<; =: =:8697 :7&?>+BB =9"?;=7 =:%@>"=:"?;#>:%>=%?<&@=!=6#=:%?<(B@#A;>6 @:(EA$@>/HH:QS$C>7F4YK(YJ'WH&UF%PA"QA#TE$VG%XJ&YJ'YK'\O)aV,XI&UF%QA#RC#XJ'VG&WH&WH&TE$TE$SD$SD$P@"QA#J: P@"YJ']Q*]R*\P(\O(]P(XI&ZL(ZL'YK&YK&[M&[N']P(]Q(\N(XJ'[N(`T+]P)^Q*=G:&E=%G>&H@%G?#G>(IC"C>)ED(CA0KK(GB!C9"D:!A7'E?(G>(H=)LA,I>)J=DO6_R*]P)bV-aV,_S+aV,aV,`U,bW-`T,^S+_S+`T+]Q*WH&SD$SD#SC$PA"J; J;I:I:I:L= M>!N?!M>!L=!L=!L!M>!N>!N?"PA"P@"PA"RC#QB#N?"PA"P@"VG&XI'XI&XI'WH&VG&UF%TF%UF%WH&WG&WH&WH&YK'XJ'YK'XI'VG&TE$RC#RD$TF%XJ'XJ'VG&QB#PA#SD$XJ'[N)\O)[M(YJ'[M(]O*]P*]P*ZK(WH&VG&RI+OL0VP0GT!M>!M>!M>!L=!M>!L>!M>!N>"M>!N?"QA#PA"O@"O@"L>!M>!;:"?;!'9($7&8;$*=.,;),D:I]SRg`͎4-6.Ofb4NI60@TREZY3.52,BA/DE0.42-*/(/(!63,(+#,&60818080%C=(G@)IC(HC#C>'FA*JE-MG0NH1NJ4QN(D@3.4.5/814/3-506/5.61736071$?:":81,5/4.3,2,40(92+7,,9.(82!740-322/-*.,20/+1..),($85/*623/52300-%972/5441 96%=;4/402-0,308596 :7":8%=;2130 76423332323445230213!88"6843445413/304052625.?!L=!L< M>!N?!N@"N?!N>!O@"PA#O@"O@"PA"QB#QB#PA#O@"PA"QB#O@"PA#O@"N>!N>!M>!M>!N>!N?!OA"PA"O@"O@"N?"N?!N?!N?"N?!N?!N?!N>!N?!M>!L= L= K< L< L< L< L< L= N>!M>!M=!N>!N>!N>!N>!N>!M>!L= L= L= L= L= O@"PA"N?!N?!M>!N>!M>!N?"PA"QB#PA#PA"O@"O@"O@"N?!M>!N>!O?"N@"N?!N?!O@"PB#SD$SD$SD$VF%TE$VG&VH&VG%VG%TF%XJ'WI&WH&UG%PA#N?"PA"PB"M>!N?"PA"RC#QB#PA"PA"OA"OA"QB#PA#PA#QB#QB#O@"N?!N?!N?!N?!N?"N?!N@"O@"N?"M>!N>!OA"QB#QC#RC#PB"UF%WH&TF%QB#SD$WH&YJ'RH(DE-,@6)C>0H>"B<(JC/PJ4PHKWHJQ:ZR/YL(UF%RC$O@"N>"PA#P@"M=!N=!K: J:!J: I9 K: P@"RB#N>!L< L; L; L; O@"SD$UF%WH&VG&TE%UF&^Q*+D:*KE(HD%D@%E@'IERU7WR0`T,ZP*XQ-DM6>G42MD!?882=8)B<6D2JH,FD*CD*OH*YL)XJ'XI'XI'XI'XI'WH'XI'XI'XJ'YJ'[M(\O)XR.!@9'KB$G>"F>"D<%F?(IC)MF*NF)MF(JB%E=!B;!A: @7@8 @9 >7?7=66/3-3-4.92<6:3:39271924/609281<5:3 B: A:=6 B:%H?"D<<5<6:6 >:9583838482>7#C=&D? ?8;57383#D>!C9<7#A='GC,LH/NK.LJ-LJ.NJ,LH#B<(HC*ID,ID&C>+KF/LH,JF-KG/NI1PJ0OH'G@)JC&E@%F@=591;3(HA&GAA8A99080806/$D= @8&G>%H@%I@&G@'IA(G?'G?&E>&D>=7>6 >7;5!C;#E>C;!E>$C>"@<$C>$E>'D=+HA(G>)JA&E>'G?%G?'E?(E@+HD&D@&E@'HC'GB)JD)JD+KE%IA(MD(LD+MF,MF,KE)KC&JA&JA'MD(LC'IB"D<"A7671;3;3?7(IA,JD6.;4&E>@86-<4"@:<4$F=$C<,KD*JB*IB#B;%D=#A:$A:&C='E@<4=4:24+4,&@<0IG(C>4,5-6/$?:&B>-GC)D@7/:29190<4>6<46.90<4715-4+707/!:329+(7*%9-%7*6-92:26.1+2,614.2+0+6274<5922-$=;.EE2IJ(AB'@@&?>.ED/GG'B@:675 :8'??4IM6HM+CC*AB2HI1GJ+CD&?>&=<&B?%?>0FG.EF)CB(?A%>>'A@(AA'@A*AD'BA%@@"><"?<%A?%A@<8#A>"?<;8 =;<:"@>"?= >>-AC$=;-AC&?=$><)DA%A>!@9.GG2IK9PR>SV(?6GG.YJ'ZK(WH&WH&WJ%aZ.VI%TE$TE$VG%ZL(ZL'ZM'XJ&WH&YJ'VG&P@"RC#SD$UF%SD$O@"N?"N=!N>!O?"UF%VF%RC$YL(_S+^Q*\O)ZK'[M(^P*`U,aU*`T*^R)]Q(\N'\O(^Q*\O(YK']P)_S*_S+[R.*D@(G@)IB(HB#J@"H?%F>3JM'BA$@;%C= @7>5N_f2MK!C:&E;(E:QU5VP.DQ?TQ1\O)]P)bW-dY.bW-bX-bW-aV,bV-_S+_T+_T+_T+_T+]P)ZL(ZL'WI&TE%M>!J; J; I:L= M>!N?!N?!M>!L=!L=!L=!M>!L=!L!P@"PA"O@"P@"RC#QA#N>!L=!M>!UF%YJ'XJ'XI'WG&TE$RB#RB#RB#VG&VG&VF%YJ'[N(]P)]O([M(XI'TF$RB#TF$TE$PA#PA"N?!L=!M>!N?"SD$SD$QB#PA"P@"O@"QA#VG%YK(YK(GJ63JE2LC1TM=VI?WK]dUEE-FF-TG'SF&SD$RD$SD$VG%WH&XI'XI'WH&QH*VG%\O)\O)UF%PA#N>"L=!L=!K< K< K< L=!K< K< L=!L=!M>!M>!N>"M>!L=!L=!M>!L=!L=!M>!M>!M>!L=!K< K< K< K< K< K< K< L=!L=!L=!K< K< J; J< J< K!L=!L=!L=!L=!L=!L=!O?"QA#QB#PA#O@"O@"N?"L>"H=!6<%:.6,?<$#9+2=*+F?6I=Oeaq|8NF2)5,!=6705JF3.620,/*/+0,,(*%/+,&.(3.0*.(.(0)81:2!?8$D=&E?:483(HB+KE*LD,LE+IC6UP)G@!=7!=65/70944/3-4/5/5/614.0*2,2-4.5/4.4/3.1+2,2,$4+0*2*0*0*0+0).(/*-&-'.+"31$64/.520,3153#9785410-0-65 9750514/2-2,0+1,!:8743131202/545366322/1/424446 874401/102.1/203262524,1.236);7$8<$7<*>C&;?"6:#8<"6;$8>#7=$8=&:>'=@!58 2113!4713142201#:>!6:'C)<@+=B)>C0AG,@C%8; 67#756@6NH.WI'UG%UF%TE$TF%TE$SD$QB#O@"M>"M>!N>!N>!N@"O@"L= N?!N@"O@"OA"O@"O@"O@"PA"O@"OA"QB#QB#PA"O@"N?!M>!M=!N?"PA"QB#QB#QB#O@"O@"O@"N?!N?!N?!M>!M>!M>!M=!M>!L= L< L< L< L< L< L< L< L< L= M>!N>!M=!N>!N?!M>!N?!M>!L= L= L= M>!N?!M>!N?!N?"N?!N?!N?!O@"O@"PA#QB#RC#QC#RC#PA#O@"N?!N>!L= M>!N>!N?"PA"RC#RB#RC#RC#RC#RD$TE$UF%UF$SD$TF$TE$SD$VG&WH&WH&SD$RC#RC#SD$QC#PA"N@"N?!N?"O@"O@"N?"O@"O@"PA"O@"O@"O@"N?!N>!N>!N?!O@"O@"N?!N?"O@"O@"O@"PA"PA"PA"QB#QB#RC#N?"N>!N?!M>!O@"UF%XI&OH*9E7RK+/@4FH12J=&JC)MF)KD(JF(LF*MH3TQJWB_W0]P*YL(WH&O?"L< K: I9 J: J: J9 I9 I9 I9 K: L< L< L< L; M=!O@"RD#TE$WH&XI'XI'ZM(`U,3J@)KE'HD(IE,HANV9ZW3[U0QS64MA6L>.JC7J@VU61QM'FB$C=@K6]P)YK'XJ'XI'XI'XI'XI&XJ'XI'XI'XI'XI'YK(ZL(YK(ZL(\P)^R*aY/-LE!D; B:$I@&JB!D<#E?&IA&JB$D>%F> @9%F?#B: <4#A: =6!>8#D=$D= @8826/71:3?8;6:4:3<5706092;4:370?7&KB#F= A9:2@8 @8<6:4 ?:(DD(CB >:<6=894727140828383"C=&GA!@:!B=$C?<7=7)HC-MG-NG.NH*LE+KC)HA0NI0NJ1NK/NJ/PL,ID(C>)A>,KH-LJ0PN0OM(HD*KG*HE,JH*EB*C@)C="<6'D>.JD/LF&C=)HB/MI,KG)ID)ID$B<8191!>7+HC&FA!C;B9@78/5-70#@9$E=$G?$E=#E=#G?&HA$C<#D=(GA8182>8#B=>7(HC&HB%FB#?=&A?*DB(FA&B=,GB*GA#F<&G>&F>%E?&GA)IB)HC*GC'F@'GB+IF-IF-ID-JE.JE-LF-LG-KG-LH,KF/MH,LF-MG,LD+LD)KC,LD(KB(KB(LC(KB&F@!A9!A9<5;4<4<4?8"B:!?8%D<)IC.NH(J@"A9<44.3+4,8/"@8"@8*G@*KC*JC+IB-IC.JC*G@ =5:24,2)0(.&.&:2%A<&B=,FC.ID*FA*F@<47.4+5-7.:28/80817.;3:3=47.4+<3;21>2(8+4-905,5.3+4,4.3-404.0+0,30 9:73704.754JK#=99@,09))@?4JL(AA'@@"<;97+CD/FH-DE.DF.EG:LR5IM2HJ.EG'A?#@;%B>+DC!<:#<;'A@'BA*CD)CC*DD(BC >;>:!@:"@; @9>8?:?:!@;!@; ?;>;>:<8;6=8;7!=; :8:796;797858697!;:8766 ;:!;:97!:8#=;$?=&@>'@?&@>*DD'B@&A?%@>(B@(B@&B?,FE-GE(D?1E!L< M!O@"XI&_R*_S*^Q(^Q)^R)]Q)^Q)^R*\N(]P(_R*aV-PO2)G@(HB'JB(KB&KC>VX,GG.HI,GF?7 @7%E= <92JK,MF0OL&H=HP4]P*^Q*]P*_S+bV-_R*aU,`U,bW-aV,dY/bW-bW-bW-`U,_T+aV-`U,]Q*^R*^R*\O)RC#N@"M>!J; I:K< M>!M>!M>!M>!L!L!M>!N?"SD$VG&XI'UF%SE$RC#RD$TE%TF%WH&XI&WH&WH&XI'[M(]O)\N(ZM(YJ'XJ'[N(WH&SD$O@"N?"N>!N?"PA#WH&SE$QB#O@"O@"O@"SD$XI'TM.KSBbxy]faIC+CI6CI6DD-OD'TH'TF%UF%SD$RD#RD$UF%VG&XI&WH&XJ'YJ'TE$QB#RC$RC$O@"L=!K< L=!K< L=!K< L=!L=!K< J; J; K< L=!L=!M>!M>!L=!M>!N>"L=!L=!L=!L=!M>!L=!J; J; J; K< K< J; J; K< K< L=!L>!K< J; J; J; J; J; K< L=!K< K< L=!L=!L=!N?!P@"O@"O@"N?"N?"N?"N?"H@&6<'-<,:.':,D=#)=0*>/,;+/HAMf`2K>_sl7 72.)-(+$.)+'+(+(,(+&*%+%,&1*2,+%,&.(2-4-;4$B=.IF*GB*GB+HC#B;;4,KE&F?'E?!>7(;/+?4,8,!6.722,3-5.6.5/8362512,1+"70736184#<9 952+512+0,414/1+0*-&.& /'.(#631,-)-*1/0-0.3/5241/+41"<9:6722-2,2+0*0*4.404/1,"3*2.522/522/2/301.1.1/2121/.1000-.-0-0,0/3/2.2+..113./.1/3&89BG8TP3VP2SO5QN5YT5^Y8^Y5YR+ZN(YK'YL(ZM)XK(XL(WK'VI'VI&SF$RD#SF#OF*3>6"8:$:<%7<160405"59!59#59"2503374826 26$6:!2615 2503/24715 48#7<#8<(<@ 48/0-/.0"6:#9< 69"9?39/3&44$7:*=D+=C,>E.@G,@D&:=&8<%7<(:>=C7FC.YN-WJ(XI'XH&VG&TF%SE$SD$O@"M>!L=!L=!M>!N>!N?"N?!N?!N?"N?!N?!N?"O@"O@"N@"PA"PA"OA"N?"N?"N?!O@"N@"O@"O@"PA"PA#PA"O@"N?"N?"PA#O@"N@"M>!L< M>!L= L= M>!M=!M=!M=!M=!L= M>!M>!M>!N>!N>!M>!M>!N?!N>!N?"OA"N?!M>!L=!L= L= L< L= N?!O@"PA"O@"N?!N?!O@"N?!N?!O@"PA"QB#PA"RC#QB#PB#N?!L= M> O@"O@"PA"QB#RC#RC#QB#RC#TE$TE$RC#SD$UF%TE$SE$UF%VG%VG&VG%WH&XI&VG%SE$PA#QB#PA"O@"PA"QB#O@"O@"N?!N?!N?!N?!M>!M>!N?!N?!O@"N?!N?!N?!N?"N?"O@"O@"PA"O@"PA"PB#QB#PA#N>!N?!O?!M@#IA&DE.YL)TJ)UJ'KJ-LH+NE("QA#O?"L; J: J: K; L< M'KB'KC&JB'JB&IA$H?#F>%H@$D=92>7$E= >8#C=&HA$D=$E=<6>8>7"E>!C<@9 C;@8 B:8092>7=592B:;4 A:A9 D;<4=6?8>6:4<5!C<#E>$G@$G@=8935093823-7383!A<'FC7293%B=+JE/MH(HB,MG/OI+ME,LE,ME'G?92 ?8)GA*HD/MI,JD+KG+FB*@:+?;-FC*DB(A=(D@$B<(F?*HB.MH/KF.LG,KF(G@-JE1MG+ID'EA*JD(KD"D=;3917/?8%GA%G?!D<=4:22+6.&D?'GB%FA$G?"E<$H@$IB(JD'GA$D>'D?$C>"B=%C>%D>'GB*HE*GD,HE+FD+ED*FD+GD/IE.IC.LE'F?*HB(GA'HA)IC(HC+JF.IG.IF/JG-IF.IF-JF,JF,KF-MG,LH.LH/MJ-LI1MK/MJ0NJ1PL1NH.NF*ME(LB)MD<]X/QK'JA&I@'J@"C;$C<)H@)G?!@8#D<%G>'F?&F?'H@&I@*JB,KE$@93+6-6-4,2*6.>6#C<%C=0JG*D@'B>,HC0IF-ID!<4'5)3*0'<46.81#C<)G@(E>:2<44,0(,$.'4.5-6-80>6>6=5 =6<4$?8"<5;4%?6!:16-806-4,3+:54.3,714.4/4064;8<6726/$;95KM2=,SF$0:+4IK8MP/GJ$@?'?A,DG(AB-FH2FH*CC$><%>='BA7LP3HK,AC">; <9=9#@;&@>$@<#@<#@<&A?(AB#>= ;9"=: >7>8 >:=9>:?:?:?: @=?; ?9>9 ?;>8!@: ?8 =8 >8!@9 >8;4<7<5;5936060868575 ;:96;8 <9<9*BC+CC%@="=8<6 >7">:)B?&@=+DAHP9cW.[M(\O(`S+\N(UF%RC#TE$UF$^R)h`0d[.]Q)dX-h_1e\/aU,^R*bV-^R*aV-RB#TE%VF%QB#RC$QA#QB#O?"O?"RB#VG&WH&SD$P@"P@"QB#QB#O@"M=!M>!PA"VG%\P(\N']P(^Q)_R*`T+\O(ZL'_S*bW-cX.CH2'F>&J@(MC#H>)KD'H@.KH*HD;4;2;27/!?7%D=3PO*KA)LAWP,aV,aV-aV,^Q*`U,^R*\O)\N)`U,`U,ZQ.NR7^R+^R*^S+^S+`U,_S+_T+_S+^R*^R*\O(YK&N>!J; J; J:N?!N>"N?"L=!K< K; K; L=!L=!L=!L!M>!J; J; J; L>!SD$RC#RC#SD$SD$TF%RC#PA"PA#QB#RC#SE$RC#TF%UF%UF%QA#PA#P@"VG&XI'YJ'VG&TE$UF%VG&XI'ZL(YK'YK'YK(XI'VG&VG%RC#SD$PA#RC#WH&WH&TF$TE$TE%MF,AC0BNZcVJM:IQBHB)NB%RC$SE%SF'GD+LC&HB'TF%UF%SE$UF%WH&VH&VH&UF%RC$RC#N?"M>!M>!M>!L=!L=!L< L=!K< K< L=!K!L=!L=!L=!K!L=!L=!L=!L=!L=!L=!K< J< K< K< K< J; K< J; J; J; J; J; J; K< L=!K< J; K< L=!L!M>!N>"M>!N?"N?"O@"N?"N>"N?"N>"N?"N?"O?"O?"4;%5:%"8+6:%D>%;>*.;*$?52H95MH+C=7/#<7414/-'-(+&+(+%(")#,&,(,'/)1*6/4-4//),&0)2,">9#?;(C?:5:3 @9;5%D>!?75-3,0+/*2,!:6)@= 866/;4<6!>8 ;4815-0+3-2.2- :4";7":7":83+4,2.$3(1*40852.3-'5,9<,(3(0,.(,&,%"0(,'-,/-/*1/64/+2/3/3.2-/*3-80&?9 85412.1-0+2+0+2+3-1.30302.2/402//./.10/./.00/0/0,/.1,0.1/3++.014/3/3 472616!29"3:!2:#2<.@H6GJba:ZN)ZN(ZN)YN(ZO)XN(UK(QG(RH)DB.1;4"58 58 6845!7:#49 270247"6:45"59 47"10,5/+4,/012121202!580125!480328#6; 27/2!6:/201/001.04837/417!2718(:DC/WJ)PE'UH'VG%TF$TE$QC#N?"L=!M>!L=!L=!N?"N?"N?"M>!M>!M>!M>!N?!N?!N?!N?"O@"O@"O@"N?"O@"M>!N?!N?"N?!N?!N>!N?!N>!N?!N?!N>!M>!M>!L= M>!M=!M>!L=!M=!M>!N>!N?!N?!O@"N>!N?!N?!N?!N?!N>!M>!O@"PA"QB#PA"M>!N>!L= L= L= M>!M>!M> N?!N?!N>!M>!N?!O@"O@"O@"OA"PA"PB#RC#QB#RC#O@"O@"N?!QB#TE%TE%QB#RC#RC#RC#RC#RD$SD$TE$SE$TE$WH&WH&WH&WI&WH&SE$TE$UF%SD$RC#RD$O@"M= M= K< L= M>!M>!L=!M=!M>!L= L= PA"PB"O@"N?"N?!N?"N?!N>!N?"N?"O@"PA"QA#PA"O@"M>!M>!N@"OB#3B;*GD2SH2PE,MB*RH*I@UM+XJ'BJ2 B;'C?$I@,OA7VH,QF%E@(KC+ME6PJjj"PA#N>"M!QB#TE%WG&ZL(ZL(\N(dY.dc:EZM,MG*KEAL8LN2@K7$K@(NDA9!B;)NF!C;$F>$D="A;#F="E!E>"F=!C<@9!D<"F>B:>7A9 E=@8#G?>6:3=6;5:493=6>7 @9>7;4!@:;5"D>"D>%D?(KD84506283;5 >9(IE62:4>8#C>&E@!@:!?:(HB,LE+LE*IB+JC)IC!A:6/"@9-JC2MG/NG.MH*C>*C=1JG.IE.JE/KF3NH-JE(HB,JD-JG*HC,JE,LF(HB(HA,ID/LG,JD)GA&E?&H?!A9?77/=4?8>6:3:26093:2&H@#F?'EB$C>"C<%F@(JD(HC$F?%F@&C?&D@*JF*IC)KD)HB+HD-IF.JG,IF+HF-HF,IF,ID/KG*JB)HA*IC+ID,JC,ID+HD+JE,HE.JF.JE3ML/KG.LF,KF-LG-KF,MG,MG+NH,OI0NK0NJNn[9VH1OH7XK.NF,NE+OE*MD(KB&H@(KB)KA*JB.KG0NI,HD&E?"D;$F=%D>,HC.LF,LE,LC,KC.NF(H@9091917/3,5/?7)FA3MJ/JH4LK3HE,C>&;20&-%/',$3,6.:260:3911)1*/(0).'-&-&2-1+7/!@8=5=591<4&C;;47/816.6.7/5-70722-4-6/909170;4<5:57170813-3FEHE&RE#"60-DD.GG-EF<6(AA0GJ)DB'B@(D>'EB)DE*EF(BB&@=$B=$@;#A;&D?"?; =9>: @;!=;<:>:=8<7;6<6 ?9"@; ?:!A<<7>9 ?: @;;7=8 ?9>8<6=6=7!?:?8!@: >6 ?7?8>6?8<7<5=6;6948362<7!<:#>=$?=%?=#?;<6$@;$A<#?:!>9,D?Q[Dgd@bX.ZP*=?'JD&$9.9A/SF&RB#PA#RC#TD$[N(XI&VG%ZM'[M']O(^Q)UF$VG%XJ'dY.]P*[M(]O*\N(ZL'VH%RC$QA#RC#PA#PA#P@"O@"O@"P@"QA#RC#RC#QA#SD$UF%XI&WH&WH%VH%WI&\P(\O)YK'ZL'cX.cX.cX.GI1'D>#H>&LB&J@)KD*JD$F> B9?6<4>7;3"?9*EB7PT3PO+NEAR@^S+aV,]Q*^Q*]P)XI'QA#SD$WH&XK'TD$HN:RV@[M(]Q*\P*_T+`U,_T+_T+_S+_S*^Q)WI&N?"L< K< K< L!J; J; M>!RC$RD#RC#SD$RB#TD$TE$SD$RC#SD#RD$SD$RC#RD#TE$TE$QB#P@"RC#TF$TE$TE$TF%UF%WH&UF%XI&WH&WH&ZL(ZL(YK'WH&RC#TE$UF%VG%ZL(\N(WH&RD$OA#be\6IJch\cj]IG.PB#RB#O@#N?"QA#TE$UF%VG%VG%TG%RD%TE$VG%TF$VG%VG%SD$PA#O@"M>!L=!L=!K< L=!L=!L=!K< K< J; K< K< L=!L=!L=!N>"N?"M>!L>!L=!L=!L=!L=!M>!M>"M>!K< K< L=!L=!K< K< K< K< K< J; J; J; J; J; J; J; K< J< J< K< L=!L=!L=!M>!M>!N>"N?"N>!N>!N?"N>!N?"N?"N>"N>!M>!M>!M>!N?"N?"M?"A<$H=#E@&PA"P@"A>%FE+4G8C[T2JC3KD.E@7JF415/.(,&+#.(,$0)!2).'-(*&.)/)/'/'0*0FB4/4/.(,%/)4.3-3,4.5/61;46.5/#99$892.2.4/;5'@=!<7+G@+IB&B;&B<'A:6/2* :572!5+4+4.61512+6262/<0'6+ 4+5162402/2.3.2,30&4*2,/*/+"2*!2,.(0,30!4-"96502.2/3-3.":561!850(2.302+ 0(.(2--6(-6*3/1+0,3.2-/+3243100.202020-.*-,/-0.1.2,//2241414/1352312040516#8:*;Aa^8[Q+ZO)YN(ZP*\R,YO)HI6,95&89$45)75&8;35 47%8;$7844%8:1234#8;#6:14243534 0.01//--/0!2/46$543<9'21'43.2/3.2-/%9>&:>#20-*,,,,-./33704 49%;B%:@"8;$;>#8<&;> 4221/011 42 5354 86(;5&<92?4DD0PC%UG%UF%QB#N?"M>!L=!L=!L=!L>!M>!L=!L=!M>!N?!N?"M>!M>!N?!PA#N?"M>!N>!N>!O@"O@"PA"N?!O@"N?!N?!N?!N?!N>!M>!M>!N?"O@"N?"N?!N?!N?!N?"N?!N?!N?!N?!O@"N?!M>!M>!M=!O@"O@"N@"O@"RC#SD$QB#O@"M>!L= L= L= M>!L= L= M>!N?!L= L= N?!QB#QB#O@"N?"O@"RC#TE%SD$RC$QB#RC#SC$TD$WH&WH&SE$RC#QB#QC#RC#RC#RD$SD$SD$TF$SD$TE$TE$TE$RC#PA"O@"PA"PA"RC#PB#N?"L< J< J; J;K< L= L< K< L< M>!L= N?!N?"L= M=!M>!M>!M>!N>"N?"M>!M>!N?!O@"PB#N?!L= M>!O@"?A/4I>$C?'ND)ME'LD1K@(ND8RDRJ+RI)TK)NN/TP._^6.RF-PH+QH,IH(HB.PKG]M]`;e[1XJ(WH'VG&RC$N?"M=!N>"N>"O@#MQ`L1RF)KC-JDLQ5_T,ZS-RR3BO:CP9VR/`U,cX.SQ1VR0aV-\O)[M(YJ'XI'XI'YJ'[N)QM-@I24H:*C:$B D;#H?%JA)PG&ND-RL&JB$E>#D<$G> >8#A=<7=7$@<'D>:5"@:#A;615/81#D<"E=$H@%HA$F?#G?"H@ B;!E=%LDE=?8C<>7818081<5>7!@9#C=!A:@8#C=&HC(LF)LF)JE*LE,MF/OI'F@;693$F? ?9#F?'IB'IC&GA A:&E?*HC!A:)IC-MG)F@(F?/KF,JE,JE:3*GA2NH0KF-JC1>3,C=)E@.JF%C="B;*JC)GA.JF+HC*GB,IE+HD.KH.LG/MG)GB/LI*HD-KF)GA(FA)IA A8:17.8070706/6. @:$F@%F? @9&FA&EA"D>%GC'ID*IE+HE*HC+HD+FD,FE)HD-JF*ID+HD-IG-KH/MJ.LJ,IG-HG/IG.KG.LG,LF.LF-LF/MH0LH0JI1MJ1ML0MJ2NJ.LG3NK5ON0MJ-MH/OH,LG,JF1ML-MI2PO0NH0MF-I@)H@%F=$D< =68182(F>3RL2OJ1OJ.PG=47/7/:3:382<5,HD7MO=PP;PR7IF&C<$B:!@84-/'-&,%+$-&.(1+4061602-3,1+501*2-724.">8#A:$A:#B;"@9%A:91!>6<4<66.8/4,4+2*5-;381:27/60:5 ?:<5825/4.3.@B-UI$><"%<;4JL1HJ)@? <8*CC)ED&C>'CA'FC(FC$E?$C>&A@!?:#C<"A;#A=<7%>;$A=$C<;7>8>9>9=8<7=7=8=7!?; ?:<7;5;592<3?7 @8!?8">:#;4$85%;7!=8#@:$B<)EA&B>#?;;5:3:4:4;4<6#=:!<9!<893:583%=6BP>RR2JK.FF*XO*XN)@B)LE(XI'VG&PA"N?!N?"QA"QA#UF%]P)bW-_S+dZ/UF%YK'ZL(`T,bW-YJ'YJ'\O(]P)`T+WI&VG%UF%SD$PA"M>!N?"RB#RC$O@"P@"RC#SD$UF%UF%UF%VG%UF%TE$VG%XJ&YJ'YJ'[N(bW-bW-`T,TN-+EC(JB$I?$H>2NK,KF"E;#E;#D;"B:"A:(D?)=7*D?.F9-G84PI[h\]S,]O)^Q)\O)WH&TE$SD$N?"N?"N?"QB#SD$QJ0[P,]Q*^W6^X9_T+_T+_S+^S*^Q)ZL'TE$SD$N>!L< K< L=!L=!L=!L=!J; J; K< L< L!L< L=!N>!P@"SC#P@"O@"QB#PA"PA#RB#SD$SD$RC#SD$TE$UF%TF$TE$RB#QA"TE$TE$RC#O@"UF%YJ'ZL(ZL(ZM(ZL([M(^Q*_R*\O)XJ'UF%WH&VG&VG%YK'YM-SJ/OE+P@"SM5OB%QB#O@"P@"PB$KA&P@"PA"RC$YJ'[M)]P)ZL(XI'VG&VG&UF%QA#N?"N?"N?"N?"M>!L=!L=!L=!L=!L=!L=!K< L=!K< K< J; L=!L=!M>!M>"N?"M>!N>!M>!L=!L=!L=!M>!M>!N>"M>!M=!L=!L=!L=!L=!K< K< J; J; J; K< J< K< J; K< J; J; K< K< L=!L=!L=!M>!N?"N?"N>!N>"M>!M>!N>"M>!M>!N?"N>"M>"M>"M>!M>!N>!N?"L?#N?!QA"TF$UF%VH&NB#KD'-B4?WOTkfOea>UN:/6MG6ID-)303-/*.),'+%)$*%2+,%,(-(.),&0*2,3,)A<,C@(=<1,,'0,0+3.2.0,/(2,3-2,60745093%A<,HB2NG1LF,GB.ID'C=%@<&A:,FA1LG/KG0KG+F@(C>(B=)C?$=:*E@!=8703,2*0).(2,!6,2-61$;8 9563305350944- 5.6-506.95'A="<::742(B@,F>!912.1.%4+ 5042"962./) 1(0+40!4/1,0*2+402/0-1-201/302/20/-//-../02.2/2*./2-/02,-12!461232352266AUH`W/]R,\Q+YO)\R+^U.^T-XO-):5"78*;=(:;(89"57#56$55&8:3143"67"8:%9;"7944 55//1211)1),*,-222121(556?=02./+-+--/04!59#8< 22,+//-.+,/0+5338.#45(43!675610.+.+/+/. 4244338787 :7!84*917>.HC*UG'YJ'XI'RB#O@"N>"N>!M>!L=!L=!L=!L=!M>!M>!N>"O@"N?"M>!N?"O@"N>!M>!L= L= N?!O@"N?"N?!N?"N?!N?"N?!N?!M>!L= M>!M>!N?"N?!M>!N?!N?"O@"O@"N?!N?!N?!N?!N>!N?!M>!M>!N?!O@"QB#QB#SD$SD$PA#PA"O@"O@"N@"L= M>!M>!L= L= N?!M>!N>!N>!O?"RC#QB#QB#QB#O@"PA#TE$TE%WH'UF&VG&XI'WH&VG&TE%QB#PA"QB#RD#QB#PA"QB#RC$RD$RC#RD$RD$RC#RC#PA#PA"QB#QC#RC#RD#M>!K< K< I:I;I:L= L= M>!N?!M>!K< L< L< K< K< K< K< M>!N?!N?!M>!O@"QB#PA"RC#JE,8;0>A.@B-:H6%E?$C>'MB&KB*RF)PF*QG7Q@RN.^R+RL+FK2]P)ZO*:PA1QH*PF.LI(FC/QL)IE(FD7PD_X1ZM)XI'VG%TE%O@"N>"N>"N>"M: >9=9"C>%E?@UBFW@>S@)JA$F?#H?'JC(LD&H@%H?#E=!A9&IB(LE)IB"C<;7;6=8!A<$C?&E?)HB"@8 ?8"C<<6'JB'KC(MF(LE*OH$H@#H@$JD$IC?8:4>7>7@9 @9?8&IA*MF)LE @8#D>#F@'HC$F@&HA,NG*NF,NG.NH/NI,LF)KE+LG%GA1PJ+KF @;;5>82OJ*KD#B<*JE0MH1LG/MH0NI,JF'F@,JC*HC,GB2MI1D=3GA2MI'C?%C>%E?,JF-LG,KF+HC,HD*FB0JH,HD.JE&C>)EA&B>/KF/MI,JE,IC,HC)HA$E=807/3,505/70%F@+JF,JG%E@!@;)GD'GC(HC(HC*ID-IF/KH1LI0LI.KH/JH+JF*HE,ED,FF,IG-IH/JI0LJ/KI1LJ0LJ/KH0JH0HH0LJ0KJ2LK3ML4ML2KL.LJ/LJ3LK5LK6NN4NL1MK4NM0LI1LJ3LM6MQ8OQ6OP4ON4OL6QL7PM3NJ.KF/MG/PH,NF.MF1OH/LF,JD*F@,HB#=7)E?+KD/OH*JD(E?&C<$C<816/<5,HC2NJ2RK*MD:27/81$C<6/2, =8&C>.IE-JD/JG5HC3D=3LI+GB#B:4,3*1)0)1)91">7"=8!<8628596856261735084;4!@9$C<#B;&D='D=)F@*HB ?9=5<5!82705,6-:16.8070=6>7>6<57171638?1VJ%TG$-5#(@?(CB5ML83!>:%@?%D@$B>$E@$C?"E=#D<#D;"C;"C;!?;"<:!?; =9"?< >;'@?=9 @:!?:=7 <8:6=7<7 ?9?7?8?8@8B:?7<3;4:494:190:1;2$<5/3/%>;$@<'B>)FA'E>'E>*FB*FB(D@"=8=692 =7!>9 >8;2;2;35.50948172704.UK(HG-BA'WK([N(OG*KC(NE(E>&P@"VG%[N(kc4jc4h`2hb4=C+NI)WH&[O)h`2aV,[N(ZL']Q*^R*[M(YJ'YJ'YK'UF%N?"O@"UF%VG%UF%RC#RC#TE%XI'XI'XI'XI'WH&VF%UF%XI'XI'XJ'[M(^R*\O(_R+dY/,B;'HA%H>$F<)GA+HD$G= C9@8=4!?8)D?5J=MI,XI&VG%XI'_R+`T+aV-`T+\N(ZM'VH&XI'VG&XI&XJ'UF%SD$M>!O@"SE$XJ'\O)^R*^S+^R*]Q*VG%TE$VG%XJ&YJ'O?"L!L=!L!O?"PA"RC#RC$QA#N?"M>!L=!O@"N?"L=!O@"P@"VG&SD$P@"RB#RB#QA#RC#TF$SD$RB#RC#TE$VG&SD$RD$TF%RC#PA"QB#WH&WH&XI'XI'YJ'ZL(ZL(TE$VG&ZL([N)YJ'XJ(YJ'ZK(VO2\fWIL5QK4OG.RG*PE(RC#TE$TE$SD$SD$RC#RC#XJ&YK'ZL(ZK'XJ&VG%TE$RB#QA#O@"N?"N?"N?"N?"N>"N>!M>!M>!M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L< L>!N>!N>!M>!M>!L=!L=!L=!L=!L=!M>!N>!M>!K< L=!K< K< J; K< K< K< K< K!M>!M>!N?"M>!M>!M>!M>!M>!N?"O@"N?"M>!N?"N?"N?"O?"0=+7-!8,,;,LH*\O)RB#8A-9I4,F>C\Vz@TI)C:m{ASP'84+',(.(1+0),(.)1, :4:4.)/'6/5,.'-%0'71$<6FZY)@?3/400*0--*-)/,0,0+0+51;4$@:.IF1KG.JD1LG5QJ1LF3NH2MI3NJ3NJ2MH2OJ/KG*FB#?9=6">8*D@+DB!<8!>83,5/#=7.(-%1+3.4.0,4185865374#@<%?='?<:5"=8&:1%@=,GA4NC#<3!<5 :750*@75.312031212.32/.,((4*.(2.2,413/2-!860,0,1-10102,1-1.0.211133/2-1/2,/+-010235462433242332..53ZZ;^T-\R+_V/_V/_V/_V/]T-YP/$95$;<+?B(:=%79(9;.;6-8/30$4/0<1(84&87 55!77$89%1,204522////....///.$3302,+*,+,+-.1.4482414431268,68,&3./6,::-(41#302120"99422032 9:8886&;5:A/1:,"6-4-1-52LH-UG&UG&ZL(UF%OA"N?"L=!M>!M>!M>!M>!L=!L=!O?"O@"O@"P@"O@"M>!N>!M=!L= L= N?"PB#N?"O@"N?"N?!M>!O@"PA"O@"N>!M>!M>!M= L< L= N>!N?!N?!N?!N?!N?!N>!N>!N>!N?!N>!M=!N>!N?!RC$RC#RD$RD#RD$TE%QB#N?"OA"O@"N?"M>!M= N?"N?!N?"N?!N?!N?"O@"PA"PA"O@"O@"O@"O@"QB#TE%RC#UF%UF%RC#PA"O@"PA"QB#O@"PA#PA"PA"PA"PA"RC#QB#SD$SD$RC#PA"PB#QB#QB#QB#SD$RC#M>!L= L= K< L< L= L< J; J;J; J; I:I:I:I: L< L= K< L= N>!O@"PB#RC$N?"PA"PA"EF22D?&GA'MF(NG&LD%IA&LC(OE'OD/RHNV:_U-dY.]P*SJ)WI(\N(\O)bZ2N`H(LB+PF)HB,NH2PN1PN5TSN[Gg^1^Q*YK(]P*^Q*XJ'RC$RC$TE%SD$QA#P@#RC$UF%XI'ZK(ZM(\O)_S+bW-cX.g^1ib4hj?WcOF^U/RI(LC'IB)LF.LDGXDGV@.MF1QL0OJ/PJ0PK/MF?RBVY7IQ60F:'E@#@;#@;:5 ;784 :786;7%D@+JE+MG'KC%E>$G?"D=#F?$G@$C;$E>#C<'HC:562:6752/"D=%G@'FA$B>;5=7(GB&F@+GD%C<%C==7<682$D>*LE*KF(JD$E@)LF'JD C>B<#D>?8"C<>7;6?7>7 A9#D> A:#E?(HC'HC(IB*LF*KE)KE)LE+KE*JE-LG&E>)HB'GB%EA*LE$D>:2>7.MH0LH-LF/NI/NH3NI1MH&E@!A:$C=;5'D@*FC.GE4OL%B=,A82A90GB3PJ/LI.MJ.LI-KH+HE-JG-IE.HE-HD1KI2LI1KH,FC+GB1NI/KG.JF)FA!A:;46/707/9361&FB.MJ*GC/LI,JG)FD/LK.MJ-KH0MH3MK1LH2NI2NJ6ON1LI2HI2II1LJ0JI1II2LL4ON4MM5NM4ML4LL5MM4KL4LL4KL2KK4LL9RT4MO5OP5OP7PT/KJ2NLD]b6LM3ML6NO6PO6ON2MK1NK5QO6RP9RR9QS;RS;SR7PO3NK4PK2PK2OI3PI1PH*HA(F@,HB&@8&C<$?:%B=&B=.KF+IC(HA&F?)IA!@8704-<5/LG.MF$E=4-4,8/93#>;82>7)FA-JF7NN;PQ7GD7NM0HF.HD"?8913*3*2*1)2+:4&@<.HF+DC4KM0FH"<:97:69494846093=7 ?7"?7;4"?:$B<?8&B=)@9:46/5-8080;4>8&D@$C=<49371864C;TI$QH$JC#1?92IJ5ML<7%?>3JM$?>&A>&DA#C=!C;B:"F<"E<#D<"C;#@<"?; ?: A:"A<%C? ?;>9#@=$=>"@;!?: ?7 ?7@9>7?8?7A9 B:A9@8@8A9@8?6>7!@9#B<?8?5=4;2 >5906/6/:3!86!>9"?:8/5-2+83 ;7 <692<692<4;3<46-5.50+AA)B@ <7 <5%A;#<2YQ.1>.@C(`T,QM+>F2(C?*C@$<7/;2XK)[N)h`2kc4ke5mh7NR0:E/ZM(XI&e[0h_1cX,`U,ZL'\O)YK'WH&WH&ZL(\N)SD$L=!N?"SD$WH&XI&WH&WH&XI&XJ'YJ'ZL([M(YK'VG%TF%YJ'WH&SD$ZL'\P)`U,f\0DN9&E>%I?&H?3MK&F>)F@)GB%C;!A8(E=.F8XJ(YJ'\O)\N(_R*`S+bW-aV-^R*]O)YK'TE$TD$VG%VG%ZK'UF%O@"M>!N?"PA"^R+bV-aU,`U-\P)[N(ZM(\O)]P)YK&VG%VG%PA#L=!L!RC$O@"L=!L!P@#N@"RC#QB#P@"SD$RC#QA#SD$RB#PA"O?"P@"RB#RC#RC#VH&TE$QB#O@"PA#WH&ZL(ZK(YJ'YJ'WH&XJ'XI&WH&UG%UF%UF%TO6PJ.YJ(UV@nzLO9OC%TE$VG%WI&XJ'XI'WH&VG%XI'TE%RC$VG&UF%VG%WH&WH&TE$RD$RC#RC#QB#N?"N?"N?"N>!M>!M>"M>!M>!M>!M>!M>!L=!L=!L=!L=!L=!L=!L=!K< L=!L< K< M>!M>!M>!L=!L=!L=!L=!L=!L=!L=!L=!J; J; L=!L=!L=!L=!K< L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< K=!L=!L=!L=!M>!L=!M>!M>!M>!M>"N?"N?"N?"P@"O@"M>!L=!N>"N?"O@"O@"HB&8-);,&9)]P)ZL'P@"I>$$8,$8,.F?.D7);*F^WatpZljTca"3.)!1.)%.++'-))&)&+(,(-'.'/(,%-&3,4-4.4/$;9)>=*>>2GJ'<>10/,2.0+1,6193:4!<8,EC*EA+F@/KF5RN9SR.KF1NH3QJ5RK1NI3PK7TQ;UT;TS3NL6NN4NN.FC#>:70&A<$C<'C>*FB ;6 :4)C?!:685&A=(D@"=8'=675"=:#=984$=:%B> ;9#>:-E?'A894"<:&:*(4 ,:$*>,//0.41 86 52"640+0,.(#5-4.1.0,2.2.3.1-0+.*/,31 2+'5+0+0,/,/,0,1001.0+/+/-/,/12141302/200..-,.,V[>_V.^T-^U._V/_V/`V/aY1\T0%725466"54*726;/-7.&4/41,6/(50'83!5344!67 56231024221/430/0/0/..02,-,-+)+,)*)*12!6:6801240/"/+..0/310.-,/. 526400321/-)2/0-VU5NN16B7&<<":9200+1*-6' 3+0:.HB+XM*[M(O@"N?"N>"M>!M>!L=!L=!M>!O@"N?"O@"P@"N?"M>!M>!M>!M>!L= N?!O@"O@"PA"N?!N?!N>!N>!PA"N@"M>!M=!L= L< K< L= O@"N?!M>!N>!N>!N?!N>!M>!L= M>!N?!M>!N?"PA"UF%WH&WH&TE%SD$TE$PA#N?!N?!N?!N>!M>!M>!O@"PA"PA"O?"N?!N?"N?"N>!N?!N?"QB#RC#TE$UF%UF%VH&XI'SD$O@"O@"O@"O@"PA"OA"O@"N?!N?"N?!N?"N?!O@"QB#PA"O@"O@"PA#RC#QB#PA"PA"N?!L= M=!M=!N?!M>!M>!K< J; I:H9H9I:I:I:L< O@"SD$UF%WI&UF%UF%TE%QB#RB#PA#PA"@D2-GI-KC*TI+QI)RG)KB(OD*QF)QF-RHLV=^R*\O)XI'ZL(^Q*aU,`U,kc4BXK*LG,LH)FC+JG4PP4RQ:VU=XXdjFle5dZ/aV-f]0aU-ZM)[M*\O*\O*YK(YJ(\N)bU-cX.bX/aY1c]8fd@^aDFZH:VH8VHRdT4SK'JA-NF.LF*GD'IC(GB.LG+FA+ID*HB)E?,JD0OJ0OH*H@-C9-B7 <8'E@%B<$@: <7#?<">:%EA%FB:695)JE+OJ!C=$F@?982@:;55."@;(HC$E>&JD&JD)ID+JD"A:)IB%D@=9&F@+KE#@;!?8(IB(HB*KC"@: @8%F@<873$E>%E>$D? @;!C<&HB#E@ A;>7 A:$F?9382=6?8:4=6(JE%FA)KF,LG,MG+MF,MG,LF,MG+KF+LF-LE-LE/NH-LF*KF)ID:2!A:,JF*HD*HC*IC*ID(HA.NG-JE!@9"A<)EB(EB%@> ;8*EB,JG,JF*HC8C82LG'B?)EB.JH0LK.JH-JF,IE-GE/JG5LK0JH0JH1LH1LI.KG+GC3MJ1MH)HC&G?:270708272">;1LJ/HG/LI+IH*GF/MK/LK-MK.MI2MK0JG1KI2LJ5OL;RR7OPTW7PP4OO2QM4QM7QP3NM5OO7QR:QT<7485845184500*2+5.=5>6%D>'GA'E@1HC*B<=78081?7?7@8%D=<5934195A@'UI$RF$5=+.$85!;8"=9 ;8'BA'E@&G?&F?(FA"C="D<"D< B:"B;#B<$D=$D>$F?!D=">; <9#@>$?="?;"?8>6=6!B9A8!C9 C;@7@7A8>6=5>7@6=4>5=4?6>7?8?6A7?7$E=(GA$D>"B:<3>7"@: >8<4806/806.4.3-3-4+80807/6-94'?>-CD94 =5=5#@9<584*B8FN2?G-9E31D:!?8>5 94";61B7KI*f^2ok9kh9cd;MS;3E8_S,UF%ZL(f]/h`0aV,VH%UF%XI&XI&UF%UF%UF%RC#N?"N?"L=!RB#VG%VG&RC#QB#TE$UF%[M(^Q*\N([M(\N([N(SD$P@"UF%`T+dY.f\0SS3*G@'J@(KB*HC)G@$E;$D<'F?0MH%E;.E5\O)\O)`U,`T,_S+_S+cX._T+_R*ZL'O@"N>"VG&]O)[M'TD$O?"N?"N?"N?"QB#]P*cX._R+\P)[N)^Q*`U,_S+XI&XI&QB#O@"O@"M>!M>!L=!L"L>!J; K; M>!RC#SD$QB#N>!O@"QB#PA#P@"QA#P@"SD$QB#M>!O@"QB#UF%TE$SD$RC$WH&QB#O?"N>"P@"RB#UG%WH&SE$QB#P@"O@"SD$UF%UF%SD$SD$VG%SE$TE$RC#QB#UG(`dSTZJPN3KO9SJ,VH&VH&UF%UG%VG%SD$P@"O@"O?"N?"O@"O@"N?"RB#XI'YK'YJ'XI&RC#SD$TE$UF%SE$P@"N?"M>!M>!M>!L=!L=!L=!L=!M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< K< J; K< L>!L=!L=!L=!L=!L=!L=!L=!L=!K< J; J; K< L=!L=!L=!K< L=!L=!L=!L=!K< J< L=!L=!L=!L=!L=!L=!K< M>!L=!L=!L=!L=!L< L=!M>!L=!M=!L>!M>!N?!N?"N?"L=!M>!M>!N?"N>"QA#GA&6+*<*QH'WH&PA#O>"E=%/7'/8'0;&":1;RJp}^qnZmiBTO%2,*)'&('*&+)+)-**&,(0-.(1*+%.),&3-&<82GD :6*B@SdgUho8LR(;:,GC,HC/LF3OJ2NJ-KE4SM7TN6SN4SM4SM7UQ;VUWX:UT5QN0NJ,ID-FC5OM2NK1KI8RQ7QO)B@,FD2NJ4QL1MJ'D>5/-'517584:7#>;6JB3>0(92$80%1%3 +9%->+$0&643052200.1.1-.*0*1+63742-4130/,1.2/2.0.0-/+2/201/1.33310/./-0-0,.+,+,/10202/1-/*,+,++WeXU\ALS:YZ8`W0c[2RQ5_V/aX17C566!88!77"6856%2-!1/21454253"5566!5444212022443312340.2500/125-.//0/.../++010/-,...//0.,,,/./.1/20411.00/-.+/,/*%70/)0.1.2/1-/+4/3.1-0+0+40GC+YK'N?"N?"N?"M>!M>!M>!N>"M>!M>!M>!N?"N>!N?"M>!M>!N>!N>!M>!PA#QB#SD$RD$SE$PA#N?!N>!QB#PA"M>!M>!L= K< K< M>!PA#O@"N?!N?!N?!M>!N?!M>!L= M>!N?!N?!QB#XJ'VG&VG&VG&UF%RC$O@"OA"N?!N?!N?!N?"N?!O@"SD$TF%WH&UF%PA"SD$UF%SD$SD$SE$SD$TE$TE$SE$VG%XI&VG&RD#PB#O@"O@"O@"O@"O@"N?!N?!M>!N>!O@"N?"N?!N?!M>!M>!N?!N?!N?!N@"O@"N>!M>!N?!O@"N?!N?"M>!J; I:I:I:I:H9I:I:L= SD$WH&YK'YK'YK'VH&RD$RC#RC#O@"N>!O@"LB'>D39F84UG(QG)RG,ME+PF+ME+NE,OGBSAcX.ZL(VG%\R,8Q?DS=AU>>VB6TN+NI)KD'JB&HA/NM6TT6TT3SQ=WPvxBia3eZ0aV-_T+_T-bW/dZ0dY/aU-^Q*dZ/gf=[`HN`S;YN2RH2RH9TK/PH/QG*LD-PG*JB*JB)IB(HC#@<'E@(E@'D?'B>,IE.KH,HD":4:4'D=2QK0PI(E>.LF-LE <650 <683)IF)JF*LJ$DA+NH-RK)PK(KF"C>'LF%GB$C?#F@$F@)JH+MI'ID$FA94$C>0OJ*HC'GB$C?"@;)IC,PJ2TO*ID*JC%C?<7 >:<7!?9(D@(HB =8'HA,NG;6$G@"F?%GA$E><6 @8%F>'HA#A<60=6"@:,MH-NH)HD*JE*IE,LG-LG.LF-LF+KF,KF-LG.MG,JD,LE,MG(HB$D="@:-LF.KG.KF*ID.LF-JE2LG1LG#A<(GA%B='B?#?;)CA/HG(CB/JI+GB/IC,C<+A:92*B>-IF.JG/KH/JH/IG-FD1JH4LK3MK5NL3MK0KJ0JH(EB/KJ1LI'D?=5:1709362=81KL1IJ6MP4LN+FE,HI1LN1LN.MK0NL3NN3KL3IM2JK6MN9QR.II=RT9NP5JL2KK8OP7OP9QQ6PP4OM0MJ/JG-HF2JL7MQ9MQ3LL4LN4MP5MO6LP8MP8LR8OU9OTB\fIfi;QU9RV6OQ5NN=SV=RV7NOVV;TR8VQ4SN5TN4QM0OK-KH1PI,JB0OG4QJ0MG1NG/LF'B=#@;,ID+JD0MH2OI1QI&J@<3>5:35.6.6/6/7/5-:3)FB:RT:SS;RR5LK,GC">8"?8=46.4,5,0)0*1, 865063!<;+EF:7*CC+CD)BB*BC/FH&?>"<;*CB$>=733-6.:2"@:$D=*IC.JF)D?)E@%B=91!>8$D<'F?&F@7283-=48=-E?$SF$@?$,9'51517395#=:(EB$C?%D>!C;"E=&F?"B;"C;#D<"B"C<"D="A< A:?8!?:!>:%C<$C;!B9"@8"A8?6;3>4<3<3<3=3>5!A8!B9!C:!D;B9@7?6<3=4>6"A9#C;&F?$D=$D=!B: @8#C;$A< @8=4$B;&C='C>=6<6906.6/5.2+5.927/937095#>:#?: @8>5915-6/:3#?:"=8;2(D?$A;$;;%?; <691+@2\`H8&@:RP5WI&e[0nn9jd3YK'VG&ZK'[M(VG%QA"QB#RC#VG%VG%TE$PA#QB#RC#QA#PA"RB#TD$VG%YK'[M(XJ'[M(ZL'XJ'RC$SD$WH&ZL'aV+dY.\R,+HB)MB%KA"F;%G=$G>&H>2LK)D:6H5!L=!M>!M>!O@"P@"N>!N?!N@"SE$XJ'SD$PA#M>!L< L< L= L< L< L!N?"N?!L=!L=!M>!L=!L!N?"PA"RC#QB#UF%VG&VG%RC$WH&VG%XI'WH&RC#TF$VH&ZL'XI'UF%SD$SD$VG&VG&TE$RC#QB#P@"P@"O@"O@"N?"N?"P@"PA#ZP9UL5O@"TN4PJ0XJ'[M([M(XI'VG%RC#P@"O@"N?"N?"N>"N>!N>"N?"N?"N?"N?"N?"VG%YJ'XI'TE%PA"P@"PA#PA#O@"N?"N>"M>!M>!M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K!L=!L=!J; K!M>!M>!M>!L=!L=!L=!L=!M>!N?"M>!L=!M>!M>!N>"M>!N?"M>!M>!L=!L=!N>!=<&!8,;='QB#RB#O?"O>"N>"C;"16$4-$8-I\Un~|y`rmDXV,)($*'/-+)*)*)-,0.-+/,:3/(-(/*2-*@=SedTfgHZZ52-DD,CD1FI&::6HK*>@-,+(.+0*3-50"A;)G@,HA1OI2QI2TK4TK4SL7TP5SO7VQ8UQ9SR;XVVX;UV6PP4MP=VY7NO8OPBZ]>WY?YZ962"=:(B?94!?;910;.0D60@/%@7965-$5$)6#,:**4)4/8463302030/+0.312-0*1043/,301,1,/)$3-2.1/.)/)#2)1./)2.41 0).,./+.-...,.110112/100114252K^_@UY.BB"47QV@)=A%8:"9:1/ 44236642550234 5822443321321/0//-$1-!2/34!8;462236.024223312.+-*,)+,#2-.-,*..101/210/0..+-(+%*%*%*&)$+(*(+&,(-*516151950+ 3+JC)VF%O@"N?"M>!M>!M>!N?"N?"M>!M>!L=!L=!L=!N>"M>!M>!N?!N?!N?!QB#QC#UF%RD$UF%RC#N?!N?"O@"O@"O@"N?"N?!L< K< L= M>!M>!N?!O@"O@"M>!N?!N@"N?"N?"RB#PA"RD$WH&VG&TE$TF%RC#O@"N?!N?!N?!N?!N?!O@"PA"QB#RC#VG&WH&RC#SD$WH&WH&WH%VG%VF%TE$SE$TE%TF%TE$SE$SD$RC#SD$PA"O@"O@"O@"PA"N?!N?!N?!PA"O@"PA"RC#PA#O@"L< K< N?!O@"N?"N?"O@"N?!N?!O@"O@"N?!M>!J;I:I:I:I:I:I:K< N?"SD$XI'XJ'YK'VH&RC#QB#TE%SD$RC$O@"N?!N?"PA#-J>*RI$IA*MB*RF*OE,QG0UK&H@6Q?g^2\O)WH&SL+IR63MC(FB(JB.PH0PJ.MH)LC.OI/PN0QN4RS>XZXj\SgPG]NIXD][7bW.f]3e[0f]2mh8le7f\1lf8VcKXeHRbG:TF*MC(IA)JB+KD*GD*HE+GD0LG/MI)GB$B= ;8 ;8(FC-JE*FB+JD+ID,HD)E?)E@83$A;%C<%B<%D?!>9%C=6083%F@(ID-PN.KJ*KI(FC(IG)KH'FB,PJ*LG,PK-TO&HD$FC&HE*NJ)LH&IE'ID=8!>:!@<%C@+JF =8 =9$C>+KG*IE0RK2TM(FB!>:"?::6#@<)HC'GA,OG*KD:5'IC%GA&FA#B='HB,NG$F?#D>:4#B<+LG*KE,NH.MG,LG-KG.LH,KE-MF-MG,MG-LF/LG/KG"C< @9*KD)KD)ID70*HD.KF.KF*HC-JF,KF.LG1LH0LG.ID+EB,GD,GD(C@'A>+DC2ML3OM2HB5KG2MJ6MK/IF4NL3NL0KK.IH0MJ+FE$@=/JH4MK5MN5KM4LM4KM5NO3NM0KJ0JH+HF)GD:3:562:4*FC7OR6NQ6NP7OS2LM/JM2MO0LM4MP6NR8NR:PQ6KN9OR>RV:OR;NS=PV=SX7MO5NN7OP4NN8OP5ON-KG/KI0KJ(HC,GE0II/JH1LJ+FC&A?:OT>PV=RZ?RZRUAV\CU[DW]CVYAVY=SS:NN:ST8SP7TO4PM3PI3RJ.KD-ID1LG2OI4RL!@991#A;0MH0MF2OI1SJ0RH!A9806/6.707/6.4,6.)HA/KG*EA!<6603.0),%)"/(5/$>;923.2-1-0)4-605/6061735263&?>1HJ9NR5JM0HI+CD(AA&?>5.6.;3%C;$C<'D?,GB82;6%B<3NJ+JC"@:#?9 =8>J?OF)PC#RD#%G?$D<$E=&F?%D=%B>$A=%C?"B< B:!A:>7!@8#A;%C=%E>$E=!C;!@9>6?6@8>5<3<3<2<3?6!A8"B:#D;!C;?6#E<"D;A8<3<4<6"@:!@:$C<#C<"C:"C:&F=%E<"B9!@8$B:$B;!@9$B:;36/916-5,908/<5<4:2"<:">:<8#>:$B;=6 @8@7#@9;4#@:#>:"=7;4%;:,@B">7#=8 80AM@]\CAL>$B;<6 >8GR=\N)\O)nj8d[.cY-^Q*ZL(YK'VG%RB#TE$TE$RC#TE$SC$SD$SD$QB#O@"L=!N>"P@"UF%YJ'ZL(ZL'YJ'VG%P@"P@"P@"UF$\P(^Q)^R*^Q)1KB(LC&NB#K?&MB(LD,F8CH/WI'[M([L([N(\N([M(]P)\N(]P)]P(\O'XI%WH&SC#P@"O?"UF$^Q)[M(VH%ZK'\O)PA#L=!L=!M>!M>!L=!L=!N>!N>!L= L= L= N@%L< L= N?!OB%PUFNQ>N@$N?"P@#P@"QB#P@"M>!L=!L=!L=!L=!M>!N?"O@"PA#TE$SD$QB#RB#QB#TE$VH%\N)ZL(XJ'RC#P@"QA#RD#VH&XI'YK'\N)ZL(TE$QB%RC#O@"N?"N?!N?"N?"O@"PB&O?!RI1QB"VG&RC#RC#XJ'TF%TE%TD$RC#QA#O@"N?"N?"N?"M>!M>!O@"O@"N?"N?"N?"P@"P@"PA#PA#RC$TE$SD$N?"M>!N>"N>"M>!M>!M>!M>!M>!M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< K< K< K< J; J< L=!L=!L=!K< K< L=!L=!K< J; J; K< L=!K!M>!M>!M>"L=!L=!L=!M>!M>!M>!M>!M>!L=!L=!L=!L=!L=!L=!M>!N>"O>"P@#HA&/:*H>"QB#O?"N>"O>"N>!=9$17&)9,*=1:PKQd_GZQXlj(@< 67350235-014032322202-0*/(/'1("8283EZYJ__$=;0GD+AAATX,ME.MD0QH0PH0NG/NH5QM6WP9WS9SR:SS:RSAXZ;SV@X[@]]=\\;XX=TU@WZDY^CX]G\bDZ_I]d?Z]=WY;UT6QO6PN2MJ.HE-IE&C? =883604/=6%B>!92)F6,H7851.4'1C/)<.*:3#.&3/75314321 6632301.0,1.0,2./*420*-).+.*.*/,/+1.412..)/(/,0-.,+,,-,-..11./012210./005353BY_`ldjpS]fIb[3`W/_V/`X1\S00B:66!89"78!79$99,70 3.42210//,0100 25110022242211431234 68 7967012413011133.,0/ 0,!.(+*/,--#0*1./-/.1334110..).,*%+%/+-),),(,*.+.+/+1.$=;!:73-$6.>>*TE%O@"N?"M>!M>!O@"QB#O@"N?"M>!L=!L=!L=!L=!M>!M>!M>!N>!N?!RD$QB#SD$RC#QC#O@"N?!N?!N@"PA"N?!PA#TE%TE$RC#SD$SD$N?!N?!O@"N@"PA"O@"O@"QC#QB#QB#QB#SD$VG&VH&TE$TE%RC#PA"QB#PA"PA"N?"N?!O@"PA"QC#SE$TF%SD$RC#RC#TF%VG%VH&UF%QB#O@"O@"QB#QB#PA"PA"QB#SD$SE$RC$QB#PA"N?"N@"N?"N?!N>!N?"PA"O@"O@"O@"O@"N?"M=!N?!PB#PA"PA"O@"O@"O@"N?!L= K< K< K< I:I:I:I:J; J;L= O@"SD$VG&WH&UF%PB#O@"PA#QB#O@"QB#P@"O@"TG&;N;,QF3ZM(TG'OD,SG+RF+QG*OF,RJY^:]P)YJ'ZL(\N(g^1CWA'H@(NC,NE/NJ.LI1KK2PO/QN.QL0PM4PO6QQ/LJ0NN2OM5PKrn8 <773 :6.LF,KH%C?/PM-ML2QQ2SR1RP)JG&EA+OK-QM.MJ)JG&GC#B=%FB(IF+KI'HD*IE!>9 =9)HC'EA$A=#C==8 ?:<7!A:$D>!?:$B:$D?!@:%E>.PI(ID!C="A<(HC+LE,LF,NG#D= ?950*JC'HB'HB,LG,MF.MF.LH-LG-MH-MH/NH0MI-KE-JF*FC(IC,KF-KF+JE*HC#A<-HD/LF*IC-JD,KE(HB)ID.LG/KG-IF-KF0MH-HD1JH1JH.JG5PP3NK6HC9OO:OP6NN3NL2ML5NN4ON4PO4QO5RP5PP3NM1LK7PO5ON7NO8MRR[:OU=96724.4,80;4&D='C>%B=*IB@8;4:4-=.GH,RJ$;?&"1'5-7075 :7:6:4:7#?<)EB-HE'E@.G?$D<#E='F?&E?'F?&E?$B;#B;"@9&D=#@:<5)E@+GB.IE%C> @9 ?8=6>6;4?8@7=4;2:1:2=5?7>5?6>5A8<4=5>4?6>5=5<4=6#B;#C<&E>#C<"D;!C9#E<&F=$D; @7 ?7'F>$B;#A: =6:4808081<6<7 >:!>:%@>(@@:4=4 A8&E?!A9=3>5:3'>:$>:81!?76F8__>7G<>6&A>*DAEO=[N)VG%bW-bW,]P)\O([N([M(UG%QB#RB#QB#QA#PA"P@"RC$UE%UF%O@"M>!N?"RB$UF%XI&[L'\N(YJ'UF%RC$Q@#SD$XI&[M'aU+cX-cW-IL4)ME'PD'L@'JA2QR2LBVH&XI'[N(]P)\N([N(YK'XI&XJ'[M(\P([N&WH%PA"SC$O?"M>!M>!VH%^Q)^Q)[N(ZK'SC$M>!M=!M>!M>!M>!M>!L=!L< L< L< L< L< L< L= M>!O@"RB#YJ'RK/UI+SE%TE$RC#SD$QB#N?"M>!M=!M>!M>!RC#VG&WH&TE$RC#QB#QB"RB#RB#PA"RC#RC#SD$P@"PA"RC#SD#XJ,WJ+TE%UH)\T;ccS\g]RL7YS>XM3PA$VL6L=!O@"QA"TE$YK(VH&YJ'XI&RD#RC#PA"P@"QA"SD$SD$RC#O@"O?"O@"N?"PA"QA"P@"PA#N?"N>"M>!O@"RB#N?"M>!L=!M>!M>!M>!M>!M>!L=!M>!L=!M>!M>!L=!L=!L=!L=!L=!L=!M>!M>!L=!L=!L=!L=!M>!L=!L=!K< L=!L< K< J; J; J; J; K< K< L=!L=!L=!J; J; J; J; K!L=!L=!L=!L=!M>!M>!N>"M>!M>!L=!L=!L=!L"O@"O?"O>"P@#M?#6;&F>$O?"N?"N>"N?"O?"L>"A=$*;-'UWF\aG\aBZ]AV[BW\I^fOcmNclKcmIaiE]cH]d>UYDX^AW]J_gH_hFbi>^bA\^?[Z>XV;VR;TR8SP#>:#@<$A<#?:!=7+HC4SK$@;:64O;!<41/3140 6.3I9.B9(2-2-7576";9 52211.1.300,2.410+.*,(/+0,20/,.+30.*.).*-'-%.'.*.*/,.+,,--1/21001010//-.-/-/3355KTJ_X2d]4f`7gc:]T.ZT1^V2BL:2142542142424354103/0.0123342123341/112412/057666665110101222243/-0-.-//.,0.-,0.330.,*-).,200-.(-'/+.(.(.*0+510,-)0,0,0-522,404.:?/SD$P@"O?"N?"N?"SD$UF%RC#P@"O?"M>!M>!M>!L=!L=!N?!M>!N>!N?!PA#QB#PA"OA"PA"N?"O@"QB#OA"PA"OA"PA"UF%XJ'XH'TF%PA"O@"N?"PA"SD$RD$QB#RC#SD$UF%RD$QB#TE$WH&VH&SD$RC#SD$RC$QB#QB#TE%SD$RC#QB#QB#PA"TE%WH&VG&VG&WH&TE$SD$WH&VG&QB#PB#PA"P@"N?!O@"PA"QB#PA"QB#RC#QB#PA"N?"N?!N?!N?!N?"O@"O@"O@"O@"PA"PB#O@"M>!L< N?!N?!O@"O@"O@"PA#PA#N?"N?!M= L= K< J: I:J; K< K< L= O@"SD$UF%SE$O@"M>!N>!N>!O@"M>!M>!QA#HD+DL7*NE(NG(PF*QG*PF*LD1NB:O=DQ=HT;bV-WH&YK(f\1\Z4N]?,NB(H@+ND+ME.NI-MH/NJ/PN.RM+MJ/PN0PM0NM.MK3PP2OOPdOLvwAruAuyCv{EzLv{FQ_G>XL3NE-KC96(KD*KD+JD+HE,HG+IF-JF3OL,JE+ID.KH0MI1NL.ID-ID.JG+IE'D@">:#>;%B?!<973%@>"<95262&B?$@<*JF-LJ*JG.MK-PM/RN+KH0RO0UR.QN.QM,MJ)IE+IG"B>&HD)JG-ML,MK(HF)IE0NJ-LH(HC'GB)JD+JG$C?(HC)IC&FA&HB"B<#A==8#B=#A=%C@!@; @:,NH!A<#A=,PJ(IC%F@$D?$E@&E@'FB$B>)IC,NG)JE*JF,LG.NI/MI/NI+KG-LG0OI3OJ-LG-JF-JF)EA/MH1NH0MH,JE,ID-HE-ID-JD/KF/LF-KE.MG.KF.KF0LH1KG1JG/JG.ID7QN8QQ4ON1KH6G@:PPSVSX=SV>RW>SX?RX?QW= :8815.2,3/52#?<'CA2IK:OS4JN/HJ,FF+EE9NT6LP;PV+DE"<:623,92:2=5(C>;2:3833<)YO&+?1-E@;682:551%>='=>(A@*AA0EG'??2JI(C@"@;$B=%D=(F@*E?&B<3MJ">:%B<"B;"A: ?8%B<.HD6LJ6NL8NL,JC%D> @9>7?7@9A7A7>5<4;2;1=5>5?6>5>6>6=5?6=4=4;2<4>6 @8"@:"C:!A9$D<#D;"C:$D;"B9%D;!A9">9!;8"A9%C;%B:<6;4702*92;6!<9=5#?=93:26.?6"B;!<:=4:2!=6!=66/8271'B>*C@&@;L8WH'XJ'[M(ZK(ZL(\O)XI'RB#VG%ZL(YK&XI&SD#O?"P@"RB#QB#N>"SD$SD$RD$PA"O@"O?"M>!N>!M>!M>!M>!M>!M=!L=!L=!M>!M>!M>!M>!L=!L=!O@"TE$O@"TF&XJ(SE$WH&VG%RC#VG&OA$L=!M>!M>!N?"NB'P@#P@"SC$TE$QA#RB$SD#RC#PA#QB&O@"YWDSM4TO8SN5IWLUR;^W@SD&VI,XK-TE&WH%YJ(WH'SD$P@"O@"O?"RC#TE$UF%TE$RC#RC#SD#RB#SD$TF%VG%TE$UF%YK'WI&PA#PA"RC$RB#SD$PA#O@"O@"N?"N?"N>"N?"M=!K< L!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!L=!L=!L=!L"O?"O?"N>"O?"O?"M>"O?"O>"N>"N>"O?"O?"N?"4;'(7'4-H^YH^X[njATS7LO)>A2345 48"6867"89%;<10.+0-/).'-(.(1,5/6NM 84;QRDXV7LLEY\^ntCV_Oam6GM4420!?:0MI4RM4RL4SM6TQ7RR=WYDZcH[dM_jM_gL`iM`kPcoUhvUjyNeoOdpJ`iMalMajF\eAU\G^gKdpC^fAX\?Y[=XZB``BZ\;TS8RP8RO8QN3OH.ID(F?7071%C=+F9(E=;484:582$=571)<6",#6477430-201/.*.'2-1,0+/*/+-&,',&0+1-.(/)/*0+.(0*.)1-1-0,/-/-/.././0021212102///022030215#56NQ7ea8d^5[Z:WXAFRH44325555543355661/110,1010001/1010....783424320."52201/0.,*-*/-1022430-0-/.33-+0/222143.+-*1./--)/),(-)0,5073.)1,3/-*+%/)82$>;94(>7=@0RC$OC%RB#PA"O@"QB#WH&SD$SD$QB#RC#QA#P@"N?"M>!L=!M=!N?!N?!N?"PA"PA#VF%TE%SD$PA"N?!N?!O@"N?!N?!O@"N?"N>!O?"N?!N?!N?!O@"QB#SD$QB#QB#O@"QB#TE%SE$XI'VG&XI'VG&UF%VG%UF%VG%WH&WH&WH&VG&UF%QB#O@"PA"SE$XI'XI'XI&TE$WH&VH&UG%RD$PA"PA"PA#OA"N?!N>!N>!N?"QB#PA#PA"O@"O@"O@"N?"O@"N?!N?!PA"QB#OA"PA"O@"PA"OA"O@"N?!M>!M>!N?!O@"RC#RD$PA"O@"P@"N?!M=!L< J; I:I:J;J; L< O@"QB#QC#O@"N?!M>!L= L= O@"O@"O@"UF&LF+4G?.HD*IF(OF-SJ9PAHN5VK)VH&UF%XI'ZL([M(`U-#A:(HC70%>8.JD4PM6QL-JE!>8-LG*FD#?:*DA&A>&@>7584!=9"=8'FB*KF-NJ.OM,MK+LK-PM(ID+KF+KH,MJ,LJ+LI+LH&FC'GD-LJ+KJ*LI(GE(FD#@=">:%C?%D?$D?&EB#B>&FA#A>$F@?<:763=8>9>9"B>&FA'HB'HB$EA#B<&F@%GA"A="B=&EA'FB%D?)HC*LD.PI*KE.NH,LG.MH.MH1NI1NJ1MI3OJ1NI.LG/KG)FC=8.KF/LG/LH/JF.KF.LF.KF*HC-HD1KH-IE.MG.LG/LH0NH2MJ-IE3NK2KH0EC6OM8NN6KL6OP:PS>SW:RS8PR5PP7QR8QR8SQ9TS=VV9TU;UV?WXBXYRU:OQ9PQ8PP5PO3OM/NJ/LH(FB/JJCW]AW\@QVBW\DX^@V\?TY7OS:RU?UZDX^@TZ@UZDW\EY_CV]CV\I[c9QR?SW;QT@UXEY^H[b>SW>SV>SV9QR9QS;OU9LSSZCV`AR[EWbBU^FW`L]hIYdDT]:RTCW[IZbJZb>OV4GM6INAUY:PS/EG#9:1LJ9TQ9SQ9SP6QN6RL3RJ1QI,MD1TJ+OD#C:$B:'J@"B97/5-6.3,2+3/ 97";:)@A%==":9.DF'??(?>&?> ;8+BA(@? :7 =8)CA+DC-GGFYa.GH#>;"=: :8!;984858552'CA$?>*CC2IK:OU7NR6NQ;QV:RW6LP8OS4LO1JJ(FB"?:825."9/(:,.;(9A)KG'WL%=?%5.5.4-(A>(??-AD,@C$;; 97"<95KL1FG+CB!<7!=7!>7)D?*FA)D?/IF%@;%?;%B;(D>+FB)EA,GD6KK/GD)C?!>8$C<)IB@8!A9 B:@7A8A8@7=4;2=4=4?6>6=6<6>5>5>6=5>5;2>6>6>6=5%D;#B;#C;$D<#D;"C9"C9"B:$C;"=8 <7!?6$A: ;4 <6;3;35-71923+60>693!>66.'D<*F@$=9$C<<3<392;4">7#?9,EC'9<-FE$?9>6/C1bgA.G?>7#?9&A'MA(K@.LH0F5\R,ZL([M(^R*ZL(XI&_S+\O)VG%QA#RC$QB#P@"N?"O@"M>!N?"P@"O@"N?"M=!L< L=!L=!M=!M>!N?"N?"N?"N?"N>"M>!M>!M>!PA"RC$SD$RC#PA"N?"PA"XJ'O@"N@"RB#TE$WH&UF%UF%UF%SD$QB#TE%RD$RK3RF+RC(VM3QA"TE$SJ/TI-QB#PA"VI.\N6QB%N@#SE%UF%UH*TG(TD#QA#QB#O?"P@"RC#VH%SD$RC#QB#P@"P@"P@"P@"N?"PA#TE$RC#RB#TF$SD$SD#UF%TE%UF%WI&[M(RC$N>"O?"SD$M>!PA#P@"N?"M>!M>!N>"N?"M>!L=!M=!L=!L=!K< K< J; L=!L=!L=!L=!L=!K< K< K< K< K< J< I;J; J; K!M>!M>!L=!M>!M>!M>!N>"M>!M>!N>"L=!L=!L=!L!O?"N>!N>"N>"M=!O>"M=!M=!N>"O?"P@"P?"O?"@;%48#"7+.F@DXSjzvkzxixzGY\#52!66--..0034%:<67111-/*,(2-1+0($=8%=:50Rdf-CA$<93JLTfl:LRBS[1DH1084.NG6SM6SN!>61N:'B:&B>"?: >8'C<.(#2+66411/,*+'+&*%,&,&.).).'-&,'-(-',%-','-',&/(.'/)0)2./*/*0-1/../.0.4312321131121303.013.167``Dc]8QU>1EDAOL02/132655443!674433310,.-0./+42312.0.52203343.,-,549910!-#-')/ -+.-,++'-*,(0/10224298420-/-2/1..-,&.(/+1..,/+;5,%2,.).*0*$7-4A24D7AC.@<&2;/2<.LC&SC$QB#O@"TE$RC$RC#TF%SE$SE$RC#O@"N?"N?"M>!M>!M>!M>!O@"QA#TE$SD$VG&RC$M>!N>!PA#O@"O@"N?!N?!M>!L= L= L= M= M=!N?!O@"P@"O@"PA"OA"PA"PA#TE%XI'XJ'UG%TE%WH&XI'XI'XI'WH&VF%WI&XJ'VG&QB#O@"PA#VG&XI'TE$SD$RD$VH&PA"RD$PA"N?!N?!N?"N?"N>!N>!M>!N?!N?"O@"O@"PA"O@"N@"N?!N?"O@"PA#RC#RC#PA#QB#PB#QB#QB#PA"O@"N?!N>!O@"RD$TE%SD$PA#N?!M>!L= L= K< L< J; I:I:I:J; L= N?!O@"N?!PA"N?!M= M>!N>!PB#QB#SD$SD$KB'EE-;F3DH0PH*TF$SE$PA"O@"O@"SD$XI'^Q+]P*XO,`Z3cbAP^SAWK3SJGa]7WR*OJ/TO0SP0QN+LG*HF3LN2NN:TRQbW[fQcjSnm=rr?w|FxLiwRI\NI]R0MG,JE&E?&C?(GA.JG0LK(C@'CA'EA)GB'E?%D>%E?*ID"@9*HC*HA%D<#@9,ID3PJ6SN0LG*ID+JD(D?%>;)@?$<;6263!<7"?:$B=$C>'F@"?9%C>*IC*JH)JF&E@,MJ)GE'EB'GD+LJ*GE*GF*HF+LH(HF&D@#@=">:!?;&D@'FA;7:7!?<"@=*IF<998867597:6846296"?<"B="@RU>TW>VZ?UY@VZUVAWZDY^GX^FZ`AUY9TU6PQ7SS7SR2NM5PO@V[AW\BX\BX\FZ_CW\FZa?X]=U[CX_@TZAUZGZbG[aM`iHYbJ[dJ[cCW_IZcEW_JZbFY_H\cHYb>SXBSY?QX>RXAVZ@SX8NR9OS@U\AU\BU];RV8QS6RS6PS6NR5NQ5OQ3RTT\AT^BS^BTaFYfJ]iL^kM`nHYfJYd='@@6MP9NT,DG1GJ.EG4KN7MO62973/$5*5;&?B(4;'*:-/(0*3.&A>0II.EF ;8:6"=:#>:73!=8&?< <6:593$>:">8 =7+FA/HE&?<(C>)C@+DA+FB.JF8PP=PR>PT+EB&B=%E>$F>%H?"B:*KB E<B8"G> C:!D;=5>5?6?7?6>6>6>6=5=6?6?6=5=6 @8 A9=5@8#B:&D<%E="A9)HB,LD,LD#C<%B:#A9"A8#?7919192;3:2<4<48/6-91<6!>8?7!A9%F>(IA%>;"@9<3<45-:3!>8"?8,GD(F@$<871/=,\O*^R*XR0 :0 =690,?6SE%O@"SC#[N(cW-`U+bV,WH&UF%SD$VG&VG&TE$WH&XI&WH&VG%XI'ZL([N(_S+`T+]P)YK'ZM(YJ'XI'RC$YL(e[.cY-`U+^R*YK'ZL(ZL'ZJ&/K>-KD*H@EL2^R,^R*aV-_R+]P)ZK'ZL(]Q*YJ'TE$N?"L"M>!M>"L=!L=!M>"M>!K; L!M>"M=!L=!M>!M>!O?"PA"QA"VF$WH&XJ'[M(XI&WH&VG%XI'QB#M>!L=!O@"WH&WH&WH&UE%VG%VG%[L(\O)\O)ZL(YL(TF%RI1WQ!O@"N>"L=!L=!L=!L>!L=!N>!N?"M>!N>!M>!M>"L=!M>!M=!L=!K< L=!L=!M>!M>!L=!L=!L=!L=!L=!J< K< I: H9K< J< K< J; J; J; J; J; K< K< L=!L=!L=!L=!K< J; J; J; J; I;I;I:I;J< J< J; K< K< J; K< J; K< J; J; K< L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L>!M>!M>!M>!N?"N?"N?"M>!M>!L=!L=!L=!K< L< M=!L< L"N>"N>"N>!L@+@!<94OM@Y\:TT?WZH`jLdqSizThyRgyThyWk}Wk}ZqVk}XpWmToSmVnQhvOeqPfqJ]dJ^fK`fH_dGZ^J_cI^c;SS$@;,JE$E>&?9&!<98653/,,)0.1-1,(4(.),&+&+%-&.&/&"0&.%+&,&.(-&.(.(-'.(3/73400-/-0.20201/32222222133553301.51!99/B@(?=77741356562.0-2/1.4030/+42100/0/(7,59))4'-).*+(1..-/--,-+55.,.)+""-!($-)-++(+&0,0,/,1.0,3/,(/,-+/,.*,'*'.*4/.'.*,'+()(-*507;,JA'QB#P@"N?"-8+1. 3)@<%RB#RD$SD$UF%SD$QB#QA#TE$UF%QA"O?"O@"O@"N>"M>!L=!L=!M>!N>"O@"UF%VG&WI&QB#N>!N?!PB#QB#PA"RC$RC$PA"O@"O@"N>!L= L= M>!O@"O@"O?"OA"O@"O@"PB#TE$WH&VG&TE$SE$UF%WH&VH&UG%UF%UF%YJ'VG&SD$RD$PA#RC$O@"PA"QB#PA"O@"PA"O@"PA#PA"N?!N>!M>!M> L= M> L= N?!N?"PA#RC#OA"N?!N?!N?"O@"PA"PB#RC#RC#RC#SD$RD$RC#RC#PB#QB#QB#QB#SD$UG%VG%VG&QB#L= K< J; J;L< L= L< J; J; K< K< K< K< L= SD$UF%PA"PB#RC#QB#TE%SE$RC$QA#P@"QB#O@"QB#TD$VG&UF%PA"O?"O@"SD$XI(YJ(YJ(YJ(`T,__>9TI4RFA\S6XR+QH,PJ/TP/RO0RO(IE)KF-NI*JE/NL3RPF\MkqJqsCjqH]nOA[Q0NJ0MJ,JG-JG'D?$B=%@>-JG/LL8TU/KJ#B=<57080;4"A;(FA!=6#C;*IA4PK4QM.MG1OK5QN1MH-LG2RO/NJ&B=(E@(E@*FA">:$@;(E@)JF&HB(HC'E@+KF,LG*MI(GC*HF)IF&DA%B=83#A=(EB,KJ*ID0QM.NM,LI)IE&FA$C>)HD'FA+JF"?;%C@(FD$A>:7;7<8<7>;$EA#F?!@<&FB!>; 50<8(JD+NG)MF*NG-QI.PH0PJ1QJ0QJ1QI4RI-ME/PH2PI4PJ1OH0NH3OI1OI4PM1MI/MH.LH,HD3MJ/LG&C>.KF.LF0NI,GD3LJ,IE2NJ4OL2PJ2OJ2PK4PL1MK5RO8UR1EA@UVBVWEW\DW\BW]AV\?W[?WZ8TU7TT9UV;WY=WXSZ@S[CV^CXbH[eK^jFZgK^lJ_kIZeH[dDU]GY`QbmASZFX^=QU;LSDU\CV\6>6'G@!A:$D<&C?&E?(HB#D="C;)AA(@@ :7'A>)CA!<8*CB=)8>/,GF'C@)DB0LL%CA'BB*DE'@@'@@">;96%@= <7<6&A>6JG5KM5KM5KM5NM+FC'C?;6!>7:492:3 >792;3"?9,GD%@;92#@:(B>)E?/HD;QP=SSCUYASW@QV3JI&C>#C<#B;&G@(GA)HB?6'I@0OH+MDB9A8?6@7@6?6>6?7@7>6=5=4>5$@9"@8@8B9"F<#F>'G?'G?'E=%D=+JC.NG,LD#A;"A:$B:#A8"@76/;37/ :4#;7%?;"?88/60 <7;3;2;3:2>6A7"B:$B;<4 >76,825/4.62)A>+DB(@D+:5"@9:2CA)SD$WI&VG%SD$UF%WI&YJ'YJ'UF%XI&WH&VG%XJ'\O)\O)[L(YK'\N(\O(^Q*\O)_R*ZM(ZL(YK'XI&TE$ZL(dY.ia1h`1eZ/]Q*[M(YJ'WH&GF,3I;JB&VG%ZL(`U,`U,YJ'WH&XJ'ZL'bV-`T+ZL'N?"L!M=!L=!K; J; J; L= M>!L=!L=!N?!M>!M>!P@"TD$UF$P@"RB#ZL(ZL(ZL(WI&RC#O@"N?"N?"RC#SD$WH&UF%PA#QB#SD$\N(_S+ZL'UF%ZM(\N)XI'VG%VG&WH&TE$TE$VG&TE$TE%UG%WG&UF$SE$TE$VH&WH&VG&WH&XI&XI&WI&VG&VG&WH&UF%VG&WH&VG%TF%WH&TE$O@"QB#RC$N?"N?"PB#P@"O?"N?"L>!L=!L=!L=!L=!L=!L>!L=!L=!L=!L=!L=!L=!M>!L< K< L=!L=!L!M>!M>!J; J; J; J;I;I;I;J; J;K< J; J; J; J; J; J; J; L=!L!L=!L=!L=!M>!M>!M>!M>"M>!M>!M>!L=!L=!K< J; J: L"L.*<.;<%;='4=*'8*(<10E:>RML^Vixvfw|,AB/AA0.34%:<#8:"66+@B534/ 802)1(+B@ :3*B>;;ST:TT?Y\KalTizPftJ`kRfsZmThyWi{Xk~Vj|\qTizWmTl}RjyG[eNdnL_fMbjObjH^cI_eH]bDY\CY\>WW=WW9VS"?992$D<(FA%C>=ZJ,IB$A=(E@)JE0B>$0*72756510/.0.30402.1.1/0./*0-1+-(,&+$*&+',&/*/)1,.)1,2,0*/(/)1-0,1-2/./216242545552413.41644342433234541/1.321+.(/*2-4242742032#3+49)0)/+,(,*.+2030#3+.)+)+*-+-,)%+%($,)+(-(+&-'.),(-(0.0*,'-*,(0)+%*&+&/)0+-%-),(-,./%6/G@&PA"N?"N?"L?"7>, ;872.7(I>#QC$WH&WH&WH&SD$QB#RC$SD#RD$QA#O@"O@"N?"N?"M>!M=!L=!L=!M>!OA"SE$TE$UF%SD$N@"N?!O@"RC$UG%SD$QB#RC#TE$VG%RB#N?"N>!N?!PA"SE$QB#N?!RC#QB#PA"RC#WH&YJ'WI&TF%SD$SD$TE$TE$TF%RC#SD$TE%UF%TE%QB#N?!L= M>!N?!N?!N?!O@"O@"N?!N?!N?!N?!N?!M= L= L= M=!L=!N?!O@"O@"N@"N?!PA"PA"PA"PB#RC#RC#SD$RD#QB#N?!O@"PA"O@"RC#TE$TF%VG%TE%UF%WH&TF%OA"O@"N?!J; L< M= L< L< J; K< L< K< K< M>!M>!QB#XI'YK(VH&PA#PA#VG&VH&SD$TE%SD$QB#SD$UF%VG&WH&SD$RC$O?"RC$VG&XI'XI([M)UP/(OE)NE+OG.NF7OA4RH0QL8PI9OC@YPMcNL]DMZ@FZFYeCkoDsuBZgI1PN4SS4UQ5TP1SN-PI/NI.IG-JH1OM-KJ.MH,JG3PP5PQ'FB!B;:3:2!A;$C?#D>!?:#B: =6"<5'D>$C=#@9)HC/OK)IE'F?!@9"@:8/=6$A<9292>6$C<*JE*KF,KH$B= =8"@<$C>(HD'GB#C>%GB(HD$D?+LG.MJ%D@%E@+LH*JF*JG-LH+JF+KF-MI0QL)JE&D?(FB(HC%E@;5!B<#G?#C>'HD$EA$EB<9!?<-=4#C?2RM-LF/SJ*LF.OI.OH-OG-NG0PH1QH-LF)IB,LE3QH0OG2OI/OH.NG/OG/NH0OH0NI,KF0MI0NJ,JF+HC/LG3MI1LH/KH1KJ3MJ3NK3NK6PO4OM4QO2QM7SQ6RP;TT8IGCVZDY]EY_CY^F[cBX_>W\>X\9SV2OO4OP8SS4QO3OL5RP9RT@W\>W[TW?UY?VZ9UU?X[9UU=UXG\bMaiFY_I\dDY`F\bG]cBW]K_gEW^M_kYjuSdpQblQcmPcoUgsO`iM`jSerM_jK]fHZcI[bN]gQamRdqL\hPalEYa@V^B[b?T[CV]AV\6OR8TURY:QU;RXAW_DYaEZcBYcK_iPbnN`iOak>OW@RY:LS?PWBY[*KE'HB)JE)HC!B;$C>&D@%@<84628553 ;8 86"<:1HK>RY?QY;PU4JL,CD#;:+CD=S\RgwVj{J]f@V]=RZ9NU;QW,DE#>;:55.:6!<973:5<796/FG@SZ-HH,HG6LQ:QW=<()C=$@9!@;$C?&E@"B=$C=(DA)B@$>;%B<&C=2KJ<%B>'B?<7#@:819260:471;380:4:3;4<6(A>,FC.GD6ML;PRGX^HY`IZbGW^DSY6LM0KI2KI-ID-JD0KH6PM7SN5SL(IA B: C;@8?7A8>5A8?6=4=4>6>5#@9$B9#B9%H>$H?"G=#G>%I@'H?&G>)F@/NG.OG+LD*JB$B<#A9"?68061806-<4#>8:26-5,<7 @8%?;:5%A=807.5.#@:%C=%A;"=8%D<#?9 85 >6$>:!?892+7%XJ'[M(\N)[L((<.<380<43A/RC#TE%UF%TE$SD$WH%XI'[M(YJ'YJ'SD$UG%UF%VH&UF%VG%VG%ZL(YK']P)_R*\O)ZK([N(]O)ZL(ZL(`S+_T+dY.`T+_S+`T+RL-OI,EK2QG)L=!O@"XI']P)^Q*^Q*XI&\N)]Q*`T+`U,aU+XJ'M=!L!M>!M>!M>!M>!M>!P@"P@"P@"P@"UF%UF%XI'UF%UF%WH&SD$PB#QB#P@"M>!M>!L>!K< K< M=!SD$XI&SC$P@"PA"UF%YJ'XI'VG%XI&UF%VG&WH&UF%UF%RD$QB#SD$RC#P@#QA"RC#QB#PB#RB#RC#TD$XI&YK'XJ'WH&UF%RC$N?"M>!O@"RC#PA#N?"O@"N?"L=!L=!L=!K< L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L!N>"L= I;J; K< I;I;I;I;J; J; J; L=!K< K< K< K< K< K< L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!L=!L=!L=!L=!K< L=!M>!M>!M>!M>!K< L=!L=!K< K< K< L22 56//%;<110- :53+1) 735-$<:'>;.C@FY^#8: 77 755HK(=?$><:SRBY]H^dPftUl~PgwH^iQet^o^o[l~Zn`t`tOanThwYoTiwSgtQepJ`hK`iH]fI]eD^d9WU6SP7TQ"O@"O?"L=!N>!QA#VG%TE$QB#RC$RC$SD$VG%UF%TE$UF$UF%UG%UF%WH&UF%QB#RC#SD$SD$QA#RC#N>!O@"PA"QB#RC#RD#TF%TF%RD#QB#TE$TF$VG&TE%O@"O@"PB#RC#RB#QB#N?!O@"O@"N?!N?!N?!O@"PB#RC#N?!M>!N?!N?!M>!L= M>!N>!M>!M>!M>!N>!N?!O@"RC$RC#RC#RC#RC#RC#RD#SD$QB#PA"QB#QB#PA"RC#TE$UF%XI&VG%VG&WH&XI'P@"M=!M=!L= L< M= L< L< J;J; K< K< L< L< L< L= N?!P@"PA"M>!N@"SD$\O)[M(UF%SE$RC#P@#P@#RB$TE%UF%RC$SD$WH'YJ(YL(_R,IR;1NF3K>0LC.NE^W5`W4^V2_X4[T0]U/db9gg9aZ0\P+dY/kc5po=rr?SdN0OO3TT4RS7TT0NK.NI1NJ/LI.MJ,KG(IC @9>7!A:!B<$D>#B<"C<$D=)FB'F@#D<#A;"@9(FB!=74-1)">8%C=3+5-!>7+HC+JD.LG%B>&E?&G@#C<%E? >6$E>&IC,LF*ID*JE#B=<8%D?#B>,PK.RN/PK.OI&HB%FB"@<"B=!@<<8%C?*JE)JC)JC0OK0OK.OJ-NI.NJ-MH,MG*MF)MF$E?*LE+PJ+NJ%EA*LF+JF+FD.KI1RL0NH.OG0QI/OJ0PJ-OG0PI/NG,KD,LE(IA.OG0OG2PH2PH,JD/MF2OH0OI,LF0OI4PK2PK0NJ,KG3NK2NH0NI1NI0LH1MJ5NM6NM7OP6NO5PO4RP4POU[>U[>X^C[`DX_@W\;TWAY\BY\@Y[?X[AW[DY^AY]CZ]UZAX^H[gG[eDYcO`lRdoSepQbnL^iL_iJ\eJ]fFW`BRZ=RU3NJ7VP2SK-NF!C:;3!A9$C<$F?!B:"A;"C<'D@,HF%@?)A@62!;:*BD,EF!<;#?=1HK7LS)BA'E@(EA)EC*HD)FB$C<#B<%D>%D=.JG/IF8OO8MO1FI9NQ1GH">::570;4$?:;4<6717160705/5/93:5%@<.GD8ON9PO:RSDX]GX_=OTM]eHX_CV[EV_RT9;4>4<34>)^Q*\N(XI&VG%"5);2&D>90 8-N?"M>"QB#XI'VG%ZL(aV,dZ.^R*XI&TE$UF%XI'WH&XI&ZL(]O)UF%QB#TE$WH&VG%UF%YJ'ZK(\N(]P*^Q*WH&^P*^R*^Q*XL(LH-7L?NC%TE%WH&WH&\N)^Q*bV-`T+^Q)bW,f]/dY.]Q)WI&QA"L!QB#UE$UF$RC$RC#RD$TE$VG%WH&UF%PA"RC$SD$O@"M=!J; I;J; K< L=!O@"SD$QB#QA#RC#XJ&\N([M(YK'XI'WH&VH&VG&WH&RD$QA#QA#SD#QB#O@"RB#SD$O@"P@"N?"PA"PA"SD$VG&TE$PA#O@"L=!L=!M=!L=!L>!M>!O@"N?"M>!M>!M=!L< K< K< L=!L=!L=!L=!L=!L=!K< L=!L=!L=!K< J; J; J; J; K< L=!K< L=!L=!L=!K< K< J; K< J; J; J; K< L< K< J; L=!L=!J< J; K< K< L=!L=!L=!L=!L=!M>!L=!L=!L=!M=!L=!L< I;J< J< J< J; J< J; K< L=!L=!L=!L=!L=!L=!K< K< L< L=!L=!L=!L=!L=!L=!L=!L=!L=!M=!L=!M>!L=!K< L=!L=!L=!L=!L=!L=!L=!K< K< L=!L=!L=!L=!L=!K< K< L=!M!M>!=8!,6$0%1)4+/&-!!1$77 $1"$80,>6Pb`2HDJ\Y&;7:OP.CC0-/-"893GL66.+%83/,/*1,2*4/%;8!73:MQ&9Z]1SN/RK6WS6VQ7UQ3RM2PK.NH/NG1QJ/PI3SL3UM0QI2TK0OH0PH2QI1OG)JB-PG/RJ-PI+LF >9 =9746351421/41301/2.2, 1)0,/*.(.(.(1..)1,7<*=>)2)0,2-403/402,/(0*3.1*4,1*0)0)61403/4/730-1-1.423143313042543/0*536452852.3.2.504.410.1-84522.2.#6.3-2/)#1/#87#2*0(.*/(+%0)!6,BE,QL-XM*ZM)[M([O)^Q*UK'VI(RG(PD%QB$PC$LB&<;*D?(G@'I@'H?%L?#QB#N?"N?"N?"O?"J?#"9162#6*G?$:='G?#OA#QB#QB#QA#P@"P@"O@"N?"O@"O@"N?"N@"N?"N?"N?"M>!L=!M>!P@"QB#TF$WH&YJ'XI'WH&WH&WH&XI'[M(XI'VG%TF$SD$QB#TE$SD$QB#O@"O@"N>"M>!L=!L= N>!O@"O@"O@"PA"PA"PA"PA#PA#QB#RC#QB#PA"O@"N?"RD$TE$RC#QB#SD$RC$PA#OA"O@"PA"RC#VG&SD$O@"O@"N?!N?!M=!M>!N?"N?!N?!N?!N?!O@"OA"RD$RC#SD$WH&XI'UF%PA#O@"PA#PB#QB#RC#RC#RD#SD$UF%WH&UF%TE$UF%VG%RC#QC#QB#QB#PA"N>!L= K< J; K< J;K< K< L< L< L< K< L< L< M>!N?!UF%\O)ZL'SE$PA#PA"N?"SD$UG&UF&TE%SD$VG'TE%YK(]T/LR:@N$F?"C=!B;!A;$B<*FC*EC'CA82<4(GB*GC$@<'D@#@< :4:5!>8 <4#A9&E@ =8*KG-LJ+LH+JF+KG'GB&G@@881:2-PH1SP"B>"B>$D?$F@*NH0QN-NH,MG*ID&HC)KG)KF&HB#C>"B<$C<'H@&G@%F@'GB.OK(HB+KF+KE&GA(HB'IC*ME&HB+MH%HA+NF+KE.NG.PI+HC*E@0IB1QI2RJ3RK,MF.PG/PG*JC.OG*KD0NG/KD1NH/MG1MH*FA5OI1MG1NI2OJ3OJ2NJ2NJ2NK2NJ1LI1LI0LI5NL5NL5NM6ONV[AY\F[aDY`BV\BW]DX^AW\AW[@Y]@W\CY\EY^EY_CW^GZbI[cI[cJ\dK\dYky^q^qZjwZk{XiyXixP`mVfvPcpPdpUfvScqOamTdsSevSfvTgxWizUfvSgvTirK]kL]kJ]lL_lFZdG[eDYbCW`@V^CY`XZ@XX6$F>/PJ%HA*MG#G?@9%D?'D@$@=(A@*AAFX`FY_AV_PdqF]iH\fEYeK^l`ubw[lv[lyVhxTm|Xmx<:0PZ^tpnd|^tXnSgy7NR'@@+DD0HL.EH0IK1IJ/GH0KL5NP:RU;SU6ON?TV:PP7NO,GD.JG.IF'C? <8724.3-4.6372722.2-85!=8)B@1IG4KJ+EB8OPBV\GZbDW^M_is^rlTeqQ_kHV`ES\@PTGU^DS\ATX?TU@VW:SQ9QP3OK%G@"F=B:B9@7@7A8B8!C9#F<*JA,MC)LB&KA,PF&LB!E;&I?'I?0MG3RI4QH1QH/NF/ME,LB(G><4;4:29270:2 >6;1918/;3605/81<6 ?7'D='F>(D>)B@#B;'F? ?75.<482!@9>4=55B7]Q*ZL(RB#SC$0<+80"A9:191;>'VG&UF%]P*]P*[M(cY-g^0_S+YK'YJ'YJ'ZL(WH&ZL([N(YK'UE%P@"QA#QB#O?"TE%XJ&ZL(YK([M(\O)WH&ZK'XI'YL(KI-GJ2TI(RC#UF%[N(^Q*`T,^R*aV,\N(^R)_S)cX,`U,VG%SD$RC#RC#SC$O?"N>!L=!J: I: I:J; L=!N>"N?"N?"L=!K< L!SC$SC#QA#O@"N?"M>!M>!N?"N?"M>!L!O@"Q@"QB#RB#ZL(`T,dY/cX._S+XJ'VG%UF%VG&UF%SD$SD$SE$SD$N?"O@"P@"O@"N?"N?"SC#TF%WI&RC$M>!L=!L=!L=!L=!L=!M>!M>!M>!N>!M>!M>!N>!N?"M=!L=!L=!L=!L=!L=!L=!L=!L=!L>!L=!K< L=!K< K< J; J; K< K< K< K< J< J; J; K=!K< K< J< L=!L=!K< K< L=!L=!J; K< J; J; K< L=!K=!L!L=!L=!L=!M=!L=!L= L< J; K< L< L< K< L< L=!L=!L=!L=!K< K< L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!M>!M>!M=!L=!L=!L=!L=!M>!L=!K=!L=!L=!L=!L=!L=!L=!L=!L=!M!N>"M=!M=!M=!M"N?"N>!N>!F=" 1$2)0(1+4-6<)F?#+3!#0"'=8$;3FZVCVT&>:$<72,1.00.-.,$63420-0.2-52"96$984-#:9 67'!N?"N?"O?"P@"P@"0>1953,)7(7/90=<%RC#QB"G=#C<$J>"N?"M>"M>!N?"N>"N?"P@"O@"QA"PA"N?"M>!N?"O@"QB#VG&ZK'VH&VG&TF%UF%VG&XJ'XJ'ZL'[M(XI'WH&P@"O@"PA"UF%RC#M=!M>!M>!L=!L= M>!O@"PA"RC$P@"QB#N?"N?!O@"QC#TE%O@"N?"O?"O@"PA"VG&XJ'UG%TE$TF$VG&UF%TE%QB#RC#QB#PB"O@"O@"N?!N?"N?"N?"N?"O?"N?"O@"PA"O@"PA"PB#PA"O@"QB#QB#PA"O@"O@"PB"PA"RC#QC#TE%TF%TF%SE$SD$RD$TF%SE$SE$RC#UF%WH&UF%TE$RD#QB#M>!L= L< K< K< J< K< L< K< K< L< L= M>!O@"UF%YK'XI&QB#PA#O@"O?"TE%UF&UF&SD$TE%ZL)XI(YJ([L)XI'UF%RB$O?"P@#SE%RC$SC$TD$SE%TL.NL2YR3YK([M)_R+UV7@UI7UR/OM0QM6TW8TY7VY8WY8UU?]^8WS-NF$B9#B:"A9$C<'GA(HC ?9>9&GB4PQB[^-IF#>:;6(HC0NM+HE%B@$A=<7#@<;780%C<'E@$A: =6"@:'GB$D?%E?&GA!A9(IB#D=*KE!B;$F>)KF$G@!C="D>@9!C<$F?'IB'JB'KC(LE&KC!B;"D=*MD*LD+LD*IB+LD*LD+LE/NI.NH/PI1QJ-PH,QI.RK.SK-PJ/QJ/QJ0RJ1RK0PI0OI2QJ1PK&@;.LE1QI5TL-NF2QI3RJ,KE1QI,JE4PI2NH1NI,JE*GC0KE4LF0MH1LH1OK2NJ1NJ2NK2MJ2NK2NJ4OM3NL6NO5MM8PP9RS;SV?UX?TY=UW*LC"F=?76VT$F>7VS@ZYVkl:PR3IKL_bDW]TfrVj|RgwL^lZl|_u]vdyM_lSds]obvZn|_sYk|\p[q^r\rSlRh|Uj}QdvL`o>T\.EG7OS&C>'D?*GC+IC,ID7OODYZ?SU'J@-ND0OF-OE)LA,PE'KA$H>#F<%G=+LC2PI3RJ1RI2RI2QH0NG*IA;29270;4!>790<3908.=4<34,6.!>8#C=&D?'D@)B@,HC(B@<3<43,3-5.:1;4(D?<24A-_R*\N(QB#RB#.<+7.$B;!>87.4(XK(YJ'`S+]P)_S*ia2h`2`T+YJ']P)[M(\N(WH&YJ'WH&XJ'WH&TE$P@"P@"P@"TE$UF%XI'WH&XI&YJ'QB#WH&PD%TH'XI&WH&UF%XI'^R*g^0kd4bX-\O(_S*aV,cY-`T*aV+[M(ZM'^Q)`T+_R*VH%N?"L=!J; J; J: J;J; J; K; K; K< M=!L!M>"L=!L=!L=!L=!K< K; J; K; K< K; J; J; K< L< M>!M>!PB#QB#TE%TE$VG%[N(\P)^R+^R*ZL'UF%UF%TE$TF%QB#P@"PA"PA"N>!O@"N?"L=!L=!M>!PA"YJ'WI&O@"L=!L=!L=!L=!L=!M>!N?!N>!M>!L=!L=!L>!L=!M>!M>!M=!L=!M>!M>!L=!L=!L=!M>!M>!L=!L=!K< J< K< J; J; L=!J; J; J; J; J; J; K< J; J; L=!M>!M>!L=!M>!M>!L=!M=!L=!L=!L=!L=!L=!K< J; K< K< J< K< L=!M>!M>!M>!M>!L< L< K< L< K< K< L< L< L< L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< L=!L=!M>!M=!M>!M>!L=!L=!L=!L=!L=!L=!L=!M>!M>!L=!L=!K< L=!M>!M>!L>!L=!L=!L=!L>!L=!L=!M>!M=!N="L"O?"N>"SD$6:$1$"934-1&.8%:='OI(@C)3>-3+3,6.2'4+1*-+57-,*=?21/-0.1.3/4/2,!5/532032":9$=<86":92KK=WXD[`G_dJajXm^t_uaw\pUizSetUhx[pVjyZoZn}SerSdrPcoQdoPdoI^gF]cF]aH^dCY_3,:,70523/405262622.2.3.734/2,5/:3=76183954.3-614.4/7373948283:59393945/3/4/50623-1,6271822*6/3,6/6/4-1+/).(0*":8(A@5.0' 6*(9)>D+`T+^R*^P)YM(VL(ZO*\N(XJ'YJ'XJ'1:*7040$8/8:(L?#N?"N?"N?"N>"N?"O@"O?"P@"QA#<@/#:4825/829370!5+'6(55"#6,09(.:+A<&N?"N?"N?"N?"N?"P@"P@"QB#PA"PA"O@"N?"PA#VG%[M(_R+YK'VG%WH&XI&UF%VG%TE$UG%WH&XJ'WH&QB#PA"RC$VG&SD$N>!N?"M>!M>!M>!M>!O@"P@"RD#QB#PA"PA"N@"N?!O@"RD$PA"O@"N?!N@"O@"PB"RC$UF%UF%TF%VG%VG%UF%RC#RC#QB#PA"N>!N?"N>"N?"QA#P@"N?"O?"O@"PB#O@"N?!O@"SD$RD$PA"QB#PA#QB#RC#TE$TF%UF%SD$TE%SE$UF%VG%TE%VG%VG&XJ'VG%UF%TE%TE$TE$RD$SD$TE$TE$PA"N?"M>!L< L< K< L< L< L= L< L= L= M>!O@"VH&ZL'YK'WH&RC$N?"N?"SD$TE%UF&XI'UF&ZL(\O)YK(TE%P@#QA#O?"N="M=!O>"P@#QA#OC'SF'ZT34RJAYHKT;UY?`d?>YM.NJ,KH2OM6SQ5SQ7SS4QR*HD1MJ1OL>\\?`_0PI-ME*IB0NI.LG*JE&EA%EA'EB51:QT/II"?;(GC'JC+MH-JF+FE'?>#@<"?;"=:=7#A:#B:$D;'GB$B=&F@$D>$E>'HB&GC"B>!@:30*:370 ?7!C<>6@8=5A9B:?7;4<4"C;$G>(KB)KB,NE,LE/OH/NH1PJ.OH.PI-PI)MF)LF*NH(JD/PJ3SL/PI0QJ1RJ3RK,MG*LE(IC">84F<9H;4D95SL3SK2RK2PJ/MG2PH3PJ3NI2MH-JD0KF-HD/KF0LH0NJ2NK3NK1MJ4OL2NK3OL3QN4PM4OM5OM8QP;RR:RQBX\=UWH^eDZ]E[_CZ]HY]CY]@QZAQ[K^iI\dCZbJ^hJ\hJ_lNbqN`mGZc=SVJ[eBV_@T]:NU6MU5OV:OX;Q[EXa@W^DX`GYaEZaDYaI^fG]eE[dG\fF[cDZbG\eDZ`BX^F[dJ\fJ\iPdrQdsSfrUivUfr[ly_rbt_sXj{^qcwYk|\nYjzYlXiz\l}]ocvVizVj{Xk{SftZl\pYlWlXlRdvPcuQezNbuI_oL`qN_oK]lK]hDXcDWaGYbDW^BT^I[eDX`DXc9LRH[eDW_GXbL\fJZeQbqOanQamUfsVfsOalNaiL^eI]cObjNah?WX:TS8UQ7TR/MH.JH5KH5KF2NI/OH(JB%G?%F>)KD&G@1NL8QS5KN9OUBV`L_lXk{`sVj|[pe{Tk|pdxcx`slpVcpYiyXl}UixJ_iBX`:RWQev[oK^mSexRex@T]CW^TfuPamGY`L\aAVZEX_AV\AW\EY_G[bAW\;QSRS'D?#@<;52-4/72!>85163#;9$=;"=:*C@,GD.JF4LK6KJ2IH@UWH[aEZaN`kPbmQerUhwXkyexdwTcnUdq[j{Yl{Zoau\nP_iI\dK^fEZ]>UU6QN1MI$F>?6@8 C;C:@8"D;(KA.OE0QG-ND2QH0SG-QG$G= C:(I?*JA*J@.KC,JA,JA+KB,IB+LC%F<<33,80815-1)91;2<4<3907/!A:$F=&EB'FA+HD(D?<57-5,3-.(5,<3;191!@7>E.bW-\N)QB#UF%%=-4+#C;,@94B7#:/ED'ZK(^Q*`T+dZ-jc2bX-[N([M(ZL([M(WH'ZL(]O)XI'VG%TE$QB#P@"P@"PA"ZL(VG&UF%UF%TE$VG&PA#P@"NA$FG.UF%VG%WH&cW.bW-_R*h`1cX-`T*[N(^Q(bW,f]._S*YK&TD$\O(`T+YL'N?"M=!M>!L!SE$TE%SD$P@"N>!M>!M>!L!N>"L=!L=!M>!N?!TE$QB#M>!M>!L=!L=!L=!L=!L>!M>!M>"M>!M>!L=!L!L=!M>!L=!K< L=!L=!K< J; L=!L=!L=!K< K< K< J; J; I;I:J< J; J; J; J; J; J< J; J; L=!M>!M>!N>!M>!M>!M>!L>!L=!M>!L=!L=!L=!M>!L=!L=!K< K< J; K< K< J; L=!M>!M>!L< L< K< K< L= L< L= L= L= L< L=!L=!L=!L=!L=!L=!L=!K< L=!L=!L=!L=!L=!M>!M>!M>!M>!L=!M>!M>!L=!M>!L=!L=!L=!L=!M>!M>!L=!L=!K< L=!M>!L>!L=!L=!L=!L=!L=!L=!M>!L=!M>!M>!M>!K< L"O>"P@"UF%VK(8?((6'1$/%2(2'PL*Y_DAO>&F@"B97/!941++'.-12,AD-BD&;= 98412.502,40#=90,2.31'<=6542-AC.FE9=A/>>+):1!;64.4/2.303//)/+1-3/4040305150;4;44*2,1,40632.511.1-2.2-4/94<6:59282814.72;6504/856/=82-60819270714.40"=:63412.1,3//+2,714.82824-5-5-.'6360821)3-'=3HN3bW/dX.ZR-DI-/?.7.5.705-7,7B,UH'WI&TE$TF%NE(B@*<>+F>&PA"P@"O?"O>"O?"O@"PA"P@#D?(1=06.":1#;7!=="<<62537283 :594"90<>*P@"QB#QA#O@"O@"P@"O@"P@"QA#P@"O@"O@"QB#YJ'\N(^Q*]P)XI'XI'YK'WI&SE$SD$QB#SE$XI&YK(YJ'WH&VG%TE$OA"O@"O@"O@"N?!N>!N>!QB#PA"P@"QB#PA#QB#PA"RC#SD$SD$PA"N?!M>!PA"SD$PA"N?!O@"UF%RD$UF%TE%RD#RC#RC#QB#PA#O@"N?"L=!M>!O@"O@"O@"N?"O@"P@"N@"N?!O@"PA"RC$SD$VH&VG&TE%TE%WH&VG%XJ'WI&WH&UG%VH&WH&XI&XJ'XJ'WH&UF%TE$SD$RC#RC#RD#TE$VG%SE$N?!N>!N>!M= L< M>!O@"PA"N?!L< L< M=!L= L=!RC#YK&_R*_R*\N)TE%PA"QB#QB#VG&VG&TE%VG&WH'WH'SE$P@#N=!M="M=!M=!O?"RC$TD%QA#UG)cY1O^G.RK-QM6UT^`;[Y,LF,ME1OH/PI1RK+LF+LF<8$@=,HF,IG2NM0JJ"A<'EA*HF*GE%C?%C?"@;(D@&C> <50(1*=5&F@%E?!>8$C?*JG-LK1OL4RO/NK,KG$C=#C< >8#B<:3:470">9!B;"D=%G@$G? B:=5=5 B:81 @9%E=&G?-NF-MF1OK.MG/OH-OH.OH.PI.PJ,PK,OJ0QK1RK.OI0RJ3SK0PH.NE-ME-LD/PI+KD,KD4F;2HA0KG4PJ0OI0OH0NG4QJ4PI3NH1MH1OJ-JF&C?+HE-IG0II0LJ1MK2MK3OK5PM5OM6PO5PM4OM8SQ:SQ=TS;RR;SS>UWBZ]D[_CQOAV[EZ`9613.!<8;6";9#=:$>;*C@,EB.HE-JF-JF2LJ0IG8NMUWCX\J]eM^iPboWgvSdr\l~Sds[k}arat\oxWoo_ubtZkzSepQclM`fH\_=UU2NK+KE"F=!E(J@ B8;2;4<38/8/;2@7!A9"B: ?8"A8#C8%E;%D>(D?+EB&E?:03+5. 85&<;7.<4:3+GA'F>RM-XJ'WH&VG%WL)=44*1H5bW-YJ'SC#HB$WK(YJ'`T,g^0`T*\O'[M(^Q*]P)[N(\O)[M(\N([M(WH&SD$QB#O@"RC#XI&XI'UF%UF%VG&XI'SD%N@"M?#PD'XI&ZL(YK'YJ'\O)XJ&PA"WI&cX.cX,bW+bW,aU+dY-XJ&SD$O?"YL&[N'N?"K!L=!L=!L=!L=!L=!L=!L=!L>!M>!M>"N?"O?"N>!M"N?"QB#RC$ZL(YK'YK'YK'XI'VH&QB#QB#YK'VG&SD$RC#RC#QB#O?"L=!L=!L=!L=!L=!L=!O@"VG%P@"L=!M>!N>"L=!L=!M>!M>!N>!M>!L=!L=!K< K< K< K< L=!M>!L=!J< K< J; J< K< J; J; J< J; J; K< K< J; I:J; K< L=!L!O@"N?"N?"L=!M>"M>!M>!M>!M>!M>!M=!M=!M>!M>!L=!L=!L=!L=!L=!L=!L=!K< J; K< J; K< K< L=!K< K< K< K< K< L< L= L= L< L< K< L< L=!L=!K< L=!L=!K!M>!N?"N?"M>!M>!N>"M>!M>!M>!M>!N>"M>!L=!L=!L=!L=!M>!M>!M>!L=!L=!L=!M>!M>!N>"N>!M>!L=!M>!L=!L=!K; K; N=!O?"PA"RB#O@"O?"N>"N?"N>"P@"WI&^Q)YK'<@(!2#.#1&!3(@>#DE)4E5:1*C<,C>*>:"77%9;./.BFASZ'<>$;<20$<;2-2,3, 96733.4154522/410FG/FIPetZp]sawfaye~f}f~ax\qXl}Xk|UgwUgvUfsRdnN`jK_iFZaEX^DW^@VZ@VZAV[AX]AX];VX8UT3QN0NK0PI2SJ3UM2SL.OH0QL0NK2RL5SN8TP4RL8WN2QJ7VM5NJ3IH*HD4OL/MI%C? =8$A;!@:"B<"@;(90&7.":5953.2-1,3/2+4/936072 :3#0#/6#?;"@<$<<$?@&&8*2.634140412-9482704.604/627184=8<7#@D&BC#D@ >:71=8;7955.3.63510+.) 2,&5-1+4/5/4/1)<73@4/?2;4:23-/*4.826.>K4lf8`[3DL3*@2;2;45/5.71";75-4,:/KF)XJ'VH&UF%TE$PA#RC#TE$TE$TE$QA#P@"QA#QA#K@$E@&-A89171;8!=; 94505384"<96294"95#7-@;#C>&LA$P@"P@"QA#P@"P@"P@"QB#PA"P@"N?"O?"TE$XI'XI'XI&VH&WH&WH&XI'VG%SD$TF%TE$UF%ZL(]O(ZL(WH&SD$O@"QC#O@"M>!N?!M>!QB#TE$M>!PA"P@"PA"O@"O@"PA"SD$VH&PA"M>!L=!O@"UG&TE$O?"N?!RD#RC$TE%VG&UF%RC#QB#O@"N?"M>!L=!J< K< M>!N?"N?"O@"O@"O@"O@"QB#O@"O@"QB#TF%YJ'[M(ZL(ZM([N(ZL'^Q)^R*ZL'WH&XI'VG&XI'\N)YK'XI'WH&TE%TE$RC#QB#PA"RD$QB#N?!N>!N?!M>!L= N?!N?!PB#RD$RC$M>!L= M=!L!O@"VG%WI&[N(]P)]P)[M(XJ(YJ(VF&RB$SD$RC$UF&RB#O?"O?"MA&GI7INA@K;3LH>PESM/KL5V\BOdR/PJ-PJ.OJ0PM0PL/OL1QM8UQ6SO0KI:RS4OO8ST)FC+IF)FC/JH*FE+GE-HE.JF%A8;3;4=6 >9%FB*LH9WT6TQ:WT/KH(GC.MI+JG$C>@9!@;=7:4?8=6"A=*JF*KF-MH'GA A9?7;41*60"C<*KD0QJ1PI0OI0OI0PH-MF,LE.OI2TN2TN0PJ0PK0QJ3UM0PI1OH/MF1OH2QJ2PJ1NJ/MG2QJ4PK4PJ4MG2H@1LH7RL0KF2MH3MI2OJ0NI/NI0NJ-MH.NK,LI.LI2NL/HG3NL7RP8QO5ON8QO:SR;SSY[A[_?X\3PM0MI2H?.G>,JE+GC0KI:VVUX>TWEY]EZ^CW[8PQAV[8OP;ST:QQ@SVJ\bJZbJZ`HZ`4ML%C>%><"<:";996'@?)CB,EC/HE4KJ:QR4=4&G@&H?$E>%B>+IC)IA.IG+FC(D?&E>905,0)*"-'6081<48092'9*VG%VG%WH&VG&AB)<2:0KM/WH&RC#RC$RC#TJ)`S+dX.cX-^R*^Q)cY-dY-f\/bW-^R*[M(TE%TE$SD$RC$O@"N>!PA#SD$RC#QA#RB#RB#QB#QB#O?"NB%WI&ZL(]P)ZL(]P)VH&YK&\O(XI&`T+cX,bV*cW+cY-aU*^Q)UF$N>!UF%VH%M>!L=!J; L=!M>!K; K< L!L=!L!M>!M>!M>!M>!N>"N>"M=!M=!M!N?"PA#SD$RC$QB#QB#PA"N?"N?"O@"RC#QA#PA"QB#P@"O?"M>!M>!L=!L=!M>!L>!N?"VF%QB#O@"M>!M=!L=!L=!L=!M>!M=!N?"M>!M=!L=!L= M>!L=!K< K< K< K< J; I;J; J; K< L=!M=!K< L=!L=!M>!M>!L=!L=!L=!N?"N>"N?"P@"O@"N?"N>"L=!M>!M>!L=!L>!L< K< K< M>!M>!L=!L=!L=!L=!L=!M>!L=!L=!K< K< K< K< L=!L=!L=!L=!K< L< L< L< K< K< K< K< K< L=!M>!L=!L=!L=!L=!K< J; L=!L=!L=!L=!L=!L=!L!N?"N?"N?"N?"N?"N?"M=!M>!M>!L=!L=!L=!L=!L=!L=!N>"M>!L=!M>!M>!L=!M>!M>!M>!N?"N?"N>"N?"K< J< I:J: K; M=!M=!QA#RB#PA#N>"M>!M>!P@"TE$[L(WH&YK'DF*BC'@A&9;%QF'OI(7K>=52)2)-A>(==$895GL=OV;NT!9966"97$<;969550!934.7464!::77'A?!:652$;;:QVRgsVn}_uc{b{ficyPesF\ePdrQdqOcoUgtRcmObmG\dI]eOblJ]eEZ_CX^?VZ;RV>VX>WY?VZ>WW:VU3RN4QN2RJ3SM/RK4PN/LI0PJ2QL5OL3MJ8QN0OK5RL7TK8NL8NK2NJ,IE+JD$D?:494<871:5<5<581512,/*1-4/2-61>7!A;AA):9"G=!M@"L?"M@"M@"RE$GA$4.62412.2.0)2,3-5.5/4.605.84:67295838394<750;9;6:35.3.3-503./'1-4/3,4-3-3,4-4.81&>4:2?8914+6-7.=J3bb8:J4=4:1:1<3717070906.6- :.CE+XL(ZL(XI&VH&VG&TE$WH&VG%VG&VG&SD$QB#RB#SD$QC#KC'*=1<8:7526340#4.5296 866553 :7!916.7=*O@"P@"PA"RC#RB#SD$RC#RB#QB#QB#PA"N?"O@"RC#RC#TE$SE$UF%TF%RC#VH&XJ'[N([M(XH&YJ'\N(XI'TE$RC$SD$SD$QB#N?!N@"PA"QB#M>!L=!M>!M>!N?"QA#O?"M>!N?!SD$UG&M>!M>!PA"UF%VG&QB#O@"QB#RD$RC#UF%XJ&XI&VG%SC$O@"N?"L=!K< M>!N?"N?"N?"O@"PA"PA"PA"QB"RD$RC#TE%ZL([M'_S*_T+`U,_T+_S*aU+_R*XI&WH&YJ'WH&TF%UF%UF%WH&VG&VH&WH&VG&QB#PA"RC#O@"N>!O@"QB#PA"PA"O@"O@"N?!N>!O@"PA#M>!L< K; L0+$D?&E@$D>)JE,JH'EA%A=,HF-KI/LJ*IE*HE&C>,HD*IC*KE*ID&FA;5"@<,HG/LK4QPZ[:WW2MM4MN4JL+?ADX`EWcL_oTevt\pYk~^p[nYk|SetTfvUgx[oYnXodxWi{QbqXiy^oYiwObnPdrVhxWj{Res^vPdsQeuOcqe}\o_qZnUfsWiwZl|Zm~\o_sbygf}cxitvu}kawZmZn\q^t[oZpYn[oZn\q\rYnYmXnYmZp^u]rVlUk}YnXk}Xl~[nZoXkzTfqPcpQcoThyUi|QfvThzVkVj{UhzWj|Yk}\nXixTdoQclQahM_eXjuOalQclK`gF[bJ^fTfrUfrE[b?NQ5D@J`gTn~XpCZbAW\UmwgMfnG\a6A9B:$F>$F>+KC7RN6RK3OI/OG.NH-KD-JB,IC*D@/NE-MC)KA!C: B9 B8;3:180;4=4 ?6<36.3,@6!E:%I>#G=$F>'FA(GC,GC+HC'D?&F@$D>$B> @9904,-%+$4+5,6.!=57.3(A<$QB#SD$TD$UF%VG&(<,*C3ZL(RC$SD$YJ'TD$UF%YK'aU,eZ/\O)^P*cX-g]0eZ/aU,\O)[M(UF%RC#SD$RC$QB#O@"P@"P@"QB#SE$RC#RC#RC#RC$TE%WH&XI&ZL(e[/_S+eZ.dY.^Q)`T+[N(_R*dY,cX+dZ,cX,bV*_S)UF%M>!N?"O@"N?"L= J; K< K< L!M>!N?"N>"M>!N?"N?"N?"N?"M=!J; J; J; J; L=!M>!N>"M>!M>!M>!M=!M=!N=!M=!M>!M!N?"N?"N?"N?"N?"N?"O@"N?"QB#QB#P@"O@"O?"P@"O?"M>!M>!M>!L=!L=!L=!L=!M>!M>!M=!J< L=!L=!L=!K< K< L=!K< J; K< K< J; K< K< J; J< J; K< J; J; K< K< M>!M>!O?"O@"N>"N?"O?"M>!N?"N?"M>!N?"N>!N>"N>!N?"L=!L=!L=!L=!M>!M=!L=!K< K< L=!L=!M>!M>"M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< L=!L= K< L< L< L< K< L=!L=!L=!K< K< K< K< K< K< K=!L=!L=!L=!K!M>!N?"N?"N>!N?"N>!M>!L=!L=!L=!L=!L=!M>!M>!M>!M>!M>!M>!N?"N?"M>!M=!M>!M>!M>!L= J; J; L=!L=!J; L< P@#QA#O?"L< M>!M>!N?"O@"QB#RB#WH&5>(0%,!2("9/&:,>!972*0*3.6398$<=(@A*<36131%;;;PVSkx[sazbzczbx]qQetK^jL`mH\fCXaVjzYl|Wiw[pMakCVXH]cE[`F[`CY^CY]?WZ=VW@W[@W[;VV;SP6TO8UR1RL2RL3SN2PL1OL4TN1MJ.HA/MF.LG5QL;TO5PN3QJ0PI1OJ0NI"B=0;-0@3?8;5:383 =6:4504/1,3/515/91%<1<>(>;"=9!J?"L?"M?"M@"L?"L?"M@":<%(8*.<-$9-3,3-2+2+4.613-4/505/5/5094=870;46/617194933+4-4,5-3*2*:63-3,604/601)4.60605/2*3,7/5->L3MZ>!@790:17/8/7.;1"?51F5PW7SV4FK/\Q+PJ*YJ'VG%SD$UG%XI&YJ'XI&UF$TE$UF%TF%SD#RB#SC#5>, ?7"A;#><#>=!;:98!89 67":9 :57688#9;$>?)7?.F@(O@"P@"RB#SD$VG&VG%TE$XJ'YK'RC#QB#O@"O@"O@"P@"QA#RD#SE$UF%YJ'\N(\N(_R+\N(ZK(YK(XJ'TF%QB#TF%VG%UF%RC#N?!N?"PA"PA"QA#M>!L=!O@"PA"N?"PA#O@"N@"VG%N?!N>!O@"O@"N?"RC#QB#QB#PA"RD#VF%UF%SD#SD$QC#PA"N?"N?"M>!M>!M>!M>!PA"P@"PA#RB#P@#RC#UF%WH&VH&YJ']P)\O)[N(\P)]P)]P)_T+\O(WH&VG&XJ'XI'WH&VG&WH&XI'XJ'YJ'XJ'XI&RD#O@"O@"N?!M>!N?!QB#RC#QC#PA"QB#O@"M>!L= L= L= L< K; J; L< M>!M>!L= N?!PA"N?!RC#RD$UG&ZK(\N)ZL(WH'UG&VG&SD$SD$RF'AM>4OH,NJ*KG/NM2PP/NN4QQ7SU5RS5TS5UU1QO.KH,JF7TS8US?YZ:UU/LH6TQ @951#@=%DA<670%FA#D>%E@'FA&E?'H@(G@&D<$?9$@:%D=&C=%E=$C:#@8)HE(HD%D?"B2QM0OI5OM.KH0MI.MH1QJ(HB&F??73,5.5-92-KD.NG3SM4SM5RM9UQ;VS9VR5RM0PI+MF-NG.NF2OI4NI4NJ5PK2OJ4PJ4QL4OK2LH2NJ5PK7PK8QK5MI6NK4MH6PM4NK0NJ0NI0LH,KH.NK.OL,LI,MJ.MI1MJ1OK7TQ8RP9RP8SRXX@\^C^a86HIKamQkzLfpksXulgWjtRgpB[_AY];QT2IK@T[L`jOcr_u_tbwtePU?RXFX_;PT9PR8QQVS7SO6QM3PL4OM/LG.LE-KD-LD-LB+LB,LB"E;@7=4<3>68/:2=5?5<3!A9$H=$J?#E<-PF-ME*HA/IE*EB,DB.ID(HA(IA"C:;28/4,5,1)-%5+801)3*&9*LB&N?"P@"P@"N?"RC$UF%4D0AK1]P)TE%SD$WH&VG%RC$WH&_S+[M(WH&^R*e\/f\/cX-]P)\N(WH&QB#RB#P@"P@"O@"P@"O@"RB#RC#RC#PA"QB#OB&UF&VH&WH&XI&f]/jc2ia2ib2g]0YJ'UF$[M(]P)dY-dY+aU)`T)^R(YK&PA"L=!M>!M>!N?"L< J; J; K!M>!N?"N?!N?"N?"N?"N?"M>!M>!M>!L!N?"N?"M>!N>!M=!M"N>!N?"O?"N>"L!M>!M>!N?"PA"RB#RC$RC$N?"M>!O?"M>!L=!L=!L=!L=!L=!M>!L=!L=!L=!K< L=!K< K< L=!L=!J; J; J; J< K< J< J; J; J; J; J; J< L=!K< J; J; J< L=!N>"PA"PA#P@"O@"PA"RC#QB#P@"N?"N>"M>!M>!L=!L=!L=!K< K< L>!M>!M>!L=!L=!M>!M>!L=!M>!N?"M>!M>!M>"L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< L=!L=!L=!L=!L=!M>!M>!M>!L=!L=!K< J; K< J; K< J; J; K< K< J< J; J; I;J; J; J; J< I: J< L=!L=!L=!M>"M>!M>!M>!N?"L=!M>!M>!K!N?"N?"M>"M>!M>!M>!N?"M=!K< L"K< L=!L=!N?"N?"N?"N>"SD$_R+$7'*1)2+!6*3A4$=:5,0*51"88:NSXj{[nQbp\pSfuNaoK`l=QZ6OS*A?.(4.2,3/42(ACDYb-E@9754#9:6:2;494 =7 <7:5504/60%9-;='G?$MA#M@"L?"L?"M@"L@#NB"NA"L?"M?"M@"G>"H@"PC#)8'4-4-715/724/3.2-2,4.4/6050?:%F@<65/506/6/4,3,4/2)2)3+7/5-4,2)5-4.4/4-5-4-2*.&0+2,;46L7EYA=5>5>5>4=4:1<3906,<3;26E3"@64D5UI(TF$P@"P@"QB#UF%VH&RC#OB$OB$RD#TE$SD#RB#QA#=B.7C413A7;B45>.#;5/=0.<2"<9/<.9@,6?,-?39?.I>$PA"PA"SD$VG&UF%WH&VH&ZL'[M([N(XI&RC$PA"PA"P@"QA#SD$YJ']P)\O(ZL(\N(YJ'WH&YJ'WH&VG%TE$PA"N?"N?"QB#P@"QB#TF%RC#O@"K< K!RC#PA"N?"N?"N>"O?"QB#PA"P@"QB#RC#QA#N?"O?"O?"M>!M>!O@"N?"M>!M>!N>"N>"QB#PA"RC#SD$RC$TE$RD#YK&`T*\O(^R*^R*\O)]Q*_S+]Q)_S*\N(XJ'XJ'ZL(YK(YK'YJ'YJ'XI'YJ'YJ'WI'VG&SD$PA#PA#O@"O@"RD$UF&VG&RC$QB#PA"QB#N?!L= L< L= L< K< K; K< L< L< K< M>!N?"N>!N?"P@"SD$TE%UF%VH&VG&RD$QB#RB#UF%TF%VH'[M)XM,OR9>QC:QI/NL1PO4RR6TT5TT1QN*JF*IE1OM7TS9US,JF ?:&C?+LF-MG0PH1OH.OF(MD&JA&I@-NF*KD&H@!C;!@;(HD(FC>8#B<'GC)F@+B8(A7!A8#C:"A993605/8260!:6$?;">:$?<:65063504.95&DB4QO5QP7SQ7RQ:TT/LI*HE4NN0MJ5RP6RP2QL0NK3OL2LJ+HE/MH1PJ+LE*JC$C=$C75/2*3,"?83PK8TR5SN8UQ9TQ9UQ9TQ9UR5SO2RL-OG0OH3QJ5QK6SN6SM5RM5QM7RN5QM6QM9RM9OI%??(DA(B@&D= @7:26-6.5,.&0(6-7.6,4+$!N?"K@$5,4C.bV-^Q*\O(_S+eZ/]Q*ZL'`S*^Q)`T+h_1cX-]P)TE$QA#RB#QA#UF%P@"RB#QB#RC$TE$PA"RB#RB#O@"N?"QA#UH)VG&YK'ZL(YK&^R)dZ.]P)dY-\O)XJ'UF%TD$QB#TE$\O(]P(^Q(YK&QA"L=!M=!M>!L=!M>!J; J; K; L>!N?"N?"N?"N?"O@"N?"N?"N?"N?"N?"N>"M>!J; J: J; K!M>!N>!M=!M>!M=!M=!N="N>"N>"N?"N>"N>!M!M>!N?"O@"O@"O@"N?"M>!L=!K< L=!L=!L=!L=!L=!M>!L=!M>!L=!K< L=!L=!K< K< L=!K< J; J; J; K< K< L=!K< J; J; J; J; J; L= M>!K< M>!K< K< M>!M>!QB#VG%SD$N?"O@"RD$P@"M>!M>!N?"M=!L=!L=!L=!K< K< L=!M>!M>!M>"M>!L= L= L=!L=!M>"N?"M>"N?"M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!K< K< L=!L=!L=!L= L=!L=!L=!L=!K< L=!K< J; J< J; J; I:I: I:J; J; J; I:I:J; J; K< K< L=!N>"N>!M>!L=!L=!M>!L=!L=!L=!L=!L=!M=!K< K< L=!M>!N?!N?"N?"N?"M>!L=!L=!L=!L=!L=!L=!L=!N>"L=!L=!M>!M>!L!L=!N?"ZL(?F-3)3*7/2)+<4%B?3*2,21%;=.AFK\jLakNblVhwYmXl}N`mAV^8TT*DB622-511-1."8:,CF-FE8755!682GKF[cJ_jOdqM`kDZaBX`ThxUjxI]fBV]Wky[oQbnN_gSgsWlyVkxZoVivSfpI^eCZ`DZ`G\bE\bC[`7=6%A:):."=5 =6!?9"?; ?;<781928?+NB#PB#N@"M@"N@"QD#ID&-?/5>)KB#OB"M@"M@"M@"M@"NA"OA"OD$ 8-4-605.2+0)1+3.3.4.4-2*1)4,71?8604,6.5,4,1*2+2*4,5-7/6.6/5,8282604,4,1*2*2*4-71H]L5<3<2?6"C;@7>6?6:2917/5-6.%?3ZW3YK'WI&QA#O>"O?"RC#QB#ND'OD&PA#RB#SD#QB#QA"P@"QB#SD$QB#PA#RC#QB#QB#RC#RC#TE%OB":?+0>0C?&MB$4=, <773&;5N?"RC#QA#QB#QA#PA"RB#RC#VH&YJ'ZL(]O)[M(WH&TF$QA#RC#YK'[M(^P*[M([M(ZK(XI&WH&YK(XI'WH&SD$P@"N?"N>!N?"O@"M>!M>!M>!K< K< K< O@"P@"M>!M>!L>!M=!M>!P@"QA#P@"PA"O@"O@"RB#PA"RC#PA"O@"N?"O?"P@"N?"M>!N?"M>"M>!M>!M>!N>"O@"P@"TE%WH&XI&VG%PA#WH%`U+aU+`T+`T+\P)aU-cX.`T+]Q)[M([N(ZL(YJ'ZK(YK'XJ'XI'VG&SD$TE$TE$SE$TE$QB#RD#RC#QB#SD$TE%TD$O@"N?!M>!O@"M>!L< L< L= K< K< K< L< K< K< K< L=!M>!N?"PA"PA"QB#N?"L=!N>"N?"N?"M>!O@"RB#TE$SE$VG%YK'ZP,cZ1hd8CWI4UR4TS8XW7VV7VV4PP*EC.JI6SR4RQ1NL(GB#A;4SL7TO%G>'KAA9(PG%JA5VQ+KF(HC$D<#E=!B;"A;%E?%F@*IC*F@#D<$E>>7$@<*DB!87'>=(@?95&@=+EB'A<72">:">::673614.<7"?=%C@5ST4RR7RR'EB.KH4ON8RQ7SR1LK7QP6TP2QN2PM4PL4PM1OJ+KE*JD)JC'HA'IA*JB)HA!?70)0)3,%C<4QM8TQ:VS8VR6SP2NK3PL7TQ4SM1PJ4RL6SL6SL6SM7RN8TP9SP;SP8SP6RO=VR>NHASP>URZQ>XL2NI0OI/RJ6TL:UO5UO8UP7UP9WS7YS6ZU7YT<[Y=XX>XY>VYDV_FWaJ[hVfwVevHYdAORaqj{ewbsdwar^oYiz_rikdy\navhtpoczj^ribz`unjawjfb|gbvf{vlg~qxxuxz}{wrmjsog`vYnf~dzbxd|c|\riey`vZoax^tUj}\p_t]r[oVk~\pZpawavawdzbxdzcxbv^oat]p_s`t\obu`t`vXnQftNhqE_dE^b=XZ=Y[=VYAX`DY`D[aH]gNalL^iF[c2KK7MQCW_Thv\ocx`yK`S`}Xunh~[o~?TY@TYBW^Wk{`xZq]tjpkbvpqqΆĀ}pUj}Pfx\rVmRi{ZoShxRdrL_kBV`G]g:QU0II3LL9PPDX]G[bRhrbtfxdySfrWiv[m|ew`s_p\l|Zkz_q_q^m~brar[m{]n~^p_rfzfyct[jzXgtXgtTdpTdrVft]o]nZl~^o]o\n]n~cwg|cu\nZk{UdqO`jJ]dDZ]=WV8TQ*LD!E; A:#D>&HA-ME1MG=TQFZ\@VW:SS:TUB[`7RS2PM2PL2QK0MH,MD.NE.ND0NE)I@$F<@7:08/?6@7@7*IC)J@-MD.MD/ND3QI.MD.NC'FA$A?(GA*HB!?67.8/8/7.5-2).&0(6/:2<2#@4HD(QB#P@"N?"L=!L=!L=!N?"PC%:/<26E0aU,bV-bW-h`1dY.e[-cX,bW,cX,i`0f\.cY.^Q*_S+ZL'XJ&VG&RC#RC#QB#RB#P@"P@"QA#PA#N?"LB&SC#XI'WH&^Q*h`1f^/f].dZ,cX,eZ/SE$QA#O@"N?!M>!M>!N>"QB#TD$VH%QA#M=!K< K; K< J; I:J; K; K< M>!M>!M>!N?"O?"O@"N?"O@"N?"O?"O@"O?"L!N>"N>"N>"N>"N?"O?"O?"O@"O?"N?"N>"N?"N>"N>!N>"M>!M>!L=!L=!L=!L!M>!N>"O@"N?"N?"O@"M>!K< L=!L=!L=!L=!L=!M>!N>!N?"N?"L=!L=!L=!L=!L=!L=!L=!K< L!K< K< PA#N?"TE$RC#P@"M>!N?"O@"RC#QA#QB#SD$QB#N?"M>!L=!L=!L=!K< L=!L=!K< L=!M>!M>!M>!M=!M>!M=!M=!L= L=!L=!L=!K< J< L=!K< L=!L=!L=!L=!L=!L=!L=!L=!L= L=!K< K< L=!L=!K< J< L!K< L!L=!M>!M>!M>!N?"N@"N?"N>!N?"M>!L=!L=!M>!L>!L=!M>"L=!L=!M>!M>!M!K< J< K< L=!M>"SD$WN,!9-8/7.>7:46.-B>*%00AR\H]hO_nC\bDY`H`g[oSetK^jI^f:UT&B@505.604.407588,DF$;=%<>-EF 88-BF=PX2HL5JN!7:36@T]Qep9QS3KLEX^XjvYlzRfs]s`w`wdy_s\qVkwOckReoJ^cBZ]CY_;RU6QQ5QP6QQ7UT8UT7SR7TR6SQ3QN2NK/MJ1QJ2RK1PI3RK3PI4QH2OJ3RJ,JC'E?#@;(D?">9"<4;4>7=6?9?8<5/@0JG)ED(8>(B;NB#I@#GF)5F/ @6.?08@)EB&PC#OA"N@"NA"OB#PC#PD#PE$(9)92805-.'/*1+1,1,1*3.1*4+3)4,5.4+5-805,5-5,4,6.8/6-;3807181916.6.7/:2:2:3<4&A;8QG,H?>4>4<2;1>4=4#D<$F>:2;47/7/:1=5!;2CJ2dX.FK5WI&PA#O?"PA"P@"O@"P?"O?"N@"4?-F?&PA"P@"PA"PA"PA"P@#QA#QA#O?"PA#HA'ND&5A37@2PD%VG%RF&4B64@/<88>,RB#RC#RC#QB#O@"N>!N>!P@"QA"QB#TE%XJ'XI'ZL(XJ&SD$VG&ZL(\O(ZL'WH&ZL([M(YJ'XI&YJ'XJ'VH&PA"O@"O@"O@"O@"N>"K< K< J; J; K!N>"O@"QB#RB#PA"O@"O@"QA"PA"P@"P@"QB#P@"O@"P@"P@"O@"N?"M>!N>!M>!M>!PA#P@"TE$WH&XJ&XJ'WH&VG%WH&[M(]Q)`T+^Q*[N(\N)\P)_S+_S+\N)^Q*YJ'YK'ZK(ZM(ZL(YJ'VG&QB#PA"O@"PA#QB#RC#SD$SE$QB#O@"QB#O@"L= K< K< L= L= M=!M>!L= K< I;I;K< K< K< K< L=!K< M>!N?"O?"N?"L=!L=!L=!L=!M>!N>"L=!N?"QB#RB#TE$ZL(\O(dZ/f\0`^98XR5TS8WV6VT6US;VW[P5PL6QO6SQ8QR:RT6RP4RN3QM1OJ2QM-MH'HB$C>*IC(IB/OH.MG/NG&F>0*:45/814QL6SN,LG1PL5SO8RO3OL:VT8UR8TP7TO;VQVUASN@VT5A7&H?+KD-LE)H>-JB-KC-JB(G@)JB'H@#D:"B9(G@:17.8/6-6.5.0(1(6-<390<1OD&RB#RC#RC#PA"N?!O@"O?"QB#ND&@5$H= @4TO-^S+bW-dZ.dY-h_0g^/f].h`0kd4dZ.e[/cX.\N(`U,`T+WH&VG&QB#QA#O@"N?"O@"N?"K@%IE,SD$ZL(WH&_R+\O)[M'aV*XJ&e\/f].f\/UG%M>!L=!L=!K; L=!L< J; M>!O@"J; L< J; I:I:I:I;J; J; K; M=!N?"L=!M=!M=!N?"O@"O@"O?"O?"PA"P@"O?"L< I9J:J: J:L"N?"N?"N>"N>"N>"N?"PA"O@"O?"O?"O?"O?"N?"N?"N?"N>"M>!M>!M>!L!PA#RC$RB#O@"N?"N?"M>!M>!L=!M>!M>!L=!L=!L=!M>!M>!M>"M>"M>!M=!L=!M=!L=!L=!J; J; J; J; J; J; K< J; K< K< K!N>"QA#VG%WH&TF%TE%VG&SD#SC#UF%TF%RB#SD$PA#N?"L=!L=!L=!L=!L=!M>!M>!L=!L=!L=!N?"N?!N>!M=!K< K< L=!M>!L=!K!L=!L=!L=!K< L=!K< L< L=!L< K=!M>!N?"M>!M>!M>!M>!N?"O@"O?"N?"N>"M>!L>!L=!M>!M>!M>!M=!M=!M=!M=!M!M>!L=!K< L=!M=!L=!O?"ZL(1A16-7- ?77/4*-#+&!37I]jJ^jQbsUizK^lF\dO`pHZgEZd@W^8SU6RS-HH84834.6142";:5JM24,AE1FI:NR(=A@T[AQV9NU?S\1FLAU^RhuQftQfu]sZn}VkxXlz`xd|cy`ubxXn|UhuViuSfpH\cG\cEZa=TW5PN4PM5QP8RS:UU9TU8RR7TS3RN4RO0OL2RM3SL/OH1PJ1NI1NJ/NG2NI.JE'C=-JE0MH(E?&A;:4"A;!@:"B; @9>6)C7">5!@7$>34B.0C1?4!@6@7=4:290:2;@,B@%A>$2=*(<.&:-90@B'3>+ ?8:24,4-2+3-3.5.94$@>#:4716/5.80807.6-8.7.6-6.:1;2;3 A9:2807/918090<4#B<%D=$D<$B:&F>"C;;3;3<2>4?4?6<3#E=$D<=381=58080<4<4&@8fd9AN%QA#PA"PA#QB#P@#PA"SD$RC$P?"O@"RB#SD$UF%SE$UF%XI&UF%TF$KD)HB)QB#RC#TF%XI'UF%QB#PA#QA#RC#PA"QA#N?"RB#TF%VG&VG&SE$WH&[M([M(YJ'WH&XI&YJ'YJ'YK'WH&VG%TF$RB#O@"O@"N?"N?"N?"K< J< J< K< O@"L=!M>!L=!L=!J; J< N?"N?"QB#RC#RC#RC#P@"P@"QB#RC#PA#QB#RC#P@"O@"P@"P@"PA"P@"N?"M>!M>!P@"TE%RC#QB#VG&WH&UF%YJ'ZL(XI'YJ'[M'ZM(\O(\P*ZL([N)ZL(\N)\P)ZL(XI'ZL(YK([M([N(XJ'TE$RC#PB#PB#OA"PB#UE%VG&TF%QB#O@"N>!L< L< K< L< K< L< M= L= L= L= J< I;I;K< M=!N?"N?"L=!L=!M>!M>!M>!L=!K< L=!L=!L=!L=!M>!M>!O@"O@"QB#WH&[M([N)XJ'QD$OO75TR3TR5UT4RP3RN:TU3PO6US)KE)LD*NE+OF(ME(NE(LD*OF)OE'MD+NG,NF&I@=492,C<%B; @8(E@\omdyzB[]8RR.JH4MNAY^;73&?>/FH 7695615283<7948260%EA*IH*KI$E@*IE.LD-KG1NK-KF2NL7TS8OQ:TT4QN8SP7PN1NJ2RN,MH&F@8472"A:-LF1NG/MF)JB!>8;4#B;4-'F?.MG.NI2RN5RO=WW9US8TQ;VT8TR6QM>VRFXRR\OU]OR]QKYS=TS@V[DZ^?XV;VS:UR8UR9UR;VRI\OZgLbiGijBnk?diPZn[G`WFaY0LE1NG3PK6RL4PM9RO>WS@YT?ZU>ZU6UO7WS:ZW>\ZD]_F^aPbhVhpRckYjv]n{Zl{]n_pcudv>PU=OVQcpZlrXkjQ`aczkg|^\nL]nFbrHl}Tr[s^|Psx~uulwvrkzyylqsttojHPRGSVtÇƉψ͂yyv}Ć͏ԍ|rgczimljme}jhjf~e{cyhf}e{_s]q^t`vbxg~~Ù\slaw`hz^yp_wy_qdZgS_nnUS9QT0[nw^r^q^uUovFa[AXXI`bSirKcjLhrOkuRmxHdj>UYBU^SdsZl~[m]sf|lnt~wăwud{_q[m{Ugs]pWiz]se{ezlqdxkpyzqh~js}}vuof{`vcxh}_rPboJ]hG\f=RXCW^G\bXkwcvh|ati}jdvexj}h{i}g|h{llnndtctgzeybs`qbtdxf}jh~h}bueydx^pYl}`uezg~g|`s`rUetVeqIZaN`iK_fB[\8WS2TL0QI+NF3QK3RK6QL;SQCWWPahUepOaj6QOBY[KahIag=YYE_e?Y["D;)H@-KB,IA)IA'KB$F<=4#@8#C:"@:707.6-5,3*2*7.8.2)<34PN0=@*0<-KK,`T,bW-f\0jb2f\/aV,`T+`T+aU,_R*YK(XI']P*`T,XI'VG&RC$O@"N?"N@#N@$N?"QA"P@"XJ']P*\N)]P*aV,ZM(WJ&_S*bV,aU,YL'SD$L=!L!N?"N?"N?"M>!N?"O@"P@"O?"P@"O?"P@"N>"M=!L< L; I9J: J:J:L; N>"N>"M=!N>!M=!O?"PA"P@"O?"O?"N>"N>"N?"N>"M=!M=!M=!M>!M>!M>!N?"M>!M>!M>!N@"O@"SD$SD$N>"N>"M>!N>"N?"N?"N?"N?"O?"M>!N?"PA"PA"O?"M>!L=!L=!L=!L=!K< K< K!O@"O@"PA"PA"N>!RC$VG%XI'UF%VG&RC#PA"RB#RC#QB#QB#PA#O@"O@"N?"L=!L=!L=!L=!M>!L=!L=!L=!M>!M>!M>"M= L= L= K< M=!L=!L=!L!L=!M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!M>!M>!M>!N?"N?"O@"N?"N>"M>!N?"O?"N?"M>!L=!M"N>!L=!M>!L=!N?"M>!K< J; J; L=!L=!PA#_S+6C0!:.90<43*#:6*"00$7;?Q]OaoLanWk~Nbp>VZEZcF]d,GH$:==QY7NR1KK5PP>85.85520EH1FI/1+AC2GL6LQ582FLBXaBT]BW_6LQ;PVPclZn~]qYm}Rds\o_sWlzThtViwVkyUhvTgtVkxNakMajK_hH]f@VY=TV7PO8PP:ST=UW>VY?VY'E?3@1"A8"B;!@9>6<6=6;3;3@6=4:391:2;3<4:381<5?6;4;694<4:1;6!C=%E;'>.8A,1@-0?.'9, 90826/5/71=6';00>0 ?8<38/7.8/:17/7/;2=5:2:291:3:292?7"E=(E<(F>&E="C;"C; B9 B9=5<3=490<2>5>4?6$C;=5>5<482;3;3;2"A:7J8JS7RU;CPC;J>*GE:@/N@$QB"9@,>5";01=.=>(O?"QA"QB#RB#RC#SD$TE$SD$QA#SD#RC$SD$UG%UG%XI'UF%VG%RD$QA#RB#QA#RB#TE%RB#P@"QB#QB#RC#RC$QB#PA"RC#UF%UG%RD#SD$XJ'[M(]O)]O)YK'YJ'XI&XJ&VH&SD$QA#P@"O@"N?"M>!M=!L= L=!L=!L!N?"N>!M=!L=!L< K< N>"O@"QA#PA"P@"QB#QB#PA"N?"QA#QB#P@"QB#QA#QA"QB#QB#QB#RC#RC#P@"N?"O@"O@"SD$TE$RC$SD$SE$TE$XI&XJ'XI'WH&YK'YK([N(^R*\O)WH&ZL(`U,^R*ZK(WH'YJ'YJ'ZL([N(XI'SD$RD$PB#PA"O@"RC#UF%SD$PA"N@"N?"L= L< L< L< K< L< L< L< L= M>!L= L< K< L= M>!N?!QB#PA"M>!M>!M>!M>!L=!L=!K< K< K< J; J; K< L=!L=!M>!O@"PA"O@"P@"SD$QA#RC#XP.QdT6UT:WX9UV4QQ2SQ+PH*NE)MC$I?&LB*NF)OG/RN*OG*SJ$G@1NL-MH"C:;3)E? ;2&A<.HE?WWG]`.IH%>:!:7%@<VV =940$<:!>:"=;"C?$D?#B<"@;<6"A=<6!C=%F@&F@)HD(GB'FA(GB(HD'GA)HD.KH4OM5OO?WY5QN9UR6PN3QL,MI"D?A: A:#D=#C<,LE)JB)JB&G?)JC%G@#D<;4#@9)HD7TS>WW:UT;VU>XX=WU>WUAYXBYVBXS]`OebFe^8\Z:N\OI]]I][DYR=YVHdm?]U;ROJZH^eFnl?plPGT`JmsOhpQdyd`qTVdco?o~MrOuWwctsrtuvnxohkvwxƂrd}tzpPdZwnƈπz~łȄȍӉЀȃʀxjlqnpt~zsrridzkjhcx`uaxd|mŘxъuz~osoZoue|bu\o}Xn}Xo}Yl{Tlx@^bBVC??"N`_NbhWl{Yr[rRhs]r^pRdu_tmxՉ{z~…ynpcvbudycxg}neycv_sinjv||tdze|h}iswvz|wqttjcv\pcv^pdxif|pnknjki}i|kolh|j~lytih}klfyh|onlqnbuZlz_q`r^q`uWhxUftWhtQcm\l{VfsXiuWgqWjtOciD]_9VS=XV6WP6TM:UQ=VT=UTBYZF[^Ufq\l|ZlzOgqRjs?XZSkuE`cWn{G`eC[^?WW2LH&D?,HB,IB*H@?5?5?6%F>-LF0OG.LD-IE#E<"D:$F=*KB,LB(I@$F=%F>'HA#F<>58/6-805.0+2+6-7.;2+?/VG%`T,kc4mg7g^1bW-]P)YK(VG&YK(AD+2B0QA"P@"LB$KF*`S+aV-`T,`T+\N)ZK'`T+_R*^Q*YK'WI&ZL(\N)ZL'YK'SD$RB#M?"BB+L="N>!WH&SD$N>"PA"SD$UF%TE$UF%SD$M=!M>!M>"N>"M>!L=!L!N?"K< J< J; L"L< K; I9K; L"M=!N>"N>"M>!N>!N?"N?"N?"N?"N?"N?"QA#RC#N?"M>!L=!M>!N?"O@"O@"O@"QA"RC#PA"QB#O@"N?"M>!L=!L=!M>!L=!L=!L=!K=!J; K< K< L=!K< J< K"M>!M>!O@"SD$RC#TD$TF%SD$P@"O?"N?"O@"N?"N@"O@"P@"O?"N>!L>!L=!L=!M>!M>!L=!K!L=!L=!L=!K< L=!N>!M>!L!L=!K< J; J; K< J; J< J; K< L=!L=!L!N?"N>"N>"M>!N>"K< L=!M>!L=!L=!M>!M>!N?"M>!L=!M>!N>!N>!O@"N?"M>"M>!N?"N?"M>!N?"L=!M!UF%YJ'1;)5+6.!?8;3/&-%62.CG:KTJYgTfzG\d=U[J\fH\c0MM22!9:.CH4FN0GK.II3-.*/+32+@C,=A 36*?C&<>:NV6JRDXbRgvF]d1HKF[cH[dRdoVhv_r]sVlzSguTiwUhvOblSfsSfsQeqRfsRhvNcn?V[CZ`CZ_@XZAXZ@VY@UX=UX@VZAW[>UX:RS8QN5RO5SP3PN5QO7RO0KG.LH1PJ2OJ0NF1LE1LF,IB-HB1MG0LG4NJ1NH&G?)GA)HA#?9<7>8<4<4=5?7?7:48292<4;4>8<4>7">6$:.5?,AB)?>$IA$4=*4;%CF)BC&=?&CB&8?'/>,,<--7&FE(?B)-<071:3:2<5806.5,6.<4$A:#A9=4>6=4<3 ?7=4:2@9&IB*JD'I@(G@%E>$F= ?7<4@8>5@7>3;2;3<3?6<2<3>6<4 =6 ;4!:1>7!A9>63NH%@<8H6DH/NI+EI/SH'B@(VF% ?6,=-,<,7.=<%O@"QA#QB#RB#RC#SD$SD$TF%VG%SD$RB#QB#QB#QB#SD#RB#RB#O?"O?"O?"N?"N>"N?"N?"O?"PA#QA#SE$UG%TE%SD#SD$UF%SD$RC$VF%WH&WI&WH&WH&YJ'ZL(XI'UG%QB#N?!K< J; L=!L=!K< K< K< J; K< J; L=!L=!N?"N?"N>"N?"M=!M>!N>!O@"P@"N?"O?"PA#RD$TF%RC$SD$QB#QB#P@"O@"UF%UF%QB#RC$TF$QB#P@"QA#O@"M>!O@"RB#SD$QA#SD#VG%WI&WH&WH&VH&UF%WH&XJ'ZK(ZL(VG&XJ'\O)ZM(ZL(YK'XJ'XJ'YK(ZL(WI&TE%SD$QC#QB#RC#RD$RD$PA"N?!N?!M> M= L= L< L< L= L= M>!M>!M=!M>!M>!L= L= L= L= N>!O@"QB#M>!M>!M>!M>!L=!K< K< J; I:I:I:J; L=!L=!K< L< M>!N>!M>!O@"PA"TE%\O)UcM2QO9UV=Z]5UU-OI)LD(JC$F>@9#F>%G@'HC.PM<6)NI(JE3NN-JF!B:!D;!A9 >8QffC[\^tvXnp;6#:2">:#;6"<9#=8"=860<8;7#D>(JD*MF-QL.OH0LE<5;4@:>8!A;%F@*JF(IC'F@&F?(ID+LG,MH.OL-LF4QM:SQ:SR3PM5PM6RN6UQ,MJ(JEB; A:'H@%D>*IC+LE'JC)KD)JC'HA(JB&F?82'IC@Z\CXZ?UVBYZ@YXAZY@YXD[ZIYT`cNgdDeZ2[L)XI(VG&VF&XL+]X6JZL:YZ?[^:PLPZAkkHnh:ng8nf7nf7mf6lh?R\G*H@1NH1LE3OI2OH3PJ3PL6SOisDmxHrPyW[zsyrttuÄƃɎϑῒSfej_yqƌxSn|bƃ͂́ˈАԡތ҈x΅sw~y||yurolknjje{ZqTnlh~ʂyw~xrti_u_rQdpOepTitOenGae5RQ>TXWT;TQ=TS#F<'MC+OF*MD(LC$H="D:;25,705.2,61;3;3)<-XL(cX.f]0le5lf6h_2aV-]P)YK'VG&WH&TG'ND&QB#O@"PA#YK'g^1eZ/`U,[M(ZK']P*`U,bV-aV,^Q*XJ&ZL(ZL(YJ'RC$QB#F@&8F3JA&L!K< RC#RC$M=!J; L=!L=!L=!L=!L!M>!L=!N?"PA"PA"RC#O@"M=!M>!M>"N>!N?"P@#QA#P@"O@"N?"N?"N?"O@"O@"O?"O?"N="O?"O?"O?"P@"P@"M=!L"O?"P@#P@#O?"O?"O?"O?"O?"N>"N?"O?"N?"O?"O?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"M>"M>!M>!N?"O@"QA#RB#O@"P@"O@"P@"O@"O@"N?"M>!M>!M=!L=!K< J; L=!K< K< L=!K< L=!L=!L=!M=!N>"K< L=!O@"O@"N?"O@"O@"M>!M>!M>!O@"O@"N?"N?"N@"M>!M>!M>!L=!L=!M=!M>!L=!L=!L=!L=!M>!M>!L=!M>!M>!L=!M>!M>!L=!L=!J< J; J; L=!L=!K!N>"N?"N?"N>"L=!L=!L=!L=!L=!N>"N?"M>!M>!M>!N?"M>!N?"N?"N?"M>!M>!N?"N>"M>!M>"L=!L!M=!J; J; K< L=!L=!L=!J; J; J; N?"SD$6A-3* <6(DA+EC3+/("::K\hRaqScvZnXj}OaoO_n9OT#:<+EE$;=5KO3HO(>C$<=!7833!57#7:36"8:&;?-EG&9=L`mHaj.CG?T[/GI#;<8MR-CF-BFK_hObmQerSer[oVl|ThtJ]fIZeQcqCW_WkzShwLbnJbnE]eD[`BY^>WZBX\DY_@W[BX^BV[>TV8>7=5=5=5=5 @8*@3LE&IC$UI%RE$HA#MD%'A8%A8.@1EG,QI'RI&QH%OH'>B)<=$QE$RE$ND,;4;4;37/6-90;3?6 A9(IB(F?'F?%E>&H@)IB+LD)JC*HB8ON(KD)KC$E= A9!C;>6:2=5<4@7 <2>5=4<3>4:2:191<3=5 ?7:3 ?61E26I4+C6#@7'E=$C="C="B=$B9 B;$=4+<.8<(A=&L>"P@"P@#PA"PA#QB#RC#SD$VG%WH&TF%VG&SD$TE$QB#O@"QB#QA#O?"M=!N>"O?"M=!M=!N>"N?"N>"P@"RC$VH&WH&VG&TE$SD#RB#P@"RD#SE$WH&XI'VG%UF%ZK'YK(XI'RC$O?"N>"K< L=!M>!M>!L=!K< I;J; J< L=!L=!M>!M>!O@"N?"N>"K< N?"O@"N?"M>!N?"O@"PA"RC#VG%TD$QA"SD$RD$PA"QB#VG&VG&RD#SD$VG&QB#QA#P@"N?"N?"N?"PA"QB#QB#SD$YJ'XI'UF%WH&TE$PA"QB#VH&XJ'WI'WG&SD$TE%SD$VG&WH&VG&VH&WH&WH&UF%SD$RC#QB#QB#QB#PA#PA"O@"N?"N?"PB#PA#N?!M>!M>!N>!M=!N?!M>!N?"N?"N?!N>!M>!M>!N?!N>!N?!N>!L= L= L= L= L>!M>!L< J; I;I:H9I:J; J; J; J; J; L=!M>!M>!N?"TE%eZ/_d@Hc`3QP7XX0PM*ID&HA)LD&I@?9 A;!D=%IB&JE:4%FB+JG,LK.MK+LG!@8<4!>8E]_Rjo2NO'FB#E>)HB6PO9RS3NL/GD.IG0D=,MI.NK.NJ1NK=RDHN5SI*KH.&A<=86160 @9%F@!C<$E>"C;'HA?7&FA&HB.NI,MF1OJ8RO5PL2PL7QN4SM4UQ.NJ(HC>7;4#B<831+71<7<782!>9>8=6>8*KE?ZY@ZZBYZ@ZX@WVAYXWX>WWSW@VXG\aOblcuewdvbuqbxYnyYlwRdkK_dI^a=VS:TP;VSDZ\CY\Nbh[o|Kei@YWShobzYr;WWC\\F\_AXZ7PO4ML4ML3LI-JD!@8#B:)G?+LC#E;7.<3&F=#E;%G?#F<&H?(KC'KB/QH'LC,QG+OGA7=3<24+2*4-1*3+80?68C.ZM)ib4lf6mh7mh6g_1`T,[M(ZL(XI&RF&VH&LK.WJ'TE$QB#PA#RB#f[0dZ/[N(YJ'_S,`U,aV,cX.cW._S+\N)VJ(YK'LK-FD+L"SD$UF%RC$O@"N>"PA#TE$PA#PA"M>!M>!M>!L=!L!N?"N?"N?"L=!K!N?"O@"P@"K< K< N>"N?"N?"O@"O@"M>!L=!K< L< L=!M>"O?"O?"O@"O?"N>!O?"PA"QA#QA#M=!N>!L!N>"O?"O?"O?"O?"P@#P@"O?"O?"N?"N>"N>"N?"O?"O?"O@"O?"O?"O?"N?"N?"N?"N?"N?"M>!L=!M>!M>!M>!M>!N>"N?"N?"QB#TE$RB#P@"N?"O@"O?"N?"N?"M>!M>!L=!L=!L=!L=!K< K!N>!L=!L=!K< N>!M>!L=!L=!L=!L=!K< L=!M=!M>!N?"N>!N>!N?"N?"L=!L=!L=!L=!K< K< L=!L=!L=!M=!L=!L=!M>!M>!L=!M>!L=!L=!K< L< L=!J< J; J< J; I;I;J; J; I: I:J; J; J< J; J< K< L=!K!M>!N>!M>!L=!L=!K< L=!O@"O@"N?"M>!M>!M>!L=!L=!M>!N>!M>!L=!N?"N@"N?"L=!M>!L=!K< K< K< K< M>!L=!L>!K< J; J; J; J; J< J; J; I;I:J; O@".=,6.,GB2LJ <6.$/)#8:M\lO^oL[lK]lFWc4FL7IP-@E'3CJ1>E':?>RY-CFK^kLcoJ_k9OU>RY$9<*>C$8<4FLDT^ C9%I@#F>#F=%E=;3<4#B<%A8HG)@A'SG$SG$LC#GA&-A4$C<"B<?:$C>*@4OG&RH%RH%RH%JC%5;%PD$PC#LB#"6+ 81:37/8080>6>5<4<4 @9)JD*JF-NG,LE)IA-H?+JB-LF+JB'G?@8>6 A9=491:2>6@7@7?6>5;3;16.90=5)@2,A19E0HL1WT0a\3GQ78K?9<6;3<4*<-:<'E<#O?"P@"P@"O@"O?"PA#QA#QA#RC#RD$UF%VG%WH&UF%TF$O?"O?"O?"N>"M"N>"N>"M=!M!N>"O?"RC#VG&WH&VG%UG%QB#QB#SD#SD$TE$WH&YJ'WH&TE$SD$TE$RB#P@"RB#WH&QB#O@"M>"M>!L=!L= L=!L=!M>!N?"M>!N>"N?"TE$O@"N?"N>"O@"PA"N?"N?"N?"O@"QA"SC$SD$O@"O@"QA#P@"QA#P@"QB#RC#RC#SE$UF%RC#RC#QB#O@"O@"O@"O@"QB#QB#RC#WH&VG&TE$RC#RC$SC$O@"RC#XI&YJ'TF%PA"PA#PA"PA"N@"N?!OA"PA"TE$TE$PA"RC#PA#O@"O@"O@"PA#OA"O@"N?"O@"M>!L= N?!M>!L= L< M>!N?!O@"N?!N>!N>!N?!N?"N?!L= M>!M>!L< L< L< L< M>!M>!L= J< I:I:I:I:I:I:I:I:I;J; J; J; M>!PA#\N)ST62NL6TR+JG*IF(HC&GB&IB&JB B;!D<%H@%JB$F@>8!B=82+IF+KH!@9"?91KJ:SU:RT4PP-LK*KG*LF.NF1RL1PK1LI2LJ2NK1RN3TR0OM.MI0LE]Y3[M(RC$D@+,HF8C56E9 :3>8"F>%G@A9!B:!B:*JE%F?$D>+KG+JF/MI1MI1MJ6PL5QM4RM0QK&HA:5 ?9"<8!=8$B=%B=!?8"C<#F>"E=B:$E?'HB/MJBZZE]_AZ[@YY:UV9RQ6PN&C:JYAol=f[1[L)TD%RB$RB$TE%XJ*\N+RUCK[U;TRRH3RM/PJ0RL,LE4RL/PJ3RM3QJ4RJ9TM9UN4TK0WM2VN5VM9WS4908/3,2+800*6/!@6DB)ZL(nl:svAol:lf6ib3`S+]O)^Q*ZL(XI'JD(QM.%G>,E7VM+TE%SC$RC#\N)aU-^Q*]P)jb4bW-_T+`U,aV,_S+YQ,3F4CF/HB*L@%N?"O@"O@"P@"O@"N?"L>!L!QB#WI&P@"L=!L=!L=!L=!N?"N?"N?"L=!L!N?!M>!M>!K< N?"M>!O@"O@"J< N?"O@"N?"M>!L!M=!M!N>"N>!M=!M=!M>!O?"P@#QA#QA#P@"N>"P@"O?"O?"N?"N>"M=!M=!M=!N>"N>"O?"O?"O?"O?"O?"N>"N?"N?"M>!M>!N?"M>!L=!L=!L=!M>!N?"N?"QB#QB#N?"N?"N?"N?"N>"M=!L=!L=!L=!K< L=!L=!L=!K< L= M>!L=!L=!L=!M>!L=!L=!L=!L=!L=!K< K< K< J< J< K!N?"M>"M>!N>!L=!L=!L=!L=!L=!L=!K< L=!L< L=!L=!L=!L=!M>!M>!M>!L=!K< K< L=!L=!K< J; J; J; J; I;J; L=!J; J; J< J; J; K< K< J< K< L=!L=!L=!L=!K< J; J; J; J; J; J; J; J; J< I;J;K< I:I;I;K< L< L< K< J< K< K< L=!M=!M>!M>!M>!L=!L=!L=!L=!L=!O?"N?"L=!M>!N?"N?"N?"M>!M>"M>!M=!L=!N?"M>!L=!M>!M>!K< J; J; K< K< L=!L=!M>!L=!J; K< L=!K< J; J; J; J; I:K"7:/AH6EN(:?C5DK4EMd}fme}2EL.EHNbmSfsTixWnUj|RgvJ`k:PU=SYH^gH_hMcmH\dH[cF[cGZbCW^BV\?PR?UW>UW>WX;VV:TS:TT9SO9TQ-JE3PJ8SN5PL0ME/LD.LC,KB.KC-HB.JC.HD1JJ2KJ,JD-LE+KD,KE(H@%F=*NE,OG'F?#E>!C;!A9'F@'E=D+1@.JC&MB#4<*#?7">8=6:2:4<5<3<4>6$D=*ID(ID+IB%D<#B;"A:"A8%E=+@6"D;<3 ?89090:2;2?6A7@7@7>7=6;2<5;3;2@G.d]3bV-[N)BI/%A7>6:3:3:3;3 8.*9*>?'L@#P?"P@"PA"QA"PA#N?"O>"O>"O?"P@"O?"QB#QB#RC$UF%XI'WH&UF%P?"N>"O?"N>"N>!O>"P@#P@"O?"O?"N>!N>"N>"N>!PA"TE$WH&WH&WH&SD$TE%VG&SD#TD$ZK(XI&VG&TE$UF%UF%SD$P@"O@"TF%UF%SC$L=!M=!K!M>!M>!M>!M>!N?"WI&SD$SE$PA#UG%QB#N@"N?"N?"O?"P@"PA"PA"PA"P@"O@"P@"QA#P@"PA"TE$SE$RC#QB#QB#QB#QB#O@"O@"O@"P@"RC#RC$VH&XI&VG&TF%RD#RC#VG&SD$TE$YJ'XJ'VG&QB#M>!N>!QB#PA"PA"O@"O@"QB#RD$QB#PA"PA"O@"QB#RC#SD$QB#PB#O@"N?!M= L= M>!N?!L= M>!N?!O@"O@"O@"M>!L< L= N?"N?!L< L< L< L= L< K< J< K< L= J;I:H9I:I:I:I:I:I:I:I:I:I:I:J; L=9TT8UU1NN.MK&HB'GB*MG'IB(JB%H?$G?"C>"A<?9=8(FD*GE!=9%A>?WZD[a2KN*HE+JF4QQ4QR@Z`4SQ(ID/ML7TW=Z\9UU8WW6WV3SQ7TP\b@`T,O@"J;@@.D<'E@.4B9!B< A<#E>!B:$F?'IB&FA'HA%F>(HB)IC*HD1OL1LI4PL1MJ/NI/LI(GB >9=6*GB+JE*HD(FA(ID,HF-JH+KG1PN5SR4RP?XXF\]J]aJ`dAZ\LbhCZ^Z\.LIPfnYlxbsTguVjyM_hPdqWl|^xNlyZy}a|f^u_yLhsa|c{Yrg`xqŊэىՂ΄yij~h~[m^rbwZm_rVh{\n]oar\naudxgzeyrz{}{ďƊyt~vmĂĆΉч΅ʁԆфэ؋ՉЋϏҊӈчτʂŎґՄʅ̂ǁƁyokg{eycwi~tyusjUisOciTkvIafE`aC^]8UQ0OI>ZY:XV;USE\_BYYQfl_s[p|^sXp{XtPnvA^aF_bB\\5OL4OL.JF-HD+EA)F@+HB%F=>5!@7$B:=4;2#B:+JC)H@)I@;2?6 D:5VP]s}5VW(MC C9 D:>4:15.1,71=4%D7E@&SD$_S,qr>pp>ke6g_2bV-cX.\N(\N([M(YK(YJ'ZK'-E6@6+D6VK*UF%UF%ZL([M([M(`T+ia3aV-`T,_S+]Q*JE':A.NC&M>!K< K< RC#P@"TE$QB#M>!QB#PA"M>!M>!M>!N?"O@"SD$O@"L=!L=!L=!L=!L=!L!M>!L< L=!N?"P@"O@"L=!N?"O@"O@"O@"M>!M=!N?"M>!L=!K< K< L!M=!M=!M>!N?"O?"P@#QA#QA#N?"N?"N?"O?"P@"O?"N>"M=!M=!M=!M"N=!M!L!M>"O?"O?"L=!M>!M>!L=!L=!L=!L=!L=!L=!K< J; L=!L=!L=!L=!M>!M>!L=!L=!L=!L=!L=!L=!K< K< K< K< J; J; K< J; L=!L=!L=!M=!M>!J< K< K< L=!M=!L=!L=!L=!L=!L=!L=!L=!M>!L=!L=!L=!L=!M>!M>!L=!L=!L< K< J; J; J; I;I:J< L=!M=!J; K< J; K< K< K< L=!L= L=!L=!J; K< L=!L=!L=!J< J; J; J; J; I;I;I;I;I;I;K< J; K< K< J; K< L= L= M> L=!L=!M>!M>!L=!L=!L=!L=!L=!J; K< K< K< K< L=!N?"N?"O@"N?"M>!K< L=!L=!L=!L< L=!L=!M>!K< J; J< K< L=!L=!L=!M>!M>!K< K< L=!L=!J; K< J; I;K< PA"YK'5+3*.KD$B;0'/(/09HQK\hB0AFDT\I[cGYb=RZH\f,AB$:<(;@)RX3GL1GJ*>A1@G)7:/<<.?FTT@ZZ?YY&HA(HB.JF'F@)IC-LH/LI,KDKH*RD$PC#DF,%@<%A="A8NG&RI&RH%RH%PG%:G4,JB)G>6G81G=,E>3D5+JE'F?&F@&D=(HB%D>)IC$C='E>'C:'G@"?8926/:2!A9.A4>6=5<5<5:2>6?6B8?6 ?7@8?6$<2$;0.@/EH.UJ(ZM)ZM)TJ((?1;3:1:292;>);@*IC'SD$RB#P@"O?"O?"O?"O?"P@"QB#P@"O?"P@"O?"P@#P@"QB#RC$SD$VG&WH&VG&RC#P@"P@"QA#QA#QA#PA"P@#RC#RB#QA#O?"N?"M>!M"P@"RC#WH&VG%SD$UG%UF%RC#UG%ZL(XI&VG%VG%TE$RC#QA#O?"M>!M=!PA#O@"N>"L=!L!M>!N>!PB#SD$QB#M>!PA#TE$RC$N?"N>"N>"O@"P@"O@"PA"O@"O@"P@"P@"QA#RC#RD$QB#O@"QA#RC#QB#O@"N?"N>!PA"QB#QB#RC#VG%WI&VG&TF%UF%VG&RD$RD$SD$VG%VG&QA#PA"N>!O@"O@"PA"QB#PB#PB#PA#PA#PA"PA"RC#RC#SD$UF%SD$SD$QB#QB#RB#M>!M>!N>!N?"N?!N?"N?"O@"O@"N?"L< L< L< M= M>!M>!L< L< L< L< K< L< J;I;I:I:H9H:I;I:I:J; I:I:I:J; J; I:I;J; O@"(GB.KG/LH,KF-NJ.MI%E?<7$C<9SQ3QO.LI/NK0NK4RP6TR6TT6UT7VU:VVXVBZYH^`G`bRfmOa^fc9j`4dX/\N*VF&VF&VG'YJ(ZK([L)[M)\N*^Q+LR=5H9MN2aU,_S,^S+`T,_S+`T,aU-_S+]P*[N*AH1&>28192<7;6 ?8*LD/PH-PH2SK0WM.VL0WM7VN>ZVG^aJ_eQdmNbiMagTfp_ski\l\YjRqwKro=kc6cX/ZL)UF&UF&^T3ΙըؚҞuŔԖԞۣݡݓӞخ䖪j|k`vkۡԞٛ֏˚Ԧܩߨߤٟ֘ԘӅohvljz}rmpnknmnqq`yOjvhthjkrvqmjh~^tat_s^rMfr=XZ>W[A[aF\fPftVmxLfm:NJDY\E\fWk|[sf}Wl{NfsZrMkv[xTo[wTo|@\`Yr~hzpqmgg~pn]tZo\r`wVi~Ug{Zj~Ucu_phyk}k|hzbtiwt}ytxǔ̌zǎÐșэynrƉԈЅсʄǁΈЍ·̄̂ͅЂ~|wƕٜߎՈԉӅ́Ȁ|wxwswvstzrf{cw]p~Ndk>XW8TO8UP5TO8VS;XVGbgD^`D`aNhoXoz[sWp|MhoD`dSmwRltHchC\^;TU?WX2KH,GC(D?(D>)GB&E= ?6>48/7.!@7+JB+JE?6%E<$D;!B9!E;(OD*QH4VO*PF?6A8=4>59160:3!D:+E6E@&PB#[M([N)jb4jd4dZ/aV,_S*ZM(ZL(XI'ZK(ZL(VG&SE$'>1?5?6&D7IK/WH&VH&YK'\O)^R*[N)YK'BB)LH*VK(IE)UF%PA"L=!L=!SD$TE$PA"L=!K< N?"WH&QA#N?!N?"PA#M>!L=!N>!L=!L=!L< L= M>!N?"O?"N?!N@"N?"M>!N>!N?"P@"O@"QB#N?"P@"P@"N?"N?"M>!N?"N?"L=!L!N?"M>!N>!M>!N>"M=!N>!P@"QB#SD$TE$SD$RC#RB#QB#P@#QA#QA#P@#O?"O?"O?"N>"N?"N?"N?"N?"N?"O?"O?"O?"O?"N>"O?"O?"O?"M!O?"M=!L!L=!L=!K< J; J< J< K< K"M>!L=!L=!L=!L=!L=!L=!K< K< I: K< L=!L=!K< K< K< K< J; J; J; J; J; K< L=!L=!L=!K< J< K< J; L=!L=!L=!L=!L=!L< K< K< K< K< K< K< K< K< L= K< K< K< K< J; J< J; J< L=!L=!L=!L>!L=!L=!L=!L=!L=!L=!L=!L=!M>!L=!K< K!M>!M>!M>!L=!L=!L=!L=!M>!L=!N>"M>!L=!L=!K< J< L=!L=!L=!M>!M=!L=!M>!N?"M>!L=!M=!K< L=!L=!J< L=!L=!L=!K< K< K< L=!M>!M>!M>!L=!J; K< L=!K< L=!TE$YO+1)3*+HC7/.$-$238HPQbrP^o=KUJXfDS^3BI2CI->D:JSN^jUfvWixJ`kJ\g5KN(>@0DH=OX.@F>NYN^mM^lN`pK]lMcrUk{Nal?TZ/EG%9=3EJ6GL:KU>OZLao\qvynRex4FLTj|`{ayWn}Uj{NerG]f4JO8868=UY@Y_BX^E[aE[aBX^@X\>VZ=WYB[];VT;WV;WV9TR:TS8SP9RO3NJ4NJ3NI1MF-JB+G@-IB-IA+G?,GA.HA.IC-IC.LF-LE(G@'F?'E?'D?#C>$A=%>;,IF'FA,ID.HD/NI4KASI&TG$TH%,@4;6 ?9&GA ?;#C>$C>*HB>J3KI+IH+RI&RH&GJ30LG.KF+IB.LF-IE/KG+JE-LG*JD+JD-JB-IB,HC:F6?D//G;)JC<592817/6/>5*H?<4 @8=6<45.>6B9@8 B;@8=59E0DE*QJ*_S+YK'UF%WH&VG%JF*;3;3 9/909?*RD$SD$RD$PA#O@"O?"O?"O?"RC#O?"P@#RB$O@#O@#P@"PA#QB#QB#QB#QA#RC$VG%XH&UF%RD$QB#QA#QB#QB#RC#QC#P@#P@#O?"N>!O?"P@"O>"N>!N>!O?"QB#WH&TE$RC#VG&UF%UF%XJ'ZK(WH&VG&TF$PA#O@"N?"O@"N?"K< L=!K< L=!K< L>!L=!L=!L=!M>!N?"M>!N>!N?!N?"N?!M>!M>!PA#VG&UF%N?"N>!N?"O@"P@"P@"O@"P@"QA#P@"P@"QA#QB#QA"QA#O@"O@"PA#RC#O@"O?"O@"TE%UF%TF%SD$TE$UF%TF$SE$TF%VG%RB#P@"P@"QB#PA"O@"N?"N>!M>!N?!PA"O@"PA"PA"OA"O@"PA"PB#RC#QB#SD$RC#SD$TE$SD$QB#QB#M>!M>!N?!N?!O@"N?"QB#PA#OA"O@"N?"M>!L= L< L= L= L= L= N>!M>!M=!L= K< I;I;I;I:H9H9H9I:J; I;I:J; J; I;I:I;K< N?!);08696;9'CB7UV5TS/RP*OJ*OJ*PH(NE-NH)EC <8+IH1KMAY_?X^0JK0NM-HH.GI5NS.GI(DB"B=3=0G8G8G9 49(1F(FB)GB-KH-KH"A;$C?*JD5RO>VT9SP5QNCZ]7VS4SP4TR9TR7TR9VT;WV:UT7"D=&KB+SI/SK0TK3VL2SL6TL=WSAYZF\aH^dLbiOdkUgqWlzD]aLdl\mb^dBpl>5<2906-8/#B:)IA$D;;2>5>4#D;"H>+QF+QH(OEA7B8A7B87/:2<3A7)E6M?"PA"XJ']P*bW-dY/cY.cX.]Q*aV,ZL(YJ'XJ'WI&YJ'UF%RF&<3"C9?7<2?5-E7:D0NH*YJ'AC*LF*DA'JF*VH&_R+^R+^Q*RD$K< N?"QB#N?"M>!K< O@"O@"PA"O@"O@"PA#O@"L< M= L= L< L< L< M>!O?"QA"RC$O@"P@"P@"O@"L=!L"N?"N>"N?"N?"O@"O@"N?"N?"O@"N?"N?"N=!N?"O@"P@"RC#TE$SD$RB#SC#RB#RC#SC$RB#P@#P@"O?"O?"P@"P@"O?"P@"O?"O?"O?"O?"P@#O?"N?"N>!N>"N>!M=!M"N>"N>"N>"M=!M=!M!L=!M>!N>"L=!M>!M>!M>!L=!L=!L=!M>!L=!J; K< K< L=!L=!K< K< L=!K< K< K< K< K< L< L=!L=!L=!L=!L=!L=!K< L=!L=!L=!K< J; J; J; J< J< K< K< J< K< L=!L=!K< K< K< K< K< K< K< J; K!M>!L=!L=!L=!M>!L=!L=!M>!M>!L=!L=!L=!L=!L=!J; J; J< I;I;I;I;J< J; J;I;I;K< K< K< J< K< J;K< K< L< L= L= M>!L=!M>!L=!L=!K< L=!M>!L=!K< L=!J; J; J< L=!L=!K< L=!L=!M>!N?"N?"N?"N>"M>"L=!L=!L=!M>!M>!L=!L=!L=!L>!L=!K< L=!M>!M>!L= J; K< L=!L=!L=!PA#NI-3*1'5-1(,#+&021?F?LVWgy[k~Vew>MV;HQAQ[GVaQbpJYgRdwRdtG`jH^hFYb4IN8KP<7#A<#C>(GC%F@(GC4>5 >6<3 >5 @7A7#?71C1:A+KB$SE$YK'ZK(VG%VG%RB#SD$VG%TK*-?092'<.CB*TE$QB#P@"P@#P@#RC#SD#O?"O?"O?"O?"P?"PA#QB%P@"P@#PA#QA#QA#O?"O>"P@#VG%XI'YJ(SD$RC#RD$RC$SE$TE%VG&SD$RB#RB#O?"P@"P@"O?"N>"O?"QA#SE$XI&RB#TE$WH&WH&VG&YJ'ZK(XI&PA"P@"PB#O@"O@"N?"N?"L=!I: J; L< L=!M>!L= L=!M>!L=!L= L< N?"PA"M>!N?"N?"N?!QA#SC$PA#N>"N?"N?"O@"O@"O@"N?"QB#RD#PA"O@"QB#RC#RD$RD#QA#O@"N?"O?"N@"O@"QA#RD$SD$TF%SD$SD$TE$UF%UF%VG&SD$QB#QB#P@"N?"RC#N?"M>!N>!N?!M>!N?!N?!N?!N?"O@"O@"PA#RC#RC#QB#TE$SE$UF%UF%TE$O@"O@"N?!O@"N?"N?!O@"QB#RD$O@"O@"O@"N?!N>!N>!N?!M>!M>!N>!M>!N>!N>!N?!M>"99%98&I; K;M= K; IY[4RT4UW2SU-MI#D<$B=0KK4MN?X^;UZ;VY8RU8RW3MO/IK*DE*EE4HC7>0?=+G8G8G8G8G8M= 8MI4QS9UX)HF!@<(IE4TU:Y[IR@NB%J: H8H8H8H=%EG7CWY=XY;WX2OM/KJ#C=%D?$?;"A:!>7 <7%E?%F?&E@&E@-KH%D>&HA'GA,LD7RM?XT?ZVC[\;YV8WU8VR9WT8VT5UQ6TR8SS;TUCZ\N_eG\_YY>_Q+XI'TE%TE%WH'XI(UF&VH&WH'WH'UF&XI(ZK(YJ(YJ(YJ(XJ(YJ(YK(ZL)\O)[N)ZN)\P*[N)XI(VH'WH'ZL)_S-4C0;4 =8&B?;7!B<%IA%JB,OI+OG.TJ3TL4SL5SN=4"B9$B9!?7:1?6<3 ?6<3@7A8"G>(LC>57/;290;29181A7$B5E@&XK'dZ/`T,YK'bW-aV,bW-]Q*\O)]Q*[M(ZL(YJ'XH&UF%UF%.A0@8?7 @9>58/@7"C;#C;#B7/F6SO/UN,[M(\P*NJ-SC$QB#O?"J; K< K< J; K< QB#VG&WH&PA#L=!PA#QA#N?!L< L< L< L< L< L< L= O@"O@"N?"L=!N?"O@"O?"N>"N?"P@"PA#O@"P@"P@"O@"O@"O@"N?"N?"M>!M>!N?"N?"N?"N?"O@"P@"P@"O?"O?"O@"O?"P@"QB#SD$RC#QA#P@"QA#TE$SD$QB#P@"P@"O?"P@#O?"P?"O?"O?"N?"O?"O?"O?"O?"O?"M=!N=!M=!M=!M=!M=!N=!N>"M=!M=!M=!M!L=!L=!L=!L=!M>!N?"M>!L=!L=!M>!L=!L=!K< L=!L>!L>!L=!L=!K< K< K< K< J; K< K< J; L< J; K< K< L=!K< L=!L=!L=!L=!L=!L=!L=!K< J; J; J; J; J; J; J; K< K< K< K< J; J< J; J; K< K< K< J< K< J< K< L!M>!L=!L=!L=!L=!L=!M>!L=!L=!L=!K< L=!L=!K< H9H9I;I;I;I;I;J< K< K< J;J< K< K< L= K< L< J; K< L< K< L= L= L= L=!L=!M=!L=!L=!L=!L=!K< L=!M>!L=!K< K< K< J; K< M>!L=!L=!L=!M>!M>!L=!L=!L=!L=!L=!N>"N?"L=!M>!L=!M>!L=!L=!M>!N?"N?"M>!K< K< L=!M>!M=!SD$7B11(3+<5,",&,*.>D;IQJYeN^jVfuSarVdwVgzVixVfuQ`nQ`nUfxUgxL`oNdsXjXizAT[DV\I[cI[fI^gHXeDSbXjVh{CX`D^dAU\,BD/CG8JP7HP6HPXj~h}xvbyiTiyXmZp\sSj{WoVmUmRk{PhwK_k>QXCZ`KerF_jXZ=Z]5>4 C:@6B90D5TF&RC#O@"QA#SC$UF%TE$PA"QB#RD#UF%VH&WJ(DB)RC$RC#QB#QA#P@"O?"QA#TE%RC$O?"O?"O?"O?"P@"PA#QB#O?"O?"P@#P@#P@#O?"O?"RB#TE%WH&YJ(RC#TE$QB#O?"SD$TE$SD$QB#SD$RB$N>!N>"O?"O?"O?"N>"O?"SD$SD$PA"UF%WH&VG&TF$XI'UG%RC#O@"N?"M=!L=!L=!L=!L=!J< I;J; L=!L=!L=!L=!N?"M>!L=!K< L=!M>!N>!N?"P@"N?"N?"O@"P@"O@"O@"N?"N?"P@"O@"O@"O@"QB#RC#QB#QB#SD$SE$SD$QB#QA#QB#N?"N?"N?"P@"RD#QA"RD$SD$SD#TE$SE$VG%UF%VG&QB#O@"PA"QA#O@"QA"N>!M>"N?"PA"O@"N?!N?!N?!N?!O@"N?"PA#PB#PB"RC#UF%TF%TE$QB#N?"M>!N?!N?"M>!L= L= M>!O@"PA#O@"N?!N?!N>!N?!N?!N@"O@"N?!N@"N?"N?!J>"F@'1A6;9"@>!<8";6$=8#?9,IF)@93A58@1:>,9B48I=9?/>@/6:)E>%CA*0H9 G8H8H8G8G8G8G8H9AH7,OL0OO1QQ5RU,KJ+KH2RT?^hHbiQC%H9H8H8H8H8H@-GF5?OI9PJ5SQ7SR.KI,HF"?9!=6&D>%D>!A:!?:!@;(FA-JH+JF&E?"?;+IA4RI9VO:VR5XU5XV7ZW6YT/QK/PJ5TP8VT=XY?XY=TSPWFYQ2XJ(TE%TD%TD$TE%TE%RC$SD$SD$TE$UF%YJ(YK(YJ(WH'XI(YJ(ZK)[L)ZL)\N)]Q*\O)[M)]Q+\O*XI(ZM)YJ(ZL)^P+JO4*D9(E@(EAW^Qgx]q]rOgyDZhD]hAYcVWLcjZq~QkuUo{QlvUp|_yTlvQkuNgoPiqLelF`dTltTltNfk2QM1NJ%B@$B?)EB-HD*HC#B; @7=5'B= >590*IA)G?;290"B9=48/91907.!@7*H>"B89191=4:2=3@6-A0IA$YK'`T,cX.]P)YK(ZL(\O)]Q*\O)[M(\O)ZL(YJ'WH&HC(QB#WG%)A2#D=8/"A9907.<34, ?6,MB0THMR3WR/UL*`T,RD$M>!O@"M>!K< L=!L!TF%VG&VG&TE$QB#RC#SD$PA"L= L= N?!N?!M>!M>!M>!M>!M> L= N?!N>"N?!O@"P@"O@"P@"O@"O@"P@"P@"P@"O?"N?"QA#O@"M>!M>!M>!N?!O@"O@"N?"PA"P@#O?"O?"P@"P@"O?"O?"QA#SD$QA#P@"O@"QB#RB#P@"PA"QA#O?"P@#O?"O?"O?"O?"O?"O?"P@"O?"O?"O?"N>"N=!L"M>!L>!K< J< K< L=!L=!L=!L=!N?"L=!L=!M>!M>!M>!M>!L=!L=!L=!M>!L=!M=!M>!M>!M>!L=!L=!L=!L=!L=!L=!K< J< J; K< J; K!L=!K< L< L< K< L= L= L!L= L< L< K< L= L= K< L=!M=!L=!L=!L=!L=!M>!N?"N>"M=!J; J; L< K< K< M>!M>!K< J; K< L=!L=!L=!M>!K< K< L=!L=!M>!M>!M>!M>!N>!M>!L=!L=!N?"N?"M>!L=!L=!L=!M>!QB#WJ'<42*5.93+"+%/08GO0?FAOYO`mTbrYi|SauWg{WhzRbqN\jXi}VfxRcrFWaUg|ax_rZmSeuNboQdtVfyUdwLZj[n@Z\D[b@TX=QT*BC4IL.BF>QW?PXL\hIYg_ubzuqj_zZtZn[pYoXmVnLguJbmG_gD\cAZ`?Y_(E=)G?*IB)HA-KD.JC/KD.KD&D='G?*G@)F?(G?.KE+JD*JD*ID1NLRJ'YN&YN&ZO&EI/+ID*HD&E@+JE/MI1MI2ON-KG.KG2NJ:J:;J>4NJ5PN4NL4OM5QO1OL4NH3MG-JF&KD)LF+LG*IE*JD&G?'G?'E>(E;'H@&H?#B:"A9 ?7$D<#D:=4>5=4>5 C;>6'B7UI(SD$P@"O?"O?"O?"P@"RC#SD$RD#SD#SD$SD#TF$RC#O?"O?"O?"P@"PA#O?"QB#QB#P@#O?"O?"O?"O?"O?"P@#O?"O>"O?"P@"O?"O?"O?"QB#QA#O?"RC$TE%SD$TE$RC$P@"QB#RC#PA#RC#TE$RC#N>"M>"N>"PA#RC#P@"RB#UG%P@#RC#TE$TE$VG%UG%TE$QB#N>"L!N?"O@"N?!M>!L=!M>!N?"N?"P@"P@"O@"N?!N?"N?"N?"N?"O@"O@"P@"N@"O@"O@"PA"QB#RC#QA#QB#RC#PA"P@"P@"P@"M>!N?"O@"QB#P@"P@"QB#PA"QB#SD$RC#QB#UF%SD$O?"N?"O@"O@"N?"PA"O@"N>"M>!N?!O@"N?"O@"O@"N?"N@"O@"O@"O@"PA"QC#RC$QB#QB#O@"O@"N?"N@"M>!M>!M=!M>!O?"O@"O@"N?!N?!N?!N?!N?!N@"O@"N?"O@"N?"O@"E?&'A>#BA#B@$B@(DC"?=:9$@>*DD)DA)BA+DD/GJ'CA*FB)GE)FE"><"?<?:"C<"C;'H@(HA&G@%F@%F@$E>%E?&F@,IE-KI0LL4MQGXXN@$K< L=!RC$VI&K< H;$DB3@@3A;&H9H9H8H8H8G8G8C8!G8H8I;"0IF'FC/PO8VW8TT;Y_-ON3TU?_gPSDI9H8H8H8H8F9!F9"A<*@?,&C>&GA*IE0ML&F@)HC&EA$D>(JD'JB$G@(JD+LF*MG*LF#E>/NL,JH.OK.NLPX>`T-XI(SD$RC$QB#P@#P@#PA#SD$TE%UF%WH'XJ(ZK)[L)ZL)YK(YJ(ZL)[M)\N)\O)\P*_S,\P*ZL)ZM)\P)\N)YL)ZL([N)[M)^Q+\U0MT86H6 A:)E?5PO:UUH`ce|Hbe'DA'E@%E?%C=>7$B=$B<$C=)KDX\V\7RR.OJ.NI2RM3RO1QM1QN3RO0NLB\aB[b;VY8TVC[eWn~K`jPfvSizK_lN`nSetYj{ctk}rr}{v}tu~twrbvk}\m}gwzxyso~uw|vuo~n{ru}|yprtszu|ŋ̓ڐ،ԍҎҏюҏҎҍԓڗޛݒڎ֍և̄Ȃvnh~lg{eyRgqPemUisZn{oxo`xhf~Zq{YoyOflB]]4QM+IF&DA%E@1JI,GD$D="C5<3;2>3AJ0JK/7F2=5 D:=4@6->.HB&RB#XI'[M(\O)WH&WH'XI&\O)]P)\O(_S+\P)]Q*[N(VG&RC#6@-!A6*A50MJ#B;9080$C;*LE>5<03K:.I9?P:SR0`T,UG%QB#N?"O@"PA#PA"N?"N>!K< K< RC$UF%VG&UF%TE$YK'[M(VH&RD$PA"QB#RB#O@"N?!M>!M>!L< M>!M>!L= L< L!O?"O?"N?"N?"N?"N?"O@"N?"PA"PA"P@"O@"K"N>"O?"O?"N?"O?"P@"O?"O?"P@#O?"O?"O?"O?"N>"M!N?!M>!M>!K< K!N?"N?"M>!L=!M>!M>!O@"N?"M>!N?"N?"N?"M>!M>!L=!L=!L=!L=!L=!L=!L=!L=!M>!L=!K< J; K< L=!L=!K< L=!L=!K!K!N@"N?!M>!L< L< L= L= L=!L=!L=!L=!L=!M>!N?"N>"N?"M>!K< K< L=!L=!L=!L=!L=!L=!J< L=!M>!L=!M>!M>!J; J; L=!L=!L< M>!N>"N?"N?"L=!M>!L=!L=!L=!L=!L=!L=!L=!N?"UF%PE'1',$.&.(2./-,-.=C3BI9IQEV`PaqQaqYk~]nSdtAQZXi}YiXh|VgyGWbN^kZk\o^p^qD_hHajVk{FdiObpOepM`jCW^@TZBV[2FI9MQ5ELYl\pKZg;LTBT^cwhh`v^x^xOesF[eKalTjyTiwMcoK`hG^fAZ`*JD-G>'G>#B: @7#D<$F=#G>#F=$E>%F> @7?5?5;2<4 @: ?;0D7TF&RB$O@"P@"PA"QA#QA#P@#QA#RB#TE$QB#P@#P@"O?"O?"O?"O?"O?"P@"P@"P@"O?"QB#QB#O?"P@"P@#O?"P@#QA#PB#QB#QB#QA#PA#P@"O@"P@"O?"P@"QB#QB#RC#TF%SD$O?"O?"P@"SD$UF%QB#N?"O?"N>"O?"RC#QB#TF$TE$QB#TF%SE$UF%TE$SC#P@#O?"M=!M=!I:I:J; J;I:I:I:J; L=!L=!L=!M>!M>!M>!N?"M>!M>!N>"PA"O@"O@"N?"N?"N?"N?"N>!M>"N?"O@"P@"O@"N?"N?"N?"QB#QA#QB#QB#RC#QB#QB#O@"N>"N?"M>!N?"P@"QA"O@"O@"P@"P@"O@"QB#RC#P@"QA#PA"N>"N?"N?"N?"N?"O?"N?"L=!M>!M>!M>!N?"QB#RC$QB#PA"O@"N?!PA"SD$QB#OA"QB#QB#O@"O@"O@"M>!L= M>!O@"N?!O@"N?"N?!N?"N?!L=!L=!L= N?"N>!M>!N?!N?!N?!P@"3A6!@>#B?*HF-HF$@>&@@+BD,BF8LR6NR6LR9PWE[h?W`:RY8RV4OR2QR-NL5Y\2RR.JK'BA/KN6RW1KO0LN/IL(CB)DC$?4H8F8 A8#D9"?PL0PO-JE0KI8W\/NM/OL/OMLadK="H8H8H8H8H8H8F8G8 D9!DA0 >:"B=,MG0NJ%F@$D@?;%FB#C>$D@%DA*JF.MJ2RN3RO8QIXU3ZL*TD$P@#O?"O?"N?"N>"O@"RC$SC$TD$VH'XI([M)\O*\M)\N)\O)]Q*]Q*]P*]Q*]P)\O)ZL)WI'XI(ZM)ZL)VG&XI'\P*^R+`T,^R+aV-`U.QV8$G<$B:$B<%E? ?8,LGH`b0KJ&F>6TR:XX4RP6WSG\Sf\4[M)XI(XI(YJ)ZL*[L*[L*ZK)YK)WH(\O1bY?{|eا߭ݥ׻᥾ِ_v^u^vpٙٝܠݛܑؐ؋ՊԏщҌ։І΁ȁ}pyyoni`zVpOmEclNhsTm|Sm}NhtH_iH_i@Z`Z]7VV:XY592:291 ?8=4<4&F?#D=#D;)JB(E;0G5?E-RC#RC$MA#JD(>B,A?'MA$SD$VH&YK'WH&YJ'WI&XI'\O)YK(\O)\P)]Q*]R*\P)\O)ZL(QE&5@,%@4$@7;2'<0,G;:27/;3,MF4L9ZR-\O)bU-`T,XI&RD$SE$VH&O@"UG%^R+WH&ZK'ZL(PA#K< VH&[N([M(XI'XI'\N)XJ'XI&VG%TE%WH&RC#N?!N?!M>!M>!N?"M>!K< L< L< L=!J; M>!N?"N?"N?"M>!L=!M>!O@"O@"QA#O@"O@"O@"N?"N?"N?"N>"O?"O?"N?"O?"P@#P@#RB#QB#P@"O?"N>"N>"O?"O?"O@"O?"O?"P@#O?"M=!O?"N>"M>!N?"O?"P@"P@"QA#O?"O@"O?"O?"O?"N>"M=!N=!M=!M"N>!N?"M>!N>"M>!L=!L=!M>!M>!N?"N?"O@"O?"O@"QB#M>!L=!L=!L=!N>"M>!M>!L=!J< L=!L=!M>!L=!L=!L=!M>!M>!L=!K< K< K< J< J; K< L=!J< L=!L=!L=!L=!L=!K< J; J; J; J; J< K< K< J; J; J; J; J; J; K!M>!L=!J< K< K< K< K< K< J< L< J< J; I;J;J< J;J< K< I:I;J; J< K< I;J; I;I;I;I;J;L< L= N?!K< L= O@"O@"M>!L= L=!L= L= L= L=!L=!L=!M>!M>!M>!L=!N@"N?"N?"N?"M>!M>!M>!L=!L=!L=!L=!L=!K< K< K< L=!K< K< L=!K< J; L"P@"RC#TD$2(-'0+530IM!89.0/@D@QX=MV.=C:JRFTaN]mZi~[l\nfxWewYi|Wh}QasSdvP`pWh|[lZj|XlMdpJbkE^dThwL_kNanK^gCW^6KNFX`>NVXV*G?)G@,IA*H@,IC*IB+IB-KD.LF,ID,JC+JC,JD-KH&G@*HC(FBHG,XL&WK%XM&=G1&D>'E@$C=(G@*GB)FB(FB.LK9RS?SG6OG8NICG1RG&RG&RG&PF&NF&>C,&?5!D; B8"D;!@7#G>!D;"E; B8#E5?7$E<@7=3!B9:2>7?:#@=GH.XI'TE$P@#QA#QB#RB#RC#QA#PA"QB#UF%SD$RB#P@"O?"O?"O?"O?"O?"O?"P@#P@#P@#RC#SD$PA#PA#PA#P@#RC#SE$SD$RB#O?"N>"L=!L=!M=!N>!P@"QB#SD$TF%SD$UF%TF%QA#O?"O?"QB#RB#P@#O?"PA#O?"RB#QA#SD$RC#QB#RB#SD#SD$SD$RC#SD$P?"M=!O>"N>"J: I:J; J; J; J; I:I;K< L=!L=!N>!M>!M>!M>!L=!L=!M>!N>!PA"QB#O@"O?"N?"N?"N?"N?"N>"N?"O@"O@"N?"N?"N?"P@"QB#QB#P@"O?"PA"O@"N?"M>!N?"N?"N?"N?"O?"N?"O@"P@"PA"P@"O@"O@"O@"O@"N?"M>!N?"N?"N?"N>"M>!N?"N?"N>"M>!L= M>!N?!P@"QB#RC#PB#O@"PB#QB#O@"QB#QC#TE$UF%PA"N?!M=!N?!N?!N?!N?!N?"N?!N>!N>!O@"M>!L= L= M>!M= K< K< L< L= M>!LC''A>%@@)BC)CC)@B)AC,BE9MV=V\Qgz\sSl}[tPlyGbk0JN1LNG]hKcqVqTpIdq-IK5QV)DE-GJ+GJ/JM#<<(>A&??'BA;78NRH=%I:J; I:H9H9H9H9H9H9H9H9H8H8H879,1EJ >;E;%H8H8H8E;$>D76RQ2OR7UZ0NM0NL8TW=ZaDXVH>%H9H8H8H8H8H8H8H8H8H8B=(7F;4OI5OM1ML0LI4QN-JF0NJ2OL2LJ)DB*GD0MJ$@<%B=-LK3US9YZ.OK.NI2VR3VQ4VR.QK-MI7K=cX0]O*UF&PA#O?"O?"O?"O?"P@#RB$UF&XI(YJ(ZL(_S+_S,]Q*]P*^P*^Q*]Q*]Q*]P*]P)[M)ZL)WH'UF&WH'ZK)ZL)YJ([M)ZM)[M)XI']Q*_S,dY09P=,JB)F>'D<$B9'E=#B:'G@.KG&E>'F@-GE)C@2LL0MK3QO?^_/PKTdXdZ1ZK)YJ)YJ(ZJ)ZK*[L*[M*\M*[L*XI(UF&hg`Ԙ؞צ۹ԗܻ{cz_ugtԔۖܚݔڎ֌֌Ւ֎ҎюԌч̃ʄʀvnmoorshZsTpQnMiwD]dTjx\rQdqNcoLanQfvE\gI^jQerDX_Pfo[luManK`mK_lSdsSUQLA,H; I;!BI>5NOD\^Rfo>S[Rfpv_r~^uXl~J]hFYcRfrQeoB[b>V^Sj{lhf~ot~}ÕʘΌˍÈ|ǃƀ{z~ń†ĎЏّؒՑՎՎٌӋш͆|Ȑגى҈ьևυˁ{zukg{kbvbv^sOdj1MJ/LI>WYMckVkxRiuMdlShpWlxRgqFaiB\b@Y]WW8RP4NL/JG,HC&E?%E>"C;$C>#C= A:<4<4;4>77070:2<4 B:@8"B:%C99H7SF&QB#QB#PA"N?!N?"PA"TE%TE%VG&ZL(ZM(ZK'\N(ZL(\P)]Q*\O)\O([N(\P)[N(ZL(WH&QD$EC*?6LC(JB'CD,SD$UH'EG/*@3:1,G8^S,jb3ia3cX.ZL(VG&UF%ZK'[M)ZL(XJ'\O*ZL(ZL(\N(N@"RC$jb4bW-_R*]P*\O)VH&QB#RC#RB#VG&SD$PA"O@"N?!O@"PA#O@"L= L< L< L< L< L< N?!O@"N?"N?"N?"N@"N?"N?"N?"O@"P@"N@"N>"O@"P@"O@"M=!L"N>"N>"O>"O?"P@#O@"N?"M"N>!N>"O?"O?"O?"N>"P@#N>"N?"N="L!M=!M!L=!M>"M>!L=!L=!L=!M>"M=!N?"N>!P@"O@"O@"QB#N>"N?"M>!N?"M>!L=!M>!L=!K< L=!M>!M>!M>!M=!M>!M>!M>!M=!M>!J; J; I:J< J< K< K< L=!L=!L=!L=!L=!J; J; J; J; K< L=!L=!K< J; J; J; J; K< L=!K< J; J; J; J; K< L=!L=!L=!L=!J; L!PA"N?"L= M= N?"O@"O@"M>!M= N>!M=!M>!M>!M>!M>!M>!N?"N?"N?"M>"O?"M>!L=!L=!L=!L=!L=!L=!L=!L=!K< L=!K< K< L=!K< L< K< K< K< K< K< K< K< L< K< L=!L=!L=!L=!L=!N?"O?"P@"SD$;A,0+0+,(222EL3CK@S[DX`HWe=JUHYa@OZVexYg{[kZlN^lWjWi|Yk]o[mM_kN`mM]kK[gSdvUerPboQcpPdtWlYl~PcoH_f5IMOZ^M_lRetsvmkryxppdWn]u\wPfvK^hMepUn}MgoGbiOfnQfoOdmLakYmzMahQckNaiM`gI]cOaiM_fL^eG[`@VX;SR3MH5OK3NI0LF/KD+GB/IE0KF-IB0JD,GA,HB+HC*HA,JC.JC,JB'G@+KE*JB*JB,KC(F@$F>&F@'F@(HA.LH0MM@LBTH%WL&KJ**HB(F@)HB*H@(F?(FA,JE1LI0KH8NB8K@BH2QG&RG&RG&OF&CE*5C1%C: A8 A8<3<3=4!A8#F="D;#E<#E<"D;!B;A8=6<4:2 >7"C;>5=3$C?:2>6 ?9=7>7PG)NH*RD$QA#SD$VH&WH&XJ'XJ'WH&VG%TE$VG%RB#P@#P@"O?"P@"O?"O?"PA"RD$RC$UF%VG%RC#P@"N>"O?"O?"PA#QB#PA#O?"N>"L=!L!PA#QB#RC$SD$SD$RC#O?"O?"N?"N>"M>!O@"QB#QA#O?"QA#RC$QA#O?"P@"PA#QB#RB#QB#QB#QB#O?"L"L< J:J; I:J; J; J; J; J; J< K< M>!L=!N?"L=!L!M>!L=!PA"P@"N?"N?"O?"N?"N?"M>!M>!N>!O@"N?"N?"N?"M>!M>!N?"O@"M>!O?"M>!M>!M>!L=!L=!L=!O@"O@"N?"O@"QB#RC#O@"L=!L=!M>!PA"P@"N?"N?"M>!M>"N?"N?"P@"O?"N?"N>!L= L= M>!L= M>!N@"O@"QB#QB#QC#OA"O@"O@"QB#SD$O@"N?!M>!N?"N?"M>!L=!M>!N>!M=!L= L= L= N?"M>!L=!I;I:I:J;K< L= F>'%BA+DD/GI1GJ.CF1GK-AG:LUI^m]ub}WsJgrKhrMet:NW"8:(@B;S\TkcUvSnQoHevE^j4OU3LQ*CE'>>&>>&@=#=:3JOH;"I;K< I:H9I:I:H:I:I9H9H9H8H8H8@<*"<:+?;G:!H8H8H8H8H8D?+7LF?[d5QT-KH:9H4`S-WI(UE%RC$QB$SD%VG&XJ(WH'XI([N)]Q+^Q+YR.EJ1BH1CG.JL1KK0BM8^P*^Q*^R+\O*[L)ZL)ZL)XJ(ZK)[L)ZM)ZM)ZL)\O*[M)^Q*_R+aT-UW6#C:#@9#?8">7:2'H?-PJ/QM(GB$A;(HC%F@%D@2ML;VX5WT+LE0QMYcR^R-ZK)XJ(ZJ)ZK)[L*[L*]O+]O+YJ(VF%y߸숐^]>Ƶ㋥kodz^uc{|}“ۉՋאښܜڗٓ׎ՏҍΊ̄{spntXsgfWsLlGguHblPhvZoVjyTgvG^g7SUF`hB[d=[`;W[DZdOcuPgx=UZNftMcsF_iG^ddxSeoPbjZmxevXixїpSixe{l~wkrzymkh~_wtg4QMFVXqʆ͢כȘȕćɏ€—юćđɗӄϘ̍džŅ}ʈƙ۞ᙺߜޙ܋ֈ΂Â{wć΁|{vrj~j~cv`tUisUguSitUhs]p}D[^2NJ3OL6QP8RR@Y\H`gC[_BY^I^e=VZ7UU9UW4RP9SS8TQ9TR1NL'F@&D@&C?!@:@8 A9 A8!B:?6 ?7<4=5<44,9391!B:<4>6,E8NE'PA#N?!N?!M>!L= M>!PA"RC#SD$TE%TE$TE%VG&YK([N(\O(\N(ZM([N([M([M(^R*[N(YK(VG%MC&TE%5A.!?44@0L@#P@"QB#PA#Q@"HA&@@(_S,g]1jb3_S+VH&SD#^Q*_R+\O)XI&VH&N?"PA#SD$TE$RC$\O*e[0aV-[M(XJ'WH&TE$O@"N@"O?"PA#PB#QA#PA#M> M>!N?!N?!K< L< L< L= N?"N?!N?"N?"N?"N?"M>!N?"L=!M>!P@"N>!M=!M>!M>!O?"N@"P@"O?"O>"M=!N>"O?"O?"M!N?"P@"N>"N=!M=!L!M>!M>!N?"N>"N?"M>!M>!L=!M>!N?"N?"N?"P@"PA"N?!M>!M>!N?"N?"N>"L= M= M>!L=!K< J; L=!L=!L=!M>!M>!L=!L=!M>!J; J; J; J; K< L=!L=!K!PB#RC#N?"M>!PA"O@"PB#O@"N?"N?!L= L= M>!N>!N>!N?"N?"O@"N?"N?"L=!L=!N>"J< K< L=!L=!J; L=!L=!K< J; K< K< L=!L=!L=!L=!K< J; I:J; L=!L=!K< K< L=!L=!L=!L=!L>!N>"N?"N?"PA"TE$SL*/%,'/-,?DGYe1AH5DL=KVGTdJWi@OZXj|_pXg{Yi~[m]r]pL^nXjXgzYj}K]gN^iJ[gScu\nWi|VhyVk~f{l`vXp?X\6LNL^lVizgxxprhnnc|\ub}PfuF^jUoTm}OdpTiuXlyPisPfnG_fE]bNaiSfpWhsWhsOckSfrJ^eG[aG\b?WY=UU;ST>TU:SR2LH.ID1KG/KE0LF.ID.ID-IC0KE1LG0KF/IE3NM+IB/KD0LE0LE-KC-KD+JB(H@)HC&E?(F?&F>&E='E>,JE.ML8SS>F58E3(D<)HC*ID0MI)HB*JB-LG/KG/JG3MJ7K;9F1QG&PF&NG)6D4"B9#F<#D6 ?9"?;?8=5#?8)B73D27E3HN4VJ)TF$UF%XI&YJ'\N([M'YK&VG%TE$UG%RD$QA#PA#P@"PA#QB#PA#RC$TE$QB#SD$TE$QB#P@"O?"O?"N>"O?"P@"P@"P@"N>!N>"N>!M=!M>!O@"PA"O@"P@"PA#O?"O?"N>!N>"N?"O?"N?"O>"O?"O?"O?"N>"N?"P@"O?"O?"O>"P@#RB#SD$QB#O?"N>"M=!M!M>!O@"N?"L=!L=!M>!M>!N>"N?"PA"N?"N?"N?"N?"O@"M>!M>!M>!N?"M>!M>!L=!L=!K< L=!L=!L=!L=!L=!L=!L=!M>!M=!N>"O@"PA"O@"P@"QB#PA"L=!L=!K< L=!N>"M>!O@"N?"N?"N?"N?"M>!M>!M>!N?"N?"L=!L= L< K< K< N?!O@"RC#SD$RD$QB#O@"N@"N?!QC#QC#RC#N?!L= L< L< J;J; M= M=!K< K< K< L= N?"N?"L< J; I:I:I;L< NC&)BA,EE1FI5JP@W`85=2H8H9H9H8H8H8H8K>%ERO8QW9SW8QT/LK-KI9U[F`nVi|KctGUIK=!H8H8H8H8H8H8H8I9HJ4-IF2LL/KJ,HE,FE0MKC]`6RQ,HF+HF,GG(DB!875296(EC/RP)KH4TT>[bRhrVl{8TW,D=`X1]O+XI(WH'[M)\N*^P+_S,_R+_S,^T.GN6+E<>7 =7&B?3OO,ED'B@0ML;KX^6ST2RQ7RU;QRAZb5QTV\9PUST/KG/MH.LG*ID'E@9QP>X[8UU6QR:VV7VV7VU4SP5QO3PM/NI1NI(G@/JF-IF&E?@8@7A8!B9"E<"B; ?6<4?6>54-:2<3<5:3)G>PD(M>!L= M>!M>!L< L< L< M>!O@"O@"PA"QB#RC#WI'[M(\P)\N([M([N(\O(]P)]Q*\N(ZK'UF%SD$RC$SC$,>.0>-HB)H?$QA#RB#P@"QA#P@"SD$ZL'^R*_S+^Q*VH&VH&SD$QB#QB#P@"O@"O@"N?"O?"SD$XJ&]Q*ZL(XJ'YJ'XI&VG%PA#O@"O@"N?"N?"N?!N?!N?!L>!M>!M>!L= L< L< L< M=!O@"N@"N?!N?"O@"N?"M>!L=!K< N?"P@"L=!K< M>"N?"P@"P@"O@"O@"O?"O@"M"N>"O?"L"QA#N>"N=!P@#O?"N?"N>"M=!L; N>"N="O?"O?"O?"O?"M>"N?"N>!N?"O@"N?"N>!N>"N>"L!M>!L=!M>!M>!M>!M>!L=!L=!L=!M>!N?"N?"N@"O@"O?"N?"O@"P@"O@"N?"M>!L= L=!M>!N?"L=!L=!L=!M>!M=!M>!N?"M>!M>!M>!M>!L=!K< J< K< J< J; J; K< K< J; J; J; J; J; J; K< K< J; J; J; K< K< J; J; J< J; I:J; J; K< L=!J; I:I:I9H9J; K< J; K< K< L< J< K< K< K< J;J;J; J< J< K< K< J< J; J;K< L= K< J< K< J< L< L= O@"PA#RC#PA"O@"L= N>!PA"PA"M>!L= K< L< L< L= M>!N@"N?"N?"N?"N?"L=!L!N?"N?"O@"QB#VG&ZM)0%+#1/&:=(:?#69.10?G?O[?NZ@Q\PctYi\mexh}dyYn]pWh{TevQcoVizUfzZl~[mXj}h~ӫΈM]iZtz>WZ9PQM`lVgvZq_ytk^rhqvfGZc=Q[I\f"59F]iUk|N`jShqUhpXjs[lwZjsWhpTemQcjSfoPcjLahH^eH]b>TW7PP;TU=UV;TT:SR:TS7PM7PM3LJ3MJ0JF6RQ.KG.ID/IE4NJ2LH0KF/LF/KD.JD0KD0LF/KD/LD,HB*G@*IB'F?(F>%D<$D<$D$F> @7<5<5<5=5<2;2;2@8A9 A8?7 ?9>6:2=6!?:;6;5=72F:9J6;I4AJ2FF,UH'OF'NJ+TR1^R,XJ'VG&UF$XJ&\O(ZL&XI&TD$SD$TE$SD$SE$UF%SD$TE$UF%TE$SD#SD#SD#QB#PA#RB#P@#O?"N>"M=!N=!N>!N>!O?"N>"N>!N>!N>!M=!M=!O@"O@"N>!O?"N>!M=!K< L"N>"M>!M>!M>!M=!N?!N?"O?"O?"N>"N?"P@#QB#QA#QB#O?"N>"N>"M!L=!M>!L>!K< J< L=!M>!N>"N?"N?"N>"M>!N?"M>!N?"M>!L>!L=!L=!M>!M>!L=!K< J; J; L=!M>!L=!L=!L=!L=!L=!M>!M>!N?"P@"O@"P@"N?"L=!L=!L< L=!K< L=!L=!M>!N?"N?"N?"L=!L=!L=!L=!M>!M>!J< I;J;K< L= O@"PA"QB#RC#PB#N?"N?"N?!M>!N>!O@"O@"L= K< K< L< K< J< K< L= J< K< K< L= N?!L= J;H9H9H9I;N>!UF%9IF4KL,BE:NT@U_9OXD[eE\eMfw\t^vWnE\gJbnE^k9R]K`pSj~YrTjKbwMdzchcQgxNdt=S\EZgHW^AKGJ@,H9H9H9H9H8H8I:J; J; I:H9I:H9H8H8H8H8H8G9!D@1H8H8H8H8H8H8H8H8I: JC2BJD@LF:PR4OQ4RS;X_A[h[o[luUVOK@+H8H8H8H8H8H8H8FTH6QQ2LK0LJ'D?8ST=VX/KJ(D?9UT1OM8UX/KK/LL)HD(EB0LM2PQ2PO2PQA^eDaiG`gD^dA]c+JF@RBMO5OK.[R._T-]U0eZ0cW.GN6'D=%F?">90JK%@>-IJ+FG#<;,DE,EE5QR-JH-MILT>=K;VR1_S,`T-^P+\N*[L)[L)\N*[M*`S,^P+TN-8D2:3&A>%A?0PN0PM.PK3QO1QL)HB-RL1XS@_fEckA`f4WV/RN9ST8NQ@[^-NH.QK]l_[M+ZK*\M*[L*[L*[M*^P+ZK*UF&YK+d~_}}[l˨޶۾᧺լܫܨݔ܍ډ{kj|ψهكՂ~ȁˍ͐ˌʄ|{ytkdyg|Yrf\}Pk|PhuC`l@XbZoYkOdrVpRnNev6TZ6UW*LH,NKD_hSk}c|d}XpSk}?Y`7QT>V\Znpravbvf}e~n^yuiȏˏС`|Liu`{hsÒɊƗўlsÒzҚɒ›ЙȔȝ̓ƕΞϝ͗ǔȗ΋zzĔ˘БΕԓԐȊDžΑ~ÄɅˁ̌ՏԆċ͍}ٌ̇׍؆|pojlwph~ooh|fyfybuYhw^n^p_p_rbwcx[o|LbiH\bI[`@VX/KG;TT0OI/NH-LH*JE%D>1KJ2PO2PN4RP7VU4VS1SN.NI3PN&F@&F?'F@#B;(FA&D@!B: @8"@8!A8!A9"D< A7!>6>48080?6)JA!A881=5*HBNB%M>!M> N?!M>!L< L< J; K< M>!PA"TE$WH&TE%TF%XI'[M(ZK(XJ'[N(\P)]Q*_S+_T+^R*WH&SD$QB#QB#LA$E>$9=)1=,GA'QB#P@"P@"N?"P@"TD$RC#TD$QB#PA"N?"N?"N>!M>!N?"O@"N?"O?"M>!VG%\O)\O)[M(XI&SD$RD$QA#QA#O@"N?"N?!N?!N?!M>!L= M> M>!L< L< L< K< L= K< L< N>!N?!N?!N?"N?"O?"N?"N?"M>"M=!M>!N?"M>!M>!M>!O?"O@"N?"N?"O?"O?"N?"O>"O?"M"O?"P@"N?!M>!N?"N?"N>!O@"O?"L=!L=!L!N?"N?"N?"N?"N?"N@"N?"O@"N?"N?"N?"L=!L< K< J; L< L=!K< J< L!N>!M>"N?"N>"M>!M>!M=!M= N?"L= L= M>!N>!N?"N?"N?"O@"P@"O@"N?!M>!M>!N?!N>!N?"M>!M>!M>!L=!M>!M>!M>!N?"M=!L=!K< J; J; J< J; J; J; J< K< J; K< J; J; J; J; J; J; J; J< K< J< J; K< J; I:I:I;J; J; K< J< J; I:J; I9H8H9J;I;I:I;J;I;I:I:I;K< K< K< I:I;K< K< K< I;J;J;K< J< K< L< K< K< K< L= O@"QB#N@"N?"M>!M=!N?"N?"N?!M>!L< I;K< K< L< N?!M>!L< M>!N?!L= L< L< M>!L=!J; J; J; J; J; I:J; J; J< L=!K< K< J; I:H9H9H9H9I:J; K< L=!K!N?"O@"QA#RD#UG%TL,2+.)1/5621-'!67;LTY[:PT@TZ8LQ/@G(G?(G@(G?)E>#D;$F=(G?%G>'G?'G?'H@*JB'G?)HA*JB)JD,KE-LH.ML.JF2KI/IF,HC*IB,KD*LF+KH)IC'GB%E?"B; @8$D= A:@9>8>7"B: A8(GB"B;?7>5>7>7>7:6'A@1F=BPBAO=GP9FL2YO,XI'UG%WH&WH'ZK([M)YK'VG%WH&YK&XJ&UF$TD$SE$TF%TE$SD$SD$TE$UF%VH&VG%TF%TF%SD#SD$QB#O?"N>!N>"M>!N>"M>!L=!L!M=!L"M=!N>"L=!K< K; L!M=!N>!N?"O?"N>"N?"N>"O?"O@"PA"PA"P@#O?"N?"N>"L!N?"M>!J;J; J; K< L=!M>!M>!M>!M>!L=!J< J; J; J; L=!L< L=!N>"M>!M>!N?"M>!L=!L=!L=!K< J; K< L=!L=!K< J; J; K< K< K< L=!L=!L=!L=!L=!L=!M>!N?"N?"O?"M>!M>!L=!L=!L=!K< K< L=!L=!M>!O@"N?"K< J; J< K< L=!L=!K< I;J;K< M=!OA"O@"N?"PA"OA"N?!N?!N>!M>!L= N>!N>!M>!L= M>!L< K< J;J;L= L< L= L< L= K< I:I:I:H9H9H:N?!VG&?H>"9:1GJ=QWG]g>U^:V[6TZC^jOixWuZvQl~9U\1KP4KSAYeH^nDXeI_oRi~Ph{XmYn[rOdrG]hEKBK?(H8H9H9H8H8H8H8H8H8H8H9I:H9H8H9H8H8H8H8G?.E>+9GGZa4SV8TUA[`:SX@KBFURKPEHVV9PM0QSHckA^c?\aPTFRSARM4RVEW[L:RS$D@-MI1MK,C;/F>94:6:5+DE3MP7OS0HL-DF3IL;PV@Ya4TU:[^0NM+GG!>;"@<.G<1E:BK4EK2:G6/F90E9AK6CM5,C6$@<8QT5JN2LP/KL,NJ3RP=WX8UV4SQ.NJ)C?*HB2URFclRn~YrJch:[^)LG,JF9VV9XWEafcdP]O+\M*\M*]P+_Q+_R+[L*VG&VG'{v_jvxߦ޲ݪܨܨޫݣޠۡܓېۊ؋؋׉ׇцʅ̉ׄԑ׊υɇʍψʀ|mK[fL]hFV^Uhze|Vp}@\`NiyIbiQjzMh~HapXmfTn|Mgq>[^@`fFdrFdp8\]+RI/OOMcrXmLbrNftWo|RiyH^lSiznzg}]r\p`s||NircywՊtc~jvگ᣾ۂʎ͇ōǞթڢПОҙɋТШӬڛɓ}ywŎɇNjƄƐȅԌ|xvy}Ʌ~ŊʎыʘٌܑՁrPixLepXqSn|OlxOiysoh|dvWfwTdtRarYhxO`kUerTeqTftSht[o^pUfrQdqCV\"B:#B9"@8$B:#A8%E<$E<"B: >7 =55.9191"@8>6 @8%D>+F=PA#M>!M>!N?!L=!L= L< L= M>!N?!SD$VG%WG&VG%UF%VG&YJ'YK'WH&YJ'ZL([N(^R*_T+^S+[M(TE%RC#RB#QB"#>5BF09B/NI+TE$TE$SD$PA#O@"QB#Q@"QA#P@"QA#QB#N?"L!N?!N?!M>!M>!M>!L< L< K< J; J; K< K< L< N?!N?!O@"O@"N?"N?"M>!J; J; K< M>!N?"M>!M>!N?"N?"N?"N?"N?"N>"O?"O?"N>"M"M>!N?"M>!N?"N?"N?"M>!M>!L=!L=!L=!L=!N?"N?"N?"N?"M>"J; L=!L=!O@"N@"N?"N?"L=!L=!N?"M>!N?"N?"M>!M>!M>!M>!L=!M>!N?"N?"M>!M>!L=!L= M=!N?!L= L< M>!M>!M>!M>!N?"M>!L=!M>!M= M>!M>!M>!N>!N?"M>!L=!M>!M>!L=!L=!L=!M>!L=!K!K< L< J; I;J; K< K< J< J; J;K< L< L< N?"N?!K< J< H9K< L= M>!M= K< J; I;J;L< M>!N>"L=!M>!N?!N?!M>!L< L= L= K< J; J; I:I:I:I:I;J; J; J; J; J; I:H9H9H9H9H9I:J; K!M=!M>!O?"PA"SE$VG&6D33,1.1133'=A8KV57'8>0?H6CIM[mP`uqxi|eycyZnYlbw^s[pZmZmMam_sath~phL`hPgt4HL8LP6HN;KU?NX'G>'H?&H>&H>'IA&H?$F>#E=&H@&H?*JC)HC-JF*HC,IC+HB)H@*G@(H@*OH(HC&G@!@9!@:#B>@:"C; @8 ?8?7!@9!B: @8#A;@8"B;$F?%E@"A:#A<(A?JWOITCMP6WP/\O*ZK(VG&UG&YJ([N)[L)XI'WH&WH&WI&WH&VG&TE$RC#TE$UF%SD$UF%TE%TE$QB#TE$TE$SD$TF%TE$QB#P@"P@"O?"L=!K< L=!L=!J< J: J: K; L!N>"M=!L=!N?"P@"P?"O?"M>!L=!L=!L"N>!M=!M!M>!L=!K< J< J< L=!M>!M>!M>!M>!L=!L=!K< J; J; I:I;J; M>!M>!M>!N?"N@"N>!K< K< K< J; J; K< J< K< J; J; I;J; J; K< K< L=!L=!L=!K< I; K< M>!J; L=!K< L=!M>!M>!M>!L=!M>!M>!M>!N>!M>!L=!L=!J< K< J< J; L=!K< I:I:K< N?!OA"O@"N?"L= O@"OA"N?!N?!M>!M>!N?!M>!M=!N?!N?!M= J; I;I;K< J< J; J;I;J; I;H9H9I:H:I:M>!WI&4FF 691GJ6LPAX_E[e5OT2JO7SWD\hB[eH`m9S[7PVE]iPfxF_m@Xe4JQ8NVG]lbyXmJ^iG^h=R[U`cJC(J; H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8CGB@[fA[h7QZBMRH8H8H8H8H8H8H8H8H8H8H8G9 I; @B2=MH/KL1QQ2QSLetUk~SblXj~XcpMH:H8H8K< E][ENEGSKON8NH-OF(ZL'YL'CH2;LA3IB,FE(EA$@<$=;&?=&<>,CE-DG2LP?ZbKfuGbpC`iF`k>[bC`iJeq;SY3OP/LM-JI+JF&C@1KM(DC7OT.FH4LQ7RU0LL;UYG^h=SZ?U^@W`6OU5QT>WZ=Y[=\_:TW4OO.KH/D]b5VW5[ZXuxah\bbO_R-_R,`T,`T-\N*VG&WH'Ǧĵ߬៺ܥޤܕҟبݡݘޘޔێ؊ֈՇՈՇՊ׌׈ϋԆӛِ̝ؖӅy|utd|iQgxSl}Sm}MhtNivHbmZtWlbx`|@[]9XW@]a=Z\DbhGdoDen8\]3WT0OOG[`[l{\pWpYrPg{Wk}Xk}Si{\t`wh}upx|`{>Z^Lend|f|ܭݨݤۤܣݝ۞ܟܞܜۛڛڜۖ׎͏Ǭ߱ޣՠϹÙɓğΙ˘͒}}Ҍ}y|}ˆӒ܌׈ԓڏ֓ݓ֐ԄwWqj΀xfYpTjzPgsNanEYaFZbMajXlz[oQcoShvWi{Wj|RcrQdqNdoOdoQeo?WY*IF&GB$F?*HC(HB%E?%F?)HB(HB+LE+JE/NI2RL3SOH]KitNhu[fugF[V)HD(HB(G?(H?(G?)H@'G>'C=$A<?8<4 >6<4;4<4=4"@7 @8*HB@F2PA#N?!N?!N?!N>!M=!L= L= M>!O@"O@"QB#QB#TD$TE$UF%XI'XI'YK(ZL([M([N(\N)^R*[N)\N)ZL(RC$QA#N?"!9,#C<>5!>7DM8VH&QA#O@"PA"PA#PA"TE$TE%RC$RC$P@"N?"M>!N?!M>!O@"RC#WH&^Q*XI&RC#XJ'XJ'YJ'VG&QB#UF%RC#N?"N?!N?!N?!N@"N?!N?!N?"N?!L= L< L= M>!M=!M>!M>!N?!N?!N?!N?!N?!P@"N?"N?"N>!O?"N?"N?"O@"N?"N?"M>"N?"N?"N?"N?"N?"N?"N>"N?"L=!L=!L=!L=!L=!L=!N?"L=!M>!M>!M>"N?"N?"N?!M>!M>!L=!M>!N?"M>!N?"M>!M>!K< J; L!N@"N?"N?"M>!K< L=!M>!M>!L=!M>!N?"M>!M=!M>!L=!M>!M>!N?"N>!M>!M>!L= K< L< L= L< K< L= L< K< L=!L=!K< L< L=!M>!M>!L< L= M>!L= L= L< K< L< L=!L=!L=!J; J; J< I;I: J; J; J; J; J; K< J; K< J; J; J; J; J; J; J;I:J; J; J; J; H9I:I:H9I;I;I;I:H:I:I:H9I:I:I:I:I:I;J;I;I;I;J;J;I;I;I:J; K< I:J;I:H8H8J; K< K< J< J<L= M>!N?!M>!K< J; H9H9I:I:L< L< I;I:J;J; L=!L=!L=!K< M>!N?!N?"N?!M>!M>!L< J; J; I:I:H:I:I:I:J; I;J; J; I:H9H9H9H9H9I:I:J< L=!L=!J; K< L>!M>!M>!N>"N@"RC$UF%TF$3<,/)8711(;AG[lF[n4HS/2&68':>Sfwfycufx{bw^so^rezXk^r\natUiycvcw\og~Ѽځ[oXm_x>XZ4HIAS[Yk}ZpcxtjXl~ZmI\e=SW+ED,EE$9;0CG!47-?D3IMI`fJ`fTgoI^bMagPdlOcjLahH_eF\aNdjMdjF^bB[^AZ]>UW8PO5ON;TT>VX3LI5NL9QP3MI5OL4NJ1LF,HA/LD1NG/LE.LE.KD-ME)JB(IA+LD.MF+JC*JB*IB'G?)IB.IC)G@'F?'F>(H@(H@(H?)H@*JB&H@$F=#E<$G?(JB)IC(IC%F?(H@(IA,JE+JC)IB#E<$D< A9#E=!B;#H?%FA$F@>6>7!?8>6=6$A:'D@#A<*JE'GB!B<&E@&C>'C?$A=BL9_S,YJ(VG&XI'VH&UF&VG&XI'XI'XI'XI'XI'XI'VH&SD$O@"M>"L"N>!M=!L=!L=!M=!M=!J; I9 I: J: J: J; L< M=!M=!L"SD$M=!M=!M=!M=!L"O@"O?"M=!M=!M>!N?"N>"N?"M>!M>!N?"M>!L< K< L=!L=!L=!N>"M>!L=!L=!L=!K< K< J; I;I; H9I:I:K< L=!N>!L=!L!N>"M>!M>!M>!N>"O?"M>"L=!L=!K< K< K< J; I:H9I:H9H9J< M>!N?!N>!L= L=!O@"O@"N?"M>!L< L< L= L< L< N>!M>!M=!J< I;I;K< J;I:H9H9I:I;H9H9I:I;J;L= ME,1HL!7:&;?9NT;QY5NT+DJ/HM2MP;TY6PT7PTBZfWpYrVmLex?[oJas5JQ?VaOdvK^lBU]L`lNZ`K>$H9H9H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G86TV=^h=W`FHBH8H8H8H8H8H8H8H8H8H8H8H8H8H8A>.&C>/NL0NNIcqR]\H9OG9QNH\lNKBH8H8AI=WaHbmB]eHdmUmRj{Phw@[bE`kIan@\e@[b>Y_7SU1NO3NQ2LQ;T[:U\=V^=V_=VaFapGcpD^iH_kC\h?V`;V^8RZ7RX=X^D_hKhzLgtEdl8XX7KH8F?9WW/MI)JEKfq?^fMgsQhvRk|YqfmtemkOd`>aU.aU-`T-YJ(VF&ZK+Ԙ֕Րҋ͙֡ܡܮ֒զߜߐۋ؈ӄуфӆԊևԌوՄԘقÈkpegovtjgbPl|Nl|WuWsUo[s`{YrUo~Um}Vn~Rk{OhwA]g7UW2RP-MJ=W]AW^Pam^tavXm^r`tg~jh~qxtv̗ґŇОמ؟ٛ؛ؠڢ۞ۜڛۜܙڗږٕٕٖژڙܟܨߩ䠻ؘКӢؗɔ˔щŔΖ͟ՠԥ{ɤ׈~ɚؚӍz~{Ł~z{~̃шԋהڕڏ؊ϐјݑ܋~ׄЃ~}zohZqWo[s`vf{\m~ZkxVfu[nThwRhvWn}TiwThuG\cH]d6QQ*LG-OK.PK(JC%GB)JE+LG,OH-PH+LF+KF4QLH_Mpu?pq5?6$D="A9*JD0H>MF*N>!M>!N?!N?!N?!N>!M>!M>!M>!N?!N?!N?"N?!O@"N?"N?!P@"VG&XI'UG%WH&WI&TF%XJ'[N)SD$SD$RC$O@"PA#N?!'!L= M>!N?!N?!O@"N>!N?!N?"N?!N?!N?!N?!N?"N?"M>!M>!M>!N?"N?"P@"O@"O@"M>!N?"N?"O@"N?"N?"N?"N?"M>!M>!L=!M>!M>!L=!M>!M>!L=!K< L=!N?"O@"N?"N>"N?"N?"M>!M>!L=!L=!M>!M>!M>!K< K< N?"N?"N?"N?"M>!M>!M>!L=!L=!L=!L=!L!N?"N?!L=!L=!L=!M>!N?"N?"N?"N?!M>!L=!L= L= L= L= L< L= K< K< K< K< L< L< K< K< K< K< J< L< K< K< L< K< K< K< J; I:I; I9I:H9I:I; J; J; J; K< K< J< J; J; K< J; J; J; J; J; J< J; J; J; I:I;I:H9I;I;I;I:H9H:H9H9I:I:I;I;I;J; J; J< J;I:I:H9I:I:I:I;I:I:I:I:H9H8H8K< J; I:J;M=!N?!M>!K< H9H8H8J; J; J;I:H9H9H8H9I;I:J; J; J; M>!M>!M>!N?!OA"M>!L=!J; I;I:I:H9I:I:I;I:H9H9H9H9H9H9H9H9I:J; I:J; L=!L=!K< K< M>!M>!M>!M>"N?"RB#UF%SD$SD$5=(#;;$:<46F[nIat:O\662346>OYTdwYiz]nlx|rcx_tZmcwYk~fzUgxVgwZoYmVj}lavZmSfx9NR7LODV^K]hjuvkUhyRcqHZb.EF$<=4HM4GL0EI%9;(;?0FJNdkVisVjsQfnNcjNajSfpQenSfqShrNckLdjGafC]bC]c@[_>Z\A\_>Y\&D=%E=%G>%E<&E=%E>%H@*LG(KG%H@'IA'H@&G?(ID'HA'F=0OK/NK(JB!C;!E; B:!C;?8 B9"D<@7>5!A9=6=6%B<'C>+HD*GD&C@)IC%E@)EC.HH!>8<7SP1XI'SD$SD$TF$UF%UF%TE$UF%TE$RC$O@"P@"O?"M=!M=!K; J: I: I9 J: M>!QA#O?"P@"O?"QA#QA#O?"O?"N>"M=!M=!L=!K< L=!L=!M>"M=!J; I: I: I9 J: J; J: K; L!L=!L=!N?"PA#P@"P@"K!O>"O?"O?"O?"N?"N?"N?"N>!M!K< K< L=!L=!M>!M>!L=!L=!K< J; J< J< J: J; J; I:H9H9H9I:I:I:L< K< J; K< M>!N>!N?"N?!K< J;J;J; L= L< L= L< L< K< I;H9H9H9I:I:H9I;I;H9H9H:I:K< M>!@B4,BF!9;%:>;PYBYf?UcXbH:#I:#AB8G:$H8H8H8H8H8H8H8H8H8H8I;$GZb?Wc2KOEIDH8H8H8H8H8H8H8H8H8H8H8H8H8H8H8E:"C<('FC8RWH>)H8H8H8PNHLE:H8H8G8@C37WZ/KJ(BA*CB7OQE[bD[c:E:H9G=(E;%H;%H8H8JHV`=U^E]kB[fHboGbp@\f@^f?\eE^hB^hD^iD^dB\bE\gPiyEbiNhsRk|?[a=Y^8SU3ON*HD>]`Pi|FanJcpG`lA\e_ytf[1dX/cW/cW/bV.aT-YJ)VG&XH(noZsɘҎЌӊ͘٬ߞړԔהِّڏڍُڌ؅҄΄шՌ؉և։ֆԜڔЌ_{NkrlyrZweUpVq`~^z`zfejb{\rSgyXk~NbqK^iK\gUgsIZej{GYc>V]AT^Zoezf{Wl_uppqvso}~qrǡܞݞ؞ՠٟ۠ܛٜۚٙؕז٘ژڗڕږڕ۔ۗۗڕ٘٣ިߠۖΘΔΐ͉Lj̊͏ЍʓЏ˕ϐϢטɕ˄~|s|ÀȑҀwxyxxzƎʊюו،҈ҊՑؔڄ̈ǃ΂|wrnje|d|lizfxat_p]pZl}SfsUjwSgtTivZn~Mcm,HF+ID&HC=Z\B^`/PK-NH*JD+MF,OH,QK1VM0PFW`Dih8pn9nh7ol9ioDF]Q4PM2NH1MH2NI3OE4M@>XK1QH$E>(JA(H@$E>>7?7=50PGBM:LD)RC$QB#O@"P@"O@"N?"O@"M>!M>!M>!N?!M>!M> L=!N?!PA"PA#PA"QB#TF%QB#O@"O@"O@"M>!O@"SD$PA"PA"O@"O@"O@"F@%)@6=4!B9 A:>5)@2UF%P@"RC#RB#N?"N?"O@"QA#ZK'[M(QB#RB#RC#TF%XI&ZL([M(XI&UF%QB#QB#QB#QB#TD$QB#O@"N?"N@"N?"N?!N?!N?!N?"O@"PA#N?!M>!N?!O@"O@"O@"L= N?!M=!M>!N?"M>!N?"N?"N?"M>!M>!M>!N?"M>!O@"O@"N?!N?"O?"M>"O@"N?"N?"N?"N?"N?"N?"M>!M>!M>!M>"N?"L=!L=!K; L=!M>!N?"N?"K< N?"N?"M>!L=!M>!N>!M>!M>!L=!K!N?"N?!N?"N?"N?!N>"M>!K< L=!L=!L=!M>!M>!M>!L=!L=!N?"M>!N?"N?"N?"N?"M>!M>"L=!K< K< J; J;K< K< K< J; J; K< J; L= L< K< L< L< K< J; L< J< J;J;I;I;I:I:J; I:H9H8H9I; J; I:H9J; I:J; J; J; J; J; J; K< K< N>!M>!L= K< K< L=!K< I:H:I;I:H8H9I:I:H9H:H9H9I:I;H:J< L< J; I;I:I:I:I:H9I:I;I:H8H8H8H9H8H8I:H8I:J; L< K< I:H8H8H8H8I:H8H9H8H8H9H9I:I;I:H:I;L< K< K< L< L< N?!K< K< J; I:I:I:H9H9H9H9H9H9H9I:H9H:H9I:I:J; J; J; L=!L=!L=!K< L=!M>!L>!M>!M>!N?"QB#VG&TE$RC#PG(40#9;34FZn>Z`3NR3IR30442DKEVc\obtuqj`sex]qWj}^p]pbwcxUgxVi{je}toxe{_sH\f0EG]tbwBS[Zk|Zl|FW`;OU;PU@T[AT[.DF4HL,BF$;=,?C&8<,=BF[`PcjTfnOelLbiNbjNahPcmQenObkLagLagD]bG`gB\bB]c>Y^C]bBZ^BY]BZ]@XZ>UW;ST6QP5PL3OJ2MH.ID-KD.MF.NF/NG.LF.MF,LD+KD,KD*JD'F@'G@(F?(F?&D=%E=(F?)F?'F>&E='G>'G@%E=%H@(KE&HA"E<$F=$F>'JC(JE'G@)H@+IB'F?>6>6B:?6:270;4@8?6>6>7<4:3(FB&D?+IE"A<#B=-G=)HC3NH(DB:42B2]Q+YJ'TE$RC#TD$TF%UF%QA#P@#M>!K< K< K!N>"N>"N>"P@#N>"L=!L< L"QB#WH&SD$M=!L"N>!M=!M"O?"N>"M=!M&I;I:J; J; L=!M>!L=!J< K< L=!J< L=!L=!L=!J; I:I:J; J; I:I:I:H9H8H9H9H9I:I:I:I;I;J;L< L< M>!L=!K< I:I:H:J< J< I;I:H9H8H8H9H8H8H9J; I:H9H9H9I:I:I:L= RF)8LM6PU,CH1GO;R[AXc?We@ZjD]nW`7D=F?,H8H8H8H8H8H8H8><)=J@.HH5PR2LN6NQC\aNclF]d:>0H8H8H8H8H8H9!H8H8FJC;C9\e>^cA^eF`kTk{YpWn`xfQm{7WY9XZ4RR4SROh{VpOjzXoXmWnhoUcW/bV.dX/cW/aT-aT-^P,YJ)VG'ZM+}֓ȆѕҎΎ͏ΓҒՏҎҏԎԋӉԉԈՅχӇ֋؊׉،ڈҍЁl~{|˂{b}[tTo[qOhvCVaFYdJ\hDS^HXcUepvZjwUertPfv\pfym}`oqeu\mgypurb{czRi|yxofwۗךܘۜڢڢޜݘۖؖחוזٗږږږۙۙۚۜۛܙۚ١ۮئԞ՜ҖՍ̋ˇ͎͔џؠӞΘ͏ƎŇÌyoikww|zМݜڗ׏҅Ѐ~ЊЉԍב؅Ҏ֐׋я؍ٍ؃ŀ}tri~dvdubug|fzi{fx]oTes]oWlzSjvRgrH[aI]c>VX2OL/LH.MI-PL6XT4UQ2RM*NF,PH+NG0PL.QJ3SNYa@h_2f\0kc4oj7lnVNP]Cdd:ib4g^1ic4^b"D=B:#F=6O>\N)SD$TE$QB"L< M>!N@"PA"O@"L= L= L= N>!M>!M>!N?!PA#PA#O@"N@!PA#RC$O@"N?!N?!N?!N?!O@"O@"PA"PA#M>!N?!N?!N?"1A/A9@7$C<?6 <2XJ'N?"P@"O@"P@#QB#RC#UF%WH&YJ'WH&SD$SC$WH&XI'ZL(WH&QA#QA#QB#QB#PA"PA#PA"N?"M> N>!N?!M>!N>!N>!N?!N?!O@"QB#O@"N?"PA"QB#QB#O@"L= N?!M=!N?!M>!N?!M>!N?"N?"N?"M>!N?"N?"N?"N?"N?"N?"M>!N?!M>!N?"N?"N?"N?"M>!N?"N?"M>!M>!N?"M>!L=!M=!N?!N?"M>!M>!M>!M>!M>!M>!N?"M>!J; M>!K< I:J; L!M>"N?"O@"N?"M>!M>!M>!L=!L=!N>"N?"M>!M>!N?"M>!M>!N?"M>!M>!N>!N?"M>!M= L< K< K< K< J< I;I:I:I:I;J; J< I;K< J; J;L= L= J< I;J;J< I;I:I:I;I;I:J; I;I:H9I:J; I:H9H9H9H9I:J; J; J; J; L=!O@"P@"O@"M>!M>!N>!M>!M>!M=!K< I;I:H:H9I:I;J;H9H:I;I:I:I;J;K< K< J; I;I:I:H9H9H8H8G8G8G8H8H8H8H8H8H9H8H8H9H9H9H9H8I9H8G8G8G8G8H8I:I:I:I:H9H9H:I;L= K< K< L< K< J< I;I;I:I:I:H:H9H9I:I:I:I:I:H:I:I:I:I:I;J; J; K< K!L=!L=!L=!M>!O?"QB"QB#QB#RF&0+*@C(<>:KWA[c;U[CXf+AF10';UfxasuxpfzYk|Viybw[n_se{[m^qUfv\qlswlZmXmE\eQesptoHZgNapncyTiy>QZ!:9!;9/EH&;>2DKAS]X\=X[@Z^?WX@Y[?WY7SQ5RO3OK3NK2MI0MG0LH/NI/LD.JC.JC,IC(IB)KC,MF-LD,JE'G@&F>(G@*F@*G@+JB+JB,IC*IA(H@&H@&H@#G?>6"E=!E="F? F=)KH"E?'I@%H@ A:=5>5@8?7>7>6=6B:@7>5!C:?8=5"E=#D<%G@"B<#B>?RI1L@&F>ATE>P@3B2\P+ZL(XI'SD$RD$TE$SD$SD$P@#N>"K< J; J; J; L!N>"N>"L=!J< K< L"O?"P@"N>"M=!L"M>!N?"M=!N?"L=!K< J; J; J; J; I:I:H9H9H9H9H9H9H9H9H9I:H9H9I:I;J; J< K< L=!L=!K< I:H9H9I:I:I:I:J; K< J; J; H9I:H9I:I:K< J; H;!J; J; K< L=!L=!J; J; I;I:I:H9H9H9H8H9H9H9H9I:J; I; J; K< J< L=!L=!KT`:S`>Wb?Ze@Zh8Q]6MV9P\FZjQibyl`t\t\sf}H\jBVbOcoFB/H8H8H9H8 G;&H8H8H8K@-H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H>*B\lFYbDIFH?.H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8=9&$C@%A@FWYH8H8H8H8H8H8H8H8F9"=G>6OP.FF-CD1KM9TY\d>Za!L< L= M>!M>!PA"PB#O@"M= L= M> N?!N?!M>!N?!N?"N?"N?"O@"M>!M>!N?!N?"NA$!A6"E< D:'I@@6/<+RC#M>"N?"O@"QA#QA#UF%YJ'UF%WH&WH&UF%UF%XI'SD$TE%RB#P@"QB#QB#PA#PA"O@"N?"L= L< M>!M>!L= L= L= N>!N?!M>!N?!N@"O@"QB#PA#PA"N?"N?!N@"N?!L= M>!N?!N>!O@"O@"N?"N?"P@"O@"O@"O@"P@"O?"M>!M>!M>!M>"N?"M>!N?"N>!N?"N?"N?"N?"N?"L=!L=!M>!N?"N?"N>!M>!M>!M>!M>!M>!M>!K< H9J; J; I;K< L=!L=!L=!M>!M>!N?"N?"M>!M>!L< M>!N?"N?"N?"N?"N?"M>!L=!N?"N>!L>!L=!M=!N?!N>!K< K< J;J;J;I;I:H9I:I9J; I:I:H9I:I;J< L< L< L= I;I;I;I;H9H:I;H:I;I:I:I;H:H9I;I:H9H9H:I:K< L=!L= J; I;K< O@"RC#M>!J; K< K= L< M>!N?!L< I:H9H9J; K< L= J;K< I;K< L< J;I:K< J;I;K< I;I:H9H8H8H8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8H8H8G8G8G8G8G8H9I:I;I:H8H8I;J< L= L= J;K< K< K< J;I:I:I:I:I:H9I:I:I:I:I;I:I:I:I:I:I:I:I:J; K< L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!M>!N?"SC$VG%.8((=A,AF8KTF\n@[bBZh8NX67#7::GLL^kbvmsymVhz]q^qZlZk~avbu]pO^j[nbxt{hDWbSgy?RWiw{Ѐ~et=OVZmI_m@V_&A?*BC);A4EMGWbGWb6FL2CITfqXjvSgqRfpPenPenPgrUhsOemPhpPgoIbhJbiH`gH`hLckF\b@Y\>Y\=WX+JF.JG+IE*IC.KD.LE+IB+JC*KC)JB(IA(JA!D!C;B9C;"F? D<$I?"D<<5?8 C:C:?8B:A9A:B:?7=4?7<4 C;B9 D:"D>">9"C=@Q@-H<&G>'E;W]>_T-XJ'VG&SE$SE$UF%UF%SD$QB#N>"L=!J< J; J; J; L< K; J; I9 H8 H8 H8 H8H9 I: J< L=!K< L=!M=!L=!K< J; I9I9J: I: H9 I: I: I: I9 I9 J; J; J; J: I9 J: K; J; I9 J: J: J: J; J: J: J: J; J: I: J; L-D<*H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8F:#1JJELDJE6H8H8H8H8H8H8H8H8H8E<(CPE5KL*@B'@?/HJ9LHAE82=3B8"G8G<(I:"H8H8H8H9!G:#KOJG]gMepI_jTitWm{YqG_i8OUG`jSmzZrXsbyinnrra{jgi^yUpXvWu\zdb}_xPjzVrOgsNixB_g?_d>[a<\`Faj=_dBcgDbjMfqL\bP^aM\_Wm}Vj{SfwaxojiPfw:SXD\eNftRh{WmSW B:$F>'F!N?!N?!N?!N@"N?"M>!M>!M>!M>!M>!M>!N?"M>!K< J< K< L= N?!N@"O@"O@"O@"O@"O@"N?!N?!N?!O@"EK6B9 B9A8#G?(>1K=!L=!L!O?"N?"O@"QB#PA#O@"PA"O@"N?!L< M> M>!L= L< L= M>!N>!N?!N?!N?!N?!O@"PA#O@"O@"O@"N?!N?!N?!M>!L= N?!O@"P@"P@"N?"N?"N?"N?"N?"N?"O@"O@"N?"M>!M>!N?"M>!M>!M>!N?"N?"N?"M>!L=!L=!L=!L=!L=!L=!M>!M>!N?"N?"L=!L=!M>!L!N?"N?"N?"M>!L=!N?"N?"M>!L>!M>!N?"O@"N?"O@"N?"M>!J; K< M>!M>!K< L< J;J< I:I:I:H9I:I:I;I:I:H9I:K< K< J; K< L= J;I:H:I:I:H9H9H9I:I:I;I;I;J;I:H9H9I:L= L=!M>!N>!L=!K< J< L< L>!N>"M>!K< K< I;K< M>!K< J< I:H9J;K< L= K< K< L= J; K< J; J;J< K< I:I:I;H:H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H9H9H8I:K< K< K< I;J;K< K< J< I;I:I:I:H9H9H9I:I:I:I:I:I:I:I:I:I:I:I:I:I:J; J; J; K< L=!L=!L=!K!O?"RD#UF%TE$>C14JP0FM9OYB_iF`mJ_u-CJ028HONXBS^t~vpl{6HNN]l0EIEZeG\e.CEAQZ?PX,>B9HN:HO@OXMan[o{_rTlzTkxZpUkwYn}Wl{LblE]dLbiMckMdlQisJblHajI^eEZ_G\e?W[>X\>VZ9WU6TO5RO4PM4PL3PL0NG0MF.MF.MF-LE&D?-LF(JD&FA"C>&FB%D?$C?.LJ)HA-KD-JD*JB1NI+LD)H@'G@'IBA:"D="D=%F?#F>!C:E<#I@(MD>5:3 A9!@8A9 A:@9@9A8=3>4>5;2'G? A8B:"F>=4/I>!A9ARA)C9%D="B:GP6]P*VG&RC#SD$SD$SD$VG%TE$O?"L=!L=!J< J< J: I:J: J: J: I: H9 H9 H9 H9 I: J; K< L=!L=!K%L=!L?#L=!J; I:I:H:I:H9H9I:H9H9I9H:H9H9H9H9J; J; J< KXf8P\;Q]?UcBWhJ]nFXeAU_Wlhc]z\sMMDH9 H8H8H8H9!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8E8"H8H81DB)DDJ>)H8H8H8H8H8H8H8H8H8H8D<(H='?VV1GF0D?>NQ-KF9FJDLXSCYb#C;DC,O@"M>!N?!PA"N@"N?"N?!N?"N?!N?!N>!L> L= L< L< L< J; K< K; L< N?!N?!N?!N?"O@"QB#O@"N?!N?"N?!IA&@6"C:#E<"C;-L@8@*L< L< J; L=!PA#SD$RB#O?"O@"N?"M>!O@"O@"L=!M>!M>!M>!M>!N?!O@"O@"RB#O@"N?!N?!N?"O@"N?!L= L< L= N?"N?!O@"N?!N?!N?"O@"P@"N?"N?!N>!N?!N?!N?!L=!M>!L=!N>!M>!M=!L= L=!N?"P@"P@"P@"O@"O@"P@"M>!M>!M>!M>!L=!M>!M>!N?"M>!M>!M>!L=!M>!M>"N?"M>!M>!M=!M>!M>!L=!M>!N?"M>!M>!K< K< L!M=!L=!M=!M>!N?"N?"N?"M>!N?"N?"M>!M>!M>!N?"N?"O@"N?"N?"L=!J; K< L=!N>!L= K< K< K< I;I:H9H9I:H9H9I9I:I:J< N?!K< H9I;K< M>!M> K< L< I:I:I:I:I:I:I;I:I:I:H9H8H9H9I:J;L< K< J;J;J; J;K< L= N?!L=!K< K< J;L= I;I:H8I:K< K< I;I:J; J;K< I;I;I;I;H9H9H9H9H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8I;L< L< K< L= L< K< K< I;I;I;I:H9H9H9H9I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:J; I; J; J; J; K< J; L!N?"PA"QB#QB#RD#]P*AOJCW^F\jD`wU[=TY9VU8VQ6TO6SO6RP0NJ/KF.KD-ME)F?$@;">:#B=&HC&GB&EA!A<<6 ?;(GB+JC)IB+IB,KF+ME)IB(HB(IC'IBA:!A;'D?+JF'JB&H?+RJ+SI&MD>5?6@7?6>6>7?8A9 @8>4@6<4"B:'F@?8 D<A9A9A80I;>O?VaJ(C:&D8\W2[L)TE%SD$TD$QA#O@"PA"O@"M=!L=!K"K< J; LT_SfySgzPeu>T\KapTl]zffUTJG8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I=)IF:FMHGB2G;$E:%@>,9C66B:;C;)CDH>*H8H8H8H8H8H8H8G8G8G8G9!EH>F9!IB0CNI8NQAE>KE7HNKK`mMdtKLDEE:H8H8H8J>*KB/ED8>FAF\e9RX?Z`E]eJ`j[p[q^zPjwZrN`jTlzNfrPhxZqlxȇ~Vr[ufYtSl}OesRhxPhyTlc~Xo[rUk|NfsKcnGakD^dB_f?`cBbhIelFaiGbkJcnMetWobybybz[rc}O\^cwtmooXpQgyPix^t5RVbb9f[1g[2i^3j`3j`4lc5f\1aU.\N+YJ)ZL*_U1tzEᙸ֎jawjmtrr~Ҋ؇Ղ̂ǎՋӂƅˁǑԌ͈ƊȉɁyєՉrpxsrja|ZtRpGh|=[bI\fSesYmUfxaoRaseu`n}TduPd|d|oz̄Zp[poXtdіٜۘژۜܝݟݟٖٖؗזؗיٗ٘ٙڗٛ؝ٞՍƤݱ⨽ԡ̗‘͌ǘӥهÒɩ߰ߤؠؕvy~znlfrxj`v^sJ_k5LQ;SXBV];QV>SYE[b[scxojx}z{uwrzxXsYuztlpjjmsvf}bx[qXlz8NQAV[K^g2MMF[b4LL-JG,KH7UR8XT+ME,OH,NG,RI.NH,MH1RN:]Z?^_PknUkeXrlZpWdl;nk7mf5le4lh6g]1_S+YK'ZL([M(YK(YJ'[M(\P)^R+`Y1ASA0OH1OH,LE-NH,LD&G?!A: >8!?8(A7SE&QB#N?!O@"N?"N?!N?!M>!L< L= M>!M>!L= L= L< J; J; L< L= M> M>!L= L= N>!N?!N?"N?!6>,L>"PA";G3<3 @8>6-KDSF'L>!N>!M>!L< L= L=!M>!P@"N?"O@"N?!K< J;K< L= M>!N?!N?!M>!M>!N?!N?!PA#QB#O@"N?!N?!M>!L< L= K< K< L< L= L= L= L= M>!N?!N>!N?!M>!M>!N?!M>!N?!M>!M>!L= L< L< L= L< M>!N?"O@"P@"QB#RB#PA#PA"SD$QB#P@"N?"M>!M>!M>!N?"M>!M>!L=!L=!M=!M>!M>!N?"N?"N?"M>!L=!M>!L=!L=!M>!M>!O@"N?"N?"M>!L!M>!M>!N?"N?"M>"N>!M>!N?"N?"M>!N?"N@"O@"N?"O@"M>!M>!M=!K< K< K< M>!L< K< L< J< I:H:H9H9H9H9H8H8H8I:J;L= J< I:I;J; K< J; I;I:I;I:I;J; H9H9I:J; I;I:H8H8H9H9H9I:K< K< I:H:I:I:J<K< J< J; I;J;J;L< K< I;H9H9I:J;I;I:I;I:J< J; I;I;J;H9H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8H8H8G8G8H8G8H8H9H9H:I;J;J< L= K< I;I:I:H9H9H9H9I:I:I:I:I:I:H9I:I:H9I:I:I:I;I:I:I:I:I;I;J; J; J; J; L=!L=!L>!N>"N?"N?"O@"O@"QB#WI&_S+ga3PXBBUVMd}KcqG^gI`x@Rc$8=+=AN_lKYc]pbumymukexqcudvg|]oQ`pbwg|Xk>MVM]lK\kYnpupnFUcEU`Xf{GWb6KN77/FJ/CI*WWE[^LaiOdoQfrF\cBY_D\eAYaC[c@X_=WZ7US8VQ6TO5SO6SQ5QN2OK/MH-KE(E>*G?&C>)ID$D@ B<#D?=8>7"C> @:)HA$G>%F>&IB(IB)HB,KD)JB*KD!C;'HA%F@#D<)LD(MD&NE%MEB:B:A9>6@8>6?8?7?7C:A8>6>6?8=4?8A9B: B;A9%F=(E7`iQ;P@QU5_S+VG&SD$RC#QB#O?"M>!L=!L=!K< J; I: I9I8H8H9 H9 H9 H9 H9 H9 I: J; I9 K< L=!J; J: J; I: H9 H9 H8 H8H8I8I8I9 J; I9 H9 I9 I9 I9 I9 J; L=!N>"M=!M>!M>!J< J; J; J< J; J; J< J< J< J< L=!L=!M=!M=!M=!M'CB.F>&I:I:I:J; I:I:H8H8H8H9H9I:J; J; J< J; I:I:H9I:H9H8H8H8H8H8G8G8G8H8H8H8H:H9H8H8H8H8H8H8H8H8H8I:L= SF(9LTLbvUiJ`sEZk;5<7<4<52D6UF&QB#QB#RB#PA"O@"N?!M=!L< L< L< L< J; J;J; J; L< N?!N?!N?!M>!L= L= L< L= L= D?&LB&6RJ@7 A8@8"B;"C:PC%N>"M>!L< J; J;I:I:K< N?"N?!M> L< J; J; M>!N?!N?!N?!N?!N?!M>!N?!N?"N?!M>!N?!L=!L< K< L= K; K< L< L< L= M>!L= L= M>!N?!N>!N?!N?!N?!M>!N>!N?!N?!N?!M>!M= M>!M>!PA"SD$SC#SD$TE%SD$QA#QB#UF%PA"N?"M>!L=!N?"O@"P@"O@"L=!M>!M>!L=!L=!N>!O@"O@"N?"L=!K< K< K< L=!L=!O@"RC$O@"M>!L=!M>!N?!M>!M>!O?"P@"O?"O@"N?"L=!N?"N?"N?"N?"N?"O@"N?"O@"O@"M>!K< M>!N?"K< L< L= J; J;J;J;H9I;I;I;I:I;H:I:H9H9H9H:I:I;K< L< J< H9I;I;I;H9I:J;J< I:I;I;I:H9H8H8H9H:I:H:J;I;H9H9H9I:H:H:H9H9H9H9I:H:H9H:H:I:I;I;J;I:H9I:I:J; J;I;I9H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8H8G8G8H8H8G8H8H8H8H8H9H9I:I:I:I:H9H9H9H9H9H9I;I:H:I:I:I:I:I:H9H9I:I:I:J; J; I:I:I:J; J; J; K< J; K< L=!L=!M>!O?"N?"N?"O@"QB#YK']Q*\O)e[0VV9MTIXbiawi~{zrcrqlSbr=OU!99"9:46$:;243FL>9<6<4=5>8)KC#F>%H@"E> C:$G@%IA'JB#G?"E<&H@%G@%IB'JB"H@$NDE;D<C;D=@9A9@8>6;3>6A8@7A:?7>8?7?7?7?7"A<?9!B9,G9\fNBR?`T,XJ&RD$QB#O?"N>"N>"L=!K< J< J: I: I9 H8 H8 H9 H9 H9 H9 H9 H9 I9 I9 J: J; I: J; I9 I: I9 I9 I9 I9 I8 I8I8I8I9I9 I: I9 I9 I9 H9 I9 I: J; L=!M>!M>!O?"L=!J; J; J< J< K!M=!L=!L< N=!N?"O>"N>!M*G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J?,H9 H8H8H8H8H8H8H8 L@-QSOJdtIfyQjXpOcpH:"H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8@D9/IM7PVCQRLMFFF*I<%H9 I=)I;"I9 LQGBU[J_i;PWEYcRerTk|PcoXqKaj3HJDV]E[cLblSjzimqqfWmAT];QWG^k;SW6OQF^hMeuQizWnSj~ZoxSmLewT[;QU]rkqy}tk[ub}spwpi_u\r`ucybvYm|TfqYn~[pWjw=SW.JI7TT"C= ?8=6>7?F2RC#PA#PA#N?"K?#N?!M=!L< L= L< K< K< L< K< L< K< L= N?!N?"M>!K< 6:%=<'L< M>!M@"0C6 A:<3 A8>7(HAB9KE*M>"L=!I:H9H9G8H8H8I9J; L= M>!J; I:L= M>!L= L= M>!N?!N?!N?!N?!N?!M>!M> M>!K< K< K< K< J; J; K< K< L< K< L= L= L= L= N?!N?!N>!N?!M=!M>!M>!M>!M>!N?!N?!N?!O@"O@"O@"TF%TE$VF%RB#P@"N?"N?"N?"M>!M>!N?"O?"O?"O?"O@"N?"M>!M>!M>!N?"O@"N>!L!O@"P@"PA"TE$RD$N?"N>"P@"QA#QB#SD$PA"O?"N?"N>"O@"N@"N?"M>!N?"O@"O?"N?"O@"O@"M>!L< N?!L= L< L=!K< I;H9H9H9H9I:H:I:I:I:I:I:H8H8H9H9H9I;I;J;I;H9I;H9H9H8J;L< M>!I;I;I:H9H8H8H9H9H9H9H8H9H9I:H9I:I:I:H9H:H8H8H8H9H8H9H9I:I:I:J; J; H9G8G8H8H8H:H9H8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8H8H8G8G8H8H8G8H8H8H8H8H8H8H9H8H8H9H8I:H9H9H9H9H9H9H9H9H9H9H:I:I:I:I:I:I:I:I:I:J; L< M>!L=!K!N?"N?"P@"TE$VG%TE$VG%\O)[O++8-3HK>R^LbyB^hD^fTg~EVh+?D9JPYkzcwbuk~fyi`rcwpkmewcwlcvj{bp_nbrn{nmovuŅւtRapN_jARY8KP5HK#;;/BGL`mXi|4DK/@E8JNK_fSenJ`jOcmRhtQhsKdpD^hD\eD]fE^iF`iD`g?\dB]fA[b?Y_B\c>Za=X_>Z^8[V9\V6RN8WT6VS4QP4PO0NJ3PL2OK1NK(HC)JE)HE$E@"A=;4=6=6 A;-ME0NI*JD)JD%G@#D;"C="E>"E="G?%IA(LE&IA%H@%JA"I@ F>F=B:C;E=C;D<D;B9B8B: C;@: A: B5A9@7(H?!N>"L=!J; J< J; L!N>!M=!N="N?"O?"M=!K; J; J; J; J; J; J; J; J; J; J; K< K< J; J; I:I: J; J; J; I:I:I:H9H9H9H9H9H8H8H8H8H8H9H8H8H8H8H8H9H9I:I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:I:H9F:#H8H8H9I:I9H8G8G8H8H8H8H8H8H9H9H8H8H8H8H8H9H8H8H8H8H8G8G8G8G8G8H8H8G8H8G8H8G8G8G8H8H8G8G8I:IB.HI@MOIHRRPNASK4SRBN`g?ZcSl~Ri{WmTiHarRjHat=Q[BVbI]lTiWdqG7G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8F9!=<-G8 G?-?:'H8G8G9!AC6H\f\t\pL@&I:"KB3H8H8H8H8H8H8J<$QRLU]aWmLdtLJ@H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8EHA=NP-EH6KRC>-G8G8G8H;$H:#LC2NJ@G8G8H8L@-J@/FMG>JF9NQ/DG:MUOcnVm~azMboCXa8NTBV]L_l]u]q_sirn`z@W`NgvKdoLcqW`#C>!B>"BtsAsp>ja4h^2e[1ef;rwqawMer6PSc~ш̅Ɓxz}ult˄srx~ƀzuqsύؙޣݢݥޤۚ̐xudqlg}hZq_rdwj|ni|j~Wizj}}xtj~d{Sk|c|jy~ҙvn֊ǀ̖ٓыƘ֔֗Օ΍|y~ÎzwtrƊɆNJȅɈ‚ԙؑll~|t|w͇|yhTkzF^eLbfDI7HUMB^b3RO0LJ-IG(EC(CA6OOG\bcxnlw|wvt{kf|ZnRfsPbnPbnK^hIZcEW^N`j[pYm|Zl|+HFG`e>Y[>UY4MN:RV,FF(EB0MK6WT.NI=]Z7XP/OG.OF+NH,NI.MI,NH,LG.KG1MJ=XZJ`VE\N8XY6VU8TT7UT6TR5QN5RML[Dh]1\O)SD$PA#PA#TF%[M(cX.g^1d]1Z^;H]O0QK+OH%IB!B;>7?7=5QE'O@"O@"PA"O@"N>!M>!M>!M>!L= K< K< J; K; K< L< L< L= M>!M> H<"*?2N?"G@&7B/'E;@8!D;A7=5 @9 A9 B9OC&L=!J; I:H8H8H8G8G8H8I:I;K< I:H9L= M>!M>!L= L= M>!L= L= L= L< L< L< L=!J; J; J;I;J; I;K< L= J; I:I;L= O@"PA"N?"N?!M>!N?!L=!M>!M>!N?!M>!M>!L= K< M=!N?!L=!RC#RC$QA#O@"M=!L=!N?!N?"N?"M>!M=!M=!N?"M>!N?"O@"O?"M>!M>!M>!M>!L=!L=!K< L< L=!L=!L!M=!O@"RC#SD$RC#P@"QB#QA#RC#QA#N>"N?"P@"O@"N?"M>!M>!N?"P@"O@"N?"N?"N?"L=!I:K< L= L= M> K< I;I:H9H8I:K< K< K< I;I;I;H9H9H9H9H9H9H9H:I;I:I;H9H:H9H:J< J< I:H8H:H9H8H9H8H8H8H8H8H9H8I:I:J: J; K< I;I:H9H9H8H8H8H8H8H9I:I:J; J; H9H8H8G8H8H8H9H8H8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8H8H8H8H8H8H8H8H8H9I:I:I:H9H9H9H9H8H9H9H9H9H9I:I:I:I:I:I:I:I:J; L!N?"SD$YK']P*YJ'YJ&RVJEXfL_vWnJdjUjs]pJ\n+AFCU^f|kj}xpomttXi{uvlVe{nuk}L[lgzy|vcqw{evvh`tO^l@PV@RY+>BDS_?OZ&6;6ELCT[K\eJ]ePeqPcoOfrMerJbpHbkC]fLcqMdqKcoD`jC`i@\e>[eZd9V`B\h+IF%D@>7>7"D=3RM4TL4QK*JB*KD(IC=4%F?+LI,LH,LH$IA%JB"G>#G> B9@7C;B:E< H? G>G>!H?"G> C:D;C;@8>6A: D= B;!B; B:@7B9 C;"E>$B;-IB`W/VG%N>"O?"O@"N>"K; I: I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 J: J: I8 I8 I8 I8 H9 H9 H9 I: J; I: I: J: J: I9 I: I: I9 I9 I: I: J; J; J; J< J< J< K< J; J: I: J; L=!K< J< J< L=!L=!M=!L=!N>"O?"N>"L+G8H8H8G8G8G8H8H8H8H8H9 H>)LB0V\^QXYI[c-GB4?@2?B6T^LC/KD1KND7KKD[h]s_vbygaxDW_PPEIQG<1KM8RV*GD.LH9XW6WU-NG2TJ.RI,MG,MH+KG3RP1OM1NL2NN4PO:ST9TT4QO3SO9WU4TR6UQAXNR]Fbd>hjFhc8eZ/ZL(PA"O@"O@"QB#UF%_R+eZ/aZ2=UI+NG'JD(LFC;@9$E>>8;3KF,SD$RC$SD$O@"N?!N?!L= L= L= J; J; J; K; K; K< L< L= L> L< IB*-JB>L>+NG C;"C<@8A9?:?8#C=;2EF/N?"J; H9H9G8G8H8H8H8H8H9H9H9H:I:L< K< L< L= L= L= N?!N?!L= L= K< L< K< J; J; K< K; J; J; L< J; I:J;K< L= N?"O@"L= L< M>!L= M>!N?!O@"O@"O@"N?!K< J; K< M>!M>!O@"P@"PA"N?"N?"L!M>!L!M>!N?"N?"N>!N?"N@"N?"L=!L=!L!M>!O@"RB#QA#QA#PA#QA#P@"N>"N?"M>!N?"M>!M>!L=!L=!N?"N?"N?"N?"N>"N?"L= J< J< K< J< J; I;J; I;I;K; L= K< J;J; K< I;I:H:H:I:I:I:H:H9H9H8H8H8H9H:I;I;I:I:I:H8H8H9H8H8G8H8H8H8H8H8H8H9H8H8H8H9I:I:I:H9H9H8H8G8H8I:I:I9H8H8H8H8H8G8G8H8H8H8H8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H9H8H9I:I:I;I;I:H9I:H9H9H9H9H9H9H9H9I:I:I:I:I:I:I:I;J; L=!K< L=!L=!K< J; J; J; J; J; J; L=!QB#WH&WH&UF%WH&WH%2?9BS^PcxFZkRj}HaeShoMbhH]p1EKPao{i~jouZj|kpwnf}]m`qWe|fv9HSN^tu}{h|Vhzn}FTezvi~asN[gBR]@R^N]m?OZ"58[e8V`5T]7UY5TR2QN-LH1TO1QM,JF)GD&FC$C>#C>(GB(EA&C?*EA-FE)EA%D@+ID/NH6TO7UO.JE,KD(HB%G@ >7@8"D<#F?$F@#G?"F?F= D;A9A8?7 E< G> G?#JA&LDD;B:B:B: E>B;?9 A; B; B: B9!C: A9#I@"G?B:$D<(E!N>"N>"J: I8I8H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 J; J; I9 I9 L< J: I8 I8 I8 I8 I8 H9 H9 J: J; J; I: K"N=!M!L< L< L= L= I;H8H8H8H8G8H9MC1MPMWi|RfwH\kD[jKduG_lVmXqSlPhxSizTj|TmYq]vWsJfvKgvGdr=ZaB\dVnZt`{d~eczTPHH8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H<'G8FB2G8G8G8G8G8G8I<%H9"H9"H8 G8I;$H9 EC7H<(G8G;$GY`BYd?RW8A:G8G8G8H8BE;H`oThyWmVmO^cI<&H8H8J; H;"6GGFai_tYpjtnzxʊԓމׅ΀ˆօzwqophiXoYpRk|Rjzb}hlolrvsqdz\pdy`x^qQcs0HJ0KJ3NL,IF6VS0QI*KC0OH-PH)LG*MG.PK1PK*KG/NM/NJ0PK2QO4SO2OL1QM7VV5TRJ]Ie_5\O)YK(`S,aU,\N)TE%O@"O@"PA"PA"QB#TF%ZM(cX.UX7!A;%F@&FB@9"C="B;=6=4RG(RD$QB#SD$RC$QB#N?!K< L= K< H;D:!J; K; J; K< J; J;J; D>'(C:B9>5"C="C<$C=>70LI+HD-KG'FB/JETF&K< I:H9H9H8G8G8H8G8H8H8H8H9I:I:K; K< J; K< L= M>!N?!PA#PA"N?"M>!L< L< L< K; K< L< M= L= L< L= K< K< K< L< L= K< L< L= N?!N?!N?!N?!N?!N?!N?"M>!L=!L=!M>!N?"N?"P@"M>!M>!O@"N?"M>!M>"M>"M>!L=!L"M>!L=!L=!L>!L=!M>!N>!M>!L=!L=!M>!L=!L=!L!O@"N?"O?"N>!O@"N?"O?"O@"O@"P@"O@"N?"L>!M>!O@"N?"M>!M>!L=!K< K< K< K< K< J< I;I:J< J; J; I;I:H:I:J;K< J;H9H9I:I;I:H9H8H:I9G8G8G8H8H8H9H9G8H8H8H8G8H8H8G8G8H8H8H8H8H9H9H9H9H8H8H8H8H9H9H8G8G8G8G8H8I:H9H8H8H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7H8H9H9H9H8H8I:I;I;I;I:H9I:H9H9H9H9H9H9H9H9H9I:I:I:I:H9H9I:J; J< J; J; J< J; J; J; J; J; I:I:K< O@"QB"PA#PA"RC#SD#PB#4@=6%E@#C><6#?<(EB+IE9US0OK7WQ9WS/NH1OK*JE$F?"B:@8!C< B;(ID$G@!G?%I@A9 B<@8 D<"G@%IA!F> F>A8?7>6?8C<$FA%EB&GC$D?"B<?9@9"E='KC$LCD:#B94J>DRDMR;SD$M=!N="M"HE3DE5O@"L= J; L= N>!K< K< J;I:H8H8H8H8G8 G8Z\`ge^wTlSjNg{QhzYsc~ihiinx~{rinjl|slhfxuH8 H8H8H8H8H8H8H8H8H8L@-J=(H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H;$H8 G8G8G8G8G8G8G8G8G8G8G8 H<%EJDG8G8G8G8G;%G8G8G8G8G8G8G8B=,CD8D>,G=)G7G8H8H8H8H8ASTXoZnd{fnc|~q~وӋو֎ڒގ܊ووڄwă~w_y]tPfwWo]tjoz{~zroonyudydvasezUhyRk}:SW:RX]uzק݋s|̉ƊɈɄɄÀ}qyόуńʂ|ɀЁ|}}Lj́~yy~zzqtvrp^rdwZj|Zl~]pmYnPbqXhxZjz_o~[kzTdoL\fUcjuݴʤyĊÁ~}v}v{}qzvxxztvnqupvmrplltorvxvkpsrptz|olf}YqJbl`xn^x`vf|LalUk{RgwThv_q[m~\ph|jpncvbvdycv]oYk{YjyJ^g"?9&D>.FD,BA#>:@X[H^e1KL=UYOeoK`k.FG,DD0KJ/JH.NJ2TM-JF,JB-NE)KE)MH.RL-QJ-OI,PL5UT7WV2PN4SO5VR2OM2QND^[Y`E^V0\O)XI'WH&XI'XJ'VG&PA#P@"O@"TE$YJ'QB#QB#WH&bW-f`44OE*NG?8>7"B<'FA"B< C;JI.SD$QB#O@"O@"PA"M>!I: J; J; F: I; I:I:I:I;I:I:D8$A<@7B9<4=5"B;@8=4<62OL8RR1NM,GEQG*K< I:I9H9H9H9H8G8H8H8H8H8H9I:H9H8H8H:J; J; J; K< N?"PA"L= K< L< L< K< J; K< L< M=!M>!L< L= L= L< L= L= L= L= L= M>!N?"O@"N?!O@"O@"M>!N?"N?!M>!L< L=!M>"N?"N?"M>!N?"O@"N?"N?"N?"N?"N?"M>!M>!M=!M>!K< K!M=!M>!N?"L=!L=!L=!L=!L=!K; K!M>!L=!N?"N?"L=!M>!L=!J; J;K; K; J; J; I;I:I:I;I;J;I:H9I:I;J;H9H9H9I:I:H9H9H8H8H8G7G7G7G7H8H8G7G7G7G7G8G8G8G8G8G8H8H8H8H8H9H8H8H9H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7H9I:H9H8H8H:I:I:I:H9I:H:H9H9H9H8H9H9H9H8H9H8H9H9I:I:H9H9H9I:J; J; J; J; J; J; I:I:I:H9I:J< M>!RC$SD$QB#SD$PA"SG(9GFK`rVi\q`ySkw^r=Q\Whxūmlti}fxkq]n^nSbs_oj|Vcvbs|zni}Yf~KYhf}jmupnDUdIZiTdu"466IOP_iO\e\i{[k{dv`rYm|RhuPgsOesJcnD_i@]fC_gAZd>Zb=Ya:U^>Zd:Y_;Yd9W]2KL4PO0LJ-NI1RN2RN*GC(ID"D@ @;>8<5;3@9 ?9!@;+IF4SO0PJ5UO6TP0NJ2PL4RP*HD#C>>7@8D<'KD%HB&JC+NF#E>A:"C<$H@&H@B:A8@7B:>6=5@:&EB&EA&IC!D>A;A;=6 @:&HC'LC*NF&MD$H?!A:$@7$=4>P>WO/O>"L< I9H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I: J; I: J; J< L*W]caneukqc|[tZudxÃԃւډܓݔ܆wxwq|z|z{Ą{}ǀ·ԍnPE4H8H8H8H9 H8H8H8H8H9 J<&H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9H=(I<'G8G8G8G8G8G8G8G8H?.G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7I@.G9"G8G8I?,8RXTj~h~p|φ֍یПޗ֎̌Бؚ݊ޘޘߔܚߔޔݑחބyqZs^vRh{PfsVm}h~tyz}tlspryrnh}njtw~n˂{tǁĄvzyq|sxɆ|}́{|ÃȂƀ~z{vtllmqtpf{ph}cwi}bu]mar\mSdqGW`\mxYjv]o}M_jCS\DU_DV]Vdpgwgx|ڭ}}Ětuzʼną|tt}{xrmg}d{lrbvoo`tekehqwsgvvjtytroh~bvcxle}iYtF^fMcoNfqUm|TjyH_eAW\L_iI_iBZ_Tfr`sVl{_sdylg{gx_qBY^[n}\m}YjxTepUgs)DA=5*A>3IK A; AFD*O@"O@"M>!N?!M> K< J; J; K< E;"K< J; G;!9:%7<)5<*H; =:$8/<4907/;3!B;#C>"B;;46MNK[^@VS3OHML4L!N?!N?!O@"PA#O@"O@"O@"O@"O@"N?!L=!K< L=!M>!M>!N>!N?"N?"N?"N?"N?"N?"N?"N?"M>!L=!L< K; L"L=!L=!L=!L!N?"J; N>"N?"N?"O@"N?"N?"M>"N?"N?"M>!N?"L=!K; K< K< J; J; I:I:I:H8H9I:J;I;J< I:I;I;I:I:H9H9H9I:H9I:H:H:H9H9H9H8H8H8G7G7G7G7G7H8H8H8G7G7G8H8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7I:I;H9H8H8H9H9H9I:H9H9H9H9H9H9H8H8H8H9H9H9H8H8H8H8H8H9H9H8I: J; J; J; I;J; I:I:I:H9H9I:K< L=!RC#QB#M=!N=!N>"UF%YK)?OP=OZUh_wYq`vL`sSdv|uvvtqlkf{i~j~[k^mUcvM[h7DL4CJQ`t~ǃpzfvVcwWgyBR\Tdw^rJZgllYkctN[gN\kWcr[gv]k{_nbsbtQjwOgrJdoKdo?ZcBZdKblI_jE\f@Zd@Yg=Vc@Zi @9A8&JB%JA%H@%H@$F>B:A:%G@#G?@7A7A8A8@6>6A:#FA'GC&EA&GD&HB=6@; A=!D>-QI,ME+OG#IA@8%@6CQAN_LgoNUL+L*G8G8G8H8J]cJbrg|vƉړޟ⚻ًʙޛٔޕߚߛߘߙߎ||ǃvo^xZsZpbzgpvyytplnqwuȁ‰̅ʀŽΞޜًvkǤݝ۟ۍˆwuvwvvyyNJ׈}Ȍ҅sorrqpopmvrudv^pbvbu[m`r^oRcqDWa6GL7KO6MR?T[CW^2CH@PYCP[T`jixm~\n~^ruߋăssÎwϚtyƒȉȈʂ́~Ɓysne~b{mjf~jlhhy`q]pbvc|kslc}a|dcc|feb~ing~\s[o\wKes@ZaI^fI_gI`eB[]>X[6QR3ML?TW1JK3NM>W[Zm{btcvfx`r]ly[jw8PSBW\VfrQbmQcnL^f3MN >7+BA&ID-E:PA#N?!L= L= J; J; I:H9G: ,QZJ&HAGN8K< H9H9J: I; I:H9H9H9H8H8H9H9H:H9H8H8H8H8H8H8H8H8H8H9H9H9H9I:J; L= K; J; I:I:I:I:I:I:J:I:I:K< L< L< M>!M>!O@"PA"O@"P@"M>!L=!L=!K< K< J; J; L!N?"N?"M>!K< K; J; I:J; K!J; J; I:I:I:I:I:H9H9I:I:I;I;J; I;I;I;I;I;I:H:H:H9H:H9H9H9H9H8H8H8H8G8G7G7G7G7G7G7G8G7G7G8H8G8G8G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7H9H9H8H8H8H8H9H9H9H9H9H9H8H8H8H8H8H8H9H9H8H8H8G8G8H8H8H8H8H9I:J; I:I:I:H9H8H9H9H9I:J; J; M>!L=!K< L< N>"SD$[N)b\;GZh6IRWk[qPfvNcxoՉ֌”Ӈpvudwg}]pXh}KYg^nQ^o=KX1?EXh}l}y}~vj|[jWhyCPZ]mmpi~EU`dt[j|[hz^l~]k}_m_n^nVizLepA[d?ZbH`jCZbCZcG\fK`m@[b@Zb:U_(JB&IA*OF"G>B9C;$FA#HB?5C:E;A8@6>6!B>)IE!C> B<&FB(HE'GB A<$CA(HE*LH*IB,JB%HAB:>6%>4?N?WT6L=!J: H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I9 H9 I9 I9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 I9 I9 I9 I9 I9 I8I8I8I8I: I: J; I: I: J; J: J: J: J: K; J: I9 J: J; KVZ:QVH^iOfvWp~Njs=[ZF_dE[d/JH3NN.OL(NE)LD.QI/QH2VL0TJ1YQ-WO)OG(MF)OG(OE*KF,NJ4SO3UO3SQ/UL.SK^fEf\0aU,]P)\P)ZL(VG&SD$RC$PA"N?!N?!N?!N?!N?"O@"P@"[N(cX.`iJHaU)LF?7%D<1L@2J:2F4NQ7PD'N?!N?!L= L< K< J;I:B:#":/91<4?7B: B;?8$F? D=#C=+GD#E>;TKJ^\(E@;39//E8DC).>1N>!JF+CC,L>#I:I:H:J: J; I:I:H9H9H9H9H8H8H9H9H8H8H8H8H8H8H8H8H8G8G8H8H8H8I9K< J;I:I:I:H:J; K< J;J;H9I:J;I:J; K< L= N?!O@"N?"N?"M>!K< J; J; J; K; K< L< M>!J; M>!N?"N>!M>"N?"M>!M>!O@"N?"N?"M=!K< L=!L=!K< L< K< M>!J; I:I; I:I:J; K< L!I;K< N?"N@"N?"N?"N?"N?"N?"O@"N?"N?"N?"K< J; J; I; I:I:I:H9H9H9I:I;I:I:I:I:I:I:I:I:I:I:H9H8H8H8H9H8H8G8G8G8G7G7G7G7G7G7G8H9G8H9H9G8G8G8G8G8G8G8G8G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8G8G8H8H8I:I:I:I:H9H9H8H8H9H8H9I:J; K"XJ'XJ'WL+?QW9LV/CJZb9U[6TV7WV6WS0QM-MJ*HF'DA'D@>:>9"@<>;;7=9>:(FD/PK/NK*ID4TO-KF,KF+IE$B=$C<%E>!B:#E>&HB*KD,MG)JE!F=&G@$G@C<"E?<4?5B:@8#B<'E?%GC"D?>8>8@:"B>(EC%C@)ID+MF&IB#A: @:A8"B98D3ED,MG+I9H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 I9 I9 H9 H9 I9 I8 I8I9 I9 I: I: I: I9 I: J: J; K; J: J; J: I9 J: J: J: L!M=!LWZZNI=H:#G8G8G8G8G8G8JTWRe{j}ئ᛽قȕݖޡߌҘޏ֐ۄ}lkaw]uf~f}_x]u^xqvvlpčњؼ几ƕݑۇ؏ӋЕםۜ׫ީٛҕզᐣț՝ؑˏ̗֔՛ۋ{َ͓։͂yxuuss{Ƅ|xwosicxg|]sTgzvupwbxTix`yXpIdl=\`*PJ*JF%DA-IJ#?>:6&B@0JLM`k_rZldvrqh|Б|kvts~}jkmexh|oz|stlnnmsĂxsxtj~g~`vVkQi|ev`r]saudxatXjRg~Zsc}Ol}GcpB\g>X`B[fH_nC\hB]jHaq@YdJboVpXpSlH_i@Y^0ML.MK.KK0OM/SL5UR.MH-MH(FC(FD1ON,JE7LMT?I]`(JD@8FVFUS5NN:HH7CI7OF*F=#C=%G:!J; J; J; J; J; I:H9I9H9H:I:H9H9H9H9H8H9H9H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H9J;J;I:I:J; I;I:I:H9H8H8H9I:I:L< N?!N?"M>!M>!M=!J; J; J; J; K< J; J; K< K< L=!M>!N?"N?"N?!K!L=!L!O@"O?"N?"N?"O@"O@"O@"N?"N?"M=!M>!J; I:J: I:I:H9H8H8H8H8H8H9H:H9H9I:H9H9H9H9I:H9H8G8H8H8H8G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H9H9I:I:I:H9H8H8H8H8H8H9I:I;J< K< K< K;:5!A==9!@<=8!@;>9;7.LG)HC$D=,KF0RI-OG'FA!@;&GA(JC B; C<"F?C<&IC%KC&GA%JC%GAA;"D>?9 A;$E?"D>)F@&C= B<@;>9=8=8!@<(FC/NI"B=)LF&JC!A:>8+FX`?XaAYfY[@W\4OR#C>%A>&C@1LK1JI/II/KJ9TU3SQ3RO.QJ*KF/OG.UJ-TJ.PI/PJ1PI+KF-OG,PH2UP/PH+NE*ME'JB"F<%J@(NF9\Zk|phhPhfJhdCf_:]R,PA"N>!N?!O@"QB#PA"O@"VG%bV-`T+XN+V]9LY;[Y3b[1\N)RC#O@"N?"<9$J; J;I:I:3=,$A6<4>4:H:2E49F1QJ*@N92I%J; J;J;L= J; I; J!N?!N?!N?"M>!L=!K< J; J; L=!M>!L!M>"K< M=!M>!N?"M>!L=!L=!M=!K< K< I: H9H8H9H9H8H8H8H8H8H8H8H9H9H9H9H8H8I:H9H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G8H8H8H8G7G7G7H8H8H8H8H8G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H9H9I:H9H8H8H8H8H8H8H9H9I:K< N?"M>!L=!N?!O@"O@"TE$RD&RI2LC0L< J=$G?)YhpWjuPeu]pK]nqzvʑrznlfzYjRcxJ[mFWe8HQER^?NX%:=';?0CH;KS:JRYl}[k~P`pVg~mevfwXgyh{hzj~eubrap_n]o\n]mZk}\k~YhxTfvWi{TgvUi}PewMdtQhyMbqI^j>W^4RR4PN4RN5TR/OL/MJ,KG)HC"C>#D>$E@@;:58383=7-MF'FA-OG/SK*NE$F?"D=%H@)JD D=D= F@!F@"F@!F?!F@"GAA: C=C=%EC%DC#EB"D?!@9>8;5;5"C?(C?(GE@;*IE'HB$F@!D>$F?0F7:G4KL0K; H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 H9 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 H9 H8 I8 I9 I9 I9 I9 I: J; J: I9I8I9I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8LB/Xbm]qjc\q^r]uUgRfxulyˆ܃ڀ~uwڈ~ۅ܀{|zvֈۋݎތݎޚڥߣ߫TF'\UDRI9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H:"KY`jϟ✼❽ᘷޒޔޟ᜼ߗ܆fssnvo׃sf}avf}g~f{g~ezid}jqsrzsywx|Ć˒َʓПܞؐʝԍ׌К։ÆxȀ͎Иըܝڏː͍tqnytqrzzmlpqknzppyatWixQfrF\dH^hXiz_xWr[{Mow6ZW(JE%D@!D?+IH0JH0KJ/KLUlsnbsdtaosxweuj}cv`odyyyxj~ilnspjmromttywzjjomc}hcZu^wazZnXpWo\v\v]vWqVoC_lFapC[f=W]@Y`"B=(C@%@<%B=)FC$C>$B=%B=$B>4RP.SL3YO/QJ/QI2TK0TL.OH/OJ4UO1RI0QH4UO1SJ-OF.QI-QH&JA%H@%I@+OG(OFQqrspntfor[kjOd]<[N)QB#N?!N?"O@"O@"QB#VG%\O)ZL(WH&VH&VG&UF%TF%RC#M> K< J; I9I'I:I:I:H9I:I:I: J; G: I; I:H9H9H9H9H9H9H9I9I:I:H9H9H:H9H8H8H8H8H8H8H8G8G8G8G8G8H8H8G8G8H8H8H9H8H8H8H8H9I:I:I:H9I:H9I:I:J; L= M>!N?"O@"N>"L=!L!N>"M>!L=!L=!K; K; K"N=!M=!N>"M=!N="N?"L!M>!L"M="N>"K< J;"K>$PM==NTJ^oP`qWi{py{|qos{pwlf~]rJ\nQbtJZj?O[6GM*>B0BH7GO6GML\iP`nTeyi~oct\nBS\O^ml~h|eudt_o^l_n_pbrapbq]lTduTfwTfwXjPg}LduA]h?[dZ\:WX9XW5US4RP0QN*LG(JF(HE+IF(FB<772747294&F?+JF,QH+RH)LC!C> D=C<&HB&JE@9D=@9"E@"D@C= D>@8!E?B<#C@'FD!B>B<;4<7>9!@=(GE(FC(GD(HC)D>A;E?B;HN3N?"N?"QC%J: H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 I9 I9 H9 H9 H9 I9 I9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 H8 H8I8H8I8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8H8I; QJ>Zak]pVgZmXmWk[nN`tex_rbw}‡ى܉ށzۃۅ}܁{{z~{πϊ݌݋ݍޏޑޏސޘߢ㚱Ԛְ߭ݐmwtI: H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8LJATip|❼ᘶ᜼ᘷߎ݈ىڌݒަߜ؎ÜziԐڟ߃wmkjczf{e{jikjotyzi~lŅ~|Šɗԟ܎ĖψɪߑҕՒϘՎ͍ςÄƔդݥޡۑ͎uootz}pimvsmwwr˃|h~OcoczXpPitWn|f~hc~\yOo{8]_+OJ%GB&ID9RU,HF$A@&B@hzYj{m~cuu|cyf}c{ezw|zjji|kmlqsmgb}iyxsspkjmnkj`v[s_yw{[sPi~OfzYqSlNi}B]j?Xd6PWXn{e{KcpC^g7RU0JL/GI5QR8RV<9 =9"A<5NP:TX.HI(A@ 94:3<4929291<4<4>7"B<$D>%C>&B>%B=#B<"@;>8=7+JD1QL0TN,PJ)MF+NI-PH3VO-QH1SJ7WN6TL5UK0SI2SI2SH0RI,PG1QM+MF%J@(ND+RH/SLvztktz^hdFd[5_U3UG&PA#O@"N?!O@"RC#QB#O?"O@"IC*@C/M?!L= L< J; I9J: K< NA"GD(:H7-MH&F;@M86B.PA#@>'!=2;1#@41A1#@5C?'L< L< 0>,3?+J; I:I:H9H9H9H9H:J; H9I:I:H9H8H9H9I9H8H8H8H9H9H9H9H9H8H9H8H8H8H8H8H8H8H8H8G8G8H8H8H8G8G8G8G8H8G8H8H8H8H8H8H8G8G8H8H8H9I:I:K< M>!N?"O@"L=!J; J; K< L!M>!M>!L=!L!KOXSgzzsqopoypmmqiZpI\lRcwTdyL\nET`BQ\@R\0BH9HP@R]fzjast_r)<@Xhyjni|iyevbrbq`peucrbq[i~TdvSduWi|XkC]gH`oC\gY]A]a=Z^A\a8"?;*EC95507362:5&HA,MG+NE+RH'IAB;B;D= B<(KD?8!C=>8B; D?"F@A:B; B<@;!B=#C@?:<6=9>9%EA$EB ?;$C@"B>"B>>:!>6=63G:VH'K; I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9!G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8H8UPEbli{aq\niiXm_tYo]px}˄ӓ݆ڈ܋ޅ݂݂݀݀y܀||ׇۊ݊ݍދ݇݌ݏދݏގݖޭޚޕݖޏދpwqTK4H7H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9 UfvVi_s|ǡ቟śܡ᛻ᗵᠿ⎫ߒߖߏߐߒ㘹Бsk˚ܪ߄}opnmh}bvcxmlgvł}vlhzuŠś҈ŠʤۥܑɘύÍǕӈ}{ёщƎˇƈ{vz{}ypmxh|mexpvqś֍rQcpd|mtskgskb~TtDis9^[,PL#HB"D>#@?$A@%@?2LNfx^o_oo}k}zumcyg~ytst|tmuvttukgmilorshnpha{]v\ug}b|czRi{SlMexGarLfvD\l@XfF_kE\gQgwLdrT\=RX;PS1LM.LJ"A<(GC4NP,JI<7!<7<6"B;$C='FA$C> @9@8?7 @9%F?$F@$D>#C<+IE.LH,KG+LF2TN4YQ2YN3XQ-QJ-RK/VL0XK+QH4YP6XO:[T3UK3WN6ZQ8\U6YR4SOMmu)ND'NC(NC)PF.VLYtzmxqyeb`MecNe`CaV.^R+VG&PA#O@"O@"M>!M>!OA$!L< I9H9K; L?"$@6!@4K>"J; E;"J;J:I:I:I:H9H8H9H8I:H9H8H9I:H:F9 I9H9H8H8H8H8H8G8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8G8H8H8G8G8G8H8H8H8H9H8H8G8G8H9I9I:J; J; K; K!M=!L=!L"M"M>!L=!J; I:I:I:I:I:J; J; J; J; J; K; K< J; J; J; K!O?"K; L9?: A< A<A<$D@%DA'GC%DA"A= ?:<8;5'D@FP8VK+L< I9H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 H9 H9 H8 H8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8 99(F9"H9 G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H9UQFfufx`qeuk|qtjd|Uge|{уֈ}Ѓׅ܃|zzyzӀՊ܍݆݈܉݄݊݅܌݋ތޑސޙޤߞޔݕޖߛߔޗޢ}[ZXWTPdl{[\aRJ@H9!H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H:#MD6QRUTW_TV\MD7F7G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8LJ>Qe{YmWg`qj~wĜ۠✺ᚶ៽㇞prƘܞܤӂ΀xtocy`sbuezjntyƔԁnrАȓ×̊Ĝء؏ÙΡҕƖʐˀɆLjĕώʆ͑ȁurklys|}wvvuȜّЂi^r_so{~fyn^ySqOmzHkuBgn2ZY*SJ&LE#A> =:%EB4KNrl}cun{q}jh}i}h|tksm|qj}i~~vrosjlroqjilimdebc_yWoVoWnXo_tcxKdsB\kB\j:S\=V`F\j@X`=V]D]g;UW7SSTY!?:$A>#?; >:=7$A;!A;@9"C;!C;!B< C<#D>"E>#E?"E?#F?$E@+JF1OL4QO4RN0VM-VJ0UK7\T?aa4YT6ZX;^]5^S4[O4XO4VP9[W8\V6XR9[Y7\U7[V0RL,QG,RJ:\^*RH)PF0UK4VS~upzode\fdLfaBe[2g^4aV.XJ'RC$PA"M>!L< M>!N?!O@"N@"M>!K< H9I9C<#F>$F=#5H8FS<>RF%F>=5:1>>'I< .>-CA(J; I;H9H8H8H8H8H8G8G8H8H8J;I;H:H9I:I9H9H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H9G8G8G8G8G8G8H8G8H8H8H8H8H9H8H8H8G8G8G8H9H9I:J; J; I:J; J; J; K; J; L=!L!MU[>W]F^f@\aA\aA[_:VX9TT5PP,HF)FC'DB#@=<7-HF :683:6!=9+KE3QM+ID"B:"A9)HD @: ?7?8@8=5=5'HA&IBD>%FB(IE"D>!B<"C>$D@%C@'DB*GE#C>'HD%EB#B?(GD*IE >9:6 :67G8MI,N>"J:I8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 H8 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 M?#I:!H9 H9 H9 H9 H9 H9 H8H8H8H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8G9#H9!H8 H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H9[VFbthxptvumm_vZlg|ontrs~Ã҄ڊ܂ڀ}{ρԁՋމ݈݆݇݇܇݆܉݊ݍ܍ݏގݓޘޢߨ߰ߥߙݛޝޕݘߘޕޒݚߦމ܁ق{{Ӏ`ciSMEJ;$H8H8H8G8G8G8G8G8G8G8G8G8G8H:#Y[hcrj}t՞ߓ{F7G8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8R]cYna|uw`szz™ޚᕴ⛸ӑow|ĀNJВ֘܍Հwz{rezhnortoքÕҘ́ƓǍљڜ܌ĢЛˑÊώƉĚԝ֙ΎňwpǓъɄwzv͕Ұ䘴ӁtVk{YpoӃblb{d~VrDfnHhoFho9]_5]Z1]Z*TM&LE%GB.IIJ]dVitn~rfzwwxvpovxwtsminrfghikkj[v^z\ue~`}hgc\w]w\x\xSoNkA]oJbrRhwPivNgtH`nJamG`lH`jD^g8RY6RV5OP6QQ:UW>WZ6OR4LO5OO0JI+GE0LK0LL3ON4OP.HI,HF)ED)HE-MH+JF9RT$C?!?<4NM!A<>8>8!BA9#C<&EA.JE/PK4VO3WN7ZQ7YU/SM0UPBcgVtDed@a`9^X5[U4[R7[U<_Z:\U4ZR3VO-OI,QI+RI.RK(OF,RH0TK0TLRnmk~nvlccXfa@f_!M>!N?!N?!M>!K< K< J; I; F=#J; J;IB&8F23I8<3;20?/K< K; J;I:H:H8H8H8G8H8H8G8G8G8G8H9I9J;I;H9I:I:I:I9H8H8H8H9H8H8G8G8G8H8H8H8G8G8G8G8H8H8H8H9H9H9H9H9H8G8G8G8G8G8G8H8H8G8G8G8H8H9H8H8G8G8G8G8H8H9I:J; I; I:I:I:J; I:J; L"N>"J: I: I: J< JMLP^pP]jwc{ԜۍʈvnxdwmjiUfvYj|f|\paunstt~zk}py|ocxztjzl~j{gwfwgwdtbq^nXhxTdsNcq@ZaH`hOdoKakD[a9505072+LE)JD$C=<5!?8&A<;4:2<4<6;390>6B< E?%HB&HB!D> C= A<"B>#A>'DB2PM,NI#FBB=$C@(GD$B>=8">;KS8QD%J: I8I8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 OC'H9 H9 H9 H9 H9 H9 H9 H9 H8H8H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8TF%ijajzsvzti}Yl\lduh}pux~˂ρ~~̈ۂՀӂІ،݊ބ܅܄݆݅݉݌݌ݍއݎݐސޏސݛߚޢޥߦߨߧޥߕ܈۔ݛޔݔޘߔޑݑݓݒޏ݉څى܏ݔޓސeyH8H8G8G8G8G8G8G8G8G8G8G8H:!hwpФ~muzQG7H8!I9#G6G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8J=$^skpХᖴݍӅʇ˔ۏݎފ܌ݐߔ⟾៽➼ts„ɁȂǍҤޕډՇlz|f~mpnt|Ɛә֣Ӆ~М|ƐőȐЙ͓ۗƕŔÑÎϞըܠ֭߱䥿ߙӖЧ؎ˌ̝̄܈Ōȉċxv~~Ώg}m]xYrTpyQnuHggCecUV#@>.JJ.JI!@;$C? >: A:=5?8 @<'EB%CA"A>"@= ?; B<@:B<B;?8@8?7&E?%D=$D="B< ?9'GA2XP9`W6\S6VT-NH+LG8WXAabDdf@b`6\V6ZS8^W:_[7]W8]X4YS-NI)NF0SP.RM.QM4TT,QK1UN2TO+QJMkin|wggXecNgbCf`>e[2cX.dY1aU,ZL'TF%PA#N?!O@"O@"O@"L= J: I: I:I:H9H9E;!:D.B8 B9?8HC)J; K< J;H9H8G8G8G8G8G8G8G8G8G8H9H9I9J; J; H9H9I:I:H:H8H8H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8H8H8H9H9H9H9H8G8G8G8G8G8G8G8H8H8G8G8G8G8H8G8G8G8G8G8H8H9H9I:H9H9I:I:I;I:J;L#LV]Wgz`oեᖶk~mtv^p[mTgzL_j[n\nPbsPbtg{mg}s|xw~yo|Ɂvqsmvsl~buYj|Zj~\lKajC\cB\`D^dE`g?Y_8RW;V\:X]/PQ+HF*IG#?<$A>!=: <8:660>8<73,61 ?9$H@<5818181!>8 >7=7=7;48080@8@9@:!B<#D?#D?#A="@=-JI,KG-LI-NK%HC#E@$E@!@<>:73?J7XJ(L< I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8M>!`ZBoyvnljz`m_ldvnt{Ȇچۄ܅݆܃׆ڇɅۆ݅݇މ݃܀܃݊ݖސݍ݋܌ݍ݌ތݍݍݗޝޙޚޝޛݝޞޚݔ܌ۉ۝ޗݓސޏދݏޑބ܃܌ݏ݌ړޕޏݒއH9 G8G8G8G8G8G8G8G8G8G8G8]\Tݓާޟ`^XG7G6G6G7G7G7G8G8G8G8G8G8G8G8H9J<"L?%J=$K<"H9 G8G8G8G8G8H8W[WXmń×٣ߚ٦ڊؓ۔ތݎގߖ᝾㟼⟽ួ~zɗҐӃɤ߄̀ƍzārԊ~llkqt{“Е҆x̜ϐġ֍DžҖՠږ̒ĔОԩ۪߱ު㡻ܞע؏˓ΙԚוԃzŋʈnv~uu֤}gYsa{_zSntRnv:`a0ZU+WP)SL+PG'JA&F@ =8Kbdp^p^pmpnykoh|atdzolz}mmqnhbeokne~f}`rgluthfPyvf`RmMgw?\b:X\9VZ:"B<?7 B;%F@%EB0JL.HH'DB$B>'DA$E@A:A:?7@8@8A9@9@9>6 @9 @:!A9+NE2YO,OG.OH:ZW4RO*JE.OJ2SP/SO,OI.RK2YR9]W5ZT9_[2XQ-PI.RL1TP-QJ*OH+OH3TS5USDbaMih<[XPghioeccUfaBgaX_Ya/MP/MM)HF'DB83 =99482 4+6193 ?9<6$F?$D<9191=5<5;4>7<58192:2<4D=@9@:#C=$D>$D?,LH+JG)HE&GC*KG+NJ$HC%FC$E@%GA>9!:4]U/PA#J; I8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8G8H8H9QB#huvڂyj{ap`m_newvyw{yφքۄ݅ՂʄσΆۆ܁݈݄݃݇݉݊ݔݒݒ݉ۈ܏ݍ݊݌ݐݞߡߝߜޛޚݘݔܓܑ܌ۍۓܙޒގ݇܅܈܇܅܇܋ݒސݐޒސݑޓrL>'F6F7G8G8G8G8G8G8G8G8PD0ܟ➼ߙߞᘲńψwjpsXQCF7G7G8G8G8G8G8L?'NRCLXOK][Wd^R\KZX;QE*NB)M?%J;"H9XSFjmµᆜŬ޳䝽ޗޙ᛼᝽܊̩ݤ~—؃pIfsǂʏ؎׊tllnts{–לَ˃ÁΑǛԗԆ~јҜҖȗҐőाݥާᎬВڡᓵۏԡޢܜy†}sn{mqc٦rc}]xe]xUpzVuBfe;`]2ZW0XU0VO.PF'KC ;7'EA-KJHaf[n~jh|rcxk`udybv^rlnhx}zhfkoegk^wc|^{e~\vSk^v\x\x[vYwYsLduDaj7TY5RV8SZ:V\C]b@Y_1KO*FG?X\@X]>W]>X^>*CB5JM5LN/II'DC*IG.LK-LJ&B?/JH3NL'B?#>;*EC&I@*OH+KH+GF.KJ-LJ'HE#E@#F@"E?A< A;$E>"D=!C<#D>"C;@9A: A:"@9"B:%E=0TK)KC"D<*KE4VR6WU/QL*NG(KD"D<%F@&G?(LE.TM2ZQ;D0K< I9H8H8G8G8G8G8G8G8G8G8G8G8H8H8H9H9H8H9H9H:H9H8I9H8H8H8H8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9H9H9J; J: J; I:I:J; K< J; J; J; I;I;I:I:I:H9I9I9I:I9I9I9I9J: J: J: J; K; L!M=!WL0{h|ew^oGZbAS\EX`RfwThyZlVg{Tfxng{j}p˕Ѐnlur~uu}Ȁ||qcyXmUizVk{ResJ]iF[c@V]>UZF]dD^e:UY?]e>Za-LL*IH-LJ#C?95834.5/6/846271%GA$H@"A:=6<5@:!A:=6>8;5:4>7=7>7$F??8>8%FA*MG0QM0PM.NI.OK(LG%IB'LG"D?<8?:@;:6?I6YK'N>"I; H9 H8 H8 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H9J; J;H9I:SD#iynof{`rXhi{{xxvorxƃʄ΅Іބ؈ׇ؎ی܉܈݊݊ݐސ݊ݒ݊܍܌܌܊܎ݔތݐݚߞߥߣߛޘݖݔܐێۍۋې܉۔ݛޔݔސݑݓޓސݐݓޕސݏݔޕޖޗޓمq\\^I;%G8G8G8G8G8G7ߠߪᗱޖޟptl^XGG8H8VZU=8!>9:TRz^q~~g|g~rf}ezYo`whg{_sXgtg]u_ydx_}_{[fhPhyWoVpRjzUis]wYrbXtSkRjvIewG]gHaj6SV:VZ?[d9RZWlwShrBX^>TX0HL-FG4MQ@%>?*GF.JI;QZ(HF/KL+GF7OQ)CB$@='BAMbd/IH%E?(KC,RG0OM4OO3NN/MJ+IF*KG'IE)JF&HD&GB%E@'FB(FB#C?)IF(GC&GA$D?B;@8 @8?7)LF-SM#IA,SN0XS5YY0RQ2UR,MH%F@ A: @9 B:$F>+NG(ME1TQ)PH)NE+KE&J@$H?Opd5RF5QP3VSEaeXrxwkpdfcJbW/_T,_T+`T,[M(QB#O@"N?!L= K< L< K< I:H9H8H9H8H8H8H9I<"DA*CF1K; I:H9H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H9H8H8H8I:H9H9H9H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8H8H9I:H9H9I:I:J; J; J; J; I;I:H:H:I:I:I:I:I:I:I:I9J:J:J: J; J; K; L< K< K; K; J: J;I;J; J; K< J; I:I:I:I:I:J; I:H9I:I:I:H9H9H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I9 M>!N?"L=!J< WO!uxpg{[l^qTft8PS9SWCZbRftK\iK_jcucuduq{wfydwmoVfyQ_octztkhdy\qThzQfvPdsK`lBV]AV\@V]=SX;SV:TX@\a9W[1PQ0NP-KK%EB >; :594:6:5:6=8;6?:&JD"F>#E="F>>7A;?7;4>7>7<6$D=(C;!A9!D<#@<%DA*IG C>$FB&GC'F@%G?"D>!E?!E?@<8392>9<8HK2QB#J; I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H9K< J< J;L< UG'h{_n_pgzgycsll|o}rqwz}˂Ёхڊވ݌ݍߍ݉܌ܕݛߔޖޗޑގݎ܏܎܍܏ݔޖސݖޜߣߨߦߠߚޖݓ܏یۋۉۉۈ۔ܞߛޑޏޑޒސޏ݋ݓޖޖޑݕޔޙޖޗޏݎݐސދwNA+G8G8G8_VDݭ⡾ߠ⡿䡹m]x8PR/HF2JF?X\p敶ج⛴ۏԐإߪ⛵ؕۏؔݙ㔮ȦۘΝӮ~àިᕼ܅}nmh~svttvŒ˒Ćǀw~à٢ژˎq‘姾غ核ٚ֗ԘԚד֓ۓސیڏܠڙ͑ȃtrǚч~tuk{edTs[y]yXvLmsIghJghJfeDb_=_^1VQ,SL/SN&HB*HE%D>"A:8QMTdrcvf\sUdi^saz`y{wyggi\v[uSflTmcvd}VqPkKeyTnZo_wNeyPi|IcrOfrVXDLTLG`l^v}RjxC\f=ZbRm{@Y_~ms[mt;QW-BG9NT>S[BXa6JO,AF3KQ8OV4LQ)AB6NR.IG.GJ,GI)GG&AA/II+EC*DB4ON*GD9QN+NF.UL0TM.LI*IF2ON+FF0NL,LI&JE)LG&HC'FA%E@(FC%D@"D=!D= B:B9 B;#D>&F?$HA-SK)PH2YR.WN*UL'QH-SO4XX/TQ*NI$HB#G@!D<#D=(KC,MI-LH"F>!F="E="E="F=$IA)NE/UM3XQ3YR^{rvnueecP^R-WH&XI'\P)[M(SD$O@"M>!L< K< M>!K< I:I:H9H:H9H8H8H8J: I:D=%I9H8H8G8G8G8G8G8G8G8G8H8G8G8H8H9H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9H9H9H:I:J; J; I:J; J; I:H9H9H9I:H:H9H9I:I:I:I:J: J:J; J; J; J; J; J: J: I9J:I:I;J; J; J; J; J; I;I:I:I:J; J; I:H9H9H9I:H9H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I9 L=!N?"L=!I: OA%Y`iZjgysUF$O?"L=!L=![Q;{rexj}bsKak=VZ8SV7RSFZd:MT>R[3ELUgxdvlktasj~ztpfwfybqbug~f}f~^uYmThxSfuRhyOapObnGZbBV]@TZ=RY;UZ4MP<;7<795<8:5!@=$HC+PL+SN)MH!C:*LH B=!>82J@@9!C=8RF:OB9PBP]J5QH8K>AE2@E7?D4&B<(EC!A>@9=6?:?9A='HE!C?<6A=&FDBH4N?"I: I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8I:I:I;J< K< L= QB#dgak}qqqprxtvxzx̀ڃ؂ׅډ݈މ݋ݎ܋܏ݎܔݐݑݍܐݓܘݕݑܕݖޚޓݔޝߜߣߥߥޝޘޗݔ܎ۉۃڂځڊۛޠߠߑޔގތތ݋ތޒޕޏݕޓޔޜߕޖޘߦߥmneTI3psmִ៼ަޥߨߘh2IJHdm|Şδߞץ۩ސؖڜݕݫ✹ߛܐɤ֙ʛȨݤᑶڍvlitppwxsˁsl~{v||tҟڗΖxjzΑĹݹ࠵ң؛ڔטՒԌЏדّی؈גܚΧۙwny̚ΐ{vv[znWtTqyWs|[yRtzXxXt{EffFfeKigDc`A`]8ZT1TO4WT.SN)MG*LF*KG&D?*HC5PLI`^zrezg~ulgciayfc~WrSoRlcud~XqQjQh~Rl\tMexAZgJbqHarTmyYr|7UXA[d^r|dxTmzl{xnPalBU`ZjxNco?S\1GN1MN4PS1GL4IN:SW2LP$@@ ;;#<<+HF@XZ)EB1KK"A;%D>'PE&MF(JD&IB5QO2MM-JI)IF+NJ+MH'ID(GD'GC+IF C>#HA"I@!D> B;@8!C;!A:$E>.SL/UN/QM-UK-UK)RG*SI3US4RR3TS/TO(NF&IA%G?*NH.OK'ICB:@8@8@7>6A9!F?*PJ?a[Jjio}xrmtfhfQ\P+UF%SD$TE%UF%TE%PA"O@"N?!N?"N?"J;H:H9H8H8H9H9H9H8G9 ;;'C=%H9H8H8G8G8G8G8G8H8G8G8H8H8H8H9I:H9H8H8H9H9H8H9H9H9H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8H8H9I:I;I:J; J; J; I;I:I:I:I:H9H9I:I:I:I9H:J; J; I:I:J; J; J; J; J; I:I;J; I:I9I9I9I9I8I9J: K< J; I;J; I;J; J; J; H9H9H:H9H8H9H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7H8G7G7G8G8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 J; K< J; I: K!E<$JB)F"?F4;6:3<4DO54H6A=%FC-LI#D?!C?%A=4D5P@"I: I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8 H8H8H8H8H8H8H8G8H8H9I;I:I:J;M>!M>!TF$mutrrruz{yyz|{׀ق݄؊ڀՂ؈݊ی܏܎ۏ܏ܒܚޙݚݖݑݐݐݑݔޔݘޗޜޘޑܕݖݔݔݐ܈ۀ|~ڌۢߦߚߒޅ݈݁ތޏސޓߙߖޗޔޕޔޔޚޣ܇֔ܚޛޤޢߤߣߠޚg̞ߜޞԯީ♷ؓڞޛݒܕߓޒނԊԬ᝽ᚼ᩿ڟЖ”}ypmtijqzy˔ϕ͊rdsv~nȞ֖Кsw͒ة٢ϫ٢њؔԌЋ͍ьԌ֋ԉ֦ࡸա׍t||·Ɂ}uZk\z^|Yv}\y]|^ieRrxLnqJmqDeeCa_<]Y9YR5WQ.TM.UP/TN*MF)EB)HD)JF=YUZspb{xmfykpg~\zcZySmjsf_yVnn`yc}XlLatNdyUlMewI`of|Tm~WnzGbo>ZbB\dD]bRjtL`j@X\bsw`pssatuF]ZThggwx`rzUgtRdr?R]>R]6KS1KN.JM,BG7JN]pv2MQ0OO$?A66-HI5MP7RQ">9#C< D?$GA$IB&HD,KI/NM&EA$C?)HE+KH*LH)HE,IF-HG&EB"IA!G@E= C<D;B9 B9@8#C:(JB.QH/SL&PE(SF)OD.RJ2PN-OK,QL2SQ.RM+PH3SQ7TT&IC C;=5>6 B:!@7<5 F= F>'JD*NH8VQ-NI;\YjSidjm\d[6WH&SE$QB#QB#QB#P@"PA"O@"N?!N?"L< H9H8H8H9H8H8H8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8G8H8H9H9I9H9H9H8H9H9H9H9H9H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8H8H9H9H9I:I:I; I:J; H:I:I: J; J: J; L=!L= J< J; J; I:I:I:I:I:I:I;J; I:H9H9H9I:I9I9I9I9I9I9I9I9J; I:I:I:I:I:I:I:I:H9H9H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 I9 I: J; RC&coz^not[VHSD$WI'ZL(b\DqyZm}YmVm}/AF?PXSbsP`o\l[ji}mezdwlbug|tlax\o^tgb|[pPclGY`:OS5LN3JL6OP5PU6QU7V[5QU5QT4QT+HI/OP0QR=]c:YZ9TJ/MGCVCR\?V^>HW?0F@%D?BWQ8UK%G>"H?#G>&;596?J<^gPa`E]P+QB#M>!K< J; I: I9 I: N?"?G2@J6RG(SE%\O*BO8"A>.LJ+JH(EB&A>&@;PB$J; H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H9H9H9H9L= UG%eaOlnvy}z}ǃ΀сЂՅ݅݇܋ً݃~}̂ӁЉٌ܎ېܗݜݙݘݚޔސ݉ڐތܐޓޒݐ݋܊ܐݓݓݏݑ܋ۂچۚިߖߋޅ݄݋ތޏޑޔߚߚߗޕޓޕޒޗߧߞߟߡޣߞޢޢߛޝߜ߈ȓЖܢfeTꟿް㞿ݓӋԌՏו݊~y҅ۉ݈܎ݎޒߙߖߒޖߝܝjxOcb6ZO*TE%XJ*҈spvvny…ŘЋzi{fwl{ty̕ÈʐşɘɕՍӐҒАʇȌ֚ܲޖʚԐ̋ǎΏ΋LjLjȄsbVb^{Zw|`~uhtudTvNqxHlnFeeEff@c`:[U8\Y2XS3ZT.XQ)LF(FB+LG,MH&HB%E?0PJxyVpl6PNctxnXsUmeoRnXn\tb|\v^v^s`sK_qNdvWoOfwC[hH`mKcoRlzTn|A^i:Xa@\c@\bE_hnuSflTfjUgiObbRffu;TQwfuyl|cr:MX?T^0EN,FM*AE>T\DZ^4JR0IM-FJ";<+EFhz~8TP#>9"?8 C="C?"EA#HB)NG(KG'DC'FB%ID-MJ/NL+KH*IE"E>"G@"G?D= F>!G? E<@8 B9"C;%G?+MD/PI,PI+OI+QJ.MJ(LD$F>$IB(KD+OH*NH2RN4UR%JB!D;?6>4>5%E<"B8">7 B:#D<F> E<#G>"F=*NF9VKal_ggS`T.UF%RB#O@"M>!M>!M=!M>!L< L< L= I9H8H8H8H8H8H8G8G8F8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8H8H9H8H9H9H9H9H9H8H8H8H8 H8H8H8G8G8H8H8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8H8H8G8H9H9H9H9H9I: I:H9H9H9I:L=!M>!M>!L=!I:J; J: I:I:I:I:I:H9H9I:H9H9H9H9H9I9I9I9I9I9I9I9I9I:I:H9I:I:I:I:I:H9H9H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8H8H8G8G8G8G8G8H8G8G8G8G8G8G8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 I9 K< O?"RB#a\G_k|ewl`ba]][bW/h]1pz{~iQiuLdpA^`4SP2PN3NM-IG+BC,AD;OTM]mN^mFUb_ppmdxe{oh}\olbw[o_sTft`t`vZoSixLahCY^=W]6SV7UX>\aA\a:UY9TY:UZ0LN1PQ.NM+JH(IE0OJZdGf_4cX.`T,[N)[N)g^2otJgtW`m]A[O<7':3$50CP>?RFT_LdcKXL)L=!K"^T-8F4$A>3QO,JH ;6 =9@B/K< I9 H9 H9 H9 H9 H9 I8 I8 H8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J<%G8G8H8H9I9K< M>!XK'jdAkzsxz{ʃ|x}~Ń҆ۊݒߌވ܇܊܃ۀׁֆ׈׏ۗݝޕޖޓݍݐފ܌ۆԈגޒ߇}ۇܑݒݒݐݍ܇ۏܜޠߨߘߑޓޔߔސލތގލޑߒߜߐޗߚߓޏޙߔߕߦ㟽ܠߦߙޘޛޞޕݥߢPhoa܋ۇp}᝽ފgqyɐۜxuuz݄݉݉݇܍ތއ݈ވ݋ސߒߖdmp>WI(SD$QA#QA#_U1Ќv~nt{~zyvȃtnfzdxi|tɇƜǍʏыф❳ϏЄŮ䙲Ӌ͐̉DŽ^[dhz؋w~slreNpvPqyLmtEhj@b_;_]8`]4\W4_Z0\U*RI4VO?^Z+NK)KF.OK/RM8XS9VR*GCgz|o~I^kuzVqVoNj}QhzOfxJctShwDZgEZhNcsKbqOgxKbrQhxOhxKeuRivLfuLhvD`mFaoF`m@Zb>W[k~\pySfnZkpZkmUihyr8RM|{\mxDVaVfo-BH4JP6LR-EI+CH8NV,EH,DF6LOObf,JE$D>,NI%JC%ID#FB$ID(MH(KF$GB'GB*JG0NL'HD"D?C="H@!E>"G?!E=#J@$KB"H>!D<"E<#G=#G>#I@+NF,OG/QJ3PN%IA&I@$E=B9!C;#E<$E=(LF3RQ*KF(LC C9@6?5 A8!>6 ?8%F?#E>(JE"D=$F>C;1RH7OGjmahgR\P-RC#N?!M>!L= L= L< K< J;I:H9H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8G8G8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8H8H9I9H9I:H8I:H9H8H8H9I: K< J; I:I:I:I;I:I:I:I:I:H9H9I:I:H9H9H9H9H9H9H9I8I9I9I9I9I9I9I9I:I:I:I:I:I:H9H9H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8H8G8G8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8LA0H8 H9 H9 H9 I9 K!L=!O?"XK'`W.ie8nnA]`?cf@_^7li>djNV^Je_;PB#I9 I9 I9 I9 I9 H9 H9 H9 H9 I9 I9 I: J; PA#`X1CR=2NN7ST(EC#A>&B"QB$ƏvqtwutozԆ}}|fzatbtp~ƍȞϙƠȗŠғŔ҅Ȏˬޞ١ܝڞ۪eXyӝܓыLjÃӍ΍΂lXzJnuLpxKmqAfi)MD/QJ0RL+NG/PJ%F?"D:(GA?6 B9@8 F>)OG,HC-CB.PH&J@"A7 >5#A7#B:*HB&IB'IB$B=!D=!D<"G>,LBbm^ljIg`7YK(PA"L= L< L= K< I;I:I:H8H8H8H8H8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8H8G8H9H9H9I:I:I:H9H9H8H8H8I:I:I:I:I:I:I:I:I:I:I:I:H9H9H9H9H:H9H9H9H9H9H9H9I9I9I8I9I9I9I9I9I:I:I:I:H9H9H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 I: J: I: J< M=!TF%TD$SG-bmVcxiz`X=ZM,^U3a[@}wbvUm}?[]2RM-MG*KF.FG+@C0BH>NYBT]@TZCU_FWd`slaveyi|fxi|Yjig~VgvM_kGV]DSY[l|`x_vZn|WkyRdtH\fI^hG]dF]b!VH&UG&RC$N?"QC$[P,\Q.VH&TE%K; I9 I8 H9 H9 I9 H9 H9 H9 H9 H9 I9 I: J; UG'Y^;.KL*JG7TT4PQ"A@:D2L=!H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H:#=<0H8H8H8H<(H9 H8H8H8H8H8X[`G8H8J; N?!SD$YK(cZ4y|z|~ˎݒߒޏ݋ڊڋ܍ݎސޔ{}{ۃ܍݌ڍܑݖݒݍݙߛՇ֌݉ـʀ̄Ԇ؈ي׏݌܍ތݎݐݙޟߠߗސގޒސތ݆݇؉ڒސݑݐޑޑދގߍٍ݊ږ߇vxҔޒݠᖺޞ߳a~◸ގuz~z}tkRONpuώ؎הۍֆΊՂ݁݌ޓޗߘߘߗߓގދދދގߎߌߑߠ䓤ZL)SC$N?"K< LefSX>1HI'C@.MI7"F@%IC(NF*OF)MF'IB$H?%J@%JA!F>?6=4?7!D<C:$G?.PH/RL#IB@8 A8:2:2@8C<*OJ/RO+LD2QL'I?#D:"B8'F<&D<"@8A9 B:!D#G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8 I9 I: J; M>!SD%RH1RC#N?"dhiapbstXK+]Q*ZL(ZQ:crXje|Peq8VT,MG'GC-DF*@B'8=0@H?QYCV_HZgPbrXi\nbwdveu`qi}]pf}jZmEW_DSXQal]q`|]t`uYoTesMdpLbmNcmG]d;VZ:VZC^YR[D\Q,TE$N>!K< J; I: I9 I9 H9 H8 H8H8H8 H9 H9 H9 H9 H9 H9 I8 I9 J: K; J9 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I: QB$T^C1OO'HE-LK/LI(GE?PBM>!H9 H9 I8 I8 I8 I8 I8 H8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G9"G9!EJKHG@H8I;$I9 H8H8RPLPOPH8J; N>!TE$^Q*rs]~}Áʄ΀Ȁ΍ܔޘߝސސޘޖޕލ݁܂ۉ܂ہۈ܎ݔݙޚޖޝߨ᡽ዤ܌܈ׁ}~˂ЁΈ׎ݎۡߙߖގݏݑ݆ۉ܆݅݅݉ܐ݅~ڄڅێ܉ؑݠ߅Вڝޓޖޗߦߔٞܫᕺۮޚߞx᛼}Ɩ^ZRubw^\Yrܐ؊ЎדאԒוޔޛߡߙߔߏތދފފސߙᘶޝ⛻✽hgIXK(P@"J; J; J; L=!jl_چɅvʄȌ̌Мۏ~u{zmf{wvʓĜΆ›Ʀ־ڐ͙לО԰ΔÔˇ~Ҳa}\yRqzSs|gdi֎ыЏ֐ՖԐώˉƉ|tla}Ytc|`{]zNozBfi=de?dfRt{JlpDhk:da.VM-UM+UM4]V/VN+NG,MJ/RP<[W>`[,NIPni\vr~pf~v]~d[ySoZw}Kalcv\s_u]tfwShe=WR$F@%F>9WR,NG{`ttyj}eyxA[\8OR'CB?UVCYZ%?>%A@'C@"?=)JG,JJ/LL+HG'F@%F@"B>#C?#G@%FAA<@;%JD%KE'LE(LE'KC.OI,LF$F>%G?'JA C:"C:@6?8 B:B:!D<'J@%KC(LHB<?7<3A8"G?(NH-RK1WO0SM-NH0NH/LD*H@*H?#B:=5>6B9 D; C:D:A81PJCZPig@bX-XJ'RC#K; I:I:I:I:H9H8H8G8G8H8G8G8H8G8G8G8@;%?>)H9!G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9I:I:I:H:J; H9H9H9I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:H9H9H9H9H9H9H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7M>"K<"G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8H8H8I8L< LMWM]mRcrUet^raudwex\lljmf~Pbp>PVXj|gVj|ay_sYm~Wl|QguSgsPbmH_eCadMfa^\;TE%M=!K< J; I: I: I9 H9 H9 H8 H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 N?"P]MBXT5SS7VV/JH'HE/JEM?#H9 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8!H8 H:$H:%MC4I:"H8MYeNE5H8I:!J>(H9J;VH&{͝ጪ̊،܉ڀԎޖߐޙߩߟߔ݇܈܃܇܌݊܆܇܅܇ܒݘޣߥ߉ۇ؄{}Æׁ҆؂Ѕ׌ڦޒޗފۀـلڅۀ|~~܁|zz{قڊۖޡߎؗޢߞߜ߫~x~֪䠿࠾ެx䓲ڌj~]ZSvYQ?VL8{o~~ĉѐ֖ڜݧߕߏލދݎېݒތދޚᓳޓߥᕶߣ擪\\3SD$M>!J; J; J; WK+ƐԌϖ֑ї֌ьИ՘ԕwupt͋}z}z|©Ծ䞷؎ԌՔْՒˎŽČ|ƆdXvXxeZ{Ԑӏъ̅ĒӑёИَ~vvnazSoyRmw`zb~a|Rt}EhkFjoDimDhlOowPrzAff=b]8b[.YN8b\8b];b])MF.QM'LG(OI(NH'NG"H@"IA&KDCb^~t΁bXhn}ͧIb].LF7QK1OI%IB%IB5WQ.SK,NI2RKD_Zp~\usWrnB^\-KI)GE.JH'CA$@?!>=&AA"@=*IG*DF.JJ-KI-MH&G@!A;$C>#E>%FA%HA$IB'MG&ME)OG&JB'JC)LE%F>?7%H?#I@$H@%H>#F=A8&KC&JC%IA#G>"G?'JEB: B: D<#G>$IB+PM+RL&KB,PI0QM#C:;1=4>5@7A8@9@8?6@6!F=?_]cvhuxQf]1VG&N?!K< I:H9H9H9H9H8G8G8H8G8G8G8G8G8G8G8F:"H:!H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9H8H9H:H9H9H9H9H9H9H9H9H9H9H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9I:H9H9H9H9H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7I9 G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J: I9H8H8H8I8K; Mf`:e^4]W.TK/WO4]W/WP*PH*NF%KB-OJ3UR3UP3UQf}z`xtϞ}Ujos=WRq`uqUkhE_ZOgbn}{,NG^so6RLTkf*LE.PL8[Z+OG-TK!E<1PI~=\WEc_,MHMidUpl8ZU1QL(FC/KJ.GG,EF'BC7PT9UT+IF4PO4PP/MI,JI(ID'GB$HB'IC)HC$G@#IA%LD.SK+OI#H@$I@%GA C;"D<&G> D: D; C9>5"F>$JB$I@'KE#IA F@"G@!D< C<B;A9 E>"IA"G?!F=D;!D;=4=4<6C:?6=4A8A8?6B8#IBi}nhjAjb4ZL(N>!J;I:H9H9H9H8H8G8G8H8H8G8H8G8G8G8G8G8E:"H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8I8I8J: K; K; L+@D0BH:KT>NVVhvVhxZj|^pf}`t\rlqwmXnlTj{m_x`xc|c|hf~bvexRhtPgwPlwWM.P@"N>"L"N>"L#^Z0``3SM*J D"D>=5C:!F>(NJ'KF"F>C9;3"A:A7>4=4>5?6=6 B;"E>!F=!E>7TGllCcX.^S+SD$K< I:I:I:I:H9H8H8G8G8H8G8G8G8G8G8G8G8F9!G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8I8I8J: J: K; RB#VH%_U7nyR`vFVeY_dRG-UF%PA"ZL(kf8dplUk6UT)LD$E>#D>'EB+?C/BH>OWN`kHYdWhz^pdzg|p~ŎnhVh}k\tf`y[qOdr^ue~iii}QhvMftRrTJ-O?"M=!QA"O?"I9H8J; M!C;$KA$LC!H@C;$KC'OG'PI'NH#IC"EA$GD!D>!C> A9A8A8(NI'KGA8@7>6A7;2<3<2>5@8 E>!F> D<*LC:YJbhBZM)QB#N?!J; I:I:I:I:H9I:H8H8H8H8H8G8G8G8G8G8H:!D:"H:!G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I9J:I9I9K; L=!XJ'kd5pq_oQ^sNZmU]gUG%P@#RB$YK(gb6}_bu3PL0NH%GB!<;%<=,@C3DI5GM:KRTgvWixbwi̎І[ppi}Rgy\qhwManZpaxjf^u[uNgoUoz`aQN>"O?"O?"J:H8H8I8J:J; I9H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 I: PB#JVB3RR*JH-OK#HB%DDJH9H9 H9 SM3IO"I;I:I:I:I:J;OA%TI/\R:|}`o`Y>RC%PA"M>!^~ʼn~yڙ~НѤޗڎχ{ywpj`}e_}[x`ze}fi]y\vYp\tc}^zVuSp|CfnAglClpEkp?ge=db7_Z>fcQqp\wy_z}SuvQuzYw~NnqDeh>b`;``8^`:`d@fl>bd#C<<3>6?6$H@B9!B:!C:"D;?6=4>5C:@8?6 A8!D; D%;=*qw]QE(I;I:I:I:I:J:I:I: K!SI5RLaeFioGmrElnElp@ik9b`:ebDkj`_^Wx[|_Wv}PquOptEfl>chAfmEhjFjhCkkOtzMouEfi4\Z:_^-VP)QK8Z[2VU4XX2UT,MI0QN,RL,TN)PJ1TI7[R6\V0TIFcYNf^:XP"A<:6#C=+LDPlf#IA1SKIe`Smh1SM%GD*KH3SQ*JJ,HH1LK9UU,KL0KN8UUA^]1ON&DD"BA$DA*KG(JD(LE*PH/TM/UM.SL)OG*NG&JC D;A9 D;"IA G?B:A8!D;#G>$LD$KDA9 B:%IA!A9=4=4"D< E<"I@%KC'LD$I@#H= D;A7B:C; F?D<B9#E?'IDOdPVL*O@"QB#K< I:I:I:I:I:H:H8H8H8G8G8G8G8G8G8H:!H9 J: PP"O?"I9H8H8H8H8H9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 J; PA"TU50F9:;7;DaiJ?&H9 [U1dg7UL*M>#VN/I9 F;$I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H9K< PA"}➿䟿ۆЊӒܐܙᕫޖߓޮ⚽ߋܚݞݎ׌؈׈׍܌݉܌ݕݙޚޞީߕވ܅܅هڃׁ}|zҝۗٛ܂À|yzz{|~ˉڂׂ}܂ˉڇېۨߠސޛߓܒ܃˓ݔޕܩ݉҇׆څܖޭߢޢޟݠ޳ޡ؄qntM?.G7G7G7G7H: Նz~wvoyckytɡޚҞ؞ܠ۪䝼ߎތޖޙ៾⒱ލߗ蠲sx`hrQ㠳M?!J; I:I:I:I:I:I:J; K!UJ-fvNH;I;TG,ҩΥɨͤʛ˜ӯԛĴҴ٠ɕşƘƭ֣ҐҢޣzgozǂĊŀwnkaUtxVu|\|XvUu`~dZxWtCcbLhnNkrGhkNmvMktLjsTtQp{]|KotAfhAedGlkIppNuuQwxj[xxRsu^~_`XvGinCflEhkIikDjjJloPqx>af9[`4XY4YY4ZY>_f-SM(PG(OE.OG%E?$D=.TJ2WO-SL.XL0YP,SI+PF8XOSlg!>8AZU0PJ,ME>\V&JB7WP7VQA^Z8XS3QN7VS@ZX7SS4QO-LJ*HG4MS+HG2NL*GE(EE'EE(HH)GH*KG(JD-PI-OG,RJ0TM,OI+OI'LD'LFC;"F>!H@$LCE=A7?7A9&JB'KDA8$IA)ME$HA"A:<3?7?7D:*MI!G?%OF"LC!H>"H> B:A9E= F?D=!G? C<+NKS^CTF%M>!J; I:H9H9I:H9H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9!G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H9H8H8H9H9H9H9H8H9H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J; I8H8I8I8I8I8L"L; H8H8 H8 H9 H9 H9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 N>"WM*UZ6$<7*DJE[KK="H9 d_5Gr|@isBu~VI9 I8 [W1PC&I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H9I:J; K< PA"]P-κ➾ދڑܗߕ۞䧾✲ࢻិߞލڑ؍ڊۅ؁Ӂ؉ݍݚޚޚޥߵߘޓވ܄ۂӂЁр҄ڇ҉}ȫኣ΄Þ݅ɂ||~ɆՑڇΆ܄~р|ڃمڐ۞ݦޞޜޢߗܐ܍ؚݛܔ٤ސ܈׋܂܄݈ݞި߯ޠݤޠޖޠߖڢ߱޳⋧ځsugnyG6G7G7G7I9"\Q5}zpyozem}q||ÖԓǞٓө㝿ߍސޟᚷᎰߊޖ߳{yꜱSG&L=!J; J; I:H9H9J; J; K< \WBsOK>I:J; M>!PA"gcQhcOƹѫǺܨ˴װҥȘҺָ֦ǟؘ˒՘ܤ}in|z~ώzngn`Ury\}hfXxSu[|YzWtKhlKkmGfgJkqHkpGioSs~WtTq}Ghq@dfMowDjkRw~TwzOtuX{cZ|Stbhc|azZxXwLipGgmHilFkqDio=bf;_g6Zb7Za3X\5\_,SK*PG'ND/QJ2TP>[V,NJ(LE+SG)MB,RF5WP7VOQgbZrm*MG0NH7TQ-QL7YS3WO*QH5VNTnj8ZUEa_;YW*KJ5TR1RQ.OO,IH'FD+GJ.JI(DB.JH/NL-ON)IF+IF)JH+NJ.PM0SM.RK0RL,QJ-OG)MF&LE%KC&KC'LD"F>?6!E< D;!F=#G>"D<)LE%H@$HA"F=$E< C;C:>6C:#IB!G>"KB"G>!F="E<@8@8B:"H@#HA$HA+LHSj^YiTUH'O@"I:J; L< J; K< I9H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8I9!I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8 H8 I8I8I8I9L#9;*MV0GHLafXju^sWkwWjwTk{}xO?!L#WN*io?ViNPhRRR3H9 H9 NA$CHnH?&KB+`Y2}DLSJ*I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8H8H8H8H8I:K< L=!VG%XJ'gbJގړݛࢻᠼߨᖱ݄ІӀІֆ҃~ɀшٓޞޛޤ߱ߚޓ݋ۂ~~|ԁƂό׌ԋ̆ʛݵۈ„™ާۚrw}}~ƅ̍ـхۃ}څڃًۗܠݞݞޚߝ~Ή݌ף߯ߌ܋ۃ~z|ۀԊܝޤޖۡޟޛݚݎ܊ݕݕޔݟߜީߦ࠿ՏˋʃǂpQG9G7G7G7G7G7XN9cnsvyq{uuv~̕ӝڟݗԤޤ߫㢾⛽ޗߑߔߤ㌭ߌޥˠVU,TJ'QC$O@"L=!J; K< N>"M>!`Z?ϖh~SODI:I:I:I:H9H9H9I:I9H9M>"RF-rm[|~iiaIrkThdLVM*a\=pq\^W7VI*[P*TG$WI&zm؝ݢmgw{}ąǑЋxwrjUswLquUz~chd~YwMpv]~XuOkuGfoLjoGhlMpwLntVsUr|Sq|JmyAfjFilGjnHmoTv~VwMryYzWyehid~gZxSsHjsNnwPr}LnvJmu?chCgp?cm6Y_=_e@dk.PO,SP&IC&B<(JC%G@&KF,PG.RH9YL8VMHd^A^Yv.NH,IB0NG,MH>_Y9[T1SO0TMMhb#GB3SN7TR2RP2QP/PO;ZY,LK+HJ+GI+II&CB/JG2NM.NH1NL.LI0QP/NJ,MH,KG0PK(NG*PH,PI#IA%MD"H@!JA*PF,OE!G< F< E<(NF#H?"E<'KD#F>A9A9$F>%F> D;D;C;$H@!F> C:"G>!F= FB: B:(MG(MG(JEVk^^eFYQ0L= I:K< NQ69MC8@.I:H8G8G8G8G8G8G8G8H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8J9!L:"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8 I8J: L"P@"UG%gb@ttYh~WN5N?"K; J: K< UF&^T,[aCD[h2TT$JA"D?"A<%;=3BI;NTNboTgvO`pVfz]pdxorZm]rliby_x=QX:UUSgn8RP@WYThuPgqZZAL=!I: H9 H9 H9 H9 H9 H9 H9 H9 I: I9 H9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 L<#RB%VJ)b`8^kD`g>SN.H9 H9 H9 PB%Fcnk:IbeCemDfm<[b=`g?ah0UT+PP*NJ'C?%EA-TQ,RM,TN&KB,OD;[SA^^4TO2RO0RP5UR8VRKe`Ed^4UO0RL@^WNhb)MF D?+NI.PL7WT9YW4US8WW4PP$BB2MN2LK/JI5OP)HD4NN4QO5UP)IC*KC*LE+OH$JB)NE$KC)OF$LB&ND&ND)PF*SI'NB%LB E;&JA"I@#D=&GA%I@A9 C; A9"B<#IA E<>6A8 D:!D:#I@$IAD;!D9!D; C;!F=&JC1TQNgbXS2N?"I:I9I9PL-&IB?88E5I9H8G8G8G8G8G8H9 H8 KC+G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 I8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8J:!H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8 H9 H9 H9 H9 H9 I8I9K; L[T;VT/OH2RP,NK2RO3SP7XS3TP1RL-RK5VN0NG(JC6VQ4UQ*NG*MH;[X0RN@^Z9WT+HE.JK3NK6OL4NL0OJ/MJ3QM+JD*KD%G?%E=&KB"H>*LE&IC.RJ%LC)PE)QG)RG*SG)PF*OI*RJ&LB(LC(LC%JC%G@?7"D<"F=$H?'I@"F=!D;@6D;#LB'LD"I@$G>#G;$D:$HA(MG@`]\jNXP/K< I:M>!L89@/H8G8G8 G8F8FC)D>'G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H8 H8I8J: I: L=!VG&O@"UG&bV.c[:er_nbsXVMJ; J; J:K; XL(zLxUJ^U(JB"F>>:%<=0BI?OWPdmEV`RatZi`p\mh{kih~e}hf|Mdu*ED:TSOfkB]]C^_D_^PB%J< H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 RB%RE&H9 OA$EHQCF4UO,`a6_`4I8 I8 KD)I8 I9!I>&I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H8 I8 I8 I8 I8 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 H8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8I:L=!N>"RB#ZM(|o߹❾ߒߍ݌۪⡼ᠿքĀz{ڃ܇܇܊܏ݒݐݠ߭ߪߞߙޗޒޒݔޗߖލؑݑَ՗ݔܞݕ֭ᕱيΔ֞ݍɄɊϗܡޝߥٍ߬~فՂٔܥެޡݝޔ݁ہ܇ڛݪגԕ܁ۆ܇ܦ߮ޥߠߜߍۗݛއ܃Ճ׎ݗݒ܍ܓݠަߟޟޢߟߟߘޢ߭Є~ljǂy[THG7G7G7G7G8 XO?}wgq}Șը⦿ߠڏĞآٰ㒦ǗҦ㘸Ꮀ޴铜nnT䝿wVinTO>I:I:I:H9H8H8H8H9I:H9H9H9I:I:I:I:I:H8H8H8I:H9H8H9H9H9H9K< zvxʊƗуxnpnb`{Z{X~^|YqSjvMiqTo{WpPi{UkPivPhuOjwQizMhpHfjNlsPm{YwWs~TtXzXwTp~Ur^xZu`zbx\vnZo{`u\t_xqh_}[zMo|Cep?emEkkHmq:_c;_dBiq?de-QP3TU3PP-SN*RJ(NE&I?$H=+QG7UOId^1PJ2SP+LJ6UT;YT4XS,MJ4VR.TL_Y3VS2UQ(IF)HCA\X.IG-HD9TR3PL1RM-MG:UU:VW5TR/QM.RK%IB'NE%KC,RJ-TK'ND'LB&KB+OE3XN*SG,SJ)PGF`X*LC"F>#F>"E=!C:!B9)JA#F="F="F<C:@6$JB$MC)RI+NG#G=&H?&JC'MG2TRR\CWH&L=!H9I: P@#ZN+NcO,PJ95$D?J<"H8G8G8G8H8L=#G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8I9 TH'H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H8 I9 I9 I: I: O?"O?"L=!RC$aT,dZ1jtz[pSdqNB)I: J:I8J: M>!WJ(ie:7OD$J@BB/AECS]P`oSbu\l`qi|guhzk~kh~ax^qO`n-BE0KJQdk6TS>WWD_^N?#L=!H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 eZ0ie5PA%H9 ~x!P@"QB#UF%liG׸ߑݑݍݢᛵߏ}{|̀׆ۍ݋݆܆݋݋ݐݛްߥߞߞߘޕޕޖޗޗߗߓܕޝߚޗݣݝݒقƁƅˀȎҀđբߜޡ㞺݈Հ~ڇّܬޢޚތ܂܆ܜިޑք}zՄۓܣߜݕܧޓܔݗދ݋؊|΂ن܍݃܎ܡެߩߦߥߟߚߟݴ〈hА܆Έ֊~L=#G7G7G7G7G7G7F6{zisnxzעܞۥأߗҝد⣼ݒʥޠ⟾䐳ᗸߒܒto~uykqt_^UND1H8H8H9H:H9H9I:I:I:I:I:I:I9H8H8H8H9H8H8H8H9H9H9H9RF(s{g}}‹к⑱Іˊ}usli\{]k_}XqXm[sZrTl|QiwTj|RgxLbmPjxYrUp|HfiOlsNoxInqHkqTsSn}_y_tJ`jD\bOgp]v_u^sVisYoyavUnz]ubzZtKluRr}Jmx>do@eiWT0MH4PL5PM?ZX3OP,LG?[W4SV:VXA^_8YW3TP+OI)NF;\T1WP+SL*QG,PH)OF0QI0VL-VJ,TM4UL+PF$JA#F='JA D;#G= C:"D;&LD$JB A9 C;&F>%KD H?&LC'KC(MD.QJ-QJ;[QZbBTG&K< H9I:M>!OE'WV76\W$H@63/H"J="I: L<"N@$H9 XM*y|@FPx{>VK(TH'xy>LOdVO0I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 H8H8H8H8 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I;J;H9I:I:L=!M>!O?"RC$XJ'`T,ߜߖߞᠿឿᘲۊԂԃ܄܊݋݊܅܀܁܄܉ܑݚޢߣߢߢߛߜߝߚޛߞߜޜߚߚߎ֙ߦߥՖكyȃΆ͛Ȍ֢ޝܤኩ؉ۃڑܓݨަߕ݈܂ԇ܉ݡ߶̃ȕؕԃр؊ܜݑ|Ղݗޠޔݓݗދ܊ܒݫ߄~ܐ݌ݗޣ߮ߩߢߑމ߃Vkɒޗ܇{yTJ5G7G7G7G7G6G6G7PC,}skutǜҡݫᚲ֔ԝڬ♱ԘѤު㒶ᔱݖԝuphqw`_ZH8H9I:I:H9H9H9I:I:I:I:H9H8H8H8H8H8H8H8H8H9H8H9J; TF&klMmbmzy}Ðчpg^zmlkbd|UlYpXm\rTlzQkzUm}SjzPjvXpPhvQhxOhsPjpHek?_`JclF_hTjz\tf}\tMgoVsykXm|Xm}QhpJgm]ye~[sbyf\xUq|@elcc=ad?bd0XX9ac;_b*MI-QN-SM-UN&MC%I?(ND-QINfd?][:XW)JD=\_HhqDgf4UQ3VR9[RFa[.QI7YR2TL;_W6XR@b\2TP2TQ*KG%GA3PL$DB3OLHb^:XS8VQJfcB__Pjh?YZ8YT3TN7XS4VP7YR9[V8[S-UL/SL(OF)OH8ZR.VK0VP*PJ*PH'QG)PI'OG+TL(NF/OF-ND+PG,VM*OH&KD"H@$LC#LC"I?$G=&KB0UP<_]WgRTK)PA#N?!I:I:N>!P@#K="NU;/VQA;:59D2H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 J: N>!J: I9 J; SD$_R+_W:[gtPG4J< I9 I8I8I9I9I9UG&`_<:WQ$H?#C=-FE1FI>OW!O@"J;M=!M>!L< I:I: H9H8H8H8H9H8H8H8H8H8H8H8H8J; PA"WH&cZ4j^htf}fnw\}]}dfdc}c~[qZrZq~]uUl{QiyUm~WlVk}ThwPjxSl|OkwQkuMhpGbfOcrK_lI^hJ`lHfmQszVwgbz]rPep^s[rg~ayZq|^wYsNkwUr~FhqGjs?ce:^_>dd;`_/RQ.RR(LJ8Z](GC(JG,UQ-VN*QJ#JA#K@+PHNfd>^[5XV>^^CdmQvFknSoiZvpFcZAb[*UJ2UN<\V.TK3WN@_Z?_\6VU*MI(KF-JH!RB#M>!I9LQ;,TNA:@8G?'H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 J9 M=!K; J; K; P@"UF%RC$QA"N>"K< J< I9I8J; I9I9N>!]P*[W4.MD%HA,DD/EG9MRCU\BW[DU_^nbqj{og{_rVhxV\$IA8XUF`fH_jESLJ: H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 K=#I: I9 I9 I9 I9 I9 I9 I: H9 H9 H9 H9 H9 H9 H9 E@%2D6*JD,PI=TBEWCF^F:VD(JE/SP-PL.RO1TQ>R?RO1^\:MF+L?#\T0nh;qm;rr>fl?dc8L<"I8 I8 I8 ^\;grTJ:!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8K< L=!L=!K< K< N?"PA#VH&[M(d[/ߔޔߖߐ݁Ƙިޖߘߙߝߑފ݈݊݉܍܈܆܀xuqqpuۄݎޑފܐސݕݗݟߠߦߤߠߞߞߞߛޗݖۛߞߡއÅŇ͆ԉӃʈҝޗݑإߠޤߤߦߠߖޔݓ݇ۃڊ܉݇܊܇؊݋٦ߙߗߑ܅̛ޏܔ܍~ۈ܍ܓ܌܎ݑܒݑܝޟޙޗܠߘߟߜݣ߰ކ܍ܖݡߖov}ފГΌŋȢזŽރPC.G7G7G7G7G7G7K>){o|q|͑ɡة❲ԡۣ㢼ܪܞ֑ʝ۟ᐱߎߐߗ㞺ࣽ࠺ۣܜ֎Ńv~wZSCRD%SD$QB#M>!I:I:I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8K< PB#UG&`y]uhbwd}[xIkpRnz`|jknbu`vc{[sMdqMdsQgySmzVm}VpOitRjwMelHbiMepIblE[bJ_jE\d@V^>ZZBbcJelE]bI_fljg{fxdxNenNhpVrFdk@^eBdlBdj?ad9^]=_`\X9YV1RN,LH5RM4RL3SL4VNDbYazs=]U`yr3VM7\UBb\@`X1RH5VMEd[-PF,NF+PH*OG.QK4VS1SR*NJ*PL,TO.TN1YT.SL3UM8ZR*PH0TL,QG*RI4YX<``]~:^_8SI@N8OT3LQ9QK.OB$K< I:I:I:J; L< K< I: H8H8JQV?VZ-RLD^h>Z`=OHJ; H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 H9 H8M>#J;!I: I: I: I; I: I: I: H9 H9 H9 H9 H9 H9 ND&&G@+MH4PJOT6tx?rv>W^:(?4:5&B>,OK/SM,PL-SN6RE;WIF`N`r\jkQUK(b[1]T.ol;a[6WP.I8 I8 I8 YP1Z[;I8 I8 F@)J:!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9L=!N?"M>!O@"RC#RC#RC#ZK'cX.z|`מߞښޤ᣾ᘳߎۍؐܕޘޓܑܐܔݗݘݖݗݗޒݐݍ܉܅܂~wpmlmsorԀوވݐݑݚޙޢߨߦߟߡߙޛߙޙޚߟߞߟߣ៾ܔؘܝߙܔَٚݥޗޖޜޠޝޥߢߣߙޢߐ~Ղ׆ۈۄۉܓݔݭޮޓڈЌԀŌё܏ܐ܁؂܋܎ܐܑݑ܋܎ݕݢߕחޕݛޘޕݚޡެߎݏݖݛݗޅpˉҁ؅݆ƗΥۣԞ͎ʔ҇SI7G7G7G7G7G7H8~rmx䥾ॾ᛺ߞ皮Ξ֛֕ߊ߈߉ލޕ࠼ݡֲݚӖޑؐɡokJ_S+UG&H9H8H9I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9M>!liJyb}]yZt^w`{Qlz\pf~^yNlw\z`}a}_}`y_t\tSi|NgvPiwTo~Xp[o^vTgxQgvE`g=Y]@]_CabGceE_c@YZ>^[3TNFffVpxVnw_tbvg|c|bx\vGbiLfmKku@^b>ag:_cDel;\]EejAcdEip?`f0NN.NL6USKhiZurhhx2XS-SL&OF(ME1QLF]Y/PH-KEHdk[uStJi{6ZY=^[9YW>`Z6YREdbDb_7[UDd^>]Z8WT1QL5TO/PJ2PI9VP5UM<[T6VN@^V>^U\vof~xCf]?aX5XO-OF6VL-MC'G>&H>,NF/RL,PL)OK)LE+QM+SP+RL-TM+SK*RI)NGCb\4WO(OE-VN.YR3XT8[ZrvK_OLE)O@"K; I:H9H9H9H9H9H9H8H8H8H8H8H8I9LE),I;J;!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H=(C<*GRGH8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I9 I9 J: I9 I9 K; O?"K< J< K< L=!L=!K< J; J; J< J; L&>;'5A1$F='LD)OI)PL*LK0NKPiYQO5I8 I8 M<"J9 VH*I8 I8 I8 J:!I8 I8 I8 I8 I8 OC)PN9J:!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8J; O@"QB#RB#RC#SE$TE$]P*ja;◺ޕِԠ᣿ݒܑޕސۛݞݜݘݘݚݗݘݕݍ܋ۈۅۉ܍݆|rmppoppsс܊܏ܜߠߥߝߗޖޗޙߔޞݩ➾ޖڔܝޡߠߕޗݘݜޜޟޝޡߚޘޗ|v͆ه{|ۖޓݍܕتሤԒ֒ڔځ{z{Ёۑܐۇۃۆی~܋܊܈܄ۖݗގ҉әߔݘޕޠޤީ߰ސݔݠޞޕِђ܈܄ۉ؍ݓёǖ͟׀{zyF6G7G7G7G7UL6̆xtǯ䥾ۙӡܚЪ៽ޯ䞳Ӓԙ࠼߭ᖻ߈ވ߈ߋߑ᧿߫ܫߚ\P)L= I:H8H9I:I:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H:M>![W?LgjQpzUrYs[uUoyOkwXsynNiuWq~Ys~[tYoXq_t[oTg|Qh~LgxQgzVkXk\sVn}HeiA^aA__@_^GdcF`_Kff@\[;[Z4TN?^]Nim`xd|cye|hMblNgrAV\[tXr3SR5ZZ:_a6Y_Ccg`}NptHfb9TR?XTLf\Hdcf{st|u|pjEeZ,TK,RI%I@3QLF\Y/MD3SLLhoWudUr8Z\Nli2PN3VP0VN:[W5WR4USEf`Tmj2UP5XQ,PJ:[U/PH:XP6VM;ZR=[R,PG?_W<_VJja^woJh_9YS5WN1QH:VM+J@)PG(OH$JD&MF(NG2YT1VR/VR/UP,TM/WR-TO,PL.QJ*QI3\W0YS7[RTm`csa^U0PA"J;I:I:H8H8H9H9H9H9H8H8H8H8H8H8H8H8H8BD.I9I;"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H9!?E9I:!H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J: L"MB%M?"UF%_U-8O?$F>(H@2LJ.JG6NP4PM7OQB\aD_eNbo[oUgyVfyAR[8MP5LO&FA#KC.QM.RM.UQJ^JJ<"I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I: I: J; K< M=!N>"QA#VJ(JJ.JO9PN2ZX4OP2KQ=.ME+NK%DB2TL>G3I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H;%J;!Mr|bJ:"I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H9 H8 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9J; N?"P@"SD$VG%UF%UF%]P*hޘڭ➽ߗޔݖޗߖݨߩߝۓ؊ٌܕݔܐܑ܏܈ۄۅۋܗއqptrtxy{~ۊܒݖݛެߤߡߞߙޕޓޗޓܥޯߧߖۛޜޜߚޗޑݖݥޟޚޜߛޚޚޟߎyϊڈ܁܄ܚݐ܋ܞ߶し~ȁwz}zy~ҀړܖxۇzۂےݑݝߘݔܖޒݑݕޘޑܗݤިߩߪޡߢߢߢߜߏҜޝߔޓތ܌ی͊~yM?*G7G7G7G7G6Ǎ}Я䏣ł|ڞהɪ姾ߢ⡽ߥᗻ߆އߋߒߞߦ޼➺ޠܢۦުomIJ;H8H8H8H9I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H9K< WO2\r{Vo}VmxQirNhpLfpLltrzNitZrYnTk|JcnVl~[pViUiWlTjQdyPcuRdvPeuJbmH`kD`cA]^HegFfi<]\E\_DcfFdiEcgRmv_u`tbyc|YtYqNfqNjuE]cPlyQn|.QL:_cCflJf^c~pugxjpgxfnygjqUq{dxstzjlo[lpWNdZ1XO.TK&IA.NGRfd6QJ9ZUNlva}[xWx:]b+QH2SL4ZQ3ZT4SN3WOab6\\6]]:`b8\V>WHU_A[a@YaBga6RD$L=!J; H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8KI!O?"P@#RB$SE%XI&_S+NP2$E>+HB)HA)HE6OP,IE1QM1RO7XW8TWCWaM`pYmRbrAS\0JK.GE!F?$KC)PH(PI.PGKF8D;%G9!I8 I8 I8 I8 I8 I;$D>+G?*I8 L<"|{@YM+O@%I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H9H9I: H:I:K< M>!O@"SD$UG%XI'[M(]O)`T,┳ުݛޝߐܝޚޚ~|Ɂِݗݚޛޘޖݐݑ݌܅܋ܔލ{y{~܄܄ۅ܉܏ܓݕݖޚޣ߭ߣߖޖޓޗޜݠީߦމڕޖޠߘޙޔݛޤߢޟߝߞߜߘߛޞ҃؅ېݖݢޒ݈ؗާȀ~zyqvyÂۑܗyۄۆ~܋܏ܑݘݟޓ݇ێݐݎ݊݌ݘޢߢާߪߡޣ߫ߖד͓ٖޙޖބϊۆŃ{АĄw}zG7 G7G7G7G7ٕt̫ƉwzϞܩޓƛӬ㡽ࣿ∪ވߌߔᘹ䦾ޣ߰ԀbYM(H9H9H8H8H9I:H8H8H8H8H8H8H8H8H8H8G8H8G8G8G8G8H8H8H8H8H9J; OC*MbcPjpRnsPmwRmuPksyC`cIfmPkvGciRixUh{RfySg{KbpLeyRg|MbtF^jE^fD^fD]eF`hHdkJgpIgpFcfMjrG`eFdjJhpXrbx^s\wQmvXuWo~LdmLgqWpNjtMhpEejBbgDepjwYed9irKx`rzXptRd`>TG'QB$UI)_V3[Q/^S.[N*TN29\T3TM0SK,NE:RMF^Y>\\cna}Rt<]b:YT;[Z1UN,RL6VR6WP<]U7XMEaZ>bY7XP>_V<^U7YQ5VM,VM9\T5ZQ.TL;^VHg^BaYCc[Hg^5XN1TQ2XU5][2XV)OG&LC1TJWY:VI'WI&]P*`X4ji;Lg_7^]Rldb^9[O+UF%PB#PA#SD$M>!J; H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 JC8GD6>@3H:"G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 J< N?"P@#P@"P@"VG&_R+bV.4J9 A8)JB,JF*KF0LK)KE)KE-SM0TO2VR7UUEZeD\cBV^IYeGYe6JN'EA"G@"JA(PI+QLCB-I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I: I: N?"WO."C;!G@&MG#JB H>C9 G>E< E;&F;H:!H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 L?$WO-UP,3M<(OI+RL(NH3VT/RS,ON4QII;!J8I8 I8 I8 KG5GLBI9 I8 I8 I8 I8 I8 J9!I9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8I:J; L= K< M>!O?"O@"QA#UF%WH&[N(^R*`T,`T,vzYƮ♼߲ޞޜޣߠߏَ؋ցΘݜޚޜޝޚޕݔݏ܈܂ۂ܄܆܏ݍ݊ܐݗޚޙޔݔݓݙޞޢߧߟߟߗޙߛߔݚߝߞߠߟަߨߗސݑݕޗޘޘޚޔݝݨߧޣߟߢߛޛޤ݅֊ܕݟޣߐݑݓޏܘ~~y|vvuw{xЅܘݏ܅ۉہۉ܈܍ܚޚޞސ݈܍܋܏܎ݠޣޤ߬߬ߚޛܟզݤܨޤܒޞܘш՝z|K>&G7G7G7G7XO?ؖql{wסߦݟ՘ά㢼ࡿኬތߑ᜿砿灋hjd5RC#H9H9H9H9H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8K< RG+P_ZNkqUmrn~JgkKipRovKjpOiwXqSf{PewMbsK\qJ\nL_oL_oLaoG_mF`iE`dB_cIcnCcjCbdMdlUnyIekDbdQnv^uOmwLhrQkw\r`x`xTn|ToLn|UrTo{DfvDeubta\R.TE%VH&WI'RC$K< I:I:I:J;J;K< N?"L= JRDAe_5VQ4TM>XS+NF3XU^a}RpNpGiq>][>Z_7XU.QJ@^\8ZT5VNA^V:ZR0VO8\SA`X=a\:[W;ZT8[RAaY;_W/TK0UL@`Y@_U@^T?_V0UJ,QG/UO5ZY2WUA_aDXINI0OA"N?"O@"QB#WI&kh<!O?"P@"P@"TD$bW-ZT/:G4">:'B@(HC(NF0PN0RO%H@*JG1NM,NH,NI0OL6RR=VXFZ`O_kL^jEW`3KM#H@%KC,SN4LBI:"I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: J: J< WK(NX9"IBD<E<D;D<C:B9<3"@4>C/H<#H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 J9!JC&VO+QL+PM.9K7+PI5VU1US&GA#A:&?85:(J8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J9!I8 I8 H8 H9 H9 H9 H8 H8H8H8H8H8H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8 H8 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8L=!N?"N?"O@"QB#QB#QB#RC#UF%XI&\N)`T,_S+dZ/nj9cçިߢޚݓރ|{ҙݰߟޢߢޞޞޗޓݎ܋܌܍ݎܚަ߫ߩߦߥߠޞޥ᜽ߗޗߓޕݚߖ܌ѕݜߢߝߤߡߝߝߞߔ݌܌ݑޗޓޏݗݠު߭ߨޣߧߟޕޣߥߠߛޚݝޘޙމۊܢ}zstwuzz{ڊܥߜވ܇|ۂۃܒݜ݅ۆۛޙޖޔݒޓݙޢߦߦߨ߫ߩߧߠߗޘޜߑխ޳ԑڟޢᖯѡـؤĂ|G6G7G7G7G8G8npktzrvxԨߩ᝽ާᢾߌޖ࠾᝾ƨpx^aV-QB#I9H9I:I:H9H9H9H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9I:QB#]T3gcGrveYtxQny[tNjwYrUnOhxJcpHbmLbsOf{KbrIapCXfK`qMdsC^cA]cE`hGelHemIbhJclOeqVm|XnThuSgtVn|XqUmyJaiK`jNisCdfIgpNmxLkzLj|Kjx]`DOA#J;I:I:H9H9H9H8H9H9H9H:H9I:RE'I`W>]\8XTJd_9XQ5ZURsiXxWxAep9]Y7VU<\Z-SJ6VO8YS1UN2VM7XQ.SK;]UUsmHd_EbY7UK1PF>^V7ZR:ZR9YQ0VM8[R8XM5UK/ND'I@+PF+SN5ZYeokVI,N@"M>!M>!K< J; SD$jf9JaQ9YZejNWI&M>!I:H9H9H9H9H9H9H8H8H8H8H8H8H8I9 M?#H8H8H8H8H8H8H8H8H8H8H8H8H8G8!H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8F@/C@,G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8I8I8H8I9 H8 H8H8H8H8H8H8H8H8H8 H8 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 J: J: J: J: K< M>!P@"P@"P@"P@"YK'PV6#C<#A;)EC-PI+LF0PN4TQ1PN'IC&GB&JC&GA(GD*LF.MM7SW>VZ@W[I]e;PW7PQ%IB'LF*LH3G*E9"H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 K:!VI(PP15PB*KD'IB)MG'JE*KF*MI&HB/B5H9!I8 I8 H9"H8 I8 I8 I8 I8 I8 I8 I8 J9 I8 I8 I8 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8I8L=!M>!O@"TE$TE$VG&WH&XJ'UG%XI'ZL(dY/`T,jb4oo!N?"L= J; N?!L= J;I:H9H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H:J< XL+gePsujtzlw}RpxZs^vIepWnXnUjRhzJdqNhvH_lG^jG\kC^g?[aA^b@^aHcnJepLfnTpRgrQfqPepRhvPgtI]dJ`gPjuLhuIbjFZ`RfrA_bNjr^vUsTqQpWdRN?"I:H9H9H9H9H9H9H8H8H9H9H9H9H9J; [T8Vkh;XU9]U/RJ8\TIltdOuDinEhv0QL^\1XP3TN0SL>]Z*MG-NI+QH5[VDf`:YPHg]2SH.MC;ZQ3VJ7WN.VL2VL.PH3SJ1QF,KB+MD+OG*PJ9RIWM3L=!K F>C:A7F=C9@6D:$E;ID)H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 K=#:C5;@-<;(B='C;%C?+>B3GE3J9!J8 I8 I8 BF:ASL7F7E?(H<#=H;?F7:D6D<'I8I8 I8 I8 I8 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8L; M=!N>"PA"RC#TE$XI&ZL(ZL([L(`T,h`2h^1cW-ja3kh8`nBߒ܌܈ڂЕ܅΂~рښ޲ޚݚݗݘݜޢߥߦߧ߫߭ߕݍݙޕގܗޚߓݓ݇ΐږޑ،ԗܔݔݒޑݖޛޔޞߗޏ݉܆ڐېՈ̢̌ަު߰ߗޑݚ߾ߚޓޕޛޢޤޢߪ|suu|؎ܞޚޝޑܒܚݟ}ۆۆۊ܃ۊܗݚޣߥߣߟߜޝޚޚޗޙޗޡᛷڥߚߖޔݒޔ۞ޟݘԔҒ~{wH8 G7G7G8G8G8G8G8J; sim{Ψޑ̪ᒭؘߚܣߕߛߟߚ။rrs?mi8bW-UF%L= J< J; J;J; J:K< I:H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8H8H9H9M>!^S/pp^stlmyuMkyTpTqNhzNexSg}Tf}XoUkIdrEalC`kD\hA[dD]g?[bDafMfvSl~Pm{QkzMclMbmCX_QguTnVl~Hbj>`e@]a=YZMAJ:H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8:?7,8H'BA<>-H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 J: J: J: I: I: J; K=!K< M>!VL*2NB-PH&GB,MH(JD$G@%HB#D?"?>(DB&FC"B>A="A>&IE$GB2LQHak2MN5QQE<B:A8C:C9D: C::VLKH-H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8J;!H8 H8 H9 H:!H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H<'ML>9UU1OM.OL2QO/OL3TP)KH(J@C@)I8I8 I8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8 H8H8H8J9N="K; N=!PA#QB#VG%VG%WH&^Q*_R+^Q*jd4f\0e[0le6i`3_f:ߑ܋xs|ԓ݌܍ցΌچڟߡ߮ߞޞޟޠޡޥާߩ߬ޔݔݒً݉ښߓݎڂēޏٔޓژݜޚޘޘޗޘޗޖޒݏݎ݌ڂƏ֓מݪ߭ޖ޲ߦޠݝݙݚޛ޲ᛶъ̔݀ytۆ܍ܕݓݒݓݙ{xہۆہےܛޠߣߧߞߗޚޑܙݚݞߎݚߣԐݡߦߖڑ֚ߗޔؒ֋͑Սˆ{wK>(G8G8G8G8G8G8G8H8NA%xmw{ǓӌˠٌҐܘޑޘߡߘ᝽|^nk:XJ'K< J: J:H9H8H8H8H8I9H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8I:N?"d[9qpUpzpLhwIgtPjHirSoKeuQj~OexUi}Tj~G`lE^kE^i7XWA[`D\d=\^#F?>;(FD <:,IH";<6QS2MO"I9 I8 I9 I9 I9 I: I: I; K< M=!M=!O@#YT.7O8I> J@D;A6C9B8!G=#H?,JBH;!H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H<$H9!H8H8 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8I9 3RN4RP8UT'HC;7(DB-NJ&MG)M@;M7HA'H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 I8J: K; J; M=!PA#PA#UG%VG&YJ']P)bW-h`3jb4bW.ia3i`3eZ/f^1ߩឿڈۋۘޞߕݝݞޓݑݒܜ޳ߣޢޢޢޣީ߭ޘޒܒݐ܍ُٛݕލچэ؉Гݚޞޝޛߞߡߞߞߜߘޑޒݖޕވ΁ʆwǟۮߣݭ߳ޟަߙސא؄yՆ܇܋܈܆ۀۄ}{ځptلڗݣߤߪޖݔݑܕܚݝީݔޖޒކӈړޛߦ᛺ٛؠޛݜߚߍՎ׌ӆ„|z^YOH9 H8G8G8G8G8G8H8H8\YElln~Şۦ┷ߑޖߚߐߕ鄉uWJ'I9H8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9H9H:K< WJ(idAPelNh|OjMivUoWoTlOfzQexPewI`nH`l\\>`a^aLL:J; I:H9H8H9H9H9H9H9H9H9H9H9H8H8H8H9H9H9H9H8I:I:J; K`Q;ZT5[U/TL>cdAhl9b]4]X>eb2UQ6WR:]X6ZR/TK7ZQ0WO0UN+QI,PJ/TL@e\8YQ5YQ3XQ<`Z9\R8]R1WN4VN4WN4TL,LB)KB/TN>UJN?"H9H9H9H9H9J; WJ+?`b'MD$JB$I@"G?;K=I9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G9!E9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8I: H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H:#H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 G;$I8 I8 I8 I8 I8 I8 I9 I9 J: J: J: J< J< J; I: J; O@"SD$WJ(DR<'OE$IB&HC&KC,KG*KG&LE#KA#KA$JB$CA"C?'JC(LD*JG0NMB\cG]g,KJ#F>+PG+QH?L6FD+H<#J: I9 I9 I; L=!RC$\R.ZX8^`'H9 H9 H9 H9 H9 H8 H8H8H8H8M>$K=#H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 I9 I9 H9 I8J; L"P@"SD#SD$QB#TE$XJ'YK'jc5jc5`T,cX.eZ/f\0cX.ttEވۆۊۅۘޛޠߧ݆܈܍܏ܚޜާݛݩߵ߭ޓݐܖݏܒܛޘޔ݋يَچэ֚ޜߟߣߟߝߙޓތݏݏފ|Â~ѭ߯ߑސޙފُވ܇܌܄ۃxu؁ڂv|ڈڙݲݒݜޏܐܒܖݤߞߓݗ݉݉ي܊ܐݚޔ՜ڠڡޜܦݐׅɃ}UN6J;!H8G8G8G8G8G8H8SG'~jzmЌʃ̎̚ܥᘻߘߙߝߚߑߒߗŌtngHWJ-J; H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H9H9H9H9I:UG%YffOh}Nj}Oi|UkUjQf{NdzNeyMdyGan?Z^de6^X4]W;d_2UP3WS;]V2ON3XP9ZS9^\,QK,RI.SJ+PI"RC$SD$7H7#E@%E@!A>(IE.JH0PM*NG+RI&LC)NF'ID'IC&IB)JD4OO=V\Iaj;TZ"G?&LB,RI&LD+RH,K@>D.L=!L+TI(H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8 H9 H9 H9 H9 H9 :=)1?02>/8?-C:#I8 I8 I8 I8 I8 I8 2H;-MG5ND8F<J<=NBASL5VS?D3H9 H9 F<#5E75D5"SC$RB#N>!O@"TD$YK'`U-_S+`T,e[0_R+_S,_S+f]0唺ݎ܌ܓݖݗޖޙޓ݃ۂ܆܆ۈؓܧߔݔܡާޣޤޤޚݕܗܗݗݗݖޏ܏܋ۆԎۈՐ٘ޟߣߜߛߐސݍ݆܆zˉς~ߗޑޖޢߐݍݏ݈܃܀ۄۀx{{|׋ےܘݵߕ܏ܙތܐܕݗޘޔޜޛވ܎݇ۊ܎Փ֑͕ӞُҠݛߗގ׎ԎҊЎΌ˄tWXGH8G8G8G8G8G8G8L>$]]K\pi}ђʋŁ؛ߖߗߛߕߛurHe\0O@"I9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8H8H8H8H9H9H8H8H8M>!OYPKfxLevLgxMdxPh~WmQdyNcvI_nG^jD\fD^gBZbPiwZpYpOp{FfmQkuOhtSiyNbnGafNfoQksRlwL_lNbqGciGhrLkwS]^I:H9I:H9H9H9I:H9H9H9H9H9H9H8H8H8H8H8H8H9H9H8H9H9I:I:I9K< ?XJ0RJ^T6XN2UM3WM7XP6VN0RK3UR/TO-PI8YO=^U8VM0WTLN9L< H9H9I8I8J9K; R\I7YN.UL>UIIA)I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9,F9)H<;F4MD'>A+H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 H9 H9 H9 H9 H9 I9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: J; J: I9 I9 I9 I9 I9 I9 J; M=!N>"N>"P@"KC)?G44F=-JD(IC$F@%ID&LD'KB%JA)ME.QK*LF)HC3NNAYaAYbCZ`(HD(K?(NB)NG1UQ0TL,PH:P>*J>)LD)MC.TL'HD%G@'JB+LH)NG$HAE<A8E;!G< H>%LD$JD`~[H=$H9 H9 H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H9 H9 H9 H9 H9 E>&.E8$GC#IC*KC-D6H9!I8 I8 I8 I8 J8 CC3KJ1H?(BB0D@,H>'CD4,CE8LCI8J?*H<#H9 H9 H9 F?'H9G9 H9 LB'+LE/PF.RM2PDF?'G8 H8H8H8H8H8KA)H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 H9 I9 I9 I9 I9 J; J< M>!M!N>"N>"K= K< L=!N?"PA#SD$VG%YJ'^R*cX.dY.aV,pn<ݑ݊܍ܒݓ݉܁ۋܒ~~׀֐ٞޫޙݣެߞޢޡޚݔܗݔܙݚޛޒ܎܉ۊڊو֊ؑݕޜߙޗߛߟߒޒގމ܄ځقăɀƏӖݨ߱ߪߦߝެޖގ܇܍܉܇܂܆܋ܑܗݙݕݑܚݷߏ܏ݓݎܙޡߛޔݘޢߚ݊܎ݏڄڄڑ܎֑֌͝ۉΗޕߐۓؔؐЊͅ|||kssG8G8G8G8G8G8H8J; Wrj]tmy}ؙߞގސޙ␠]P)QB#H9H8G8G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H8H8G8G8G8G8H8H9H9H9H8H8H8H8J: VWDHbqKdwNfxQhSkKcvViRezQf{K^oEYgDWeH[kSnYr`yVtUrOitNjuLcmMhrJbgRjsMfm@X\>SX;VY?_fNdqSP@K< H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8I8H8H9H9I:I:H9H9H9FI49\U7^VGltFmp3\U@jl8^Z,PM4UT5XY8ZX7ZW6\U3YQ0VN1YQ7[Q:[R4RJ5YP4XQ;_Y9_Z5[X<_^:_[Eig<]Z2RL7WP7RJ-NF&H@@K;L= I8I8I8I8I8J9M=!J@&H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8D@))NG#H?$JA'LC->.H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 J: J: J: I9 I9 I9 I9 I9 I8 I9 J< L=!L=!M=!O?"P@"RC#WI'MN3,OF B< ?<"@=&F@(IE/NJ,HG+IE0NL6RT9U\AZc,HF=6!D9(NC-SI/SJ.UL-XN+TJ(LE*MD)OE,RH+PG+OF.OJ'OF$JBE<A8F<D: G>$HD$HBfnAJ:!H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 H9 H9 H9 H9 H9 H8 H8H8H8H8H9 H9 H9 H9 H9 H9 H;#GC,GJ3H;#G?(I:"I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8BK>I>)I8 I8 I8 H9 H9 H9 H9 H9 H9 H8 H8I9I8I9H8H8H8H?(H:!H8H8H8H8H9 H8K!N?!O@"QB#UF%]P*cX.e[/]P*dY.rq>܆܄܄ۊ܋܉܍݈ܔ|р؈ښޛߛޡߧޓݓݙޥߢߛޖݑܔݒܐܔܛގڊڌ܆ډچىېݔޔޖޞߕߔތ݌݇{}vʔ֞ޭߪߣߪߟ߯ߐݔݗݝޕ݋ٍ؍֊ԋӅΊ؎ۜݣ߯ޟݓ܇ێܒ݌ۢߤߛߛߦގ܈ۈ܁ۄڏۆҁʄˎ܌܍֓ݕޒݕތщ˄|tWOAG8G8H8G8G8H8H9LA*o|h~dvnr|Օߖߛߤᓸ߉ކތޔߢ吞trKg_6[M*PA"K< H:H8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9H9H8H8H8H8H9H9H9H8H8H8H8H9\R0E^jB[iKaoVm\tPhRh~XlVjO`tJZpIYnM^uOdu]ud|VsZvTp~YsNgqIcjPirLdk1OL/LJ8UUA`eC[eJA,I:I:H9H8H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8I8H8H8H9H9H:H9H8H8H9IA(6ZQ>caJnwHmr:_XIonNot/QO7WS<^`7XT7][5[T.UL0[Q7^T<^W;ZP<`X3XQ8]W>a_8ZZ9[\;]^JifNmk:[X6XS7VN4UN>ZT5RJ2PJQB%I9I8I8I8I8I8H8H8H8H8 H8 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8)NG+NH6>,H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I8 H9 I8 I8 I9 I9 J: J< J< L=!M>!N>!M=!N>!MD)5K=*KE!@9<7$A;*HC*FD/KJ'FE/MM/LNC[g*EE#><?9!G>'KA-PF+QF(RF'PE$KA$I@#KA!G=#I>$J>$I>$KA#IAE=C:D:A7 G>!G>(HAVV0NE(L?#H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I9 H9 H8 H8 H8 H8 H9 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H9H9 F<$H8H8I: H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I9 H8 H9H9 I9 I9 I9 I: I: I9 I9 I9I9I9K; O?"M>!N?"N?"O?"SD$YJ'YJ'YK'`T,f\1kd4W~׀ڀ{|{~Ձ||҄ؓ݋܄ڍݕޝޛޝޢߙޒّ݈ݑݛޮߠޚޘޖޑݏݑݐ܎ܒܘޘނԉڄنى܍ݏݏݕޙޜߛߕޞߕސއۈۀ{wxȇӅ̒أߥ߬ޡޤ߮߫ߞޔܚݨ߫xy~ˈ׆בڝݦޢޜݖ܍ۉۗݖݓݡߛޕݚޢߠޕ݅~uy؄܆څمۆ܇ډۅψ̊ʓ܍ىԅz{xfɅF7G8H8H8H8H8H8J; O@"wzcynx|КߚߞᕻߒߗߒޖږעߵܠߝmjOaV-`V1UF%M>!L< J; H8G7G7G7G7G8G8G8G8G7G7G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H:XL(I\^@ZdK]nUi^t]sXnRdyPavN_tObvPcxQeyPcw]si^yZuYr~`u^rOfpIch>Z]9UU4SR6UXFMELA)I9H8H8H8H8H8H8H8H9H9H9H8H9H9H9H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H9J=":]RAdgImvIpsFldHmqVuy2SR-OK2RQ5XZ8ZW5XQ.UM1YS<`d8^X<\S<]V>c_:[X7XU7WV7[];_`@aaEdg@``9]Z?_[=\T6VNF_Z/PGIRGL"JC+,LD*JB$D?"?<%B>#D?1MO1LM5PS0IM'DC A:>5&H> B9>5!D;#B8)JB&F@&H@"C= A8B8?5!I?(QH%ND#H> F> E<A:)LAYS.L="I9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9!O>$UD'O?$J:!H9 H9 H9 H9 H9 I:!H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8G9 G9 J;!IC-H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H9 H9 H9 H9 I9 I:!QTUJ:!I: I9 I9 J: J; I9 I9 I8I8J:N>"P@"N?"N?"P@"PA#QA#QB#TE$\O)cY/e\1lf6~ztyuvwsqx{{΀φyvzҁٍ܍ڎُ܋څր҈܏ݔޛޡߜߘޖޙߙޑݙޘޗݘޓݍݏޒޚވ~ԃڅىۆڈۇՌړސݔݑܑޏ݊ۀ؂ف~y|ȅ҉ՌѠߠߦ߭䕧f^V`XPۤߟޠݠݜޖޖݏ܂҃֎ݑݐܐݛܠݜܕܑۗݗܓ܈ܙޣߚޖݛޠߗލ܉݀szцۂ|ۀۂۀԁzǂƆ‰шՋٌՄćƇŁzzuL>'H9H9H8H9H9K>"TK/ZS6`cQzgkјߢޘᘰڊДڡ៽ߧ⠻{dqwm{ks|O@$O@"PA#QC#O@"L=!K< I:H8G7G7G7G7G7G7G7G7G7G7G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8I:I:H9H8H8H8H9L< NTK=W`I_o>T^Rd}Xn^u]sXjQavTfyXo`x`zfjmc{[wQhrNdpOfqNgrJfo>\b7XZTT;K< H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8I8H8H9H9H8H8H8H9JL48ZTIjrGglKluIilHek`urPfb4SO6RR/OL(JB/RL8]W0WV.PO3UO8YTIjg=_Z4TP0PL.PM;`e@emEgiDd_=][CefAa_Gfa9[T:[QA^V-QHDPFL; I9I8I8H8H8H9 H9 H9 H9 H9 H9 I:!H9 K;"H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8@G3*NH$HA,SL-RM!C:9:&H8H8H8H8H8H8H8H8H8 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8 H8H8H8 H8H8H8H8H8K<"H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 I8 I8 H8 I8 I9 I9 I9 I9 I9 I9 J: K; K; K; K; K; RC%EJ4:J81OD-PF'KA#E>$F@=:4QR9SX.JI(FB&F?+LF)IC ?8$DA1PL+MF,NH(GC"A<?9=4=4B8$JB%LE#KC$LCB9"E<0J>XN+N@$I8 I8 I8 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 I:!H9 H9 H9 H9 H9 H9 L<"H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G:#H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I: I: H9 H9 H9 H9 I9 H9 H;%LA*LB.MA,I9 I: OI9I:I9 I8I9M=!O?"P@"P@"O@"RC#UF%QB#O@"VG%TE$\O)aV-qp?uqqw{ỳ}xuzrtvqrssu|{zzy~̇؇ْޏݏےܐۖޔъґڗڕݓކ܄ۀۂۄےޅmy~҂׀ډ܃ӈ׋ڏݔގ݌܅ـ{ԀقՁ{Ĉ٘ޜݝߦ߯ݸհˑȧߨߣޘܒܔݑݒݕݍۉىڅڈ܉۝ݞݗܒێۊ܍ܑܒݖݡޞޘݛޝߒݏ܅ڌ݆}׀ӂ|ڀ|~yՃʄɀ€ĂԊΊ|ytjcb[O@"N?!I: H9H9J< \`?lzq[T0hsd|מߝ߮➼ߑՋԤݔw]fgSOCG7H8G6G7G7G8G8G8H9I:H9H8G7G7G7G7G7G7G7G8G7G7G7G8G8G7G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H9I:H8H8H8H8H9J:QSC>Yc>T`AYc=S]GZkPavVhTd{XjavicX}hrxczZqWlUiyKco<]e6VZ6VX1RSRQ5J:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8I8I8I8H9H9H9H9H9H9H:EQ@:_ZXxZ|PozVq}VsefGXYAJhn>]^4VV"H?*NF1UN.VR/SP,NK/TKDfa1TM0SL1PM:SW;\aa`SnoJfa:]U6[P8]S,OIIXOM?#J:I9H8 H9 H9 H9 H9 H9 H9 H9 J;!H9 J:!I:!H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H85J<-PK&LF+PI+PH>5C8 H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I8 I9 J: K; I9 K; J; L"N>!SC$NR99TG-TJ%I@'GA,HH=U[*CD*HD*LE?YV@XK2SK,QH(JC*JC,MF-MG&C@&C@?6;1>5!G>#KA#KC"H@"G>#C7ED,PA%I8 I8 I8 G9 F:!H:!I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 H9 H9 I9 TA'O>$H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8BC-BH8H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 H9 H9 H9 H9 H9 I9 I9 H9 H9 I9 I: I:J; K< OA%OC*I: I8K; M!QC%[X6`n`jfzБӕΗԡَܑוۑؒ֜ٵߤYRCH8H8G7G7G7G7G7G7G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H9H9SO6C_i=V`I[lNczJ_qO`rTd|Vf~bug}[qpgic{[lZmRhxNgsOfu?[`3QSDWJFTBOK2J; H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H9H8H8H8H8H8H8I9I9H9L=!CbXLlmLlvSvJlqbtfaX4ha3jc5Tf`*LH1PU-PP+MI1UQ,SO/VQ,OO1UP:[V3TL/OH8UT>Z_B^g;Za7[_2W[3ZY:^]<\]CcfUpp;\X4VM2VL&JA"H?4LBHB(K; I9 H9 H9 H9 H9 H9 H9 H9 N?$K;"I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 D<&IE+,NJ)NF#KB#G>2>-H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J: J9 J: J9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I9 I9 I9 I9 I9 I9 J: I9 J: J: K; K; K; K; M=!P@"FH08G81I<'IB!A: @90I?FO7dZ1\O)SH(CF/,K>"D=$E=(HA-KE0LJ$A=>6@7"G=&MC%MC!H>B8CE*G;!J:!C=%I9 H9 J9 H: ?@*B@)A<&>@*MA%L="I8 J:!N?$I8 J: I8 I8 H8 J9!K;!R@%L=#J;!I9 H9 J:!H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8?@+G<%H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 I: I: I9 J< TL8XULJ; J:L"O?"QB#VG%RC#QB#UF$ZL(ic4om:nj8uyEsrjruzwwu|vxmhkia|_z^{equtrsyvr}{xǀ̃}|Ȋ؅zxsxztvwvupllqz|yxǂ{~̃тЀԇډڍ۔ޘޠߜޤޫײތܓܘޒۉƂ̅ϊ֍ڎܔܐܒ܉ۃ܆܅܀܋܍ܐݘݛޡޢߚލ܌܉ے݅ۉ}~y}xxw|yvz}ẃ|vlgiYU3biIamMN@"J;H9H8I9M>"_eLxa{g~΍՛ܧ᣿ތӐՎՉц΄ʎӘ؝ޔےؚu{wH9H8G7G7G7G7G7G7G7G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9H9H8H9H9H9H8H8H9H9H9RD%F_^:U\FVeTe}ZlZl^pXjfz\r\ug^s_tRcuK]j`tbuVl{Rgy?XXAUSSG(J; H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8I8I8I8I8I8I8I9PB&dvkTorHhfGhldc?tvElf7g^1cY.bfI8XW4VQ2SR)LD2VQ3VV,TQ+NM1TT2UR4VQ9VX@\aHcoB]gDan=^jAdo<^b7]b=`cBck7XV0RK2RK1QI1PH(I@@7/NFNE+I: H9 H9 H9 H9 H9 H9 H9 J:!J9 I8 I8 I8 I8 I8 I8 H8 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 B?(8WM5SG0VO*LF#A7>;%F9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: J: J9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H8 H8 H8 I8 I8 I8 I8 I8 I8 I9 I9 I9 J: J: J: J: J: J: J: J; L)CB @: C: E<$H@ D< B9$B5%H=%J>,I<$H>$F<&E8&G=*JA%F>#C;=4@7%FB0B6M@$J9 I9 I9 J: J: I8 I8 I8 H9 H9 I: H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8@<&H8H8H8H8H8H8H8H8H8H8H9H9H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H9 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H9 H9 H9 H9 H9 H9 I9 I9 I9 J: K!N>!L"N>"N>"O?"QA#WH&VH&XI&eZ0kd5kd4qwZzfirsqqqoqxp\hd[w\zWu[{doyprtnev~~ʀzx{ցtorrxǂՇكwusxtoxōڇ؋܆{z}|qpv{ŀˁψׂӆ֌ڇؒݖޝޠަߧߣޣߣެޗݓ݋؄w|z|͉׏܏۔ݎۋ܏݈݈݌݆܀؆܉܌ݖݝޚޒ݈ۋ݇܈܂~zڂywvstsvpmczptr|vuvuh`wv[]R[]JmxZX4M>"H9H8H8K<n~_yd|kzt֛ᢿޖَ֍Պӄ̅̈·ѐڇג``ZH8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H9H9H9L= NN68Y\4LPQdsM_rL[kSezi~kWpZoh~cx\nOexQdth{dv[qafYZS3OH/I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8I8I8I8I8I8I8I9J:P@#WK,`Y]^+OK.PL.QM/SL7ZY0SP1QQ.NL2SS:YX=Y`>[cHesC`n?]gAbi=`h=`g6X^?dnCdk9ZX+PL)NI'LB3PH&G>?5$H?=PGL="H9 H9 H9 H9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H8 H8 H9 H9 J:!3SK1WP2ZU2WS+D7H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8 H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 J: J: I9 I9 J: K; L< L< L!J; K; 8F2"H>?9$@>(AB*DD&DB#A>#D?#E="D;%E<$F@$D?&IB%I@"B>'EB$HA @;(EA$E?A9>5A<#<:=L?CK7TI'QA%L<"I9 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8 H8H8H8 H8 H8H8 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8??+G8G8H8H8H8H8H8H8H8H9H9H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8 H8H8H8H8H9 H9 H9 H8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H8 H8H8H8 H8 H8 H8 H9 H9 H9 NG8K=$PH8J; M=!N>"L!I:I:H8H8J; `vvnRjxNcp_tdyb~vߔߚ⏬וۑَ֐ٕݏ؋Ԉԃ|{iqxL?&G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9H8H9I:H9H9I:RC$>TP-KI>Z[TevM[nXj`z\sYpYmg|ezZlQfzXl`rew]o~O@#H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8I8I8I8I8I8I9I8I8L< SC$TD$SD$[N(ZK'VH&XJ'\N*Hbc*MH0RM6SL,NF7YV0TQ4UT2PP0QO=X^D`j=[c9Y]9Z^6XZ6Z[7[a;^f:^f<`gCfs4V[)NH<\T.QI4VM4SJ.LC B9 B9@NCJ; I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 BYN5^W6\\.VQ?D0H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G;#H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8H8H8H8H8 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H8 I8 I8 I8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: J: J: J: J: K <;#@>&D@'EB*KH.OL%GC)KG#EA"D< B>&GC%FC$EC,KI)KE(MGC;#C:$F>$BC'IH)HDY^;]O-N>$I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8F8 D;$G8G8G8G8G8G8I:J< K< J; H8G8G8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8K<&MH=H8KF9NC1I9 K; L"M I:H8G8H9M>"bc}NcnQdtg}mmtϓէ⠽ޒڑږݏڊ׌׋ԁ]^]MA,G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G7G7G7G7G7G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H:I:H9H9H9K< JM7,LE,MHMcmXi\ncxg|j^qjbxavXlZr\ofx_nyL< H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H9H8H8H8H8I8I8I8I8I8I8I8I9L!N?"WI&ZL'9MC(LG0PJ2TP1UL>]_/SP)MH3ST6Y\8VZDal:Y`;Z`7X^8Z[3V[3X\7Yb6W`@cp9Zf/RP-NJ4SL.PK'LD.MF0OG%E= B9/JBJ; I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 DL=9^V.PQ.SL-E8>>&F?$H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8F:"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8H8H8H8H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 J: J: I9 I9 I9 I: J: N>"O?"N>"M=!M=!J; J: J: L"B='FD&DD,HJ*KJ+QJ+SK'ME#C: ?6"E>'LC&FI)CK\Z6cX1I9 I9 I8 I8 J9!I8 J:!H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8G87H"VH&XJ'TE$P@"RB#VG%^W6]tpaVZ\X{RwZS{QwW{Zy^{Uq{Tt{LloRpzOnw:a[HlpMoxSs]|`TyPvVwRr~OoyYue~knrr`|aqokbfkrqsrkeopttw~փ׀|˃Ԃ҈׉؆h_xtvʍ֎ۋ֍؆ԌـyvyxƅՋגܙޛާ߫ߖލ܎ݖޔ܎|ČК݆ΉуʂʂɁklffm`het{|zxy}~~y{ԅܕސޏ݄ق׆}ӌڅׅ~yxsvvpc{\pg}[oYoLiqTn|RfuM`nNjq!JVD,PK=ZY4NL!N>!K"LL3.NF&KA%JA!E=%G@(LE&IA#E?$D>$@>'CA-IH)EF*HH*LI,PK/TK)JB&G>'F=&I?$G=(KC(FHYU4YL*I9 I8 I8 K:!O?#I8 O@$I9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8J; K< J;J;H8H8I;H:J;I;J; I9I9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 H9 H9 H9 H9 H9 I9 H9 H8 H8H8H9 H8I9I8H8H8H8I8K< J; J; K< K; J; J:J; K; K< P@"RB#N>"M=!L!UG%oqCUq{SwV|U{OzS{XzUyMwyJtuIopIoqHlnJnrGllCfd>`]8^Y<_]EfhGgkOqxGppCljGmpQs|ZyPq}Wu_xeprfZ{`jltwsrigoqpnpvtww˂؃{y}ʄӊ؍ڀe~b{xЊגݒܖݔܐۈՁzrqvφ~ǂ̎ԨwדۆԒ݌׃|Ljώքvzk[^d_ceXz]|fhqtqlo|ȂԀօڅڏݐފۀ|zɀ{zЄtutrro`yRly\s]qPhvXk}RgtOevFXe=VZHfl8\Y;_Y;aX;d_BinBfmFhnIhpNhsVlzkgkPD-I:H8H9RbhnOdpEZ`Vjzbvug|jexno{՟slNE6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9I:H9H9H8H9H9K< SR9+IH@_hMeuE`nTjbvlronf|awWlUj{bv_vOB$H8H8H8H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8I8I8H8H8H8H8H8I8I8I8I8H8I8I8I9I8I8H9H9I:J; K< TN1?^`2TQ5WOI9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I9 Kda2XQ@B,B=&3I:9E3I: I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8F9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I8I8I8I8I9 I9 I9 I9 I9 I9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 J: N>!PA#O?"N>!M=!L< J; J: K; L"E<#A;(EA*HD-JJ/LL-OJ*PI,PG-PF+NE,RH&KB)MF5D5M="I9 I9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8;A0G7G8G8G8H8H8H9I;I:I:G8H8I:H9I9J;J;K< M>!I:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8 H9 H8H8H8H8H8H8I9K< K; J9K: L!kf7L]KBbdLqwFnuIrxPszJosGopCnjAlh=h^GklEkhLruFjh?c\>b^>c`5[S=_Z;^Y=db=hc?hdGmpSt]zRp}Qq{b~hnhjV{cbwe~tkkkklkomnllv|uy{yuyz{΅{hnyɅϐ۔ܔېۅՅy{orv}~́|z~oVkgóyxy{z|okngbX}U|\cY`\~frhptdQm|{z؃ڌ܆ڄ؆zzyzzy{{wwwrpm_{Tl{\rYqXo~J^jK\jHZhBYb>T\?[a5TS1TL,NF.VN3]X5\\;`cAgjVtVq}by|k|lXYnMF2I:G;$MC.kTiv]Y;XY5UQ.NK9PJJ9I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9!I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 F=$H:!;F4-MC1L?>E05H82J;(K@CP64D2C>'0B1I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8 H9 H9 H9 H9 H8 H8 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H9H8I8I8I8I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 I9 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I9 I9 J: J: I9 I9 I9 K; N>!O?"N>!M=!L-OG0ME,MF0NM2MN*LI*QI2XN/VL2\Q0ZP*PJ&HE@B.I9 I9 I9 I8 I8 K;!I8 I8 I8 J:!H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8G8G8G8H8G8H8H9I:H9H8H8H8H8H9H:K< K< I;L< N>!J; H8H8H8H8H8G8G8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 H8 H9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8I9M=!N>"J: K; J; K; J; I:J:K< J: J: J; J; K; L`]=b\?fbFmmRs|WuQq{Wv]|cggb``z^uiVs\w`z]xXsa}hlkcchjnknttvxvzqdxbrvs΅ц҄ҁҀπ{˅ӂrzw~yz|Nrr[||iov~{nw{xvfa\~]X{U}VY}Rx`UzZ~\~gkhkma~Tn|r|z}σч{zsqquttvrvvqrseWl|TfvQftVl}CW^AX^B]_A\c)F;%H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I8I8I8 I9 I9 I9 I9 I9 H9 I9 H9 H9 H9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I9 J9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: J: J: J: J: K; L!L`X2[O/ZO/ZP4]S=e^DijJmlEhdIjiGijKgpAeb@f`7\T1UK2WN1QI<_[AaaBcc=_Z9aX@gbDkjEjlFhkNnyQq{VtSq~KmxOqUrTn}`xLhoKhnOmxJgpKhuTqWs_|fca~\wd`|_|chnpszrxg_pfm^``vetxz~Ȅφygpsvtm~vxdGkm>_[`Vtsmxqpjai]~c`Ou~U|YS|Mv[zYzTxQw`eXy`\zKnw=a^?_asy{xyzyzttlkqojomuvvurmMhrK^jPcoLenC`b;TY;WZ:SW7VW,VM*UJ,VK-TI,UK,RK7W[A]gVrVq~Rkt_wshyavjQhZqdpTM6M>!p`x]sw|^eeH9G7G7G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9I:J;LP=8Z[3OL?U\UgzXkYm\r\q_uezf|QgsTkyRkwGeoMPDH9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8H8H8H8H8H8H8I8M="CO=H8H8I8H8I8I8I8I9J: I: I:I:J; M>!^X4C^M8YW1TL<^ZK_JdZ/bY/?\\6ZW2UM1RL-LG2QO4UX@8Jdk3RY,NM(JE%JD"F=,OK.TL0WN.UN.UN-TO3UR1TQ1TQ4RMK: I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 F;#2PC'PG;A,D:#F;#B>(E;#=@,'ME!M=!L%.G=)JD3RO2NM,MI/XN6`W;f\7`X4[S,OFIK7I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8 H9 H9 I8H8I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H8H8H9G8G8G8G8H8H8H9H8G8H8H8H9H9H8H8H8H8H8H8H9H9I:I:I:H9H9I:H9G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H8 H8H8 H8 H8H8I8Lb`9_Y5[T<`]=b^@bbCefHfmBacCaeHgoNoxGdjJfnGcjPkvFdg?aaCdiFelKkwRpaYv^|ej^}YzTvYzZ{^}gcmhmka\}[}c]Pt`abU}Ydgl{xtmfqrqi[facLrsBjhNuxX{\_\~\f_}OkwVy^~X{JszLqyQtPr~TxSvRvXzXvStDfjMmzHmvGlrSs~GioKirmuwxgruwutmpqikkejimnj`Qp{J]iI\cBbcCif9VT6XQ0PK1UO-VK(RH)TI-WK-WM.TQ3[Z7]^<^b@ae;V[Pgsd{M^pqg{]tRiYpctdf]_]Um~||QI7G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G7G7G7G7G7G7J<(H8!G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I:OG-=_a5YU5MMTkzUkWpVkWl~_uawXnF`fJenGdoJdrOL8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8LH/IK6H8I8I8I8I8I9I8I8I9H9I: J; J; SD(`X2P`F4UM*MG3TQLYBSD$QE'C^a:\X>]W4WP-NF'IB?Zc:Ya'I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: =B.3WN7G6I9 H: I9 I9 E=%C@(4M!O>"O?"M=!L%3KB:XWB\`.MJ7_VFmb>h_;e^;g\4WMVW@I8 I8 I8 I8 K;!I9 I8 I8 H8 I8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8 H9 H9 I9 I8I9J:QF,[a[NB)I9I9K='J<&H8H:#H8H8H8H8H8H9H9H9H9I:H9H9I:H9H9G8G8G8G8G8H8I<#H8H8H8H8H8H8H8H8H8H8H8H8H9H9I:I;H9H9H9H8G8H8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H9 H9 H9 H9 H8 H8J: K; J; K; L!L< I9I8I9I9I9I9I9I8I8I9L< [O)rr?J_Q2QQ;WV4VS:[Y>^[JfjOiqJfiKfl?a`9aZ6`V4^V7b]1XP.RJ.VL0VN.VN,VN-VN2WR0UN6XU@be:\Z=^_@bc?ab<\ZEdjLiuFagC`d;Y[C`cA``;[ZAbdRrOnVu\|Y{a~fcMktMlrQq{PpyWwPrEgnMq}^Zy]z`~bXzZ{b`cZ~VzOtY|TvWz\[biV}R{eeme\Xd`VQ|R|WR{Mx{U|XUx[~Z~PrzQqzWuHinIhnGikQq|Cgh?efGmsFntCilIlqLltMozNr|Cgk=db;`\Qp|lvwtkfnppsllplkmb}JiqJimLkpNjt[s[sRqyNmsKak@X_:ZZ>d^6]R2VL-WJ.XK'SH$OD*RF.TQ-LO0RR-WQ1ZT3WV9WW7STC\aZp]rg{fz^sQfK`zWltRG4J<"PE0H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9I:H:H8G7G6G7G7L@-ul]bhH8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H8H8H8H9H9H9H9H9H9H9I:M=!CWK?^V0LHQgv\sEalJamSgvTi|Vk{Tjy9VXFbnEalPgqOB&H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8KG0NN8H8H8H8I8I8I8I8I8H9H9H9J: K< XN0bmPTj]3WP.KD.TMKR=O?"N=!PB$PF*SI,>PC2UO*LB#B;0OP:Z`2RS)IE*FG&JF(MG,QL+RJ3ZQ.TJ'LC(MG&KE'HBA85M>H9!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 J:!)K?8C0G9!;@,@>)I9 ?@,7A1E@(;?)0B21M>B>(I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7H8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H9H8H8H8H8H9H9H9H9H8H8H8H8H8H8H8H8I8I8I8I8I8 I9 I9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 J: J: J: J: J: K; J: J: K; K; K; K; K< M!O?"SD$cX/N>"M=!L*LD5H9 J;!I: H8H9H8H9I:J; J; J;J;I:H8H8H8G8H9@<&H8H8H8H9H8G8G8H8H8G8G8H8H8H8H9I:J;J< I;I;I:H9I:H8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8 I8 I8I:I9J:I:I9I9I8I8I8I8I8I8I9I8I8I8I9K< O@"ol;o|WMf\2OP1SQ:[X8WT@\^@]^C]`?[]7\X1[S/VM0YP,TI,SJ+RH-RJ*RI*RK*QK,UK.UN2UP8[Z5WU5VT6XT7XV7ZX5YU@`b@`eFciGcj]_<\[@_bKkuPpKkwOrVzWySrRo|MltRoxKknLflEgmKipJjmHjlBhlTsQpRsUvWwXz[}eaV|NtMpOrDj|AgzCi{PvSyY}f]mj^T|Js|MtaU|GvxFpsDnoBojLuzGqtJrwGqtQs{Prx]}Ts}OpzNr{Os{BeeHgj;]Z:]X=`^?dd?ed@feT[AZbShxPerE`iJgrB]fOO@H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9KK6UQ6H9H9H9H9I8I8H8H9H9H9H9I:K"L< J; H9I9OD'L]K2MD?7>7<4#@:4PT6T[.QS*NM&LF&LE,RI-RJ0UO)LG'LC!C= B:9L?I8I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I: 4F5E;$I8 F>&H<"G:"G;#J: J: ?E2AP=>H8G=#0L=%KA'E8J9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J:!H8 H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H9H8H8H8H9H9H9H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H9H9H9H8H9H9H9H9H9H8H9H9H8H8H8H8H8I8I8I8I8I9 I9 H9 H9 H9 H9 I9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I9 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I9 I9 I9 J9 I9 I9 I9 J: J: J: I9 J: J; J: J: K; K; K; K; M=!N>"O?"P@"PA#YL(jb4QA#L7YK6`V9`W6^UB`XNB(I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8I8I8H8H8I8QD&T[LXm{_vqjkHO?"M= `uW`\J:H8H8H8H8H8H9NA$UM-K=$H: H9I:J;L?%L= L= J; H9H8H9H9H8H8H9H9H9H8H8H8H8H8H8H8H8H8H9I;J;J; J< K< J< I:H9I:I:I:H8H8H8H8H9H9H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8I8I8I9 J; I9I8I8I8H8H8I8I8I8I8I8I8I8I8I8M=!TF%ZM(h^4xZxlatc`xpG`_1ON0OL8QR=TX7XW.VO,UL/SK-RK,SL*PG+PH,QI.SM4WS3XT3XS4VV5WV2TQ5WV7YW4VT9[Z:[[>_`;\]:\Z6UU8XXC`dEegA`c@aaEeiGhmCdgBbcCeiNpJmwKlyHhnLmsIlrCfb?c\KjqJmsCcdCdeAbbIlxTtQn[zTnJfoTq^zZxfRwIn|Lq~Ko~;bl=dpEl}PvSwUxhlmV|Kt|JtNr~NpyY~Js|Amn@on^`B]cNiuMryJfmJak@VY8SU8_Z3WO1XJ0WJ&K@%JB%LC)RI;]]Egi,OH0UT0TQ6UX=X^2LP4VVMiqavj~y^r\nTezUbrRNBJ:H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7^^[mvH8I:I;K< J;L= J; J; H9I:I:H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J;!H: I: H8H9H9H9H9H9SD$RX>2UM)KF4TTYm9TU2MLH^f8QT8QSG_gOht?[`N@#H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 OXDL=#H9H9H9H9H9H8H9H9H9H9H9H9K<"TI*ltSQhY;ZS2RJYM(YO3m^|@TLJYUMP?J;!H8H8H8H8H9H9H9H9H9I:N?!QB#UF%PA"L= J; L= N?"K< I:I:E;"H8G8G8G8H8H9H9H8H9I:J< K< J; K< K< L< L< K< J;K< K< J< I;H8H8H9H9H8H9H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8 H9 H9 H9 H8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I: I: I8I8I8I8I8H8I8I8H8I8I8I8I8I8I8K; J; VH&eZ/nj:^jJXhLj|b;SP,FF.JH;PT9RU0RN(PH-RL1SQ.PL/RM,PH(NF.RL/RL0QL0RN2SS<\a9X[5RR5VV:ZZ9YY;\^@]`>X`?Zb8VX7VV3RP>Z]KdlEadEdgCcfFfjFgiFdeCbbDdeFhmKmtEgiKlu@ce>b]Ae_FhhCce:\]@`bGgj7[]=bdIjw`WtPoze^zXwZzPn{IlwMq|HktAfmAdn;al>cnChwHjzNsWxHjwIozAnp@hk?dehb@he;c\?e`Hmp9^Y7\U6]T2YN2ZO5^W6^[8`\8^Y4\S6^W-VL2[P:_W:`W>bbCehFelWuRr~Vu_{^{[z_|pgeiljawKjqCgiDeh>^^5YP:_W3\R8`X8]Z<_\DgfDgdAebB\`$IB&H?(NF+NJ*OL,OO/QQ3RT2SP4SQ2NO3TTAbdaxf}ZpNbtfzUhVfy]ncf^H9G8G8G8G8G8H8G8G8G8G8G7G8J<%QG7M?(ZVOcl}{rfklH9I:K< K; J; I:I:K< K< K< L< H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I: H8I: H9H9H9H9H9I:SE$UZSfsIcnC\cOA$H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9J#G=D:#I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8N>%I9 H8H8H8H8H8H8H8K:!H8H8H9L=#J:!L<#H8H8H8H8H8H8I8 H8H8H8H8H8H8G8H8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8 H8 H8 H8 H9 H9 H9 H9 H8 H8H8H8H8H8H8H9H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9I:I:I:H9H9H9H8H8H9H8H8I8I8I8I8H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 J: J: J: J: J: K; M"L!K< N>"QE'4RJ8XL<]Q<`Z7UNIXGK;"I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8J9PH+DH8FJ2>9"A<"C>*MG)KE0RRI`dalLgwceVpOdu8RX.MM3QX.RRHTIH8H8H8H8H8H8H9I: K?(J;OB$TS@NL5XI'RD$PA"RD$VF&SD$M>!K< D:#H8G8G8G8H8H8H8H8H9H:I;K< L< M=!L= L= L= M>!L= L= K< K< K< I:H9H:I:H9H9H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I:H9K< TE%lh8mrFT^CbiBZm[3LH2IJ;WY8TU2TP.SM0RM5UT,NJ*LD)JC+OJ-RM3TR/QN2UR4TT4UT0RO/OL-TP6XX<[a9YZ9VX>X_>X^=W[=W\`cEiqUuOqFnw=ge5`[;bb@gg7_Ye`#H9H8H8H8H8I8I8H8J: 5E8@RC&FA!D<8[i?ar4Wb4Wc-JU(NM-TT*PM)MK%F?#I9 I8 I8 I9 I8 I8)F;$LC8O?DD+NE(CC/D=$/QF5H8:>)FA&I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 L<#K;"H8H8H8H8H8H8H8J;"I9 H8H8H8H8H8H8G8H8H8H8H8G8G8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8H8H8H8H9H9H9H8H8H8H9H9H9H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8G7G7G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H:I:H9I9I:I;I:I:H9H9H9H9H9H8H8I8I8I8I9 I9 H9 I9 I9 I9 I9 I9 I9 I: I: I9 I9 I: I: I: I9 I9 I9 I9 I9 I9 I9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I9 J9 I9 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I9 I9 I9 I9 I9 J: K; J: J: J: J: K; K< K; K< K; K; N=!QB#P@"N>!O?"ZM(h_2aV-UG&QB#SC$UF%VI&QB#L,MF8\V!M>!O@"N>!L< K< K< I;I:H:I;I:H9H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8 H9 H9 H9 H8 H8 H8 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 H9 I9 I9 I9 I8I8I8I8H8I8I8I8H8H8I8I8I8I8H8H8H8H9L>!\P*g`3e\1bX0hqM\iK>UQ>XZ6UT3RP2SN.PK/OK3PM,LE.NH-PH0RM-NJ,PL5WV4SS1PM1PM.QM-RM.TP1SQ1QP>Y^E^eOdqD[bC[cIbmD`fF`gB_cCafHdmKiqDbdGbgBcdAdfDgjBefDdiHfnPnv^xQox:]\8ZX:^ZBdd9[X7[X?^`EbgLmuMouNnsRtQs~NnyMnxJgqCaiRpOnzCfn5\\0XT3VU9^\7YWGhoIgp<[[NsAfh8_]c]<`X5\Q/YL3[N1\R6`U0WM*QG.VK.WM1\P2[Q:`];^^9^a5\Z;]\?_aKnxNp{Dhl@fgHnrAhi!L= K< I;J;K< K< J;H9H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J:!K<"H9H9J: H9H9H9I:I9SF'7WR7\X;\\Wlewfw`qYnPfw>[`E]hZV:I: H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8F:"JF.I9H9H9H9H8H9H9H9H9H8H8H8H8H9M@%[[:=ZM6[R]l4U]*KJ?;"DD"BE/NS+MM'KJ?ULNF0J: I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J:"I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 5B.CA*H:!I8 I8 H9!I8 G:"0MB9QCHS;+PJ@B03D6F;#C;#-E7I8 F8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 H8 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8I8H8H8H8H9H9H9H8H8H8H9H9H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:I:I:I:I:J; I;J; I:H:H9H9H8H8H8I8I8H8H8 I9 H9 I9 I9 I9 I9 I9 I: I: I: I9 I: I9 I9 I9 I9 I9 I9 I8 I8 I8 H8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 H9 K;"I8 I8 I8 I8 I8 I9 J: I9 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 J: J: J: I9 J: M=!L!PA#RC$^Q+bX.[O)ZM(ZN)[N)XJ'SE$N>"J: I>$(JA,OH0UL7[S1UN/WN0L>K;!I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H8H8H8H8H8H8H8H8I96RL3TQ0SN)NE&I@ @:/QL#A>"D=4ZZNjtbpS0QM"D=7ORPexDZk7U\%KE)PG)NG3NG1KC*HG0PQ*MI"JBBM5M@#H9L< FB*7H>6KA(HB"F>;UNgf>ZL(VI(5UP?F1I:I:G8G8H8H8H8H8H8I:I;I:H9I;L< K< N?!N?"N?"M>!L< L< L= J< H9I:I:I:H9H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H9 I9 I9 I8I8I8I8I8I8I9I8I8H8I8I8I8I8I8I8H9H8H8I: J< SE$aV-_S+fa9kiedKq|DgkBhl'FF%ID)KI*NJ*LL8SSL[FKG.L=!I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 L<#I8 I8 J9!I8 I8 I8 I8 I8 I8 I8 I8 I8 ;;&4G5C@)H:!I8 I8 I8 I8 G:"H:"IA(:N;/LD=?-7K>OB$G>$/L@D;$@:$I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8L<"G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H9H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H9H8H8H9H8H9H9H8H8H8H8H9I:I;J; I;J; I:I; I:I:H9H9H9H8H8H8I8I8H8H8I8H8I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 H9 I9 I9 I9 J9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I9 I9 I9 H9 H9 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 J: J: J: K; K< L"O?"N?"N?"P@#QB#XJ'`T,_S+[O)[M)YL(VG&N>"LWP-K< I:H8H8H8H8H8H9H8H9H:I:H:K< L< J;J< L=!O@"N?!M>!L< L= L< K< J< I:H:I:H8H:I:H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 I9 H8H8I8I8I9J:J: I8I8I8I8I8I8I8I8I8H9H8H8H8I:N@"g^2g]1kf7ol:oj:_hL@ZU8VU;XV4VQ1SM-NI1SN9ZV2VR(NH*NF)LC'IC0NI3QN*KE'HC'JE*NH0RL5WT>Z_:WZ9UX8TV;Z]9[[Fbh@]`?_`A`bAacAae?_^;\Z4SQ=]\HekFejOmvImv>dfGltLnwGhnB`cB`a@aa@`aEbg=^\@a_IfgQluKksPmuJjmOotNqwRz@de6]^8^a9^``d8ZY3WU6ZXAdiHhoIftHeoJjsEjp=bc#WL+ZX4Od[.UQ+QM.UQ1RTFZNVK*K< I: I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 K:"K;"I8 I8 J:!I8 I8 I8 I8 I8 I8 I8 I8 ?<&6A/G:!I9 I8 I8 I8 I8 I8 I8 I8 ><(/K?:E77D8A>(.MFD@+A;$E:"==(A;#I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 I:!RB*H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8G8G8G8G8J;"G8G8G8G8G8G8G8J:!J;"H9 G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H9H9H8H8H9H9H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H9H8H8H8H8H8H8H8H8G8G8G8G8H8H8G8G8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9J; J; I;I:I:I:I:H9H9H8H9H8H8H8I8I8I8I8I8H8I8I8I8I9 I9 I9 I9 I9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 J: L"PA#P@"O>"N>!N>!N>"N>!N?"P@#RB#UG&\O*^R*\O*XK'TE%RC$QB#N>"L'K?%J;!H9 H8 H8 H8H8H8I9MC(,UK(NH2SO/QK0RO0QO.NJ;4/RN.TM\Z4cY.bd<4UV.LK,DF6RR7XQ*RK#KC+RL,QL.TP,SM,SL-TO0ZU+TM,TL)QH%KB,NJ4TV6\^2YX,RO C;!B:?7%GB?UFhnKXK'K< H8H8H8G8G8H8H9H8H8H9H:L< L< L= K< M>!N>!N?!L< L< L< L= K< K< I;H9H9H8H9H9G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8I8I9J:I9I8I8I8I8I8I8I8I8H8H9H8H8H8J: M>!SD$]P*]R+dY/\O*daC>WT^_<\\7[X8ZX:[Z@`b7ZV2UP2RPB`d@ae?beGgsMowNszMqzJlxPp|Fgj=`]>`^@bbAaa8ZW?_^CaaLlpFklHkmEiiRvvVzLmqAif5`]2ZY8^^<`cAdmBbh=_e=^b!WJ'5QG3UT/UO/RS6VX`aDO@"J; I9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9 J:!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 ?9$2A1I9 I9 I8 I8 I8 I8 J;!I9 I8 I82K>)RL;C3B@-2A14D6D:#I9 @<%8>)?<&I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I<#J<"H9 H9 H9 I:!H9 J:"H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J:!H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8I:!G8I9 H8 G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H9H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H9H8H8H8H9H9I:I:H9H9H9H9H:I9I:I:I:I:I:I:H9H9H8H9H9H9H8H8H8I8I8I8I8H8I8I8I9I8I8I9 I9 I9 I9 I9 H9 H9 H9 I9 H9 H9 I9 I9 I9 I9 I9 H9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I9 I9 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 K; L"N>!O@"TF%VG&VG&VH&UF%UF%WH&WH&WI'WI'XJ'^Q+`U,ZM(VH&SD$SD$PA#L@C1G9!H9 H9 H8I9MS=@]S6]X;^]6VV2QO0QM(KF:40(*KF$JA-L=rtC[jF,OJ+IH,IE%JB&ME(RL&NF$LD+RM*TN*RJ1WQ+UM/WR4[X3\V/WN.UN0US3WZ8\d8Wa7X`'LJ"EB D< B< C>'HAmxaVH&J: H8G8G7G7H8H8H8H8H8H:L< M>!N>!N?"PA"PA"M>!L< K< K< J< J;J;I:H9I:H8H9H9G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8H8H9H9H8H8H8H9I9J; M>!O@"PA"XJ'adJ6SP5XS2TP3TP+LE-NG0TL6ZR0UM0VO2WO)NE%JA$I@$KD)PJ-RN+OJ-QM0PL3QP9XZ>^d5WU6ZV7[X5YT2WS/RM6WU8YW4WS0SO3USBacKjr?`_DjpIszHov@gjBgj=`a<_]@bbJjsAae<\[;[ZD`aB``MklIjj=`^BcfNryCffDgh@mn1WT0WQ6[V8\XAaiGfoJiqFgo>dg=ehEjnEikBdfKlsCfk5\X6[X?bc8^Z8a]9a`6\Y2XU:\]<[]2SR1TR1UQ8ZX2SP3TP3WR0TN-QI$GA'NF&LD)OF'NE)QG(MD'LC(LC%J@(ND$E=#E='KA(MB)PF)OE.XN2XO:\V9YU5SO/NH1RK+QJ,QJ-QK.SK2VN1UM/QL(JE,RI/XP0YP3\R0ZR2`U3]S1[R-VK/YM&KB'LF#KB(ID&IF#HB(MG%JD+LK'II%JE/QP-ON+NJ1RP4STC_c?`bRiyYm~Xl}`tdocbf>`b7^d>/MP=NDJ; H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8I8I9I9I8J<"K;!I9J:I9I9I8H9H9H9H9H9H8H8H8H9X\?/LG(OFRjYOgLYS0I9H8H8H8I8I8H8I8I8I8J: L%I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 F:"3H:6I".L@)KB)ID'KD:J53A.I;!D9!.=..RI9YTH^QKR:AXI6TL8XP5I=G8 K*MF&OE$MD'PF&ND$NF'RJ6[Z0WU7\[0YS/XR0XP-QJ2WSCdpFguEbp?]j.IS6Q[2QW'JFD= A;(H@kpv`UF%J; H8G7G7H8H8H8H8H8I;L= N?!N?"O@"N>!O@"L= K< K< I;I:I;I:H9H9H9H9I:G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8H8H9H9H8H8H8H8H8H8H8H8I:RC$`W3>WR-SN2WP6\V:^X4XR3YQ2XQ/UN1UM3SJ2TJ&KC&LE0TP,QL&NH(NH,QM-OK4VS4TP5UP1UR.TL1UQ1XQ5\X/QM2UR1WT.VP1UR5WV:^^:\[`^DffBab;\[GheDeg?ca=`_IinDbdAcdHmt?de>baHhn9\[;]^DgnRqGkqaa4ZU/VP-TN6ZX3VP5^[8\V5WR7XT1VQ;[\@Y`5SS5US=YZ4PP3TR:\Y/UN3YR/TN2UO/QK)MF%J@#G>%HA'H?)G=#F<#D;%C:(IA%JA#F>%H@&IA$JA*OF0TM.RI1TM2WP8[Y3WR5YU*MF2UM4VP0TL1SL*DD*NE&ME&OE+RJ+SI/ZQ/ZP-VM*VJ.YM#KA&KD'MF'KE%KE!F?'MI+OM'NJ*OL)LJ+HJ-HK-HJ1IN>X[H`f@X\/KI1NM5PR2NNAWc?WcJdu\qh|sxwwrmqw|Ўݏڊ؇ԏ۔܇يۄڌ݁N?#I:H9H9G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:O@"RS6(LH/OJ[pZnYb^VK*QD$QC$^Z7OcS >:$EAAB1H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8H8H8I8I8I8I8I8I8I8I9J; J: I8I9I9I8I9I8H9H8H9H9H8H8H9H9MYE/LG)OG(NI#H?OM0I9H8H8H8I8H8H8H8H8I8J: O@"^U2-GG6QPceEPB$K< I: I9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9 I9 I8 I8 J:!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 7B14I;J9 I8 I8 I8 I8 J:!I8 I8 I8 I8 I8 I8 I8 F:"F9"H9 I8 I8 F9 ;<)4C2!E:@5B:#I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 K;#H8H8H8H8I8 J:"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8J:!H8 G8G8H9 J:!I: G8G8G8G8G8I: G8H8J:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 I9 I9 H9 I9 I8 I8I8I8I8H8H9H8H8H9H9H9H9H9H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H9H9H8H9H9H9H9H9H9J;I:K< I;H9H8H9I:H8H8H8H8H8H8H8H8H9H9H9I:I:I:J; J; I:H9H9H9H9I:J; J; I:H9H9H8H8H8H8H8H9H8H8I8I8H8I8I8I8I9I8H8I8I: I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 I9 I9 H9 H9 I8 I8 I8 I8 I8 I8 I9 I9 I8 I9 I8 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 J: I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: J9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I8 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 J: J: K; K< L=!K= L=!O@"RC$TE$ZM(]P*XJ'RB#O@"P@"PA#RC$VH&YK(\P*WI'PA#O@"K; K; J: I9 I9 J: I9 I9 I9 I9 I; .F64L:.UL6\V/TL8WO,MF,KD0SL-UM7XNXN-VG&VJ*DQ;=]T5TK:MCUM+U]@Ee[Joi@e`4^V2ZU)RH&PF"JA+PJ?9:2"B9.SJ*RJ*KF/FK4KP*LF/TN*PH'OE+UL'PG'SH'RH'RJ'JI8X_?^g5X]4V[1SW4TU3VV?^fFdr@^l1LU2JV0IS5RW$CA C=!B=&F>B^`IdeZaM_X0RC#J; H8H8H8G8H8H8I:J; M>!O@"PA"N?"O@"M= K< J; I:H8H8H9H8H8H8H:H9G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 I9 I9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8I8I8H8H8I8I8I8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8O@"\Q,DWE)KC3WO:c]3XQ7[T/TN0TL9_X8\U.OG*IA&LC*QI,PJ)QJ%OG(QJ%NG*SL<^]:ZY3TN-RJ+QK0UP,RL3VR.SO4XV0WS,UO/TO.MG3ZW>``>ihAjjIqu@he6]X@da?][;]UCebBfeAfcDjiDifDjkNpsQon3YS$LF.TO8\W:^Z?`b:^^;\Z<``DgjHhqImrKq{IkqMlvFirFgo?bd6ZW8ZY:^^9\Z0WP-WN-YO,XO1XR2[S5WP8UT2UQ7WT9XX5VU1PN2SO5RN4SP0OL.SM.UL(NF*KD(JD$D#G@"JA"I@!C<#C;&J@'MC'LA(LA*QH*RH.TK1TO0UO*QH&KA*HF.QH,LE*EH+GF(LE+QJ*RI,TL)RJ)UK.ZL(UF*VJ*TI"G@$LD#JB"HA%JD#JC%JC&LG.RN+NM*GJ0JP4MQ>X])JG'IF(GCI<$H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8H8H8H8H8H8I8I8I8I8I8I9I9J9I9J; I9I9I9I9I9I8I8I8H8H8I9I9BP>*NF'LE)OH'JBM[DRD&H8H8I8I8H8I8I8I9 I9 J; SD$hbHQ\T_^BRD%K);E2H9 I9 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 =<&-<+G8 B:$@A+'H@B9F="C7C:$I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9!I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 J;"H8 H8H8H8H8H8H8H8H8H8H8 J:!H8J:!P?'O>'H8H8I8 M=%N>&J:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8H8H8H8H8K;"I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 H8 H9 I9 H9 H9 H9 H9 I9 I8 I8I8H8H8H8H8H8H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8G8G8G8H8H8H8H8H8H8H9I;I:H8H8H8H8H8H8H9J;K< QB#O@"J< I:K< L< H9H8H8H8H8H8H8H8H8H9I:I:I:I: J; H9H9I9I:H9I:I:I:I:H9H9H9H9H8H9H8H8H8H8H8I8I8I8I8H8I8I9I8I8I8I8I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 I9 H9 H9 H9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I8 I8 I8 I8 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 J: J: J; K< J< J< K< PA#TF%UF%XJ'YL(RC$M=!M=!M=!L< L"SC$RB#SC$M=!J; J: I9 I9 I9 I8 I9 I9 I9 I9 J: J-RF(SJ*TM-WQER=NA%P@"QB$NF+SG(PdR6XO/NG:SFZkVOoe#G@.QM(BC84$D>(LB0LJ.FG4MM+OJ.UN.TM+SJ'RH&QH&RI(TJ,YO)QJ'MG+JK/NQ3QY@^m;Ye=\g<^i:Yb@]j=ZfA]l2NT6QT@880>5<49191:2">7;RBejH[N(L< H8G8H8H8H9I:I;K< N?"PB#RD$SD$M>!J;I;H9H8G8G8G8H8H8H9H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 I9 I9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8I8I8I8I8I8I8I8I8I8H8H8I8I8H8H8H9H8H8H8H8H8H8H8H8H8H9K< N?!GK4.LD)LE0VM2XP2VN4VN0OG-ME*HA)IB(FA+NH,RJ,TJ,RL)RK%PH&QH.VN4[W4XT4ZU6]Z2YU1YU0WR1VQ.RK*OG-TM0VP/TM(NG.XP:c`Aca=dbDjm@d^6ZSCc`=[W?a\FgcAdd@c_MooEgcJgdLhfEe`4VP/UO.SL/RK8^ZCed=a_8]Z"G="D:#E;#F<#H=$KA&MC$MC&OD+SI5XU+OG)LE,PH/OI+KF'CD&A@*MG'PH)QF,VN*SJ(RI-ZM+UK)SH*VJ&QG&ND F?@; A<&MG"KB%JE&LG)JH0PR2QS>^b@\_2TS+MJD\ePcsQfuNcpG_iF^jMduRj~]tkfvhyhxhwet`ndqesgvh~tẑԍۈق~рwM> I:I:H9G8G8G8G8G8G8H8H8H8H8H8H8H8H9H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H9H9H9H9H9H9K<"H8H8H8H9I9H9H9H9J: N?!SD$9C2E]d_d_PB$K< L=!M>!XP7)IB)ML'IE#DA*,@1 C;%HBC:B8A74@,I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9!I8 I8 I8 I8 I8 I8 I8 J9!I8 I8 I8 H9 H9 H8 H9 I:!H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 K;"H8H8I8 H8 H8I9 H9 J:"L;#H8H8H8H8H8H8H8I9 H8H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H9 H9 G8H8H8H8H8H8H8J:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I9 I8 I8 I8 I8 H9 I9 I9 I9 I9 H9 H9 I9 I8I8I8I8H8H9H8H8H9H9H9H8H9H9H8H8H8H8H8H8H8H8H8H9H8H8H8H9I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8G8H8H8H8H8H8I:I:H9H9H9H9H8H8H8H8I;K< O@"O@"L< L< M>!K< H9H8H8H8H9H9I;I:I:H9I:I;I:J; I; I:J; J; H9H9H9I:I:I:H:H9H8H9H8H8H8H8H8H8H8H8I8I8I8H8H8H8I9I8I8I8I8I8 I9 I: J; I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 J9 J: I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 J; K< K< J; J; K< N?"QB#SE$RC$RB#N>"L"N>"M>!M=!M>"3K?1OF'H?/IBF_TCd[3UL1ZO2YQ.TN@9;5$G?)OF$C?(@B2JN.JI0NM,KH'JD*PH(MF1XR(PG%PH%PG(SK%PF$NE,UM0VP(QI)MI,HN8T^6S[5SYDbr8V`9Wb:X`>[f4MR!@=-LL&HD@88/5-;3<4;3<5$@7]cB`U-L>!H8G8H8H8H9I:J< N?!QC#SE$XI&O@"K< I;H9H9H8H8G8H8H8H9H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 I9 H9 H9 H9 H9 H9 H8H8H8H8H8I8I8I8I8I8I8I8I8I8H8H8I8I8I8H8H9H9H8H8H8H8H8H8H8H8H8H9L=!TH(ZS/?VF+MC-RH0TK.OF,KB.LD+GA(B<-KF4SM/QL,LG0UN-TK,TK&QH*QI4^Z4\X6[V:_[<`^4\Y4^X4YT:_X:[S7ZQ.WN.XO0VO*SK0XP0[S4^V>`[Fcc/UM5VOEc`9ZU;^ZDbe7^ZAa[IljKmm^xuJgc=]W0RJ.PI-NG0UO<`]BfdBge8`]DhjKmnJllCdgJhmKhn@ab8]\2XS0UO'RH'SH$MC#ND&OD%ND"I@ I>!J@#F=&J@4XS2VO2XR2UN*KEB>E<&H?%D?$B=$D<#H?$I@"G=#G>B8:2=46- >5 B: C; C<C;G@ H@"F<%H>!D;"E<"I@G= F< H>"K@%MC$LB*OF(JE)MF,QK(MG&GC%@@%@?0PM'LE'KD"H?"G>(PF'RH)WJ%SF(VI KAC<@9!C<*PI$JC"GA'KG,OM/UP2SU;]^@af7VX.KK*JI>V]L_mCVb6OT?W_Ph|czcz_skogwdr`o^j`l_kapcsawcyjnrtvywPA#L= K; L=!N?"H8G8G8G8G8H8H8H8H8H8H8H9I:H9H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9H8H8H9H9H9H9H9H9I:I:L=!QB#ZM(XJ&P@"M>!L=!L$I9I9I9I9I8I8I8I8I8H8H8I8GC.SI*CP<1VM.RJ1OOJP,I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 K;!L<"I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8I8 H8H8J:!H9 K:"L<#H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8J:"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 H9 H9 H8I8I8H8H8H9H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H9H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:I;I:H9H9H9H8H8H8H8I:I;K< K< K< L< L= J;H:H8H9H9H8H9I;I;I;I;J; J; J; J; I:I:H:H9H9H9I:I:H9H9H9H9H9H9H9H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8I8I8I8I8I9K; J: I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 J: I9 I9 I9 I9 I9 I9 I9 I9 I9 J: J: I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: J; L=!L=!K< M=!PA#RB#M=!K; J: J: J: K; J; J: K; L< LbXGE.P@"P@"N>"M=!FB,7NI5SK9YQKqhHf`$B;/OG(LD E=>63,!D<'ME"C<(BC,HH,KH&LF(MD%JC#KB$LB&LD"C@!D@&OG&OF$ND$ND)RK)SJ*RI$F@,JJ0MO6V[6T[-KN.OQ)KJ*LL@[f5KP2947VZ)KH)IH>6;2;2<4:380:2$D;fqPZM(K< H9H8H8H9I;K< M>!PA"WH&YJ'TE%PA"L= K< I:H9I:H9H9H9H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8I8I8I8I8I8I8I8I8I8H8H8H8I8I8I8H9H8H8H8H8H8H8H8H8H8H8H8H8K< RH(OQ5;RH7[U/NE-JB)F=!:3)EA3OJ2OI6VP&E?&D>*HC0LG/OJ)QI.UO2[U4_X8]X;a\@d_@g`8^W4WQ6YO6]S4\T=h_WN4VO4SLA_[8ZU5[V9\[=eb;d_IokPsnCe_9YP>]V3VP5XP2VO=`]@a_Ddb=]Z9[X<`\@a]BabKhpKhoAej=dc0YS%LB"H="LB"LB"H>$K@'NF E<&JD$H@ G=!G=!B9(LD(OF)QH/SJ*NG"G?H?"G?C: A:"D4:2;2<4!D;E>C<C;F<G=!G="G> F=C:D:D:B7 H>!H= F<&KB'LB&JB'LC"F<$IA)IC%FB#B?,NH&LE!I?#L@$J?(OD,SJ)VK'TI(SGJ@C:&JC+QI'MF$JA+RM,QL*LI+JK7UW=TU8Y^1QP1LL+GG1JN8PTFYfBVa?V^Xnhidvatonbn^j_kbmam^j`napfxk~qmnvłjoxO@"N?!TE%TD$N?"G8G8G8G8H8H8H8H9H9H8H9H9I:I: H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H8H9H9H8H9H9H9H9H9H9H9H:I:I:K< PA"PA#N?"L=!J; J; OC%/OM2RP#A<%A<5PMBLFH8H8H8H9H9H8H8H8H8H9H8H8H8H8I8I8I8I9I9 I8 I8I8I8I8I8H8I9I8I8I9I9J: I9J:J:J:I9I9I9 I9 I8I8H8H8H8I8I9J:KC(CVB)MF6WTQb[J: I9 H9 H9 H9 I9 I9 H9 H9 H9 H9 H9 H9 I9 I9 H9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 J9 J:!I9 I8 I8 I8 I8 I9 I9 J: O@#J: I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 -B2DE.:I58H6G<$C=&)LA(NF#I@#LC I?D9A6G8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 HF-K;"I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9!H9 H9 H9 H9 I:!K;"L;#H8H8H8H8H8H8 J:!J:!J9!H8H8H8H8H8K<"J;!H8H8H8H8H8H8H8H8N>%I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8I9 I:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8 H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 H9 H9 H8H8I8I8H8H8H8H8H9H9H9H9H9H9H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8I:H9H8H8H8H8G8H8H8H8H8H8H8H8H8G7H8H9H8H9I;I;I:H9H9H9H8H8H8H9H9J< I;J;L< K< I;I:I:H9H9H9H9I:I;I;I:I:I:I:I;I:I:H9I:I:H9H9I: I:H9I:I:I:I:H9H9H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H9I8I8I8I8J9J:I9 I: I9 I9 I9 I9 I9 I9 H9 H9 H9 H8 I8 I9 I9 H8 I8 I8 I8 I9 I8 I8 I8 I9 I9 J9 I9 I9 I8 I9 I9 I9 I9 I9 I9 J: J: I9 I9 I9 I9 I8 I9 I8 I9 I9 I9 I8 I9 I9 J9 I9 I9 I9 I9 I9 I9 I9 I9 J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I: J< K< J; J; K!K; K; J: I9 I9 I9 I9 I9 I9 J9 J: J: J; J; J: K; L#DH5MC(N=!O>"O>"O?"O?"M"F@!D=%HE?\i5OZ#750RS)HG,LL?6?6;2;3:2:2;4 @8?\Wlh=VH&L= I:H9H9H:J< M>!O@"UG%[N(WH&SD$O@"M>!K< I;H:H9H9H9H8H9H8H9G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8H8I8I8H8H8H8H8H8H8G8H8H8H8G8H8H8H8H8I9M@%DI3=QE/PH*LD&HA+JC,NH2SN3VO*JC.KE*GA(F@)IC/RK0SL2YS2WP7]W7XR4[Q5\S:_W3TL2WN1ZP/VN1YP0YQ3[V.SJ,TL,SJ)OH0XP7QH4WO6YQ>^Z7WT>`aHnrMsvDmkLtpHpi?c\>^V7YR<^X>`X9\S?c\7]W>`a2SP7ZX:^YFhfKnqVvGkr8b]1VN'PF!H>(OED9"I?&LE&JC"G? B;&G?%D<(LE'HB"F< G?%HB"HB'LE#E="D< F>E<C9@8@9 D<D;B9@7>4>5@7@7 B;#IA G?F>E<E<D;D: F=!H?D;@8C:C9F< G= H="G=&MC#LA$MC)LD*JC.NF(LH#DA*LF.TL&OE(ND.XM(QF)SG)VH(TI)UH$ODG<C;-VM,RJ8]U*VK+UL'MG+NN7WX1RO1VP5WU/NL4QR5QR0LM5OSI]k^pjax[sm^rUgbzZiZh\jbpap`oer_mgxupnpʂڂTF(QB#RC$SD$N>!K< I9H8H8H8H9H8H8H9H9H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H8H9K<"H8H9H9H9H9H9I9I9H:I:H:H9I;J; J; J; I:I:L< ,IC+JB)C?&B@$?<3GAH8H9H9H9H9H9H8H8H8H8H8I8H8I8I8H8H8I9 I9 I9 I9 I9 I8I8I9I9I9I8I9I9I9J9I8IF0J<"I9I8I8I9 I9 I9 H8H8H8H8H8I8I8I8PH+!M6?7!D;!E<'DB(CD>U^H`i8ZU*OH&LD"HA!E?$HD!BA#CE+HL-HN3LU7R];Wb=W`+GH&A@&D>'FC"@: >6!@:#G?%G?'HC+JL(GG >9A8A9B9=4:2;3<6 ;5 <6!=6;43PKRj^ih?[N)O@"J;I:I;L>!RC$TE%VH&\P)ZM(VH&WH&QB#O@"K< I;H9H9H9H8H8H9I;H9G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 I9 I9 I9 H9 H9 H9 H9 H8H8I8I8I8I8I8I8I8I8I9I9I8I8I8I8I8I8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8G8G8G7I:!CL9/QH.RI+RK4XP6YQ7ZR.NG%C=,HA9WP0PI1TN7ZT4VP3[U4_V6`X=g`7]SFjbDd[8^U1YQ+QI'ME-UN3UO8][1WP-TL.QJ3WP5ME6^W7^X=_^:YXBfeFnjOtwGnkDkf@d^Fkc@b[8ZS;]V:[T<`W?e\>d\;f]?eb7WU=d^GnlOxuHou=fc*TK F=!G>B9,PK.NJ&HB!E= E=!E?$GB%IA A9<6#C;%FA#EBD>@: D>B:A9(KC#IBC;D;@9"F=D<A9B9?6?5@6A8B9A9 G?D<E<E;F=F<D; D:"E; B9D:H>F)HD/C:H8H9H9H9H9H9H8H8H8H8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I: I: I: I9 I9 I8I8I8I8JD-K@'I: I9 I9 I9 I9 I9 H8H8H8I8I8I8I8I8K: OS6'JB)LF,MEBP==F7J;!I9 H9 I9 I9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: E<#?F.,B;%I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J:"I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8I9 H8H8H8H8H8H8H8I9 H8J:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8I>%HA)H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J:!H8H8H8H8H8H8H8H8H8I8I8I8I8H8H8H8H8I9 I9 I9 I9 H9 H9 H9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 H9 H9 H8 H8I8I8I8H8H9H8H9H9H9H9H9H9H9I9 H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H9H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H9H9H9H9H9H9H8H9H8H9H8H8H9I:H9H8H:I;I;I;I;I;I;H:H8H8H9I:H9H9H9H9H9H9H9H9I:I;I:I:H9H8H8H9I:I:H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8 I9 I9 I9 I9 I9 I: I: I9 I9 I9 I9 I8 I8 I8 I9 I8 I8 I9 I9 I8 I9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 I9 I9 I9 H9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I: I: J< K"K< K; L>5$@<&BB0JLJ^l9XY(NG"G?$EB ==;< >?(II/MQ3QW;Y`4RZ3MT3KP,HG=6"@;@9=6$>9!@:&ID%GA#E>$DB:484808/;3;272:3 =4;3:3:4!=6%?7&FA0PFrzSaV-RC$N?!O@"UG%aU,bW-bW-_S+aU,bV-]O)VG&QB#M>!L< I:H9H8H8H9H9I;H:H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8I8H8I8I8I8I9 I9 H9 H9 I9 I8H8H8H8H8I8I8I8I8I9I9I8I9I8I8I8I8I8I8H8H8H8H8H8H8H8H8G8G8G8G8G8H8G8H8H8G8G8G8G7H8 GD-@^T1VN/TM0TL;ZR;VM9TM7TM:XQ/QJ0QK/TM1VN1XP4\T5]T?g`@iaCi_Fjb>d]9\U)NG(MF(MF*PJ3ZU/UM+PJ+QJ4LE4NE;fa!B;>8!A<$DA!F@B= D>A9@8#JA H@D<E=E=D<B:B:>5?6E;D<A8C;A9C;B;E<G=F=E< F<C8B8@6A8E:B7E:D9!J>!J="H>&KA&ND,QH,OG.SL/SK+SJ$LB(PH,SJ(NB)LC.RJ)PG/TL,UK*SI*RJ'NE$NE)PI%MC.XO(OG)NJ:^p2RW7^W(OH$G@(IB+JH-LK;TY>RZGYg`ux}hjzjke{Zi_o_paq`qi{ypuz֌zWH%[N)RC$L= H9H9H9I9I:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H9H9H9H8H8H9H9J;!RE(H9H9H9H9H:H9H9H9H9H9H9H9I:I:I:I:I:H9I:9C1,JB&D?0NN%AA@B-H9H9H9H9H9H9H8H8H8H8I8I8I8I9I8I9 I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I8I8I8I8H9 H9 I9 I9 I9 I9 I9 H8 H8H8I8I8I8I8I8J:OP1L^D&KEB:!F>"F?:D4K; I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 L<"L=".@2"@5A6:H2L"L"M=!J; J; J; K; J; K< ND,Vpk9ZQJd\&B?"@=$>< <6#E>#H@ B;B;=8$=??U_;UY/RN+PK'HD$@?'GG%BB+GH/MO2PS2NP7SW.LP2MR5OT93<5=6>792)D? A:.OJ'HC@:=9;6851+5-7/7/:7:6:28/ =4 <5">8 >7#A>"E?-QJetUhfAdY0bX0mqOluSerSgsUnrDg_3bW.aV-XI'QB#O@"N?!L< I:I:H8H8H8H9H:H9H:H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8I8I8I8 I9 I8 I8I8H8H8H8I8I8I8I8I8I9I8I8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8G8G8G8G8G8G8G7IB,CRA6ZS1TM1PJ/NG5RJ8UO7SL6TM/JC4RK1RJ3XP5[T7\TChb>f^=aY:^W7ZU4YS6\V,OJ&JE%JD*QK-TL/TL)NG.PI6YXBgiFjlMYTMJ8J@&KI>D:E<F<D;B8B8B8@6@4B7"K?!I=E9#F<%I?$J@&ND%MA'PF(QG$LD$MC#JA#H?-MF0RK1UM3SN3SO/SN(PG'OG$LD)QK)MH&KC4ZT.OJ7[X1Wb+PH*PH&IC%GB+MJ0NN/NMC[dF]iDXgDYh[t`|nnuqjkeyas`q`qbtor}|}مs|y]Q*YK(O@"K; H9H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H9H9H9H9H9H8H9H9L>#N@$I: H9H9I:I:I:I:H9H9H9H9H9J; J; I;I:I:H:I:G@')H@$B=@MENI2M>!H9H8H9H9H9H8H8H8H8H8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 I9 H9 I9 H9 I9 I: H9 H9 I9 I9 I9 J:!I9 H9 H9 H8 H8H8I8I8I8I8I9J: OD'TG'3PB C<<4<5@82I:91:31I9TR/L%H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 I9 I9 I9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8H8H9H9H9H9H9H9H9H9H9H9I9 I9 H8H8H9I:I;I;I:I;I;I;J;I;H9H:H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9H9H9H9H9H9H8H8H8H8H8H9H9I;I;H9H9H9H9H8H8H9H8H9H9H9H9H9H8H8H8H9H9H9I:H:H9H9H9H9H9H9H9H9H8H8H9H8H9H9H9H9H9H9H9H9H9H8H8H8H9H8H8H8I8H8H8I8I8I8I8I8 I9 I9 I: I; J; I: I: I: I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I8 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 I: I: I: I9 J: K; J: I9 I9 J; J: J: J: J: I9 I9 I8 I9 I9 I9 I9 J9 J: J; K; M=!J< J< L=!M>!M>!M=!M881 ;4$B:!>8<6"A< B<'IB!D;*H<=UI>5%F>#@9;2,G_YGecDfbDmgLzt1YP E#B=#HC%NF"IC(PH*NJ F@"JB#IB?;:4A:B:A8A8A8B:E= E<"F?D<B8!E="E=#JC I@D;A9C;@9A8B9B9@7F<H=G<B8@6>4A6A6 G; G:D9!D:#F;$H>#H=$NC'ND%J@&JA'MF'PE$JB-PJ1RL/UL1TK4RN6TS1QM5SU0OP6VW'JB&H@.PK.OK,PP-OK%KE,RL.RL6VS3SR3RR2QR?YbSlEZlF[mCXfQgnpptqrfz[lXi_og|fxgysЅׅք~`V2[N)WH&N>!H9H8H8H8H9H9I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9M>#M>$H9H9H9H9H9H9H9H9H9H9H9I:J; J;I:I:I:J; M>!O@#L?#L=!M>!J; H9H8H9H9H9H8H8H8H8H8H9I8H8I8I9 I9 I9 I: I: I9 I9 I9 I9 I: I9 I9 H9 I9 H9 H9 H9 I9 H9 H9 H9 I9 I: I=#G<#H9 H9 H9 H8 H8I9 I9 I9 I9 I9 J: J: L*-F8B;%I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H9 H8 H8H8H8H8H8H8H8I9!H9 H9 H8 H8H8H8H8H8H8H8H8 J;"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8 J;"H8H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 I9 I9 I9 I9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H8 H8I8I8H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8I:I:I;I;I;I;I;J;I;H9H9H9I:I:H9H9H8H8G7G8G7H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H9H8H9H9H8H8H8H8H8H8H8H8H8H9H9H8H8H9H8H8H8H8H8H8H8H9H9H9H9H8H8H8H8H9H9I:I:H9H9H9H9H9H9H9H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8I8I8H8I8I8I8I8I8I9 I: I9 I9 I: I: J< I: I: I9 I9 H9 I9 I9 I9 I9 J9 I9 I9 I8 I9 I9 I9 I9 I8 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I9 I: I9 I8 I8 H8 I8 H9 H9 H9 H9 H9 H9 I9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I: I: I9 I: J: J: I9 I9 I: I: I9 J: J; K;!I9 I9 I9 I9 I9 I9 J: J: J: J: J< J< J< K= P@"M>!M=!L< N>!M!SQ7?bZEf]Mja3PJ"B?#@>!>9(JD@:%EA4MRA[^AXa5UR.TM)OH,OJ,MK'CE3PP0MN3MO2MO1LQ4OT2LR.HN)EG5-5/819471:3 ;8;5"B=!A<@;=9<75196.+8:$=D:85.51#>:;4 ;592 >7!@;=7:38/7/90837/5.613+6.82=56PFWbHg_3_S+YL(TE$PA#O@"L= I:H8H8H9I:I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8I8I8I8I8I8I8H8H8H8H8H8I8H8H9H9H9H8H9H8I8I8I8I8I8H9H9H9H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7H8 JI1;UN2MH6NI/KF1MG0MF0ME0RJ5UO5YT:`\7\V9_X5\V6[VJkk<^[@_Z9\V2VQ'KE)NH.UN2YR6\UCYLRL8H8G8H9H8H8H8H8H8H8H8H8H8H8J:YW=Iff=b^@e_>^\LoiDgcKpjAhb"I@+NG(KE!D>0QK(LF'FA!G@ G?#IA,QI-OH(IA$@;2SO5XU2WP*QJA< G?!I@#LC@:A;A:B:A9?6=4B:D;F=G>F=B:D;G?"LB KAD:D<=7:3:3;5>7<6C: F=F;F;B8<2>4>5B7D8D9C7C8 D9 D9!K@&JB&MD&MD,QJ(QH%LF+SL3WU1RP*MG0SM3NN?TZ=T\>V_>Z`6QT.LK5G@(J: I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 K; L#1=*$?4=582:26/<3>6<4!=28@*F:"I9 H:!K=!G=#J;!I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 E:#I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 J;"J;"H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G:"H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8 H9 H9 H9 H9 I9 I9 I9 H9 H9 H8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I8 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I8I8I8H8H9H9H9H9H9H9H8H9H9H9H8H8H8H8H8H9H9H9H9I:I;I:H9H9H9I:I:H:H9H9H9G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H9H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H9H9H9H8H9H8H8H9H8I9H9H9H:H9H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H9H9H9H8H8H8H8H9I8I8H8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 I9 I9 I9 H9 H9 I9 I9 H9 I8 I8 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 J: J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I: I9 I8I8I8H8H8I8H8 H8 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9I8I8I8I9 I9 I9 I: I: I: I: I9 I9 I9 I9 I: J: J: J: J: I9 I9 I9 J: J: I9 J: J: I9 J: J: I: I: I: J< M>!N>"MUXF]_8TR1QL+PK0SN.PM-LL)MJ.PP2QR5QR6QT4PT3TX8W[2PU,GK=9:5954-5/6-5,=7 A< =894;694:5831-00 :>"=@'@G&@B <:#?8#@:">8"B;>6:2806.3,5.606/5-3-2*4.838262;6J_MnmAe\0]O)UF%TE$O@"I:H8I:H9I:H9H:I9H9G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H9H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8I8I8H8H8H8H8H8I8H9H9H9H9H9H9H8I8I8I8H9H9H9H9H8H9H8H9H9H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7H8ID.5J=1KE-JD5QL.MF.KD4WN=bZ>`Z?UHCM=FH6EC/E<'G:#C>+DD2AL=XLGM;F?'H8G7G7G7G8G8G8G8G8G8H8H8H8H8H8H9M?"H^T=b^@ec@d`Af_OyuEkh.SK)NG(KE0RM%F@%FA'JB)GA#JA(MD-OG*LC.OG$B;#C<*NI/OI&IC+PH(LD$JA%KB!G?>8@: E=@8D:@8@7C:B9!G>"KB G?B:C; H@G>G>C9@9:5:4;3<4;3=5?7D:"J>F;C8=3@6<2?5?5@5E:B7!D9C9 F="F="JA&OE*PG(SI+UK,SK1RP0RO4TR5TS4PNBV`GZgWiZpKbsE\iC\h8U]8U\3QUCZjDYh4$B;-A42A4K<"I9 I9 I: J; J< P@"ReN=7;36091>67072+B6J: I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 K; L< MA%WT2?I1<4<5703*0'5,8/$@5=2/=-F:"E:"BF-JA'J:!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8 H8 H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 I9 H9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I8 I9 I9 I9 I9 I9 I8 I8I8I8H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H9H9H9H:H:H8H8H9H9H9H9H9H9H8G8G7H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H9H8H8H8H8H9H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9H8H8H8H8H8H9H9H8H9H9H8H8H9H8H9H8H8H9H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H9H9H8H8H8H8H9I8I8I8I8I8I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 H9 H9 H9 H9 H9 I8 I8 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I9 I: I9 I9 I9 I9 I9I9I8I8I8I8H8H8H8H8H8I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I9I: I: I: J; I: I: I9 I: I: I: I9 I9 J: J: I9 I9 J: J: J: J: J: I9 I9 J: J: I: I: I: J; K< L< K; L< K< K< M=!M=!K< M<:660:7504.5.:391<7$?>73 =95/50520+3/77%?C.FQ7O_8Q_-HP#@<"A:'F?"@:;382506.4,5.926/5..5/4-93:3938272836QDkvVnl<]O)VG%PA#J;H8H8H9H9H9I;J; I:H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H8H8H9H9H9H9H9H9H9H8H9H9H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7I:!BF38RL4RL.MG6TN>SHBE4H;"H8G7G6G7G6G6G6G6G6H6E<$EF2I: G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8H8H8H8I:MJ/6UP5UP=^YMkhNplOvo/RMJdZ@ZS4VQ,LH&HA"GA"G@(IB1UM9^V%H?%JA%E>*LE&JE"HB"HC*QJ&PF$LB&G@ B;?8>7!D<A8B9>6 F=E<"I@$ND"NDC: E> G@ I@ I?E<H>?7;6=6:4:3=4=59291>4=4F9A6<38.<2>4@6E:G:A8C9D:F=!D:$H=/TK)UJ)RG+SI0TL/QL?Y]CZdEZcI\hR`tUe}Yo]sbw]vE`t9R]7W\CZmG\s9OY8NU:SZ8SX;Q\?WdCWhN`wbrllfwl|~cyXjdzpo\sZohzsjnmUH(QA#M>"K; I:H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H9H9H9H9H9H9K="K&"<18.4,5-1*7/4,4,9292=A+MA$L="VT3H:!J:!I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8J:!H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J9 I9 I9 I9 I9 I8 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8I8I8I8H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H9H9H9H:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H9H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H9H9H9H8H8H8H8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I9 I9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: J: I9 I9 J: J: I9 I9 I9 J9 I9 I9 I9 I9 I9 I: I: I9 I9 I9 I: I9 I8I8I8I8I8I8I8H8H8H8I8I8I8 I9 I9 I9 I9 I9 I9 I9 J: I: I: I9 I8I8I8I9I9I9I9J:I: I; J; I: I9 I: J; J< I; I9 J: J: J: I9 I9 I9 I9 I9 J: J: I9 J: J: I: I: I: I: I: J; J; J; J; J; J; K; J:M[V*OL0OL.MK+LK+KI8ST;WZD_c/TO*OJ*MK+JL,KL1PT,QR.PQ4TV1PQ*JH+JG)HD*GB#@;85:49393510,70"=; =9839595;6!<7604/3.4.6383*DE5NV:V]5QZ%BA%C='F@">8<6>8714.5/4-6061714.5/;5;4:383828293-JAdxmliBXI'RC#L=!J; I:H9H8H8H9H9H9H8G8G8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8G8G8H8G8G8H8H9H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H9H9H9H9H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H9H8H8H8G8H8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7I:!HF3AM?F@+H8G7G7G7G7G7G7G7G7G7G6G6G6G6G6G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8H8H8H9H9M>!VZCRfaRf\VdXWXEVQ8VL-`W0_Z7H\M,JD(IB"JA(KC*LE4YP+NH+PH*LD%E=%D@#ID*PI1WQ(LE%ME(PG!H>@9<7707/<4 D:B9 C;%ICD=$RF!KAE<G>%LE%MF#LD G@B;?8=7<5;5:470:26/4.6/>5F;@5:0>4<2:1@5A7B8E;H=E:G=B9#F<*TJ&PF#I?)QG/TM0RM+MH@W`DYeZn]mcuWjUpd{\pD[oAZm9R\H^tI^v?TeBUk9Q]:P^=PaAWjGZoWgj|nm\hmfzScVeYh_uh`zYqetgyqd}gdQO@"M>!J; I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H8H9I:L<"L=!M?#H9H9H9H9H9H9H8H8H9H9H9H9H9H9H9H9H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 I: =D.C95052:681>5?C-J; J; K!XK)-KA%GC<68080704,80@<'I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I9 QB#)@20'1'1(-&.(2*3+6.81)C:&A80C3RU8O@%N?%I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 #H9I:H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G7H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H9H9H9H9H8H8H8H8I8I8H8H8I8 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I8I8 I9 I9 I9 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: J: J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I: J; I: I9 I9 I8I9I9I9I:J:J:J:J: J: J: J: I9 I9 I: I: I9 I9 J: J: J: I9 I8 I8 I9 I9 J9 J: J: K; LMja2SJ;YX*LG7PS'HD1RQ*JF@X];VZ0SN,TN/RP2PU/MP)IJ*KJ,NN+MK,NL$C?'D@*GB'FA%A=!<8<9:69598302,2+4.96:9969560<65.82<5;492(EE-GJ0JP0LO.KK(HF%C?'FA.KF ?8:3732-3-2,93<7;4:4;6:4;3715/72 <58293#D>VcO\O*TE$O@"M=!O@"L=!H8H8H8H9H9H9H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H9H8H9H8H9H9H8H9H9H9H9H9H9H9H9H9H8H8H9H9H9H8H8H8H9H9H9H9H9H9H9H9H8H9H9H8H8H8H8H8G8G8G8H8G8H8H8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8M>!TF(PA#L< K< L= L=!L< M>!PJ0CXMKaV2VN7XQ5WP&G@'LD*NG0QJ$B;'E@4VR/PN$EA B=A< F@#LCC;<52,/+1+>5>5<5:5!F?&PH!H@@9D<$KEA:93=7<6D>?:94;6:581939270>5@5B8>3<2?4>3<3>4A7@6'OD H=D9H= F< B8#J@'OE#J@E<#H?3QN6TT7RSJ\leyfwexWkQh`jQa{VhWnKe{9S]K_tH\sJ\tASeDWoESlHUoVkg{lk~ol`n_q\kYgXiVjYo]vTl_sczQj}rygN?"L=!J:H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H9H8H9H9H9H9H8H9H8H8K;4:2?7>781=6LB'J: I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9 9A-F<$I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 LD-906+2)1)/(/'1)2*70728MAZ[7N>!KV`5RP1UQ,MJ1PQ*KL)KL*NM'IF$HF=7 A"@;!?:<783858786774/;594#;82-;684958392!=9=9>6@8"DA,IM2LT8S_;Va(GB'G@%F? ?9:44/2,4.71936194948181717084:68384<68:5731-/*0*62;661 C<$JDE>D=!GA"HB?86172=7?9A:94509484617270:2;492?6;28/?3=2?4C9 E:#I>C9 I?G>"JA E=%H@+OH,OF G>$JA,LE'KF/NL>U\[n[lfzat=Q:\n_s[oZlF^t>\k=WcFZiIZpDVnFXqESkHTo\k_m[gdtnctViN`@Qf;OaEXoLcSj]tMiYvVqeutN>!J< I:H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H8H8K<"M>"L>#I; H9H9H9H9H9H9H8H8H8H9H9H9H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H8 J9 CA(0;+-)3084?80PJIQ:PB%M=!M=!O?"TH*-D6:3926.!D?;3#A66-4,1*.'/'0(7/ =7&@;.D<^Z9K; I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 D9"G;"I8 I8 F:!I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H8 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8H8H9H9H9H9H9H9H9H9H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G7G7G7G7G7G7H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H9H9H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8I8 I9 I9 H9 H9 H9 H9 I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I8 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 J: I9 J: J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9I9I9I9J:J:J; J: K!L=!M=!M>!N?"L=!K=!K< J< J; J; J:J:J; J:J:I9J; I;J; RB#SS87VN0KG)LH7LP.LJ-JL8QX5MO.KJ-QM,PJ-NL.ON(JI(JI'JH?;<7<7>8#B><8&B?%C?94 95#@<=:5/7261:3!?:2/.'82:5:573<782;5=6?8@:)JJ8U\>ZeAZf>Xb&BA$@;,HD$B=#@;=8<7723-4/83614060<6:58360705083:6:5<74PIpp?kf6ha3ha4TF%N>"K; H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8G8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H9H9H9H9H9H8H8H9H9H8H9H9H8H8H9H9H9H8H8G8G8G8G8H8H8G8H8H8H8H8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H9H9H9H8H9H9H9H9I: BPDH: I:TK+C^UAc^*MG%E?-KF(HD,KF4SL)EB)FC*GD&DB*HF%DA"C?&EC%A>73;7.+/*1-3.1+0*?9"F?C>E?F@E>>93.4074:6946251947261404/4.4.3-70<36,0(908/;2A7C9C9I?G?)NJ/QM)KD-PH'KA&JA(LF'GA'LF,MJ5NQPasWi}xXnnYk~]roZjE[pSgF]q#L>#OB&H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 I8 I9 I: &7)/*"@;<5 B;!F>2NAWS3RB#O@"UF%agD&C>83:2!A;6.70FC)J: I9 I8 I8 I8 I8 I8 G=#I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: K"N>!O?"P@#JF*!=5;50(1*2*/'/(.'1(1(4,&>9N[D]T.J: I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 E<%I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H9H8H8H8H8H8H9H9H8H8H8H8I8H8H9H9H9H9H9H9H9H9H9L>#I: I8I8I8I8I8I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8H8H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G7G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8G8G8G8G8G8G8G8G8H8H8H8H9H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8 I9 I9 H9 H9 H9 H9 I8 I8I8I8I8I8I8H8H8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8J:I9I8I9I8I8I8I8I8I8I8I8I8I9I9J:I9I8I9I9I9J:J:J; J; L"N>"N>!K; J; I9I8I8I8I9 I: I9 I: I: I: I: J; K< L"M>!O?"N?"N>"O?"O?"O@"O?"M=!L;:7"?;94"?:;6 ?9=8<6926/83720)0*4-82 98#>::5;5;6>:@:E>)MLXb0MP+GI$AB&EC&D>&B=$@=>:94504/3-50612.72<7;6949370<6:594;6:4=6ltUpq>nm;qq>ic5ZL)TE&I: H8 G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9H9H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H9H8H8H8H8H8H9H9H9H9H8H9H9H9H8H9H8H8H8H8H8H8H8G8G8G8G8G8H8H8G8G8H8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9M= DZO,KG"D?%FB.MJ$B?'FB@c^.PK)KD,JG+KH&EC"?= >:>;:72.3.0,2-3.502-4093A:B<A;=7B<<6<77284<7=88351406272611,3-3,5/512,5.0)6-;1;1?4?6E=F<#IB0PN1RM(LE J?%LC#I?%H@#E=(JD2OM?W]AT^Sezʊ~NaaXi^puZhSgK]s>UgDXnRcP`Sc\j]jS]KXzP\[kN`|FVrATiCZq@Zl>WmIgUvJkTrV}cvyJ:H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8QD'KUZ;VH&[M(lnG3QK+KM81>8;681FC(K; I: I9 I8 I8 D:#J"N=!K< J; J; I9I9I8I8I: I: I: I: I: I: I: J< K< M=!N>"N>"O?"N>"N>"O?"O?"O?"O?"N>!N>"N>"M=!L< M=!M=!K< K; K; K< SI+U^MJ]N5TL4SK A>)CC8RW3NN8OP6NN*D@>8=7<6=7B<&GC%EB>:=8<7;7>:=9:7;8:5 >:=8939493717182825/2,2,60:6 ;8!<9:6:4=6A:A:!FA0RW,KL'HE(DH3OX1NS#?:"@<$A>;7945/625051625172;6939292:2<6;6839482=7H^YhlKszHtyEom=g_3^R-O@#I: H8 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H9H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9M?",MF(IF&GD/OM)JH"A?"C@)IE$E@#F@/NK'GD"A?=;"@=613//)/*.)2.;5:56195=8>8;6;6=7<77151<7?:C=<794728340404-1+0+.(2,1+1,/'2*:03*3+8/7.5/B: F='JD.OJ-NH(TG$LC&LD'IC&ID#F=.MI7TV@W_bvytXizRaWk\mQ_R`\i\kQ^HXtJZtJ`xEXoEYoDXp=Uj>[kA^uNhJh{;^iTxaqlH9G8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8M?$K<"H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 =>)$=3>8(>>$?=;4?64RIZ[8jkAe[0UT24K?@:!D??:3+&=1MH)J="I9 I9 I8 I8 I8 I9 I8 I8 I8 I8 I8 I9 OA$J<"I9 I8 I9 J: N>"NU? <090@77/:14-5,2+0*-&.'0)1(3+3+705,90NI,K; I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 F9"I8 I8 I8 I8 I8 I8 I8 I9 <:$J9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9H9H9H8H8H9H9H8H8H8I8I8I8I8I8I8I8H9H9H9H9H9H9I9I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8I8I8I8H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G7G7G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H9H9H9H9H9H8H8H8H8H8H8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I9 I9 I9I9I9I9I9I:I9I8I9I9J:J:I9I9I9I9I9I9I9I9I9I9J:J:J: J; J:J:K; M=!M=!L!N>"M>!N?"N>!N>"O?"N>"N>"N>"M=!N=!N?"N>"N>!N>"N>"N>"M=!M=!O?"^i\Fh`D`VAZR=:&DB7PX@Zd.LI9QR,GC+LG&ID"B="C> A=?;%KE;6<8<7:583<7<7734/3.;6 ?:94=7!?:81819282502,3-0)4.95 ;794:4<6>7?7 C=!D@ B=$B=*GJ-JO"A>'FA%C?=9:63.618460414172:4:5:4938192;5<7:5847282/LLUfchybygxTmk>cY3VH'M>"J; H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G8G8G7G7G7G7G7G7G7G7G7G7G8G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:IA&$CA(HD&FD"DB$FB(IEB>"D@%FB(HE,MJ!A><993;5:53/0,.*/+2-936.728272:4825.92=55.95=:A>$FBC=>8834130403.2-0*.)0*401,/)2+1),$+#/',%.(80@8(HD4QQ3NJ$KA G?'LH+MJ,MK'HE%HA.ON4QS3LN`wxgxTczPbulk~Scz?VdM^vZm[m]o\hP`R^QaF[uCXqF]sLgAXmI_z@Yo4R\0QX7Wd>[hCaqWqSTMH8G8G8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8M?$K<"I9 H9H9H9H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 I:!F?'I9 IB(NB&3B/91;6.CD94<5!B;5P@eylS`Dgc5c[2GWC%GB B<;5821D1O@#I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: K; J: I9 I9 K;!RC#9I9:1"B:802*5.7/2*2*0)/)0(4-704,4+3+6.:11E6UI*OB&I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 G:!I8 I8 I8 I8 I8 I8 H;"><%:.J: I9 I9 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H9H9H9H9H8H9H9H8I8I8I8I8I8I8I8I8I8I8H9H9I:H9H9I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 I9 I9 I9 I9 I9 I8 I8I8I8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8J=%^Y@H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G7G7G7G7H8H8G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I: I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 I9 I: I9I8I8I9I9I9I9I9I9I9I9I9I9I9J:J:I9I9I9I9I9J; J; J; J; K; J; J: K< J; L"N>"M>!M>!N>!N>"O?"O?"N>"N?"N?"O?"O?"N>"N>"O>"O>"O?"O?"N>"N=!VH(ZhVEd\H`X+JD/MM+DG@Wa,HD,LF-FC-LG-OI%HD&GB @:=8;7C>=8<7:672:5"A<844/502,83;6:5&B=%B< <85.4-2,502+=8>8 =97282:4;5;482<5>9<7?8>7!A=?:<7 >9 <8">:94511,6173!>>&CF717184726182:4<8958462;660 ?;7RPbum}m|qvYppC_T1UH(M>"I: G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H:J;F?&;8-LJ(JGB>"EA&FC>;?<%FC(IH#EB(GD'FC9270603-1,1-0,620)1*84504,4.406294:5<8:7<8;7<8<9:77240413/2.2-0)/'2+1+502,/(-&*"/(-'-)0+5/!@;(C==<'+@5 D;"GA&JE(FA'LH,LK-NM#GB4QQYi6Q]6R^9Vd-OS,QP0RU9V^OSPI:#H8H8G8G8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8N?%K=#H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 I9 I9 K>$J:!J: G>%+@28271:3A9@9 A:7//G8KY"M>!N>"M>!O?"O?"O?"O?"O?"O?"O?"O?"O?"O@"O@"P@"P@"SC$SE$O@"QB#[eORrj>]T?]T5OO-FI=T\7PR0JI,GD.KG*ID&HB@:#D@=8:5:6?:=8B=>9:4<7;78450604.:4;793<6;6!<8722+506194;7:683<4=7;4<4:3!@:<78596:392818383:561:6:573726283#??%CC;482:56061838295957361514- :7?7&@9i{m~n{`xUe\8_T0UG'L=!I:G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8H8G8H8H8H8H8H8H8H8H8H8H8H9 H;#H8H8H9I:L,KC311>/!B<"E?$FA'@8+C<&A:,KI3NO$FA*LH:SX4MODYaL\lTcvZjWlVhi}dxnkkoan]rXtFdz?Zk;Rd8V_:Vd"8/:4%C@&EC<6C= D;(H@9LbeL83+ <2(B6>SAKf\:18/0(0(3,2+3-2+0)0)5.704.1+1*5/81:27.:0AF-SG(J: I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 G9 (=.F;"I9 I8 I8 I8 I8 ?:#6-E<#67$I;!I9 I9 I9 I8 I9 I9 I9 I9 I9 I8 I8 I8 I9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8I8I8I8I8I8I8H9H9I9I8I8I8I9M?#PD(I9I9I9 I: I9 I: I: I9 I9 I9 I9 I9 I9 I9 I9 I9 J: J: I9 J: J: J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8I8I8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8I8I8I8I8I9I9I9I9I: I: I: I: I: I: I: I9 I: I9 I9 I9 I8I9I9 I9 I9 I9 I9 I: I: I: I: I: I: I: I: J: J: I9 J9 J: J: J: J: J: J: J: J: J: J: I9 I9 J: J: J: J: J: J: J: J: J: J; J: I: I: I: I: I: I: I9 I9 I8I8I8I8I8I8I9I9I9I9J:J:J:J:J; J: J; J; J; J; J; K< K< K; K; M="M!N>"N?"N>"N>"N>"O?"O?"O?"P@"P@"O@"P@"O?"N?"N?"QA#TE$UF%VH&_S+]Q*_X3Um_Ed[3SK7SN1KN?VZF]c(B>*FB1MJ-KG*JE&EAA<=8959595;7<8@<=9;8835194615/:2808282;6939481/(4/6273602,4.93;492926/64425322409170605/6251859573732-4/:8:4:39472716084515051617272<9 =><7%E>i{k}jxtuankFbX3]Q-PB$I;H9H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H8H9H9J; JD+0LG*HE"DA#EA!@=?<#EA%GD%FC-PN@<?<>9?;84401-0+0+1-3/6/935/847274734/2,2-94:5<885=:;673615162526263730*/'-&.'/(0*0)2+3-1*829470%IA)C8(8*=4"C:&E@"A>#D?"C=)C<(FC/PN*MG(FC,LJ(FC7ORHZfAS^=QYYjL`vdxnth}|ri|^u\uNhHcx>Vi=Zg7U]/NS*KL*KM/QTOZ]I9 G8G8G8G8H8H8H8H8G8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8 I8 I8 =C-*F8H;"I9 J: $7)6/!>9"A=(JE;2!B<"B=4,&B;=XK]rcaoYTeSPbRMX:1:1:1=46,90;26,5-2+0)1)/(0)4-<65.713,3,90#JA B9@6!A9>50>,J: I9 I9 I8 I8 <9$(6(<;&G9!I8 I8 I8 I8 I8 I8 D8!#"M"O?"O?"N>"O?"O?"O?"O?"P@#RB#PA#O@"P@"N?"N?"N?"TD$XI'ZL(XJ&\[@I^R0RJFd\C`X$D>=U\B[aH`l2KL>9:6)FB+IE"A<#B> @<:5846284:8:5<7:6:6834.3,3.82:47/5-3+5-8260/'60&>;4/2,0)1*4,2*2.5/3*4-204274437192:4:44-3/406162504/4/2-4083617262402-73842-1,4/6061;;:4=8!J< I:H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8G8G8H8H8H8H8H8G8G8G7G7G7G7G7G7G7G7G7G8H8H8G8G8G8H8H8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9I:J; TE%?PE&CA#B? C?;874!A>!@> @=+LK=;=:"B?=:30/+0+0)1+3.50836.6/826261503.4/6194948395=88382727273859663;62+-&.&0*/)/(.'4/.(/)/(4.61B8%H? A9=7?8$D=!CK6I9 I9 7<'6.8081 B< B;C="E@:2?8#@7)D>WpuTkbFV"J: I9 I9 I9 I9 J: I; J: M=!PA#MJ,>6<34,:1@88/<2<34-3,0&3)1(1)3,92 <4935/2+=6!G=$JAB8%J?:N:;K83B2E>&I9 I8 F9"7;' 8,1'6,6,8-'>02>,+9*2:(39'!:.'"N>"N>"M=#K!N>"O>"N>"O?"O?"O?"O?"O?"P@"P@"O@"N?"N?"O@"PA#WH&YJ'YK'WH&FVLFa]C^Y=YS'C?3IO?T[>TU.IF/KG$A=7462">:;7:5>9>:625151636272838372:4713-2+5/3+2(3*1(3+3+1)3-0*734.0)2*1*1(.+-,0+.+0,630-2-4-5/605/4.603.503.1,4/1,1,2.743.2.61714/40402,/*2,4061 ;> ??.B>H]dduizdwaoqmybosGf^5^R,SD$O@"K< I:H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H9H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8G7G7G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8H8G8G8H8H8H8H8H8H8H8H8H9H9H9H9F9H: I:I:I:J; I;J; KJ3+FA955285524373;7$B@2RQ'GC$EB =;740,522,3,3,70504.834-501,3-615/613.638494505/608362626273;7;8 @<613,.'0*,%/'-&,%,&+$2+?8$@:4RM A9#A9 @: A;"C< C=#F@"E@&E?(JG'ID+KH)LG"HC%HF,FFAV`6MTPcxVf\mSfGYlYhmmpgQgMeWoNjMm'I9 I9 I?%C;:2>792@: E@$IE D?608/92FbdWome_8VO*XQ,N>"J: I9 I9 I9 I9 J9 K; K; M=!SD%RN/80?6?6@9?7;2A8>68/8/3)6,1)706.:5716.706."G>%MC$I@%H>7I7N=!L!N?"N?"O@"L?%I?&N>"M>#M=!M="M"M>!N>"O?"O?"P@"O?"P@"O@"P@"P@"N@"O?"PA"RB#WI&XI&ZK(YJ'VG%L\O:73 :8 ;8;7:64/622.3.4040403.2-404.2,3.0)/)/'0'4,2*7/2*5.3+.%.&0(/'1)3+2*2,/+/-0-)(0,620,3,4-2,2,3.504/1+3.3.1+4.2,0*1,1,3-0+3.:4704-4-3-0*2,4/;:#@@1B@2GC2LJ:SSXjx[n]n{cpjksWe`5eZ1ZL(RC#N>!J;H:H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H9H9H8H8H8H8H8H8H8G8H8H8H8H8H8H8G7G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9;>-D9!H9I:J; K; K< J; BC.4JA1NK-KH$C?96$@>#@>,II2NP1QP3TO%C@96632/747372613,2*4.812.1,1+50513/0,2.4/7283615/506140514061:7:795:53-0)1+/)/',$) )!-&81$E?+IB,KE'G?&E=%E?&GB%EA A=.C8-A4@A%KU54I:*JH(HC A:!D?$@?6JP,HJCXf>U`+'E:=593:3<6>6<6=83,&?;&GB)KCbeCUM)JL,PA#J: I9 I9 I9 I9 J: J: K; M57/0(2*4-:4;42*5.3+=5:3&KC$IA(LC+PEHE-L!M>!O?"K@'892I@*K@)N>"M=!M"O>"O>"O?"O?"QA#PA"O@"PA"O@"PA"RC#TF%XI'UF%]O)\O)RT=:SR4LJ=XSA;+CE:MV:OR-FC=8"F@B<8395 =8<8">9;5945061842.4.2.2-2,2,2,5.0)0(1)2)7.8/:25,5.4,2*0)0)1)2*5.2,2,2,4/4.4/604/4.5.604-504.3.0)0+0+2-1+4.3.1*1+3/4/3/60;6:4:35/505083;6>94HE+D@0FB2IF2JI5PR>W\KdmR`]ck^jiEcY1`S,XJ'RC#L= I:H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8G7G7G7G7G7G7G7G8H8H8H8H8H8H8H8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H9H8H8H8H9H8H8H8H9I;K< N?"L ;:$@@'CC%C@<9*IF&EB!?<64743/3,=9503.2*2,723/2.1+2/2-2.1,0+1,516272614/3.2+2,3/6295517272502,3-0*2,-%*"*!*"2*'B=5:*&D=&GA+LH'JF*JG$B?BI+_`1\V(d]*gf1gpA8NA/A6.NJ"B;$B?.II%FC7MV1IM&?A.HLL_rI\rUkgdw[sPh@Wn7RaA_o+LL*MK0OTKUOI9H8H8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 I8 I8 J:!D=$H?%I9 I9 E?'@9>8;46.>:4-?:3+80#F?@WWghH_T,BR8QQ0L=!J: I9 I9 I9 I9 I9 J: L< PA#^R+7M;>55,=5>6A8C;B:!H@=3902*6/716/603+6.?7 D;"D=%B=$J@+RFTN0N>"J: I9 I9 I9 ;:%9=*I8 I8 I8 H9 H9 E:!H8 I8 I8 I8 I9 J: I9 I8 I8 I8 I8 I8 I9 C:"I<"'9*K<"I9 I9 J; F=#K< ?9!*6%"6);9$I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H9 H9 H9 H9 I8 H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9I9I9I9I9I9I8I8I8I8I8I8I8I8I8I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: I9 I9 I: I: I9 I9 I9 I8I8I8I8I8I8I9 I8I8I8I8I8I8H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:H9I:I:I:I:I;I:I:I:I:I:I:H:H:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I9J:I9I9I9I9I9I9I9I9I9I: I: I: I: I: I: I: J; I: I: J; J; J< J< J; J; J; J: I: I: I: I: I: I: I: J: J: J: J: J; J; J; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; J< J< J< J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; K< J; J; J; K< J< K< L=!L=!M>!O?"E='CA-GB2EB,ID1N>"N?"M"O?"O?"O?"O@"O@"O@"O@"P@"UF%UF%XJ'VG%[N)[L'L`]:$B?)B@+A=:391<4>:&GG#GEJVRWd^ZjW`hHkj@e\1\N)PA"K< H9H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8G7G7G7G7G7G7G8H8H8H8H8H8H8H8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9I:K< UH(XP34LD'EC+DA(C@534274:7 ?=$EB"@> @=!C@=:%BC:985 ;9;5934,4-2-95#980+2,3/2.1,2-2.3/3/4/61724/5/3.3.1+2,2.515.612-1,4,2,0*0)+$*"+$93/=1-?4 ?:)KH-NM)JH*JH8"A?/KL1LO"A?&?=*ED=U_M]rBUdQb}\patWpOh9Sc;We1PT&JI%JFANIJ; H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 J: H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 I8 I8 I8 I8 D:#H=$I9 I9 I9 8?+=7A<5.?9@< @9?8"B;"CJT4Q^<`Y1QB$M="J: I9 I9 I9 I9 J: K; M=!VH&EQ7!<25+91?791;2>6C:<46.3,92>7;4 B:=581=5B:!B<A8%J@,OHIRBN>!I9 I9 I9 I9 ;9$5<+I8 I8 I8 I8 ?:#F9!I9A9#:9%J9 J: J: I8 I8 I9 I9 I9 I9 I9 >9""7)B;"9<'N@'I: J; J< I#I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I8I8I8I8I8H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H9H9H9H8H8H8H8H9H9H9H9H9H9H9I:I:I:H9H9H9H9H9H9H9H9I:I:H9H9H9H9H9H9H9H9H:I:I9I9I9I9I9I8I9I9I9I9I9I9 I: I: I: I: I: I: I: I: I: I: I: I: I: J: J: J; J; I: I: I: I: I: I: J: J: J: J: J: J; J; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K; K< K; K; K; K; K; J< J< J< J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; K< K< L=!L=!L=!O?"K?%9FDGE7M@$N@%N>"FC1L="LWY8PO9MI.FE+DF>R]:NR%A=;694:5=8?9=8:483:5 >9>9=8:63.62401,2.614.1*2+2*6/704,2*1)0(-$3*2)2+2)1(1)2+5-5.5/4.3.40404/4/606/604.4/2+2+2*0*1*3.3,0)2,3-4/2,2,60726062615/82<894?9A8$><#=9 ;59091B;$DD*IGK]] C<B:C:.MGOfWerYca>YL)N@"I;H9H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G7G7G7G7G7G7G7G8G8H8H8H8H8H8H8H8G7G7H8G8H8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H:I:QE)9MI)ED+C?0FD$>=#?@311.2.85'GF:7>;<:97<'DD6QY'BC*AF9S^G[mBUbEVjKZsSh^tZoE^r3QZ6SZ)LL&KG1LAJ<"H9H8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 E:!F<$I8 I9 J: .?0>9:3?8 @:82;5?7!A9;TJXbG`fH\`8`Z2VH'SD&M="J: I9 I9 I9 J: J: K; P@"ZY60C8:06-802*70B9!=7!?:$A;:492 B:>7:2@8=490705-?8'KB?TIVU=M=!I9 I8 I9 H:!(?3%?6?;&I8 I8 ;:'<9%0;*';/3?/,@3H;!K; I9 I8 I9 I9 I9 I9 I9 I9 E9!C:"<9#C<#I=#I: J; J< K='+:,F:!J: K; K; L;!M=!J: I9 I9 I9 I8 I9 I9 I9 I8 I8 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 H9 I9 H9 H9 H9 I9 I9 I9 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I9 H9 H9 H8H8H8H8H8 H8 H8 H8I8I8I8I8I8H8I8I8I8H8H8I8H8I8I8I8I8I8I8I8I9I9I9I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 K;!M?$I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8H8I8I8I8I8I8H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H8H8H9H9H9H9H9H9H9H9H9H9H9I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I8I8I9 I: I: I: I9 I9 I8 I9 I9 I: I: I: I: I: I: I: I: J: J: J: J: J; J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J; J; J: J: J: J: J: J; K; K; K; K; K; K; K; K; K; K; K; J< J< J< J; J:J:J:J:J:J; J; J; J; J; J; I;J; J; J; J; J; J; J; J; J; J; J; K< L=!L=!L=!M>!N?"N>!M>!LA)L!N>"O@"O?"O?"O@"O@"P@"QA"SD$UF%VG&ZK'\Q,?QM4JJ9OR3IJ)BB0HK?T[6KN$B=6094:594;5;68394<8=894;62-4/;6625040:6614.6.603-4-4,6.0'.%-#1(/&0'0'1)3+2*/'1)4-7/4.5/0+ 0-405.814--'0)/(2,2+1+2+5/3-2,0*50616160826060:3706/4/5/=8!?;"?;:3<38090:1;69<;NO,HF GA GAF?F?E=!D>7TL\lWcb=YT4M>!H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8H8H8G8G8H8H8H8H8G7G7G7G7G7G7G7G6G6G6G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9K< AE2,IF;75297!<;87412/42514/6386!@@?W]=VY(DF$??:8 ?:96$?=86605/3-50403.0+/)/)1+1-4/2.3.3.1,0*2,3,4/1*1+3.3.2-.(.'-&-&/'-&,%2+B:=6#?<*FH.NQ$DB+GI'CC=L:c[*_V)aY)d\)jh2LZB2NK.MJ,HH:PY?Zj4NX@Yj2IPAYj:S_H[o6NU>Q`FZpUjYpSi>Wh7T[,NN"GB%H@H>$H9H8H8G8H8H8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H8H8H8 H9 H9 H9 H8 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 68%/A2J9 I9 I9 =='8170<5%HB%F@$A;!>8?9@8#H>$C=`kGb^3YL)UF&O?#L!C=@8@9;3<3:2<33+4+6-)LBDQ=UG&RC$K; I9 I8 I9 3<+1)3*7/F;"@8"6081">61D6=?*8@+D=%J: I9 I8 I9 I9 I9 I9 I9 I9 I9 C:"F<"J9 J="J; J;!J>(K=!K; K; PA#YL)L$SG*I9 I9 L=$I:!I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8I8H8I8I8I8I8I8H8H9H9H9H9H9H9H9H9H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H9H9H8H8H9H9H9I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I8I8I8I8I9 I9 I8 I8I8I8I8I8 I8I9 I9 I: I: I: I: I: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J; J; J; J; J: J: J: J: J: J: I: I: I: J; J; J; J; J; J; J; J; J; J; J; I:I:I:I:H:H9I:I:I:I:I:I:J; J; J; J; J; J; J< L=!K< J< J; J; J; J; J; J:J; J< J< J; J; J; J; L"N>"O?"O?"O@"P@"P@"QB#TF%UF%WH&]O)aV,6HC1JJ:OR3JL+DC1IN=PW,DC=894<8:5728282618393725/2,4.949594504.5/615/:5944.1)5.824/2+,#/&1)2+0)1(4-1*1)0(0)2+3,5.4-4.0+617/803+'+!2+1*2+1*4.4.2,/)4073>8;582<6>8D>@;82!=<">>)BD"@<;38190918091#951CB&C>!A;A: F>F> H@D<?8?7"B9C/I:H8G8G8G8G8H8H8G8G8G8H8H8G8G8G8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 #=1C>'I8 I8 J9 (;.60@:@9#D=&F@&F>!@:%EA B:8/\hDd\1OH*AM6FK4N>"K;!J: K#O?"XK(b_47,<45-926094!?9#F@!E?927.8/:0:1>52)7.?5KYBM="K; L< L:#I:!J: J: J; M?"NF'N?"OD&JN6GTB*D=<55-0',#+"*5'I9 I: E9 A8 ;8#@9"F: L=!JA%2@-6E0KD&L=!I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J;!J; J: OA%J; I: I: I: I9 I9 I9 I9 I9 I9 I9 H9 F>%H: H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8I8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8 I8 I8 I9 I9 I9 H8H8H8H8 H9 I9 I9 I9 I9 I9 I9 VI+J:!I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 I9 I9 I9 I9 I9 I8H8H8H8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H9H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I: I: I: J: J: J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: J: J: J: J: J: J: J: J: J: J: J: J: J: I: I: I: I: J; J; J; J; J; J; J; J; J; J:I:I:I:I:I:H9H9H9I:I:I:I:I:I:I:J; J; J; J; J; J; J; J; J; J; J; J:J: J:I9J; J< J; J; J; J; J; L<@;$BA#?=$@>>9=986=6617184%=7 70 4/ 3,<5A9@8B:!FA!HA G?B:"G@D=?6@:$G=WdJYK'M>!K< I9H8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8H8H8G8G8G7G7G7G7G7G7G7G6G6G6G6G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:=@085/+0-2.874174<;0,523/73972MP6RQ4RN3MP5NQ,HG+CD<83.638453404/3.3.2.1-1,1-0*2-1,1+2+4/5/2*2,0*0*1+3.1,2,.'+#-&,%+#*"1,.9+.:2,FI*GH(HF*EG+HI0IM_b6ih1jh2[c>V]@>QS;VY6TT8QS4KS5LT3LU4OYH_u;Sc?Ug5NWCYh;P_3HSGXpWlUmJ`v4OW!D@)KB;I5J:H9H9G8G8G8H8H8H8G8G8G8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I:!K=#I<$I8 I9 E>%6/9361!A: B;"C; B; C<#D;;2DZObd=4G6 @9'F?YM,N="L#K;!J: J: K; K; N=!UP/ >2D<@8?:B=@;%HB$KE G@=88/8/7-6.>5A95.>6SV#>:#-9*5:(;;&9:%7:&G: J9 I9 J: K; J: I: I: J; J< /7%+?1NA$J; M=!XJ(;L9>6:3=580:2-9)E9 I: I9 I: G9 :9#@=%PG'$>06-8090&;,?=%K;!I9 I9 I9 I9 I: I9 I9 I9 I9 I: I9 I: I: I; J; I: I: J; I: J@+A@*G: I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H9 H9 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 H8H8H8H8H8H9 H9 H9 H9 I9 I9 I9 I9 I9 O@$I8 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 I9 I9 I9 H9 I9 I8H8H8I8I8H8I8I8I8I8I8H9H9H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H8I8I8I8I8I8I8I8I8I8I8 I9 I9 I9 I9 I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I: I: I: J; J; J; J:J:I9I9I:I:I:I:H9H9H9H9I:I:I:I:I:I;I;I:J; J; J; J; I;I:I;I:J; J; J; J:J:I9I9J:J:J:J:J; J; K< M"O?"P@"QB#QB#SD$YK'\O)`T,`T,c[;Sfp6PP@VU2KJ.FF.GI4GN'DA;761955/71829393;58293:4938281;6832+2+3,608182946/1)1*0(1)0(0'1(707/7.=4843,3,3,3+0(.&2*2*3,4,6/2.5.4-4-4-2,1*1+3-4.84;576"79;7;9$<;':=)>C'@D"><<6:5<8>8969381:3818191<7!:7;4?9?8@8 D>B;A9<5"HB!GBA; A;#D=B\NkqI]_?RT;^V9N?"H9H8H8H9H9H9H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G6G6G6G6G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9K= /D9400-2063302/<:"BD87;8#>;!=<2LP.GG/HF)DB)C@7QQ!::6298<;;840!52504/2,3/2.1-1,2-2,0*0*2+3-3+2+3,400)2-2+1*1+-&/'/'-%*"*"63)2'&>>/JM/KM$AA(HH%DF'ACHN2R]<`f;pzK`h>QYBAXY6UU4OS;OYEVf;Q`AYk:Rc5LW>TeEWl9O];N_=NaFWpUhPh;Te,KM%LGDK4J; H9H8H8G8G8H8H9H9H9H8G8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 BB,J:!I9 F:!:05.60>6 C<"F?<5=6$G@ D;)HAI^OS]@VaAB;[]9QB$LA:$HD"GBC<@65,6,7.9/90>5 C=80?8@Q=L< L9#J: J: I9 I9 I9 I9 I: I: I: I: J: K;$H;!K: J: J: J: I: J: I: I: I: I: I: I9 I: I9 I: J; H=#C>%D?&I;!H<"I9 I9 I9 I9 I9 H;"F<#H9 H9 H8 H8H8I8H8H8H8H8H8H8I8I8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8I8H8H8I8I8I8I8H8I8I8I8I8 I9 I9 I9 I9 I9 H8H8H8H8H8H8H9 H9 H9 I9 H9 H9 H9 H9 I9 H8 I8 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I: H9 I8 H8H8H8H8H8I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8G8G8G8G8G8H8G8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I9 I9 H9 I9 H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J9 I9 I9 I9 I9 I9 I9 I9 I: I: I: I: I: J:I9I9I9I9I9H:H9H9H9H:H9H9H9I:I:I:J; J; J; J; J; J; J; J; I:I;J; J; J; J:I9J:I9J:I9I9I9J:I9J: K< L"N>"O@#O?"QB#UF%UF%RC$UF%[N(\O)`T,cX.`S+^S.R]Scrj ?<835/83:5 >8?895:292928180:6>8=6?9C=;5B=>9;471;5$KG F@A;@9Qjn>XT)G@!@76:9+HJ8QX>;:74.4/4-2+3.302.1,2-1*0)1)2+1*2*2,3-1*2*2,3-403-3+1)2*-%,#+$$;=#><<<(EH(DF*EH&DF&CD.GLFQD4IJASWIWZN`fDZ_Laj8TW0KPCUgRe|Lc|ZE0K<"E>KY=M="M?"1B2"J: J: K; SE%8I7>9?8>9?9@;A=C:>43)2)90B9A:!D=?84, C:XX8K; K; J; J: I9 F9!(9*3+/) B;#F=7D2#;1*:/%>6F:!I8 I8 I8 I8 I8 I9 I9 J: J: J: I: J: J: I: I9 I9 I9 J: J: I: H: I: I9 I8I9 K< N>"JB%AD*WX4'A8)D<'C;4,+8'G9I9 I: H!N>"O?"QB#UF%VH&VG%WH&YJ'[N(`S+_R*aU,]P)^Q*geAekM3JJ,@E1KO,EG>;835.3,83617294834/1+2,6/:37292705.2,4-5-806.3,3-2,82:5:473815+0(3,3+7/6/71!:6904,3+0'.%0'0(3,3,4.6/1.40$>=52604-5/"6494836185825/826074;572825.4-:4 A<&JF >:=5;3;4807/<8:2A::4=6<5 B<#D?>98271 D@!HBC;$D@4PM>6<:@= @=&CD#DA#C?3PJ9SE7RH0NL.ML=VLVT9M=!G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8G7G7G7G7G6G6G6G6G6G6G6G7G7G7G7G7H8H8H8H8H8H8H8H8H8H9H9H8H9H9H9H8H8H8H8H9H9I:L?#/@6<<9965,DG"?B<>$DF86$DB%CB'CE-GJ,HH0IL/IL$>?%=A"<>$?A#@?=<==><5/3,2+3/3.2.2,1,2+4/2+1*1*3,4.3,3-1*6383961*0(1)0',$-%0(30-HJ$@>&BD(AE+DI*EH%AA*CF7LR8LRBU]FYaRdsQdpSetE[g5KVLasTg{/JNAZmA\qLcy0HN3FP7K[;O^Sa{Wh`s7P]$GFHL6H9H9H8H8H8H8H8H8H8H9I:I;I:H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I:!9>+I8 I9 ?H24,/'3,@8 C< C<?9 A<%CB"E@D:)REOfMM`FJZ>PE'MJ- <4*@8RE&J: J: K; SD$Z_DO^C9Q>LT;HR77.>7>80J<<3=4@8 =994!C=:1;35L7+@5K?#I8 I8 I8 I9 I9 I9 J: J: J: H9 A:#?<&I; I: D:!.8'6, 8.%6(4*.<,28%G<"I9 J; M>!B;"08&6-:4<4$<11(2)86!I: J; -8%3'4*5,<3"B;*JD+JD"B:;390:2 =6&B;:12)6,,:)C>%N>!M=!M=!M=!L< L"QA#QB#SD#SD$UF%SE$UF%XJ'YK(ZL([M(\N(\N(bW-beCSfd-HF1IN+@E >;"><943+4-5/1,81835/4-3,0*0)3,3+83724-502+4-6.3,3,4.1*:5=8=8;74-3+3+2+5-6-3,4-4/925.6/3,1(0*2+4,3+6.2+!6495 <99453!8662:5503-4.5-3,4-6/2.607260507193A;%HB&FB >:A;@:;38081"A>:4@:80:4:3?9 B< @;:4!D>#GCD><9$D@?8;4;6=8!><"??"@="B>!A<$F@$D@&HC)MI.PN-LKCTGOD)H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8G7G7G7G7G7G6G6G6G6G6G6G6G7G7G7G7G7H8H8H8H8H8H8H9H9I:H9H9H9H9H9H9H9H9H9I:I:I:I:M?"3G>.II,CG!;<-FK(AE&CD88+IJ96#@@+EE5NP/IJ,DE(>A8885!><(DE%?@&BD$@A963.3/404/403-2,2,3-2+3,5/609472964/<:73520)1)0)0)+$/'.'*&&@A-@;-DJ+CI'CI'BF$@A)BF4JO7@;A<%FC=8=7!F=QhUnn@^P+SD&SE'YQ.SH*M>"J: J: K; M=!ZM*fdO:^V0_^8/G7>R?%@9=:!A;8/A96K8NB$L66/7/$<1G;$B>%(;-@A*+7(1<+1>.;2,=-J=#I: J; K; K< 5:&91806-0(/&1&47#)5%/%-&.)2*6. ;5!=7 <6(D?&E>:14,:2 <5 ;4#=4)D=#@8!A9'>14<);<&H>#N>"PA#N?"K; I9 I9 I9 I9 I9 I9 I9 I: J: I: I9 I9 I9 I8I8I8I8I9;6 38%G8G9 G9 H8H8I8K:!J;!H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 H9 H9 H9 H9 H8 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H8H8H8H8H8H8H8H8I8H8H8I8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H9 H9 H9 I9 H9 H9 H9 I9 H9 H9 H9 I8 I8 I8 I8 I8 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I9I8I9I:I:I:I:I:I:I:I:I:I;J; J; L=!L=!L=!K< J< J; J; J; I;I:J; J; J; I:I:I;I:I9I9I9J:J:J:J; J; L"P@"QA#RC#SE$TE$TE$TE$VH&YJ'\N)]P)\N(_R*RYI1IM*HD"@=0DI%@?>:8495712+5.6/5,8/6.5,4+1*0)0(824-2*4,2*5.4/4-3,/'2+734,4-4-4-0)2*4,3,:14-4-3+3,3-7283606/4,846/4.71614,4.3-4/62613,4-3.0*4,5.3,3,4-4/4-7292<6=78292<6<5:3>6@9 B<<4:3 =9 C>!B=9280;5=8=9826.;4"DA"DA A<<4=8:5;7<8"@>!?<;6"C>!@;#@<&B?)JF*NI/NN*KG*KG/MEPO;J: G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8H8H8G7G7G7G7G7G6G6G6G6G6G6G6H7H7G7G7G7H8H8H8H9H9H9I:I:I:I:I:I:H:H9I:J; J; J; J;I;K< J; J< RF(H[X5PR*CE$=@0DK'AF==<="?@$@B*CD4KN1FJ1JL&>>";9!=;">=*FE+DE-EG,EH(CD842+3-4.4/2-2-7384503-3, ;7<9!><<;;8<:"=<751*0)1+1+.&+$+& 99":819.4HO,FL)CH%@C!?>$@@#?@UcEXm@ScCWgDWiBYg;Q`IYpBThIZu;Sd.OQ6?8=6=7=7>9 A;%EC A= E>erLe[1ZK)UF&N?#L=!L!PA#SD$WH&]R,_W0ha4cY/\O*_T,ib5e\0a_:"B>>7*B9FM5(A3N?#K; J; J; J: I9 I9 I;!F<#@:?87@.H9 +9,6/5.%;/G<"I: H;"I8 I9 I9 I9 I9 J: K; J*E=(C>"@9"A9"B:$C>'?5=<%ID)VM0K; J: J: I9 I: I: I9 J: I: I: I: I: I9 I9 I8H8I8I8I9I9J989$G8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 H8 H9 H9 I8 I8 I8 H9 H8 I8 I8 I8 H9 H9 H9 H9 H8H8H8H8H8H8H8I8H8H8H8H8H8I8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8G8G8H8H8G8G8G8G8G8G8G8G9!G8G8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8H8H8H8H8I8I8H8H8H8H9 H9 H9 H9 I9 H9 H9 H9 H9 H9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I9I8I8H9H9I:I:I:I:H9H9I:I:I;J; K< L=!L=!L=!L=!K< J; J; J; J; J; K; J; J; J; J; I;I:I:I:I:I:J:J:J; J; M"P@"QB#RC#SE$TE$UF%WH&WH&ZM(_R*^Q*ZL'TZK/OP#E@$F@'CB-DH =:<9;9#A=613+7/905,7.7.6,5+2).'/(933,2)0(1)3+4.504-824-#;91)0)2+2+0(2*5.6.803+5.6.1)/'2+4,1.515/6.80703,2+3+2*3,2*51/)1*4,4-3-3,5-7/>7937092;582718182;59582:2<5;3<5?8@;%86 @;!D>9294<7 @==871:4!B=%GB(FE'GD"C> B==89494;794<8!A>$A@'C@+FF+JF+MH,JH)KG*MH$HB,KIPT;K; G8G8G8G8G8G8G8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G7G7G7G7G6G6G6G6G6G6G6G6G6H7H7G8G7H8H8H9H9I:I:K< J;I:I:I;J; I:I:K< L=!N>"N?"L= M>!M>!PA"QB#QB#ZS2>UU0JK&BA">>(DF(FG#AC*DH*CE,DG,EG5LO0FH)AA)CA%?<#=:!<9#??,FH$@@#@@<::8854.3.40407363623-3-831, <;'BC$>?%==6351 ;75.3-50626343#;=&<775#.EJ,DI">@=QaN\u@Rc.MQ1NJG:!H8H8H8H8H8H8H8H8H8H8H8I:I:H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J9!I8 I8 I:!-A481=7>9<7A<&GD*KJ*KK"FA^d>dX/ZK)P@$L!L=!M>!M=!J; I: I9 I9 I9 I9 I9 K; OA$H>#J: J:J: F: 29*KJ0M>!E="@?'(?55-*'+'1-0-./.2(('(+,-../401+5.#?:$A;%B;%A9,H@)F?)D<%C>%BA$B@ ;6818E1G;!J: J: J: I: I: I: I: I: I: I: I: I: I9 I8H8H8I8I9H9G: H; #6)D8H9 G9 H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H8 I8 I8 H9 H9 H8 H9 H9 J:!H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8G8H8G8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I8I8H8I8I8I8H8H8I9 I9 H9 H9 H8H8H9 H9 I9 H9 H9 I9 I9 H9 I9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I9I9I8H9I:I:I:I:H9H9I:I:I:I:J; L=!M>!M>!L=!L=!L=!L=!L=!K< K< J; J; K; L"P@"O?"PA"SD$TE$SD$QB#SD$VG&\N)cW.`T,`[:895=8"?;954,5,8.7.8/7.6,6,4*3,2,813+2)1)0'0'2)1)0(4,822*1)0(1*3+2*3+4-6.5-2+5.4-3+2*2+2+1*1*2)2*2+3+3*2*1)2+3-5/0)/'1*4.5.5.4-6/92?9924-60715/4.4/70;3938181:3:291?8@9$85%:7%GC;5>9?:$EB%EB&FC#C>#EA A<"@=*HG%D@?:94>;94;6<8#B@!@="?=(BB,DE+IE+KH(HE*HE-KI'EB0NN/MKRX@RB#H9G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G6G6G6G6G6G6G6H7G7G6G6H8H8H8H9H9I:I:J; K< J;H:J;J; L< L= M>!N?"P@"O@"RC#QB#QB#O@"RC#UF%UF%WH&VN.5KG)DD$A?'AB,DI&AB*CF+CF-EF(CB:OS/HH-EE,ED-FD%@=!>=">?'BD%@A&CB$BA @?;89673504/4/4/3,3+2*1+.(40*DE,CF%;<2, <9 ;9$?@85 ;8$=;!:: ;:9:$<9@7!1@>1GS$?C ?=$A@&@A%?@3GL?PXDU^O`nWj~OcwKbtH[m@We=Tb;NY?Rc2FT2FS7KW?VaP\@Rb4IT&KG9@-H8H8H8H8H8H8H8H8H8H8H8H8H9I:H:H9H9H9H9H9H9H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I; H9H9H9H9H9H8H8H8H8H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J;!;G26.71?8?8$FB&IE*LK'JHbgAcV.TD&L=!K; J: K; J: J: K;!K; K; L"P@#RC$RC$N?"K; J: L"LD0I8 I8 :<(:4)F!L!O?"LA%4>+1@/'?26. >5&F@*HD'D>,JE-JG!7843/.--62!>9:3'D=">6%A:%@9'B;91#;7!<58.;19/(;,<<&J; I; I: I: I: I: I: I: I: I: I: I9H8I8I8I8H85)";0>;#*8*:<'I8I8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 I:!H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8G8H8H8G8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 I9 I9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 H9 H9 H8 I8 I8 I8 I8 H8 H9 I9 I9 I9 I9 H9 I8I8I8I8I8I8I9H8H9H9I:I:I:I:I9I:I:I:I:I:J; M>!M>!M>!L=!L=!L=!L>!L=!L=!L=!K; J; K< L"N?"N?"O@"QB#RC#RC#RC#RC$SE$ZL(`T,e[0mkHXsFht7VZ)GE+CD ;:%?=;8;6">95-2)4,5.8/7.8.8/6-805,:42+3+1*0(0'0'2*1)0(0'0(/'/'0)2*3,2*2+6/6.3,2*5.4-2*1)2*3*2)2)3+5-4,3+4,2*2*2)5/2*0)0'4,4-5-4,6.6.50917/6.7172725/4.7082717160:2:291927/<6*>>$FA=8A<%ID&GD*KI&FB:4;5@: ?:#B>$B>?:;6#@=#?>;8"@=+FG&CB#=;'@?*CB,JE,IG.GH/JK(FD,IG+LI1POAZ`FXN`W2M>"H9 I: J: H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6H7H7H9I9I:I:I:J;L< K; J; J; L= M>!M>!O@"P@"P@"RB#QB#PA#RC$RC$N?!RC$TE%XJ'WI&XI&SQ:8UV-IH(FF)EE+BD.FH3GL0EI+BD(EA%C@-HG,DC,EC!=<&BC#BA#?@)DE!@>><)DF96504/1,50:5622,832+0*/)0,,BE+@D(>A76&??$@?$@?!;:!::4063"?<$>?$85G: 0@>-DL'AE'BC+EF%>?,CE8IP0CI?PZHYfM`q;R_FXhSf~H^q1HQ:P\?Ub4GS3GU6JU:*IH+KL%HE^c=^Q,PA$L='I8 I8 I9 I9 I9 I9 I9 I: J; J; J: J: I9 I9 I9 I9 I9 I9 I: I9 I9 J; M=!L>"J; I: J< K< K< J< K< J; K< M>!O?"VI(NL.ATC9WQ5UP2PJ:XR;\V@b_5UQ8VQ+HC6610:692#?9#>:$?:806-7/3*2(4*8.6,7/:<'A<%I: I: I: I: I: I: I: J; I; G9I9 I8 I8H8H8,5%80:9$?<&F;"H8I8H8H8H8J: J:!H8H8H8I9 H8H8H8H8H8 H9 I9!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8G8H8H8H8H8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I9 I9 I9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 H8 H8 H9 H9 H9 I9 H9 H9 I9 H9 H8 I8I8I8I8I8I8H9H9H9H9I:I:I:H9H9I:I:J; I;J< L!O?"N>"N?"N@"O@"PA"QB#RD#RC#VG%]O)aV-cX-bv^~Fcn,JH-DF$>=&DA 95;5;65/2)1(5-7.:25,5+4*8.:35/2+2*2*1)0(0'0(0(.&/&0'0)/'2+1)3+3+5-7/1*1*1*6.4-2+1*2*1)0(3*5-1*3*3,3-2,4-5/2+1)1)2*7/6.6.4,3*5/3+4,4,6/707282606/606270608191:1;3<491<5+FF#B<&HB$EA%ID$FB*MJ'IF2,50!@<$B>$D>!>:"A<=8;6=9"><&BB)DE*DC%@>+BB+CF-HI2JN+GI.JK/JL3LQ9SY8U[;UYDWaDY`Vc]NXKKXIKUARG+H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G6G6G6G6G6G6G6G6G6G6G6H7H7H8J: J; J; J; L< L= L< L< L= M>!M>!N?"O@"P@"P@"RC#QA#RB#RC$PA"O@"SD$SD$XI&YK'YK'^Q*@VK3RV1NM'EF&@>/FI0FI+CD-CF(CA)DB/FG*BB:897#@@!??$@A&AB#@@(CD2IK:986!;:865/5151402,/(3-31/+)>A.CG"78";;.CF.DF'?A!;:'?@877787::4.G: =;)&CC*CF+CF*@B+AD:MS>OW9JR@QZAR\>Q]>Xg;LWDXi:Q\0EM2IR=S`9MX,BI:JW5IQ2HS)GI$HC F@CB+J?$AC1H8H8H8H8H8H8H8H8H9H8H9H9H9H9H9H9H9H9H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H9J< H9I:I:I:J; I;I:I:I:H9H9H8H8H8H8H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8I9 H9H9H9H9H9H9H9H9H9H9H9H8H8G8H8H8H8G8G8G8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 J;!,9):5>9$C@*IJ#HDhlA]O+TF&LZSFf`A`Z4VM8WO-JD)GC%==7452:63,/),(1*6.81913)4+,>/I: I: I: G: I: I: I: I: I: I9I8A9!H9 I8A7 4)5,9:$I8I9H8H8I8I8?;#H9H8H8H8H8H8H8H8H8H8H8H8 H9 I:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8G8G8H8H8H8H8H8G8H8H8G8G8G8G8G8G8G8G8G8H8G8H8H8G8G8G8G8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 H8I8I8 I8 I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 I8 I8 H9 I9 I9 I8I8I8I8I8I8H8H9H9H9H9I:I:H9H9H9H9I:J; J; J; K< K< J; J; J; J; J; J; J; J; J; J; J:J:J: J; J; J; J; I9I9I8I9J; J:K< L"M=!M>!M>"O@"O@"P@"PA"QA#UF%\N(]P)]P)ru_m[t4OQ(EC,CE+JG'CB 9684503.4.1*5-6.2+6,7/:1803,3+3*2*1(1)0(/'0(0'/'.&/&.&1)1(4-6.6/2+2)1)0)3,3,2+2*4-4+3*5,2*2)3+4.3,5/4/2+2*2)1(1*5.4-5-3*3,3,2(3*4-5.705/506/6/7/5/4.5.9180;3;3>6!@:"C<$E@&EB'FC$B?&FC%EB&HE&FB >;!>;!>:#?<$@<">:'DA @;<8<7 ?<%B@*FH)FG$A?(BA+EF1HM2KR+GI*JG-KL7PW9T[9S[6NR>TXI[gI]iMaq9R]+HNGUNH8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G6G6G6G6G6G6G6G6G6H7H7H7H8J: J;K; K< L= L= L< L< L= L= M=!N?!N?"O@"N?"M>!M>!N?"M>!N?"RB#SD$QA#TE$WH&YK(aV-ZeI&DG-JJ,MJ*FE.FH,FG0GJ.GH0FH)AB)AB#<<96!;=%@A*DF,DG">?%?A/FI6MO+DF$<>'?A73624.84950+$><2-0* 87)@B.CG+=B,=C0BG0DI&<@(@A*BC&??"<=!9=897898$=:&%AA+CE(?A&>@)>A*AB+AC/CF7HN8JQ5GP1DN)?D+AG'>B1FN4HQ8LW;O\+AF-EH%B> >=&GF"HB%E=J2@:,F>(KHd^7\O+UF'L="J9 J: J: J9 J: J: J: J9 J: J: K; K; M"GJ2VM/K"ZM(id;OaX/IF1LG>ZRB_X8VP?[S.NH4RJA^S7WR%B=!=861,))&-+5/70812)4+(;-<;&H: I: C<$H; >9"F:!68$67"@9";8",8&;:$79$'7*<4&=.8:&I8I8H8I8I8I8B9!<:$H8H8H8H8H8H8H8H8H8H8H9 I9 J:!I:!H8 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H9H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H9 G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8I8H8H8I8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I9 I9 I9 I8I8I8I8I8I8H8H9H9H9H9H9H9H9H9H9H9I:J; J; J; J; J; I:I:H9H9I9I:J:J; J; J; J; J:J: J; J; J; J: I9I8I9I9J; J:K; K< L!O@"P@"P@"P@"QB#WH&YK(YJ'XI&mn]jB[d.IJ.DJ0JK5MS-EC!:97382842*<56.4,8.=7<55,2*4,2*2*1)1(1(0(/'0'.&.&/&.&.&0(5-804-0)0(.&1*3,3+2*3,5-3+3+4,3+2+3,60934-3+2,2*1)0(3,3,3,3+0)0)2)2*2)6.6.7/5.4.5-5-7/7/4-5-7092;34-6. >8!A;$GA%HB%F@&EB%BB$A@+HF$B@%DB$A? <:63#<<#=;!@;>9 =9 >:=;>;#@B'BD%@?*CC0IK0LK:R[,GG+IH*HH6PU3NQ9SWK_lI[fRduPdrI\k-GK+KN3OOPB$H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G6G6G6G6G6G6G6H7H7H8H9H9I:I:J; I;J; J< L< L= L= L= L= M= M>!L=!J; I; I;J; K; N?"QB#QA#RC$SD$VG&XJ'VT:-GJ,HE(CF,FI(DD'CA-FF-FF(AD"<<%<<(@B$>> ;<)BE)AD.CH/FK/GJ8MS8NS(?C+AE%>?;:735141$A@ ><-GG)DB :831'>@0CH.=D.>F+=C3EM*AE'@B%?@'@A*@C$;?":>$?B8;+I< (@=.DG(@A(AB*AC.CG3FK2DI9JN-AE0CI1DK2EP1FP8N[>Vi=Qa3IT>Qc3HQ&@A!>;95<9A<&OH*@L4SJ+VK)TF&RG(N?#J: J: J: K; J: J: J: K< J`Y9XO+F>"84/*-,+(1/:796434.>762$>6:>+F:"H:!A;$H=#29((?7:24*:2=46- >69@.J9I8I8I8I8I8I8I8I8%?57<(H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H9H9H8H8H8H8H8H8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H8 I8I8H8I8I8I8I8I8H8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I9 I9 I9 I8I8I8I8I8I8H8H9H9H9H9H9H9H9H9H9H9I:I;J; J; I:I:I:H9H9H8I8I8I9I9J:J; J; J; J; J; J; J; J:I9I9I9I9J:J:J; J; K; M!L=!M>!O@"O@"O@"QB#UF%[M([L(WH&}i虳Zt0KL)?B,FH.EH#;:*@D45;6:65.90804,<5817.3,2+1*1)2+2*2)2)1)0(0(0(0'0'.&-%0)816/5-/(.&0(2+3+3+3+2*3*0'0(0'2*2+50613,4-2,2+2*1(0)3-4,3+2*1+0(0'2)3*7/4-6.4-4-5-6.919272<5@8?8;45.4,60,LH)LF(LF)MH'HD$B@&>B$BB&CC-FI ?<*AF,BG+AG#<=97:6:7=;!>>"@? =<'BD#>=+DD2GK6KO:NX1HL+HG3MQ8QU5MQ%>>(?@)?B"8:76%=>::;;%>@&<@/EJ/FJ4JP8LS-AH/BJ-BG&?@97845286#?=(CC&@@4MO7NQ%<=*?B/AF3FM0BI,?E0BI'?B)@C'BB*BD(=A%:@!9=&=C<;(69'"E@%@@"==3HL(AB.CF6IO0CI2DJ2EJ0CI.BI2DN2FQ>WhKiLb}K_y@SgBXf*FF =;!A=>< A!L!PA#YJ(bW.IXF(E>3QL)HB'D?,GB1LE8TO9UPBbV6VM6TK2NE#<52/4053848674:8#><)HD9474$>9'=6G;"I9 I: H>&><&/@24MD9NDBH6H;"I9I8I8I8I8I8I8I8I8I8?:$!=1:<&H8H8H8H8H8H8H8H8H9 H8 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8 H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8 I9 I9 I8H8H8I8I8I8I8I8I8I8I8I8I8 I8 I8I8 I8 I8 I8 I9 I9 I8 I8I8I8I8I8I9 I9 I9 I8I8I8I8I8H8H9H9H9H9H9H9H9H9H9H9I:I:I:I:H9H9H9H9H9I8I8I8I8I8I8I9J:J:J:J: J; J; J:I9I9I9I9J; J:J:J; J; L!L=!L=!N?"O@"P@"QB#UF%]O)^Q*ZL(ZM)fZ9j:TY'DA1IN0HL/CH!7:30/,93#F>815.2*805-3,1*4-3,1)1)0)1(1)1)0(0)1*5,3*3+1*4-3,/'/(-&.'.%3+4-4,3+5-3*1(0'0'2+603,3,3+4-2+1*2)1(/'5.5.3,0)2*1(0(4+5-6.7/5.3-4-5.7/91:280"A:!C<&HC'ID5.=6%H@)MF(LE*MH(JF&HD&ED#DB$CA$CA$CA&DC(@E)?F$< >>#?A*CG$=?&BC(AB*AC6JR0EI:LY5HR.IH8NS:NW:PY?T\CWaJ[hQduObtBVd6LT8RZ-MPBN!L= M>!M>!K< I:H9H9H9H9H9H9H9H9H:I:J;N@"HR=&AB%@?$@?)ED"<:#=<'>?*>B9986757776!<<(>B&;?*@D1GM4HP'D&=?*BC4074!;;"<;*DD,CE2JL6NQ,BD+?C*@C2DK4FM0BI+?D+AE(AB<:)BE'>A";<"9> 8<(82J>":?."=;"=?/EK)AC+AC0CH1DI4GM5HN1DK/CJ6IT1FQ*AG"DG.A9A:!@?$DA%D@#B<&E>BS@YL*J: J: K; K; JA'8K?^X6OA%LV\@N?"N>!N>"N>!N?"N>!RB#WI'\O)_X2.H<$F@"A<-ID+FA/KG+FB.MG0OI+KC1PI)F>1KB9RJ#?:;6%C> =74.1-74'DC(HC+IA$>9(B:>E2I9 I9 I9 I: J: J;J: I8I8I8I8I8H9H9H9H8I8I8I8I93<) C9:<(G8F8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 H9 H9 H9 H9 H8 H8H8H8H8 H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 I8I8I8I8I8H9H9H9H9H9H9H9H9H9H9H9I:I:H9H9H9H8H8I8I8I8I8I8I8I8I9J:J; J; J; J; J; I9I9I9I9I9J: J:J:J:J; J: J; K!O@"O@"QB#VG&\N(^P)ZL(VG&VG&XI&eeSRjz1KJ&?@3IP8LU(;B+)/)>6"B<931,1*5.4-3-3-3,2+2+1*0(0(1*1)3*3+3*4+1)0(1(2+0)-&.&.&,$.&4-4-5-4+5.2)0(1(0(5.5.3*2+3,2+2+1*2+0(1)6/5.4.933*1(4+6.5+5,;36.4,5-4,807/8/80:3"D=(JC$GA"B=&GB+NG+OJ%IA'HD$E@'KE,DH,BH/FJ%CA/IL)DE+BG.CI*@G&>B%=A(?D'=B-CJ2GO-CG.CF-EG-CD0FJ:NW=O^:MZ9LX3IM3JP9MVA":<%=>'=?$:<"9:$<>0FJ4JN1EJ.BG/BG/BI-@G2DL*@D%?@(@B$@@ >=!>=:8888:9:=<(M@"??-*AH1GP'@C'?@1DH0BG6HO5HN8JT9KV8JV5IV+@H3JUDWkL`t9KY$>?'FE*FH'DC"A>!B>!CA1LJD<&H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I9I:I9I8I8I8H8H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 H9 I9 I9 I9 I8 I8I8I8I8H8H8H8H9H9H9I:I:I:I:I:H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 K; FA&>H0:D0&A4=8?;@<#@>!@;$C>@VF>I9:E4?A,DE/=P@)IF5QS6OLDNABH3UX=?B0DF5EI8NK1J: J: G=$B?(M?"I9 I9 I9 I9 I9 I9 J: K#I: I9 I9 I9 I: VJ*J: I8 I8 I8 I8 I8 I8 I9 I9 I8 I9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I: H: I: I9I9I9I: J>#J; I: J; I: J; N>"CC,[bAff?P@#N>!N>"P@"P@"P@"UF%YK(^R*e[17N?!B:?6:4%B:%B<">9$?<1HF.KD5PI)F>6SN1MGBZO(GB+GA(E>(E=824/20$B;,G?OI-J@'J!O@"O@"PA"VG&ZL(\N(YJ'WH&ZK'YJ'ZL(fplAW^-EG1HM=S^3EP4:1*=6<7603+5.822*2,1+2+3,2+2)0(0(1)1)1)2*2*4*3*3+1)2+0(-&.&.',%/'2+4-5-6/2)2)1(0'1)4,1)2+2+2+2+2+3+811*0)1)3+5.71942*3+5,5,6/<55.5,4,5-80809070:2:1806. @:#D?-QM,NI'IC&IC)MH+LJ,EI)BD0GN3IQ+FI'CD.CI-DF/FH'>A&>A'>B)@E,@G*AE,AD0DE1DF7HN6HSAT`?R_;NW5HP/FJ4JP1HL6JP>QZ>Q[;(AB(@A%=>$<E$7=&9@#6<)B-?E*=B 79#8;(?A1DI/BG,?D0CI0BJ,>D.@H)?C'?A,CE(AC(BC">=:798(?D$;@.FM9?2J@$!==1HM.GJ(@B,AE5GM6HO3FK9JT?O^:LY1GS7IV!?>?<"BBIL2H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9H8H8H8H8H8H9H9H9H9H9H9H9H9H9I: J;!H9H9H9H9H9H9H9H9I:I; I:I:H9H9I8H8H8 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 H9 I9 I9 I9 I8 I8I8I8I8I8H8H9H9H9H9I:I:H9H9J;!J<"H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H9H9H8H8H8H8H8G8H8H8H8H9H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 D@)C=@;:5<8;7;5=9=9;6=9>9&EB)HE-JH.KK,IH(IE:VQHXGBK>PR8RH*I@'L>#K; K; J?$I9 I9 I9 I9 J: J; K; J: I9 I8 I8 I8 I9 D<$G;#J:!I<"I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 D:"I: I9 I: J: I9I8J9F<":?)H?%I: J; J; L=!RB#TE%WJ(VJ)PA#N>!N>!O?"N>"QB#XI']P+c[2ie;SdQ#?7:25-:2!:8:5#>:.IG0NI,IB-GB7TM6SL.IB9TL6SL;XO@aW(F>!=8855.">9@C.J: I: I: J; I9J:I9I9I8I8I9I9I8H9H9H9H9H9H9H9I8I8I9G: H;"I9I93>,=>*G9!J: H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8H8H8G8G8H8H8G8G8G8H8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8I8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8H8H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8I8I8I8I8I8I8I: J; J; J; J; J:I: I: I: I9I9I9I9I9I9J:I9J:J:J:J:J; N>"P@"QB#N?"O@"SD$[L([M(VH&RD#XJ'ZK(YK'd^AatOZGYh:MY2GR3GR3JQ5KS3GM9LTDVb:PR7MM>R[!N?!J; H8H8H8H9H9H8H8H8H8H8H8H8H9H8H9M@%.GE0GJ'AA'>@!;9":9-AD'2FM5HP2FL&&:@58"7;"6;&9?,>E,>D):@'9>#9;$8<#9=(#@>%@@;:&@?"<< :<(@D'>AQC"(=82IM0JKTgo*BD)?A-DH,AE)?C,AH4HT7LXEVfEWgCXl:M[0DM ;; =::5#DB'HF!>>;:.IBXS0K>"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H9H9H9H9H9H9H9H:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:H9H9H8H8H8 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 I9 I9 I8 I8I8I8I8I8I8H9H9H9H9H9H9H9H9H9I: H9H9H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 K; H>%D?(9:5:6#A?(EC&DA'GC'FB#EA+ICRP3M>"I;!F=%J: J: J: J: I9 I9 I9 I9 J; J; J: I9 I9 I9 I8 I8 I8 I8 I8 J9 I9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 E8!=8$>9$I9 C:"I9 I9 I9 I9 I9 I9I9 I8I8DC)'<.:>)I9J: J; J; M=!QA#VG&UF%QA#O?"N>!O@"PA#QB#[O.hb=ll@]gG,H>!;:%?82/2+4/507172"?:#B=*JE+GA'C<)D=0KC(D>>TQRgbDea4UO/MG5.3-+(%;5?<%K< J; J; I9I9I9I8I8I8I9I8H8H9H9H9H9H9H9H9I8I8I8H9 H8H9>:"H9H: I@%K<"?<$;;%H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8G8H8G8G8G8G8H8G8G8G8G8G8G8H8G8G8G8H8H8H8G8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9G8 H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8I8I8I8I8I8I8H8H8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8H8I8I8I8H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H9H9H9H9I8I8I8I8I8I8 I: I: J: J:I:I: I: I: I: I: I: I: J: J:I9I9I9I9J:J:J:J: L"P@"WI&ZL(VG&VG&WI&WH&YJ'\N)`T+am`IZg1HN4LU8LV0BM0261722,4,3,6/923+4,3,5.6.6.3,1)4-1*2+2+3+2*3+2*0)1*0)1*0*3,2*4-2*4+5.2+2+0'3-2*613-3,0)2*2+1*/(0(1(0(3+3,2+1*2+6,6/6.4,4+5-91:26.5-8/80807/7/:2:2:480$G@(LF'HD*ED)HC0QN-QK2IM2HL/FL'@C'AC%@B'?D'?A(?B)?C)?B)>B)=@-CG!::,@D-AE.CF5IN5JO;NV=PY;NZ@Q`;M]4FU9L[3HR3GP7LT>R\6KN6KM@T_8OT.OL*NJ&IE+HBOA$H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H:"H8H8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G8H8G7G7G7G7G7G7H8H9I9H8H8G7H8H8H8H8H9I:K< L= N?!N?!I:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9K< 9:#;>.BG0CI1DJ";<"8:&%9>&9?%9@"5:"5:*%7<&9=#8;&8?+>D+>D-?F2CL3DM2CK)?C*@C&=@*@C,B?">=;:#>>#>>%>> ;9#:=*?G":>>@,DD*%=@2HNAY^ax0HJ(@B.CG&=@$:@)@H3GP1FM2FO;P]'<@75:8 =: ?=)HF(GE#BA"?@%A@PV9EA)H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:I:H9H9I8I8H8H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 I9 I9 I8 I8I8I8I8I8I8H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H9H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: H>$H?%L>"PB$KB&AB,0B6#A@)EC&B@"@<"B? >:!><%A?9?/J9 I: J: I9 I9 I9 I9 J: J9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8I8 I8 E9"3:)/8(G:!H:"I9 I9 I9 I9 I9 I9 =9$C>&I8I9LB%5@-J9I9J; J; J; L=!M>!O?"O?"N>!N>"N>"P@"SD$^S/w[{cr~_,H= @7=5 :63242604/737041:5 @:">9'C=/KD2LF[e\ccHmkGacGLT@>M> <27-0+42"=6@B+J; I: I9I9I8I8I8I8I8I9I9I:H:H9H9H9H9H9H9I8I8H9H9H9<;$9:%A9!E9 H9H9::&0:)B9"H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J:!H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8I8I8I8H8H8H8H8I8I8I8H8H8H8H8H8H8H8H8H8H8H8I8I8H8I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8I8I8I8I8I8I9 I9 I9 I: I: I: I: I: I: I: I: I: I: J: J:J:I9I: I: J; J; J:J; J; N=!O?"N>"TD$XI'VG%RC#UF%VG%SE$XI&_R*bW-aU,qwr@O[:NX1DM:KV)6 A:,OI,LH-EF,HF.JH-QK2HL)ED,DG*BF&?A(@C*@E)AB*@C'>B-AE/CH#;;&?@";;-DH/CG5HM2HK1III9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G7G7G7G7G7H8H8H8G7G7G8H8H8H8H8H9I:I:K< M>!N?!I:H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:J; LA'+GC$?>6253 88&;=5GO)?C$<='?@#<=!9:#;<77$9<(=A%:>%9=)&9?%9>*=D,>E-?H0AL.?H0AJ+?E&AA*AC+A9$@<%=?&;?%=>$?>(>@&A%;?)=;SF#+;50DJ6LTH`kSjt7LQ8IQ1EL1EQ:P^4NT2FM3EQ6GS$>>&EA"@= ><'ED#B@$AA+EG;7%@8RH(H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:H:H9H9H9H8I8I8H8H8 H9 H9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 I9 I9 I9 I8H8I8I8I8I8H9H9H9H8H8H9H9H9H9H9H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 J: J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 J: G>&=?.5>.+=12@3.@9">9,=0+B8#B>830?0):-:4-<2I: ;;(7=.I:G:"<=('?9<=,;<+?=*I9 I9 D:"5:*<:'H:"I8 H8 I9 G9!5=,;<*<>.B>*8<+(<33;/I8 G:$J9I9 F9">;&H9 A<&D=(M@$G>$I9 I9I: I9J: F@(J:I9I9I: J; J; J; J; L=!L=!M=!N>"O?"O?"VG%_T.uxV{k_pd*D='A83F=[eO_\Ab]:APA966443656394*H@5QLE^XQd]kn[h`5_S+UF%O?"O@"OK.'E?5/-*63915=*J; J: J:I8I8J:N@#K=!J: I:I:I:I:H9H9H9H9I8I8H8H9H9H9H:!D=#4<(.<+I:H9H8D9!-=,::&H8G9!G>%H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I: I: I: I: I9I: J: J< K< J< J; J; K< M"O?"QA#SD$SD$RD#SE$RD#VG%WI&\O)dY/bV-g^9 =86.5.5.4-4-2,4-3-3,2,2+3,2+3,3+2*0*1+4-832,2+5/5.4-3-4/3,3-;8502,1*1*4276631)1,0)0(.&4,4-5.4-5.4,5,4+4,5,6.91<47.6-7.8/7/7/5/70816/:3!A9(GA%C>+BC,EE2JK*KF'@A'CC-DG)AC+CG/DJ0EI+AD,@E*@C/BG-@E'?@!;;89'A,AD1EK8JS=NZBQa=MZ3FM3DO>R`FZm?UfDYj8L[9N\?Ub2QP5RQ7XZ+QM"GB!GBGK1H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G7G7G7G7G7G7G7G7G8H8H8H8H8H8H8H8H9I:J; L< M>!K< H8H8H8H8H8H8H8H8H8H8H8H8H8H9K; L= N@"5SO&B>6185'>?%:=*?C*>C&=?*?C(@B%>?#;<$:D';@(;A*&9>':@$9>#6<#6;!6:+8(>B/@I&:@'S[8KS9KVL_qF^pEWg8KV'<@":<&E@$D?;7$B@(DD!>="?=5IQ%CB&B>PF(H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:I:I:H9H9H9I8I8I8I8I9 I9 I: I9 I8 I8 I8 I8 I8 I8 I9 I8 I9 I8 I8 I8 I8 H8 H9 I9 I9 H9 H9 I8I8I8I8I8H8H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H8H9H9H:H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I8 I9 J9 I9 J9 J: J: H: @9"5>.:A,M>"4B5:>,H;!%A92D:.?0;3-FAA?++A7&C?2?4D>*??-=9>9=9(BC1>3$<58?12<.A>*F=%E=%K=#L?%M=!H:!3=00>:.B>&B@%@;6=,J; I: I: I9 I9 I9 I9I9I9I9I8I8I9I: I: I: J; J; J; J; J< L"UE%YK(ZL(^Q.dY=e[@_S6[N-XI(VF&WH&ZL*JTB5679658697;7;7AYW_lee_:UF%QB#N?"L=!L0G<"I9J:I9I9L9#:A*H9H8H9G8 C:"I8H8(<.I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8J:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8J;!G8G8G8G8G8G8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H9H8H9H8H8H8H9H9H9H9B='G8G9!G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8 H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I8I9 I9 I9I8I9 I: I: I: I: J; J< J< J; I: J; L=!M>!O?"QB#P@"SC$RC#RC$RD#TE$XI&^R*dY.h_2bX._S*JYf5FP9KT>O]*;D 74;4#>8<59393;44,5-4-4.5.1*3,3-3,2,2+2+2*4,5-910)3,5.;5825.605.4-4.4.4-:594602,0*1(2,1*0)3+2,0)1(0'1(4,6/5-5.3+4,5-5,5,6.5-81:54,8/8/6-6.5-5/9570 >7;4!?9;6&>>0FI1GJ-LJ4IN%BA*BE+CE+CI.DI-CI.BG*@C(>B/BG/DG'>?8788*=C/BH.AF4EN>M[8GV>N]BQ_;LYIZk;KZXmI]q)=A,>E+>D&:>(;A(:@):A'9B);D"6<#6< 49#6<(;A,>G+B+AB)EC%?@*D%;>"8;(=;74!4:/%=>,??+BE%>>'=*DG ;:!><-EH*DE?<>D2H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I9I:I:I:I:H9H9H9H9H9I8I8I8I9 J; K< I9 H9 I8 I8 I8 I9 I9 I9 I8 I8 I8 I9 I9 I8 H8 H9 I9 H9 H9 H9 H9 H8I8H8I8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 K; L$K#J>$C<'89'E<#B:#K: J: K; L!N>"L< G<$3A9'CC"?>(@69?.J; K< I: I9 I9 I9 I9 I9 I8I8I8I8I9 I: I: I: I: I: J; J; J; J; J< M=!M=!N>!O?!RB#SD$RB#WH&XI'RC$QB#QB#P@"QB#TE%WI'^S.CRE1032779:77<67K?ddIUF&M=!K< J; J; J< J< MA%(?3"?9.)61<62<*B:"?;%J: J:K; N=!QC$L< J; I:KB%?='H:I:H9I:H9I:H9H9H9H9H9H9H9H9H9H9H9B:"H9G8@:#H9 *:+=;&H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 I9 I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8H8G8G8G8G8H8H8H8G8G8G8G8H8H8H8H8H9H9H9H9H8H8H8H9H9H9H8H8H8H8H8H9H9H9H9F9!H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8J9 I: I: J; I: J; J; I: J: J; J< M=!P@#SD$TE$RC#SD$P@"QA#PA"RD$TF%UF%]P*kc4eZ/dY/ifIn:LX7IR5FO4FP 77;7"<77094936/3*1)4-604/2,4.2-3-5/2+4,2+3+1*2,4-616194606/605/5.3-5.:54-2+825/5/4,810(1)3+2+1*/'0)4,6/2,4-80918080918/7/7.;5<87/8.7.6-6-5-5-6.:4$B;;4#>:(@?&@>*CD.EG-IH,BF-DG.DH0EK3HO3IO/DH-BE-BE*?B0DI/DG!::76)?@3EI;JPMY?O[IZjJ_dGYi@SaL_qFVg@QaEXm7LZ"9;!:;%;>+>D,?E,>D0AJ2CK->E-?H&9@"6;&9?&8?%8>"6:$8<':?&9>78";=-BF"<<(=B%=@-CH%9>#9<0<377%98<:"<<+@D+@D)>A/AG-@G*>E)=D/BH8IR1DK%>@%@?-?G6GR1AL$:=96 <953#?>/HL)CE%??+DE,FG,CF;8,>5H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9RH+J>$H9H9H9H9H9H9H9H9H9H9H9I:L?#H9H9H9H9H9H9H9H9H9I8I9I:H9I:I:I8I8H9H9H9H9I8I8I8I: K< I: I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I9 I9 I8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H9I:H9H9H9H9H9H9H9H8H8H8G8H8G8G8G8G8G8G8H8H8H8H8H8H8H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I9 J: L(3C>)CD(CB6>/E:#J9 I9 I: I: I9 I9 I9 I9 I9 I9 I8 I9I9 I: I: J: J; I: I: I: I: J; J; J; J< M!O?"O?"O?"SD$SD$P@"O?"RC$O?"PA#QB#SD$XI'cZ8fn[rek|afuTGXEZcA]Y5TG(M>"K;$N>!L!N>"RC#SD$VG&O?"P@"P@"QA#RD#UF%UF%aV-aV-f[/bW-k|AQ]?Q]4EO8LV0AK$;=7492604/6/6.1*0)3-504/60504/503.4-4,1*2+2+92@9!B<>972<6:5726/506/4.3,3,<6<7>983:40(2)2*2+0).(0)6/4-5.:3:2?7>6:2%E?"B;=6<4 @;>9:46.7.6/6-6.6.815.#?9(B> <6 :6,CC.EE.FG,HF-CE(@A0EI:NU=PXBVa6IP6GN:LT5GN-DF.DF :8(>>4DH:HNQc4KU8R[4TU3[W3_W2YX)PL#HBEI4I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8H8H8H8H8H9I:I:H:H8H8H8H9H9H8H8H8H9H9H:H:I:I;L= IL:2QP)G@(D>,GG0HJ0IK(DB(CB0GI&@#=="<<&;>)D/?G*=D&9@"6;%9>+>D%9=$8;$8< 58778899#;=';@&:@1DM-BH"8;!8:$=;&<:#;<%>?'@@)?A,?D,@E*=D&:A(?2>1-7/0BJ':A!7:7664 <;#BA,FI'AC%?>+EE.FI'CB"@=%@?G9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I9H9H9M@$H9H9H9H9H9H9H9H9I:I: H9H9H8I8H8H9H9I8I9I9I:I:I:I8I9I9I8H9I:I:H9I8I8I8I: J; I: I: J; I: I9 I9 I9 I9 I8 I8 I8 I9 I8 I8 I8 H8 I9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H9H9H9H9H9H9H9H9H9H8H8H8G8G8G8G7G7G7H8H8G8G8H8H8H8H8H8H8H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H8 I8 I8 I8 I8 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I9 I9 I9 I9 I8 I8 I8 I9 I9 I9 J: LA-.C9%@<.FMBF?K;"J9 I9 J9 J: J; J; J: D<%$C?$?@(GGAB.I9 H9 I9 I9 I9 I9 I9 I9 I: I: I9 I9 I9 I9 I: I: I: J; J; J; K< J; J; J; J< J< K; L!N>!N>"N>!O?"SC$RC#QB#O@"SD$TE%RC$O@"O?"PA#UE%TE&vq@IGzwAij=8604.2+2*605.3,6/:4=8"D?A;?9<71)3,2+4-1)0)5.5,4-:481=6!B; @8@8 A:+MG*KE$D>0ML"B=:3:2 =6705-81:470 <5.IF#>9";8%<;&?>.GI,HH/JJ/DF+AB-BE:MUDVaFXf7IQ3FK9IT:KU*BC,BC2BG0AE3DH7IN?PYM]j8IP=LX9HS5DPBQd>%=> :97878!89*?C'>A#<<'C,>D':>*>C&:?$8=$8="7;$:< 68!69!6945655466$8=)>C.AH6HR0FJ$:=!9:!;:%<;$<<'>@)>A,?D.@E*>B-?G*>E(;B(;B0AH*?A+?B&?(BE"<=$>?'CB,GG)DC"><$@><=,H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9H9H9I: H9H9H9H9H9H9H9H9H9K="H9H9I8I8I8I9I9I9I9I:I:I9I9I8I8I8I8I8H8H8I8I8I8I8I9 I: J; J< J< J< I: I9 I8 I9 I8 I8 I9 I9 I9 I8 I8 H9 I9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H9H9H9H9H9H8H8H8G8G8G8G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H8 H8 H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I9 I9 I9 I9 I8 I9 I9 I9 I9 J: K; L6#@CCI@J9 J: J: K; J; J: J: BC2+FG,GC@@.I8 H9 H9 I9 I9 I9 I9 I: J; J< J; J; J; I: I: I: I: J; J; J; J; L"N?!M=!M=!M=!N>!P@"O?"N=!N>!O?"SD$SD$N>!M>!N?"O?"N>"\N+wo$L< I:H9H9I:I:I:H9I9H9I:H:H9H9H9H8H8H8H8H9H9H9H9H9I9C:!F:!H8H9H9 H9H8H8H8H8H8H8H8H8H8J:!I9 H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I9 H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H8H9H8F9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I9J: J; J< J< KOY5HP:IT 6:946/2*1+5/3,3,1+1-4/605/4.2.2,3/505060728294!D>=75/3-3,3,2,;5923,5.>7>8=7$H@(MG$GB3,614-3,1)1)5.707081>7;4918/<4"B<)JD*KE1QM3PO"A<;5:3914+93,GD ;6!<6$@:!<7 ;6)>?)=>(?>)CC0GK2HL4IN(>?)@@4HN9LW;OZBS^6GP)>B-AE'@@'<>*;KV5EI;MSGWcEQaP`.IJ3KS3JS2JP-GL+GK1PR2TS0VO(OI(KF;OAO@#H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H9H9H9H9I:I:I;K< GL:2UN(EA+FF*?C%<>$<=&>@'??'<>#89!69 4678$<>87!99&;>.AF,?D*=B&:=#8<#9<"7:)!::-BE$;=,@D+?D.AF+?D,?D-@F&9?16+=D)>B+@C'>?1CJ(?CC@,6@9)BF%>A&=A'?D$<>$>@)BD&?B&>@(CC,GF3HK'AB(CB"?=4G=H; H8H8H8H8H8H8H8H9H8H8H9H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:J!M=!M=!O?"O?"O?"N>"N>!N>!M!N>!K; J; K< O?"P@"N>"N>"N?!O?"L=!TD&eX0ic9bT/^Q-UF(RC%M>#I: I9 I8 I9 K<"I: I9 I9 I9 I9 I9L=!M@#H?%C?&5:%$:,8-89$M>!N>!J; I:H9H9H9H9H9H9H9H9I:I:H9H9H9H9H8H8H8H8H8H9H9H9H9H9H9C9 .7$<9#H9 H9H8H9H8H8H8H8H8H8I:!J<"J:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H9H9H9H9H9H9H9H9H9H9H9H9H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I8I8I8I8I9J: J< J< J< J< J< J< J< J< L=!XJ'XJ'PA#N>"N>"O?"O?"O@"P@"SD$WH&VG&WH&]P*bV-bW-^R*|u]cr@P]@P]:R]F63:54.1+5/4.3-3.2-5060714/404/2-4/72:583@;;6833-2,4.5.5/5/>86.3,2+4-5.71$G@'MG)MI ?9921*0*0'1)2*5/6/817/;480808191"B<,LH/OL,JG=66.5.4,4+ ;6.IG'B=*C@)A@!:6$<9(<>&=<*AA*BB0EH.EG2FJ&>>)@@8LTBUd:OY=OZ1EJ)>A'@?'??&==.?C2AH>LW=LTJ[j@O^JZnBP`;KYAPb0DM2NN2LR5NT,IL3MT1LQ=W`*OL*NJ*LFMP:N@#H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9I:I:L= >XT&C>0GJ-@F$:=#8;&:@#<<'>@&<>#:;"58 987887"::.?E/AH/AG)%;>"8:*=C&:?$9':A-@H*>B(/CG+?D-@E*@/CG+@C(>@*>E><(8<.+AI'?G)@H(?C$=>$=?*CG)AF*BE.FH3JM"N>"K< K< K< K< L=!K< K!M=!N>!N>!O?"P@"PB#P@"P@"O@"O?"M=!L"N?"N>!N>!N>!N?"N>"RC$eZ1^^;QS3dX2PA$N>"M>#I9 I9 I9 I8 I9 I9 I9 I9 I8I8I8I8I8I8I8I8D9!9:%E="F=#L=!K)H9 H8H8H8H8H8H8H8H8B<&F=%H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H9H9H9H9H9H8H9H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8I8I9I9I9I9I: J< J< J; J< J< J< K< QB#UG%SD$L=!N>!N>"N>"M=!N="M=!N>"QB#TE$TE$XJ&YK']P*f\0aV,_R*~Sbu=NZAUb4FM3EO3196;6500*3,1+2-3.61504/2-2.3.2-1,5082!B<6/5.4-3+5.8295834-704-3,2*2+4.61A;$GB*MI&ID:4932+1)1)0(3,<5'D>92"A:#C<"B;<6<7;6!>9$@<:6!>8#?:3+3*3,;6%>; :5-ED,@A*=>-@B(==";7":7*A@2HK3GK/DG.EF&AA.EGFYfG[jBSb/CI-AF'??#<<%;<2BG5BL=JWP`oBR^7IRHXmEUh;KZERe*CF1NP7PX7OZ0KO?Wb/JQ/KO'LI%IGEN#;;$;<#<;"8998!9:99$;<(<@&;>*=A*<@':>+>D,>D(;@$8<&:>584736&9>$7<"6:&:? 6: 49#6;(;A.@F&:>"8;$:<#:;)>A8IS,@E:@9-61 16(<@*>C-?D2BK*>D(?@3FK*@D3FM,AH;;)>@/3FQ#>@"=>$>@$>?%>>(AD8LV/EI5HO:LT7JP7LP.FG"<;"<;MN4H8H8H8H8H8H8H8H8H8H9H8H8H8H8H9H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I9I9I9I:I:H9H9H9H9I8I8H9H9H9H9H9H9I8I9I8I9I9I9I9J: I: I: I: I: I9 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G7G7G7G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: I9 J: J: J: J: J: J: J: I9 I9 J<"I9 I9 I9 I9 I9 I9 I9 I: I: J; L=!M=!N>"O?"N>"M>!M>!M>!L=!PA#ZQ/WI(^T.]V4[P,]Z5_`!M>!K< J; J; K"N?"O?"RB$bW/9I>74VM,QB%M="L<"I9 H9 H9 H9 H9 I9 I9 I8I8I8I8I8I8I8I8I8H9I:J; K#I:H9I9H9H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:H9H8H9H8H8H8H8H8H8I9 I8 G9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H9H9H9H9H9H8H8H8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I: I: I: J; J; J< J< J; J< K< M>!XJ'VH&N>"N>"N>"N>!L?(?=(A>/DE4IM2HK/DF1EI,EF3GJ7KQCT`>P[ASa?.AH(E&;=#8:#;<"9:"8:$:<%:<)=A,>C+E!69 58%6;#8; 69$8<)C*=E#;>,AD/CG,BG;NY0DK6<,L?"/<8"=>&??(?A#>?(AD&?B)BE1FK:LU3HP3FK(BA(AA#<;+CBQH)H8H8H8H8H8H8H8@;'H8H9H8H8H8H8H8H8H8H8L="H9H9H9H9H9H9H9H8H9H9H9H9I9I9I9I9H9H9H9H9H9H9H9I9H9H9H9H9H9H9H9I8I8I9I9I9J:I: I: I: I9 I9 H8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G7G7G6G6G7G7G7G7H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I8 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I: J: J; L=!M=!M!M>!O?"O?"P@"O?"VI(IT=8I<4G>+A?otGO[AM\LJS=MK0ZQ.SE&QA#PA$QB$RB$SD%WH'\T.YP0O@"N>!M=!L=!J< J; J; J< L"O?"M>"RB$^Q+);822HH-ZM+N>#L="I9 H9 H9 H9 H9 I9 I8I8H8H8H8H8H8H8I8H9H9H9H9H9H9I9 I: I: L=!J@$!M>!M!N?"P@"RD$VG%[M(`U,e[0h^3e[0~rSas:JVL\nH[mEXh3DP#9@845.40704,2,2*0)0)4.1-1,1*1,3.4/4.4.3,4.3-6/62613,72833,2+2,5/5.>8?9"C>(IF*KG&F@!?::32*3,1*4.5.;5#B<;280927060%@>+CD,DE734-3,2)3,3+5/4/85$>;'BA+@B0CE)=>'?<,BA.EG4KN3IM1FI/EH-EF0FI1FI8KQK\mATaCUb/CG0DI0BG4BK9GPD/@G/@I3BM2AK-=D%9<%<>"9;%;=%;=#9<6FO(&5=*9B(7@*9A)9@)9@"7:5657#7<%9?$7=&8>$7=48 48#7;!7:0@J4EN%9=#8:)=B&;A(-M@"0:.(AB(?A(>@,@C(@B'AC)AD.EH9KT5IO0FH-DE'BA&A?%@@OG,H8H8H8H8H8H8H869(H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9I:H8H8H9H9H8H9H9I8I8I8I8H9H9H9H9I8I8I8I8H8H9H9H9H9H9H8I9I9I9I9J:J:I: I9 I9 I9 H9 H8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G7G6G6G6G6G7G7G7G8G8G8G8G8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 J9 I9 I: I: J; J; K!N?"RB#RE&KT=GVC7IBY]>w}RmmBloD@RN5CDDN>JR=VO0]S/^V1c\3ZO+YY4gf;\T/N>"M=!M=!M=!M=!J; I: I: L=!J; K< N?"O?"TF&XR14:46BH1YN,N>"L="H9 H9 H9 H9 H9 I8I8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H9J#H9H9H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9F!N>"N>"N>!N?"M=!M>!M>!K< J; J; K< K< L"O@"P@"SD$ZK(`T,eZ0eZ/le5zZIXhFWgBSbG\k:LY*>D&<;60.*614-3,3-1+0*2-502-2,1*2,4.4.5/3-1+2+5098605/ <;!;9523+5.:4<66.5-93#E@#E?!A::44-4-84715.3-7.;4:46.5.83 ;8/FH5JP/EH4.3+4.3,4-618284(??";8+ED+BB*>?(<<&>:.BB2GJ9NS3IM2GJ-EF,FF/FG5HM0DGQcwAU_=OW5GM-BF.BF-AF:JS;JR;JS8GP3DK2DM4EQ ;;+EH&DC(DF/JS.KQ+KK+JK$ED>;,A5J: H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H9H9I:I:I:I:L@$-IF3IL$:>*=E0@H.@G/@H6EP8HT5DO4CM';?(<@(=@%<=*>A'<>)<@"9: 78,;C&5>"2:)7A'4=$5;56 5835 58"7:$9<#8;$7<#6:$7<(:A'9>'9?(;@$9<#9:';?'<@(<@%6:"141AH(A6KS/CH(@B:MZ$)@?(?A#<<%>>&=>#=>%?A,BE,BE8JQ4GM/FH/DH0FI'AA$@ALI2H8H9H8H8H8H8H8H8F8 H8 =9#H8H8H8H8H8H8H8H9H9H9H9I:LD-HC2H8H9H9H8H8H8I8I8I8H9H9H9H9H9I8I8I8I8I8H9H9H9H9H9H8I9I9I9I9J:J; I: I9 I9 H9 H9 H8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G6G6G6G6G7G7G7G7G8G8G8G8G8H8H8H8G8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H8 I8 I8 PB'I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I9 I9 I8 I8 I8 I8 I9 M?#PC%J9 I9 J: J: J: L!N>"O?"N?"VI'aW/__:coQlyebpX;NO6HP6FO4FO2DF>ME?RKW\!J; I: I: J; J; I: L=!QA#\N*:H; 7=7>68XT0O@#K"M>!N>"N?"N?"M=!L=!L=!K< J< J; J; J:J; M=!L7185<8:4718393 <9844.4.#=;"=:3IM6LP&>=4/504.2*1*625073&=<(>?*B@(@?)<=&=;'>;1FG3HK6KP1GJ.EG0GI.FG2IJ3HK0FGI\mBUa8JQ6HN2CI0EH)?B;IT(<@*?B*>B$:<&<>');A$7;#7;#7;$7;):@1BK.>E%:=$9<'';@)'C>'%?@#;= :;!:9#;; ;;&@B.DH1EJ/EH.DH,DF,CE.DG.EG&@CFE1H9H9H9H8H8H8H8H8E:!H8G8 H8I9H8H9H9H9H9H8H8H9J:K?&/?>!O?"N>!N>!N>!L!O?"M>!M=!XL*QW@APH1EK+BD.AG0CI0BH6GN9JR?OY;LV4FO+>C$9<*>C0CD!K< I: J; J; I: I: L%:?"9@039F2QC%J: H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9K!N>"M=!M>!M=!K< L=!K< J< J: I9J:J; J; M"RC#`T,h^1eZ/dY/bW-_S+aU.lv~N[mEUeL_rG[jEXf9JU2DL972.2042334560826/714.4-5/2,406198 :996!;9!<;#==$>=*D@'@C";:%<>!;;615.5-41726/70%E@%C=;5<7:69483 <9#?>(AC854/6183/FI4JM5KO'??4/4-513-2*5/60)AB%<<+BD,AB0CE,@@,CA2FH3FH4HL7KP.DF1FI2FJ4HK4HL/EG1JJEWfGXg2EK8JP9JR.BF1DJ>LWCQ_>KYBP^LYl5GN/BJ&<@*@H.BM/DN0FN'GG*OK-D79I;FC/H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9J; RG,Wj|;PV4NN/GI(?A';@.AG?P]4EO8HR5EM)<@(A>NW>LU9IQ9IR)=A"8:76!99"9:4556#9;%:=#7:"7: 68"6:"6:$7:+4I=" 9:%;@$:<74!;9"<>/EI,DG-CF-CE+BD/DG+CE-EG0GJ(CD@?-H9H9H8H8H8H8H8H8H8H8H8H8@>'H8H9H8H8H8H8H8H9J; SJ)5HI9LYGNGH8H8H8H9H9H9H9H9H9H8H8H8I8I8I8I8I8I8I9H9H9I9I9I8I8I9I9I9J9 I9 I9 I9 I9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I8 I8 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 J: J: J: J; K; M!PA#L!RC$ZQ-0B;'$H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 I9 H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I9 I9 I9 I9 I9 H9 I9 I9 I9 I9 I9 I9 I9 I: I: I: J; I: J< K< M=!M>!L=!L=!J< J; J< J< J< J; I9J:J: J; M=!N>"RC#`T,dY.`T,bW-bW-bV-`U,slNi{JZjK\mQf|CXgFYh@R`(@$:>!9:3-.*5,3-304495*GD+KD"B:8283 <9%@?)AC$??/FI :75194"<:6LP-DF7KP9461848496$><&@>*BB2GK0EH.BE,AC*@@.CC4GJ4GK7JP5IM1FJ/DG.CE0FH1FH3GK2IJHXjEWd-BE/BF9JP1CG=KT8HNBP[:HP;JTR]p1BI0BK(LX:IR,?C#::/CG&<>$:=&;>';?$9<&8=#8;#8:!79!69!68"691BI6HS%9>%9=$9>-@H1BK/AI(=A2HM5IP.BG*@C0CJ2FO>O`0FO5?!871BP!9;98#<;#=?'@B.EI,BE*@D/DJ7JR0FJ,DG2HM*EGA@3H9H9H8H8H8H8H8H8H8H8H8H8I: H8H8H9H8H8H8H8I:H@&PL.=S\AQb7KVG:"H8H8H9H9H9H9H9H8I8I8I8I8I8I8I8I8I8I8I8I8I8I9I8I9I9I9I9I9I9 I9 I9 I9 I9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I8 I8 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I9 I9 I9 I8 I8 I8 I8 I9 I9 J: J: J: K; L< L=!M=!P@"TE$O?"N?!N>!PA#O?"N>"N>"N?"N>!N>!YM+:LB7JQ9ITAP\?NZ>MY:JT:JT>NXDT_9IT:IT5EO:IT:JU6GQ:LLKWCLE,N>"K; J< L"TE%XR0%9>,@F(=C'Q]2EM-@H&:@1DN9KY;KXCVe9JX&;@ 985/3,1*1*1*0)4.828/ <:":<$:=$9>(=B(BB*AC(?A"<='=?5855624.602-6171#@;!A:!=::92GL8LS4IP":<9NT/FK85!;9%?>2IK-CF#<;-DG*AA(@@&==$>PY.BF;MSARY;JR9HP@NXER^;HR6HPJXh7HS2CO*>E0CQ8IZ+DG&AA<8:4BB*H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H9H9H9H8I:UP?Rfv@+@D'=?(>@)?A,AD-AE,?B0AE,?C2CH:KS@P[?NY=KU9IP!88#:;$;<)=A$9;%9<':>&9=#8;"8:!79"69$7;+D+=E1CM*?D'=@(?B6JR-AF.BF4GP6IU>P^=N^5GT0@DJB%(:8'#:<#<<#=='@B*AC(>A0DK5HQ+CG-EH8LQ(CEBA2H8H8H9H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8I9?='AC,,D<"M>!N?"RB$FH43FF4GN:JV"UG&SX>+>E/BJ0BJ-?H88JR6TG(H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G9H8 J;"G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8B:"E>$6@+F;"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 H9 H9 H9 I9 I8I9J: J; J: I8J:J:J:J; J; J; J:I9I9I9I9I:K< O@"RC#UF%YJ'^P*_R+^Q*^Q*c[:rRasHZlOdzFXf@R^:LW8KT1CK8IR>NZ6GQ?Q_H[lL`r@P^5FP#::502-1,2+505-81(EE!<;&=?'=@*AE%B?'?@$>>!?;&A?4074863,3*1*2+3,7394 ?:"<;2GL6JR'>@*OXCT^P]4EOCQfCRf4EP;L^;;592IE)H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H:H9H9H9K; V[Y\r=PV5LN2LL+ADAS^6HP4EL3FL0CH.AF,@D+@C,@D,AE+@D&<>&;>'<>*?B-@D+?B+?B&<=(=?)?A>NWCS]>MXAPY#9:&;="78 78':>+=C);@&:>&:>#8;$8;$8;%8<%8>$8D(=A-BG*@E*@D-AF2EM8JT;LX4GO>O\>O^:M[,BJDD2F?''=C"::%<=#;<$<<*AE*@D*?D)>B*BF.CI-DI9LS5KN*FF;@4H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9K< /B4%=560$8<#9; =:0=.H8H8H8H8H8H8H8H8H8H8H8I8I8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I9 I: I: I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H8 H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 K<"I9 I9 I9 J; K; L!N>!WK+WU3a_9VX@MSHXR7SD%P@"O@"RB#WI']T//?@8HR@Q_:KX@O^AQaGUe;KWN\:KY@P_AO[@N[7HQ3DNAQKbc<=KFRH.M=!L=!L=!L=!K< K< K< J; J; L"XJ(R_O1BK,=F1BL6FQ"89GP:c^8QD&J: H8H8H8H8H8I9 H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8E>&H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8G:!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8E:"H8H8H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H8H8H8G8H8H8H8H8G8G8G8G8I9 H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I8 I9 I9 I9 I8I8J:J: I8I8I9J: I9I9I9J: I9I8I8I8H9I:K< N?"PA"TE$XJ'\O(]P)]O)\O(]O){rQasNawK_rBSaDXf"=:1EK5GR7HV8HU8LT2GL0FH/FH2HM+CD+BD-CF0DI1DI;MU>PZ8MS1FJ1GI:NS2IL)BA6GK3FJ2HK;OV6IN7JO5IN6IN1EI1EH0DH7GN7IO:LP:LR@PZ@P\=MW9KRCS]>KU>LVFU`GTbIXhJ[p2CMAPc@N`HVkGVm=L_/BM$D@!@;92I@%H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8I:K< J; H9I:O? arYpGYc;QU4LN3JM0CH/CH.CF*?B*?B*>B*>A-@D-AE*>A4GN,@D';>)>A*>B+?B,?B+?C(=@+?C+@D:JTJXeCR^D&9=%8<"79%9=/AJ2BM.?H,>F(?*?A*?D*>B+AF0DJ.CH/EH0FJ1GK*EI>JDI:H9H9H8H8H8H8H9H8H8H8H8H8H8H9H9H9H9H9K@'?KE!:8555573 =8+=0H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I: J; J: I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I8 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 L="I9 I9 I9 J: K; L!L=!J< J< L"ZM*_cD0BI5EO2CN4EP/AH6EB^]3IO8RO0M>#J: H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8F?&H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9 H9 G8I9 J;!G8G8G8H8H8G8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8I8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I8I8I8I9I9I8I8I8I9I8I8I8I8I8I8I9H9H9H9L< N>"QB#VG%XI&YJ'XI'WH&YK'\O(]Q/hySdxOcyJ^qKauI]pMcxMcxN`rEXd@Ud:O]EYkK_qK\lCTc:JU%8>1.$;=0)2+5.:5#><:3"@;'CA)BA$>;"=:70935.4,4-6.4,2+1)1+86$><$>;&A=)@D6IT4HP.DH-HF2KM2JL4KM4IM6JN4HM3GL5HN4IM4IM8KQ5IM0FH4KK3HJ,FE-FF1CG2EI6KOOV@Q[L\ANb@Nb@O`.GH)FF"?:<2M?"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8G8G8G8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H9H9L= M>!K< J;L=!TE&cvJ`n=QW2IK;RY:MT:MS:MT.CF0EH3FL1DI/CF-AD0CH7IP,?C0BG4FM-AF.AF-@F+>B)=A.BF.AE(=@BQ\BR]GUc8HR:JS;LS0BG/CH/BH.@G,=B2CK3DL1AI+D6FR4DQ*=D(A(>A(?@$==&=?3EMB(=B'B+AF4HN$?@(AC1GL/EI5LRF<$H9H9H8H8H8H9H8H8H8H8H8H8H8H9H9H9H9L>#NL:AR\3EN4FQ(=B40:4&=1H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I9I: J; I: H9 H9 H9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I8 I8 I8 I9 I9 J: K; K< MPZXeUb[3YL+RB$N?"L!M>!M>!K< K< L=!M=!M=!N>"XJ(]dK5FO7HQ8HT1AJ4EN0AH@RT0CK4B;QK-N?#I9 H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8D8G8G8G8H8G8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8I:!M>#L<"I9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8H9 G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 I8I8I8I8I8I8I8I8I8H8H8I8I8I8I8I:I:H9H9H9K< N?"QB#UF%YK'ZL(WH&UF%VG&ZK'\P)_U4rvrWg~M^sMavOdzTkTiQf~MbxGZk@Vg?UhH^sQdyK]p@Tc>P^34751,3.3,82848293!>:&A>'A> >::25.3+2+3+5-3,2,1,424/ <7'C@#@<'E@#?<$>=*FD,GE-GF+EC/HI3HK1FI,@@1FH6MO3HL@PZ=OW@QZ6IN5KL2HK9NR0FH3DI6JN:NT;NS3GJ0FG6KM3HK5HL3HL2EJ:LT9LS?QZ>PZDUaGXeBR\=MV.AE.AE9GO@LVAMY;JT;KW)>B0BJ1CL?M^9LW,EE+IG)JG%F@=5NB%H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8H8H8H8H8H9H9H9H9H9J;N?!N?!L= M>!N?"`^Ug{Sgz8MRJ]lWk|HZeFW`FXa7JO,BD1EI4FJ2DI2DH1CG3EK0BF2CH8IP2EJB,?C0BE,@D?OYCS]>NW1IN;KT;KR>NW8JQ6GN6FO1BJ8IT/@I*D.BH,AG*?D,@D%:?*=C,>D)=A$<<'=@-BF+@B&<>&=>.BI8IU7JS2GO1FK(=@+?D-AE-@F1DM-AF-CJ-DJ.DI5KQ/EK1GM/FK6KGJ="H9H9H9H8H9H8H8H8H8H8H8H8H9H9H9J; N?"HL@BLNARa:JU3CN)>E8781>5F<#H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I9J: I9 H9 H9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 K; K; J: K; M=!M=!N>!TF&YU3MXO>NX;KU?NZDTcK\oObvQcyVgfBUWYm|cubtJ]pAUhAVhEXkCVhAQ`AQ`@Q^>MYAP]CScAP^BP]ETb>MZ"L; K< L=!L=!M=!M=!M=!L=!M=!M=!O?"[N+jlH>NZ;KV:KU4DN7FQ6FO7GQ3EN,>D"86KF-K;"H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8G8G8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8?7 !PA"WH&VG&UG%TE$SE$SD$UF%[N(_R*]R.sqh~ScwJ]oEWgIZlUjVjShH\oFYmK^rH\pUjMUTN]lAR`"6;301,623-1)0(3+71#?='CA#?:$?><6705/3+2*3-2,3.4096 ;8'EA'A@,GE,JG3RN1OL1NK.GF(A?+ED.GG1IJ3HK3GK3HK7JO9MR:NS5IN>PX8KP1FH2FI:NS6IM6JO9MQ:NV9:3PI,H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8H8H8H9I:I:I:I:J;L= N?!M>!N?!PA"RC#xfwWk}CWb=QW;PV7KO,CB2GJ6IN4GK4HK7GL6EJ:IQ1BH6FL9HP=LU=NV=NV>PX(>A+BF$:=&;?&%;>,?E/CH,AD'@?&>=$<<+@E6IQ1FN2BF)>D&;@,@F(>A,@E&=@%>>$?@+CG6KR+CE$??!>;@G8H9H9H9H9H9H8H8H8H8H8H8H9H9H9I:J; K@&LSG>PW6GRCSd8JU7I\,@J74903,2=,H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I8I8I8I8I8H8 H9 H9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 LLX=LZBP^IXhM^qVjYk|JZkDS`GXfM^qJ_tCXjH[lHZmEViDUf?O]AS_@P[CUcGZlFUfDSaDS`>MX=LW@P[LXUa^:e_3XJ)M=!M"QB#]O,^cHAR^?O[9JT8HR>MY6EP4CM6GQ2CL46KG+K<"H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8G8G8G8G8G8G8 ;/7B0H8@<$G;#G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8F8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8PC&K<"H9G8H9H8G8G8G8G8G8G8G8H9 G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8 H8H8 H9 H9 H9 H8H8H8H8H8H8I8I8H8H8I8H8H8H8H8H8H9J; J; J; J; J; K< O@"SD$QB#QA#QB#RD$VG&UF%XJ']P)_S+bW0jmdfydw^q]oQaqQcwHWhIZnL`uRf~H]rJ\pJ`tNL4WS4JXb3EN"7;3.73:61*.'/'4.#>= >9 ;683<7;571932+3/307463:7 >;":: 78(CB+HE5QP1NK5PP/HH&@>+CC0FH2HK;NT+DC7KP3JK4HL5IM6JO>QX8KP3GJ2GJ:OT:MRQY9KP6JN:NS5JL0EF1GJ7LS5GO>NY>N[CTbBS`=NX@PZ@P[;MT>OW=LT>LV;IQBP[HVc/AG,>C*?B-BG,AH)@E*FF.KM-JK$D??9JK2I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9H9I:I;I:I:K< L= L= M>!RD$RC#XM1pdxVk~>U]5KNNU@PXBR\GXcAR[AQZ@PYDT\BS\BR[E&:>*@C.DG+@D-BG+@B*A?.GE3KI*AB2FI8KS6JS6KS,@G*?D'>@*AD%>>'?C">=&@B1FM1GL-EI"@@*@:J>$H9H9H9H9H9H9H9H9H9I9J: K< J; L>"QI-RT@DT_8KQ3EN8JS9KV3EP8IZ-@M61C@&3);9$H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: M=!N>"N>"RB$YN+UG'XL*VM.8IM?PZCR\BR_@N[>KWFTdK[mOawViRe|M`vDVcHYkGXkH\qM^pI]sFZmFYmF[oDTd@P]>NZAP_BSbDVgDTdAP]ESbDSaCQ_=KVCPR\iTdmPYL*P@#M=!L"Q@"VG&`U.Vc]GVdAQ\APZ8GQ7GR2BL3CN5FP3DM*!M>!P@"QA#PA"QB#QB#TE$VG%YJ']P)_R*`S+`T+_U2bhlozhyQauSe|\q]sPbxJ_tJXaVU;QN4HXc]jv210+.*/)0)0(2)82&D@!=8:5949360934/638697:8<::9"<<$>>"?=)CC6NO5MN2JK0HH.EE/FG1HI2GJ*@B(A@-EF5LN0HH/GF5IM7JP5HL6IM5IL:LRQX;OU;PU6LN5JL:OT7NP0GF5LP6KRNZCUb:LS:LT;MTHXe<&CA.KL,JK$EB ?;HL4I9I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H;$H8H8H8G8G8G8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9I:J;K< K< J; K< L< L= PB#VG&SD$p{kiNdsOX;OTBR[FVaAR\>OW6FO9JS7HP6HQ9IW=NY:MUM\:I[7F[,?J;5<@+@;$H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 J: K; M=!QB$WJ'[O*`X0YP-[R-_\9JVPAQ]DS`BQ^ES`CP^N^rN^qSbwSd{Qd~M^tH\pHZlK\mP`tO`uI[mGYkI^tJ^vBQ`@P_@Q^ASa>N[>M[AN]!L=!N?"N@"P@"RC#RC#PA"TD$XJ']O)]P)]P*WI&VH%WH%_V;<:86;:$@?97;9!<:!=;$@>(AB)BA-EF-EE+DB&@?)BB+BC'A>%<<1GI0FG6NO3MK4IK;LS;LT>PX9LQ:NR=QV9MQ:MS6LO:OR:QS6OP6NN8NQ:OV8NU7LROV@RYAQZ7396'@@+BF&@@">< ><&@A&CC@H6L= H9H9H8H8H8H8H9H9I:K; RJ*I\W:MP:JS7GO5FP6GS9LX2GLBUdJWm@Nc;I\)"N>!PA#WI(WP2b^4PXBEPGMVCBSVDTaDSbIXhIWgIWhQavRbwN[oM]rJ\rJZl8MQH]uFWjRbyGXkDWiI[nJ_wJ]sGWf:HR"HF+8I59>(B=%H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9 G8H9 G8G8G8G8G7I:!E>$H;"G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8I9 J:!H9 H8H9K;"H9 I: G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H9H9J; K< L=!M>!N?"P@"O@"P@"O@"P@"QB#YJ'ZK(XI'SD$RC#QA#QA#ZL(ke:t|ph{Ugz_uZrQf~Pd|OcxQc}ZnL_r0BK 67%9=%9;-*1,80:28/5.93=81OJ'D?$A=<8;897;:$@>"=;9796:8<9!;:/0%;=(B?"<7%?>(B@!>:#=:%=PV;MS;NT;OU9LP=PV;SW7OQ?T\5LNPY:LS2DK:LT2CJ4EK$:;1BI5EM3FM*AD-FG.HH,JI$DA"DA3K>L=!H8H8H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H9 H9 H8 H8H8H8H8H8H8H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H:I;J;J;L= N?!N>!O@"QB#SD$QB#PA"s}znfzUh|NVDT^<.C?0:FH?P[9JV.@G5EO@P\5FP9JT9JT=MY3EL(=@0DJ,@D,@C/EH.DG.CH)CC!=9 <::8;8)BD"@??<?;=:#@?3GEGE/M>!I: H9H8H8H8H8H8H8H:I:J; UM-DVT7FQL[=LX;MYBUaEYjHVlDRi@MbBOi&:?0,<52@/I;"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8YM.H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 N>"O?"PB$TG&PE)CQQ\Y6\dNAS`FYiDUeAO]DSdQauM[mM\nVe}SbzTd}P_vQc|K^tE\qG^vI]rL_vFWjN_tL^sJ_yJ_tBRa4AJ:GR>KW>O]>&G9 G8H: I9 G8G8G8G8G8G8G8H8H8H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H: G8G8G8G8H: G8G8G8G8G8G8G8G8G8G8G8G8H9 K<"H9 G8G8I:!I: G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9I:I:J; K< L=!M>!N?"O?"N?"N?"N?"RC#ZL'ZL(TE%SD#RB#O@"TE$aU,f\0ic@qʓfyYlYmWlXm[u_tWj[nESeDUf/AHPV>OV;MS;LS9IPCS^BR]?Q[=QW8NR7MP9OU5LP8MT2GL>OY?PY7JR@P[@R]@3CK4DM+AD(BA)GD0OL)KI&JG$FB@T?L=!I8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8H8H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H9I:I:I:J;N?!PA#PA"QB#TE$SD$QB#~auN`sTjNg}EZiK]kRet_s^n_qQ`kET\IZcRcpPboH[gDU^HZdFWcK]jHXcGWbHXbEU]GX`BS[ARZFU`P`o=MWAR\DV`CS^CS^DT_=NV>OW6IQ;MY=N\@P^?O_/BI4>8=>39MX:LWB-BE+@D+AE+FD'?A#==<:<9#@>=9"A>+FH1G!RD%WP2BRV=N\Q^YlzgZp>NXFVfK]pJ[nJZlM^rQ`uRczP^tQa{O`wNbxOd}L`wEZoH^xF\sDTgK_xL`xLdH[o?Q`@N^AN]O]>O\;IS6CM:HTGXiIYkO^oQavL^qDQ`FUdAO\>MUAOY_rtlrGbY1bW/g^3oqEMaqGYjI[lBR^?MW?MY>LX@Q_BRcHWj=L[>LY;LU6/NC%K;!H8H8H8H8H8H8H8I9 G8H8H8H8G8G8G8H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8G8G8G8G8G8G8G8H8H9J;!H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9L?"J; H9K$I;!H8E9 G8H8H: J;!G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7E9"E9"F8G8G8G8G8G8G8G8G8G8I:!PB&G8G8G8G8H9H9G8H9 G8G8H8G8G8G8G8G8G8G8G8I: G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I:I:J; J; I;J< L=!M>!L=!L=!M=!N@"WI&XI&RC#O?"P@"O@"QB#UF%\N)`U,f\0keJ~asSd{^u\r_scyg}mg}YkGWiFWgIZjJZj;LV400*60?9(IE*IG1OO3OO;TZ;TZ'BA$A><8!>;6252858472!:831*%/' =9$A=-DD3GI2FH,BC,DD:MR?QYFV`;LS?OV?RX=PV:MS;MTAS\DU`@QZ?O[9LS@SZ8MO:RW:PV4KN>S\;NW?Q\9LT9KR:LT>OX8IS5GO=OY8KR9JT2DK3EM.@E-@D+>B+AC%@@&AA+JI1MQ.PR+PQ&IGHXAM>!J: I8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H9I:I:I;N>!O@"L= N@"SD$SD$PA#lRdwVhI]pK`tL_paugzi}nh{_pSeqP`kGYaHYbL]hJ[fJ]hJ]iFW`DV]DT\@OWCS[@OVDS[BQYCS\DS\9JQ@QZBS\EU_;KS:KQ::MW>P[GXeGWd>OZ2BI4EN;KW7GR4EM6GPBR_GWg?Q^9KV('<<9 >;-FF(DB>M?QK/PA$L=!J; J; J; I:H9H8H8H8H8H8H9H9I:VP2:MQ8HS6GR;KXDTd?O^DTfM\sKXp?J`>Ka?Ma7J[&@;>9 >: <9845130846261625-!=92GI9KN9JNPWQZ:JT:KU@Q[:OR!L< N?!N?!SD$SD$ws`vVjNbvK]mObr]qjuwuh}bt]oUesNamI[eM_lPapQcrK[hPboK[fGW`EW^DV\CRZAPXCQYDR\GWcFUaHXbN]kTdv.AD5IL;KSP^9JW;KWAQ_ETd@N\ESa7HQ#:;$;=(>B*@A*BD,FF,IF">==:"@<*GE1F>PJ.QB#K< J; I:I:J; I:I:I:H9H8H8H9H9I:I:I:RK,;OR:L[>O^>O^EVh?N]BPbBPcDRh@MbANc3DP3HU 57:2*@3H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 K<"I9 I9 I8 J9 K!PA#QQCBQ`GWiI[nGXiCTgPd{I[jJ_qOdxVg~Rd{Sc|TgNc|Qf~NbwK^sM`sG\sDXlEYlDXkH^uH\rL`vPd|P`uRc|IZnI[oFXkG[fF[mEWiCRbHZjHZnFXlGYkBR`AM\EUeBRbERdJYoJYlHUcDR^QeyXqbwvhSiHZiAQ\BR^ETaHWfFUdBR`@Q`CRdKYlGUf!N?"O@"M>!M>"O@"QB#SD$RC#RC#QB#N>"P@"QA#ZL'daOg{]sQd}Si`vfybsy^v]oXkJZk>N[?NZ>MX6GM)?@!98:76QS/GK*DE)BC#?< A;?9&A<&?? <9745062 :79573 :6 32,>>0@B4GJ2EH7JN3HJ8MQ7LP4JM0FH3HL5FM>OV;LR:MS9KQ=OV?QY;NVNZ;LU7LQ7MO8LQ8MR6KQ>P[9LT@R]:KT:LT>P\9KV4FP8HP:KR2CI,?B(>=,@A0EG6IR.CH0EI0JO1OU-OR&EFEU?\T/RC$L!QB#VG&fbRie~[tTqNcvOcvWm`ujjytex`q\l}WesQanScpTevTevYizXhyRboO^jHYbM\gJYdGWaDT]J[fL\iL]kM^lPaqJZiEU_IZgCTa?MZ?M[%>?*@E(>@'?=&B?:7&B?,JF)F@*DM^@PcESg@MbBOd/@K3DR,';22<+H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: L; M=!N=!N>!SD$fgEK_nM`wPbwT`zPauI^mL`qSg~TiNevPfwRe~ViSfShQbyL^uI`yG[oFZkFZlI]qGZmHYmSd~Rd}UePc{K^sH[nL^rI[kL`w;Q`H_u"L>"H9H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8J; G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H9H9H9H9G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8>B/)<08-4A.I?$H: F:!G8G8G8H9 H9 J: G8G8G8G8G8G8G8G8G8G8H8H8G8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G7G7G7G7G7G6G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8 G8G8G8I: G8G8G8G8G8G8G8G8G8G8H9 H8I9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8G8G8G8H8H8G8H8H8G8G8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:I:I:J; I:J; K< K!M=!L=!N?"O?"SD$SD$TE$QA#N?"L=!M>!O@"PA#WJ&f^=q\rczUxifiiVpZmO_uGWh8HS1AJ-=F3DM/BG"89972IM(@B)@B$>> =<>:<8!?<'B?(B@">; <7615161838320!43!54/CD9JM/BE1GH7NOPV=NX>NY;KV9JS8JP?RW9KP6KL:NT9MTO[9KR7GO.AC(==2DH1DJ6JV6IU8KU,BG.HN0LQ"@?ZY4LR]>N\@Q_?PYOZIZjK^rFXi>LXCS`7FN8FNBP\HVcDR^@O\CQ^AO\;KU&<=%<=%=?%??&@>(BA"><96%A?0LJ-GBQM/M>!J; J; J; I:H9H9I:H9H9I:I:I;I;J; J; J; J; I:NA$ERL3CN2EM?Q]1BH7FU>N^APdAPcBQfBQf*!SN;RcxPd}QdUfWgWb|PbzNatMatLasQf{Qh~VjTgViViSfOgJcxH^pGXhGXiN]pN^pN]rTeTfPbzOayWjUhRb{Q\uN_uL`wLf5SU7Q`NfOeRkH^xPc{KXjSeQe~Od|MczI^tMdQgNeLbzNfMavJ\mK\nIYjL]rJ[oL`wK^t@N]ERa;HW9EQ/#H8H8G8G8G: G9G8G8I: K<"G8G8G8G8G8G8G8G8G8G8G8H9I<"H8H8H8H8H8H8H8H8H8H8G8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8L>#G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:I:I:H9I:I;J; J; J; K< M>!N>"N>"P@"P@"QB#PA#P@"M>!L=!L=!L=!N>"N>"N?"XK,~ZkWmkmrk]Lz~XlXiWfUfBR_6FO>O\'<@31#=:1EJ,@D)>@&=A$=?!?>>;&AA*DB,GD#?;>9=69362$?PW=QX@RZ@RY:MR:MR:MR:MR:KOPZ9LS7IP8KT:MT;MV=QZRZ?Q^=O\?QZ4FL(?>'==*>@-BF6JS9LV;LY1EL+CG)DG(FEZU0J; I9I9J:I8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8H8H8H8G8H8H8H8H8H8H8H8I:L= L< K; J; RC#XI'XI'WH&YL,gh^wSg}Qf{Yqnn\qFGE?8-HLLK^jDT^BT_JYeVetVdtVfwXj|XixUdt\nTcqK[fN]iGW_2DG=NVO`nRdrPbnL^lM^iP_lIZcHYc?Q[:KP9IN6DJ8GP@P[IYeHXdL\kM\lIXg8FNLX;*CA%@>">; ;8%@>0IAIM6PA#J; H9I:I:H9H9H9H9H9H9I:J; J; I;J; J; J; I;H9I:QR:+@E0BGEXg9JU!L=!L=!L=!L=!M>!L=!L=!L=!L=!L=!M>!TE#o|sZhYmSm]u]{zvf`u_rZjQbzO`tQbt@PZ&<>75%?=9KT5EN.BG*AD(AC%@@#@>"?>(BB(CB,FB%@<<6:371'A?'@?0CF5HL5HK9JN7GL0EF1HH;OU6LN8LPPWARZP^?P^=NX7HO.@C,?A-AC-CF5JO3GL4GP1DL)@D(BD(EG]\9L=!I:I9I8I8I8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H9H9H9H:I:J; I:I:O@"WI'UG%SD$TE$b\Eqqa{\qYl\oc{^sVdpTjyResGVa>NZ=P[APZKZhZl\m_qZk|XhzXgxVfvN^hM\gGW`NWBP\KZj6DMDT`>LVBO[JYjN_qP`qJYhGWe*>B.BG0GJ,DD0HI&A>#?<#<$H<#G8G8G8H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H9I:I:I:I:J; J; J; K< K< K< J; J; L!N?"O@"ZL(rz}gtVg`wWl=Z{pvqfzp`rZmPcxO^r@PZ+@C#;;,AD.AF0AI0CK*>D*@D*@C)AC'A@'B?"@; >:#>9 =8:4%?<2FJ0GH1GI#::(@?*AA%;;/DE0HH3IL6MP:OS=PVAS[?RX8LQ?QW:PS;QU?RX=PS=PV=OU8LP9LR:LS:NT6LP:PV?S]>QZ;NVNW=NWBS]Qaqatbtg|at`q^nTcrTdqTdpFV\P`o-NW8GN?MW9GO=KTCQ\BO[;ISJYfHWfFTbRcu\lZjFTa':<&>>#>;%A>/GG1II'>?A@Q[ARb@OaCPeAOd8IW7HVBQc4/ <7>6E;"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 I;"H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 I8 I9 I9 I9 I9 I9 I9 I9 J: J: K; K; K; K; L"VH(^cSPb}XiZl^p\nWg\m]m\mZl\m\nVfWi^sWiZlZjXiVgXiWgRc~Q`xKZpQa{RfM`zOc|[m_s]q[nZjVdO]uRc~Pc~ReUgPdG]rTlOlWrWoWsQjVmWnK^sBViK`yPiSkRmUsMbvObxSdxRbvL]p@P]6EP8FR=JYBO^?L[CQ`DQ`DQ`7FP5FP6JGGQBJ: J: J: M?"L=!I: H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8H8J: I9H8H8H8H8H8H8H8H8H8H8G8G8J: I: H9G8G8G8G8G8G8G8G8H8H8H8H8H8H8:;%H9H8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9 H8G8G8G8G8G8G8G8G8H9 J!L=!L=!L=!L=!M>!L=!N?"O@"PA#ZL(pswo}Yiaxf|]nXkcthwh}lTf|[oXlOat;KU$:<'=>,AC0FJ=MX7FO/AG+@D+@D+AC$<>"=;#>; =8 <7#A;;44JM6JO2HJ+FC(C@)B@&=<)@?,DC3JK3KL9NR;NU>QX6JN7KO>RYQV@TW=PW@SV:NTB%;<-?E-AD2EL/BG3FL1EJ/BG(=?*C@VS0I:H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9I;J; J; J; I:H9I9H9I:L< M>!O@"UF%UF%aY@|Qc[n[oh{^oSctRbrHYe@QYDS]HVa?NVBR\N^k^ph}bucudwdw\lSbr\l}XizRcoP`lO`kGWdUeuTerTeuN_lPanP`kL[dSdrRbnIYb?RXJZeP`p=MW7FO8FNDR^=,DD*EC6NLQXAUG'M>!K< H9H8H8H9I:H9H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9K< END+>@MZ@R^DS^HNGOF0L="J:N@#O@$K!L=!L=!L=!N>!P@"RC#P@"N?"PA"XI'nps~hxy{n~[k_op\lGYkObwZpOat7FP#89(>?/CG.@E8FO=JRAPY3EJ-AE+@C$;=$==";9!=;<7=5=6&B>OWSY@TZ@T[@SZ:PUASZ 673EJ;LT5GM-@D.AE*>A,?A%=!H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H9I:I:I:K< I;I:I:I:K< L= L= SD$WH'XI'YJ'iqwO_]ofxg}dwTgzO_lGYeEVaIWaFT\P^pZlbtjlh~dwewexas^m_qZk{Zk|[l|\m|XiwTeqWhuTesP_kWhy]nf{`tZp~GU]@OVO]lVeyN\k@NXAQ[BR]AOY@NXIXfVfx>MV!L"N>!PA"UJ-WS;UcpS`yXiWhYkXjYj[mVh[m_pas`q^p`qcwbu`r]l_o[jYiXiUe[nWhVgWiVhRcRb~P]wTeYiYjXjZmcwaq\kXgXjSa~Q]yQ^wJTiN^|QbTfThPfSiSoUnTlOeM`yMbyL`xI]tNd~PiUlWpZvZsYrZpShVjN_t?P`CQcBO^BO^?LYFSbIVfHUfESd;KWAP_=LYDRZ=K=GC%K"H8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8H8H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8H: NI/EF/H: G8G8G8H8G8G8G8G8H8H8H8H8H8G9 E9!G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8K<"G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8H8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H:J; J; K< K< K< J; K< M>!L>!N?"L=!M>!N?"L=!M>!P@"O@"O@"TE$\O)lrzqrm}pv}u}]oH[nNbvObxM_r.?F 98(?@+AD1CH3AI8EM?KU8HN*?B)?A'>@&=?%>=$?<"=8=6!@:#?;6IL*BA$=;)DA1JI2II6NM4JK2IJ:OT@R[QW8NR6NQ7NP6NM7NN7QS=UXAUZAV\?T\9NS=PW0GG2IJ2HJ6KN6KN8MS7KR:OV9OT2FJ3FJ3FJ3FK-@E&<=1CI7HO-@D,@C+?C0CE$::-CAPI-I:H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H9H9H9I:I;I:H9I:L< M>!O@"QB#VG&WH'ZL([M(^V;RdUek}ti]vUj}N`pL\lHWbDT^TdxYi}asfzbv`r\m\m]nas_q^pYjz_q^qTdqRbpOfqPeoNdoRdo]tyw}f{IVaP]mKYhSctGUb>KTBOXL\hES^IXd;KSJYeDS\APZ?OW:KR=OW1EJ'?>)?@)BA+CC/CE2GFVR7N>!M>!H9H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H8H8H9J; BL;3DJ8HQHXiXlESgDQeDQb?L]2CL3.;4$B:E9"H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8A>*I:!H8H8H8H8H8H8H8H8H8H8H8I8I8I8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H9 H9 H9 H9 H9 H8H8H8H8H8 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I: J; L=!UJ*N>!O?"VM.ZYAZT8XQ3YajXgWfVfVeZjVfVfVgZk\m]n\n[lZk_r`r_qbvcv`r^n`p\kUbYhXgZjXhYjYjRbOazSdScWhYjXhWhYkXiYh]l\lUeTcO[tP\sLZqO^xP]xVaWf[mZmSjQmSoUnShPc}ReL`yI^tShSj`z_xZrYsYsZq[sSgIZnH[nCRb6EP=KXDS`GUc=LY"QC%N@#H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8L>"/=5)7*G;"H9G8G8PF(G8D8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9 G8G8G8G8G8G8G8G8G8J;!I: G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9J; J; K< K< L=!L=!M>!N?"M>!O@"N?"O@"M>!L=!L>!O?"N?"QB#XJ'^Q*fjnvpbpey[wnykL`uMauRdzGYk,B(=@,@D.?D3AF6DI7EL.@E(>A'>@(@@(A@&?=)@=$@:$B<(D@/GF,DC)A@)DB/IG3LJ4ML2JI1JJ6LP>QX8KQ/FH:NU6MQ2KL0IK3KL6QR2OO4LI9PR>TX@T[AV^:PU6JO0HH,EB0HI3GK5JN6LP8LR8LS;NU6JP2EJ4FM2EL0DI.BF1CI5GM1EH/CG.CE3HK>QVWW8K< H9H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H9 H9 H9 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H8H9H9I:I:I:H9H9L< N?!O@"SD$XI'VG&YJ'[M(\P(jvdtevxm\qRdvL\kM]jP_mXfxZj~XgzZj[mZmXi[k]ncvbubt`q]nVeuVfvQgvUkxOdnTiuWly]xdKcvydxHVbMYhUcuQapFU`M]lGVbAPZQ`oGWaAR[FV_PZ2FK,AD(@?)@@.BE2EJ,BE=NKPB#K< H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8NE+1BG9GRAO^QbySfL[rLZqDSf7*@6I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H89;-@;&H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8H8 H8 H8 I8H8H8H8H8H8I8I9I: I9I8I8I9 I9 H9 H9 H9 I9 I: I: I9 I9 I: J; N?"XS7TI)WXRYe\jXf[jZiWeXg[lVeWgYiVdXhWgXgYg\l_qXhYi[k]n_pas`p_oaq\iWdXfYiYhXhZiZkRc}WhWhUfYjZkXhYhUfR`P\xN[vM[vO_|UdQ_O\vM^vL_xO_yWfT_VcUfTfSeTpWr[rScYjSe~Pc|Ma{Vj_vax\s]uZsYoXp\qWkThP`rHVg:IUL[326F8OF*N>"M="L%*<23-?<&G8G8G8G8-8%F9 G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8E?(F:!G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H:!G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H:J; J; J; J; L=!L=!N?"M>!M>!M>!L=!L=!L=!L=!N>!P@"RC#TE$YK'eaRĐygxcwsfzkpdvQe|VkRczSf{=LW!88,=C.?C/@E+?B2AH2AD6FM4FL0CH(?A'>>&>=(?=.FE+DA+FD,FD-FD3HK-FF'B?3KL5LL0HF3KL7NS5MP7MR5IN1HK2IM3OP3OP3NP2KK7RT4QQ3ON7QU8NP;5$@;8?/H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8:;+2:-H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8H8I8I8I8I8I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 H9 H9 H9 I8 I8 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I9I8I8I8I8I9 I9 I9 I9 I9 I: J; J; J; J; M=!SD$[T1PVaSaVdWgXgUbXh[k]nSdTdVf]pTcUcWfZiZkZh]mYiVeRaUeZi^o[j]m_l\j`o_mXeQ_WfWfVeQaVfVfVhYjXhYiUeVfUfP^}P`|EXmCUiGTiL\vSbN[tM\sPcM`|WhP_|OcSnWqSpWuViYj\nUf\mVhUhbz^u^s\v[v^v\r\sYoSg~Vg{O^nESeDR`FTbIWfCP\MZk?LX=LX>LZ 55'B@CO"N?#I:J: I9G8G8G8G8G8G8H8H8H9H8H8H8H8H8H8H8G8H8H8G8G8G8G8G8G8G8G8H8G8G8G8G8H8OD(*=54.<:'H8G8G8F8E8E9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8 H8 G8G8G8G8G8G8G8G8G8G8G8H8G8J:!G8G8G8G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:J; J; K!M>!L=!N>!PA"O@"QB#a_[}gwmzkzrk~wh|XhQe~RfUgSezDUd32&8:+@A0CG6FM2AH3BH2BG/AE.@D&(>@LQ9I: H8G8G8G8H8G8G8H8H8H8JE'@=]V1WJ)N@$J: J: L="L>"I: L=!I9G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8K?$!N?"N?!M>!M> N@"O@"QB#_bjxxoaniyofyhzgx`rd~e}fzHVf&9;1/!65/CD+BB5FL1AG0AE6FL1BG+@B.EF1IK/HH/HG*EC%@<$>:#<8.GE,DC.HF,HF0JH0JG6MP4KN3KJ0IH0KJ3SR/MN2LO2LO4KN:PN?X]>W[:UV;SV;TX8RU3NO:OT9NR5IM3HJ3JL5JM2GJ2HL.DG4IM4HL2GJ4GK2CI0CI*?B*@A,AD.EG0FH2GJ,BC3IK=RZ^fOZK(K= H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H9I:J; K< K< J; K< N?!QB#SD$RC#VG&XI'XI'^R*f]3ۥo_tYjVfuSamP_jTapTarP]lR`pUcuWg|_r_rdudu]n`q]pSftZm}]qatat]pVkxTepQakSbo_mWctO[iCP[IXeHWdCR^GUaM[kLZjMZlJYhR`tAQ\8JP3EI8IO5FK6GL:JQ>EUDK=!H8G8G8G8G8G8G8H8H8H8H8H8H8H8G8H8H8H8H8H8K:*A9I: H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I9 I: I: I: I: I9 I9 I9 I9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I8I8I8I8I8I8I8H8I8I8I8I9I9I9J:J:J:J; K=!]_Z^[6R^S_R`XgHYrEWmEVmDUkFUjDSfLYnRaxXh]nXhXhXiUcRa}UeUdYjYj_n[j\mXgYgXgZj\k[jVd^n`o_oYfUbR^}R_}N[xP_VdZjXiO_xQ`{Rb{ScO^vQ`yM\rLZsKZrCPeCQeN\wUcSbM_|SdPdQdRcSdVgVhZq]v]t]q`v\t\oauWhPb}SeXl_u\r\u]s\oZo\rXjVf|GUiLZjN[jKYiIWhDRbDQa?MZ=KW8GR"8"J; G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8I: G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8LB'4B4.):6$H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G8G8G7G7G7G7G8 G7G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I:J; J; J; J; K< L< L=!N?"O@"PA"N?!M=!L< QB#WH%`gzytp}nmk~duezes_r2DN1.52";:*>?(=?7JO2DH2BG6FM,@C'?>-FE5NP@V[;TW/JI'A=!<7 :6,CA&><&?>*DB(@>+EA3KK3IK2JJ2JH8PS6RU1OP3QR/GD6LLOW:MR7JO:JQ6EK5FI+@@(=;)A@,DEH<#H8G8G8G8H8G8G8H8H8H8H8H8I:!H8G8G8H8H9H9H8L>#7GJ=KX;JV,H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8 I9 I: I: I: I9 I9 I9 I9 I9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9I8I8I8H9H9H9H9H9H9I8I8I9I9I9J:J: J: PJ>`ioT][TaTaVdZiO\vDTiDTiESiGUkDRfAOaCOcFRiDQiLXqNZsMZqN\tP]yWfSaUeVeVe\k]n^nYhWeTbSaWdYhZh^n]mZiT`S_O\u=N\M[tVdYiQ]wO^vP^xR`zO[sIUhP]qTbzP_tGSlHQjFRjLZqM[uRcWiUfRdTiP`~N\yYk\q\q^t[p\nau_wcx_r\o`wYlTf^tb{\w[t[o\p^s`u[lUd{WeyIVeJXfIWfDPa@N]8FPBP_@O]-AIVge]mlST6IG,J; I:H9H9I9I: H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8K!N?!N@"O@"N?"N?!PA"XJ'\O(is~uenm{u|qphilPaw242. 950JH.GG.BF0DH:OT.CE/BE0CF(@?/FG7PQ;RT7MP-EC#=9#=8#=9(@=%<:$=;0GF*B?(A=2KI4JM4ML5PP3PR3PS.IH1JI=.GFJ=!H9H8G8H8H8G8G8G8G8H8H8H8G8G8G8G8H8H8H8H8I:;FCD<$G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I9I9 I: I: I: I: J: J: I9 I9 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9I:I:I:H:H9H9I:H9H9H9H9H9H9H9H9H8I8I8I9J:J: J; Y^a[jVeTbUcVdYgWeN[uFUkN\uJVoMXqGSiBMbCPgHSiFQfKWnNZyR`yR^{SaUdVfWfTcYhZi[jZjVdR_T`R`VcXfXe]mZhNYxOZyM[qBS_LXsR_XfWeUbS`~TbR^zJVmLZqLXmO[tNZuHQlJVnN^vTeSfRfRgQfTgZlZk_pYl\r`wax`ufb|c}bw`sby`x\q\q]sXnZrYp\p\pYlVf|MZlQ^pJWgJYhKXg7DO>K[8FQNX?PX,?D&:0K< I:I:H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8J:!L="J: I@%H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H9 J<"G8G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G7G7G7G7G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9J; J; J; J; K< M>!N?!N?!N>!M>!O@"VH&\O)lgUq~rxtft~{kzomlrat[l.?D#;7(>=6IL-@B5EJ0CF5HM1HH1GH*AA*BB)A@(A?,DB5MM)B?(A>'@<#=8$=9,DB-ED,CA.EC*CA0JG4KM6MO4OQ2LP0OO.HG=VZ=V[>W\:RU9QT4MM.GD2IG)B?)B?,EC1HK4KN.EG/FH5LN4MM;RV6JO0FH'?>(AA2IL.DF)?<5:&5>,JL6BF7JF0FA+KC,LB(L=!K< I:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8H8H9I:I:I:I;K; K< M>!PA#O@"QB#XI'YJ'\N)^R*_S+܍iXk~[j}UduP_nSbtZi~_n\lZi]lcu`q_p_pYlZn]n^ocu\n~TftXjyUivXmzYl{avXhvUdrSaqGWdQ_oQ]nM[lLYjLVgIUdGTcES_BP[/BF4GKARZ@Q[9KS2DI4FJ7HM!H9I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8I: H9G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G6G6J;"H8G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I:J; K< J; J; J< M>"N?!M>!M=!N>!QB#YJ&t|yi{l|mz~hst~lcvSb|*:? 823JI9KP:KQ6FK4FK2DI2EH0FG/GF,DC*BA)A@)A?/GF)A?,CB-DD,DA'@<-DB.FE)@>'@='@>+ED;PU9OT5NR3NP4LN:RT9RU;TW3LL1JH2JI2II0GG.FD/GF0IH-GB0FI3II.CF,BD3JN6MP1GI$:;0EJ,DF-EF+BB%;39=(I>"M>!M>!L=!K< J; J; I:I;J; H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8H8H8H9I:I:I;K; K< M>!O@"O@"RC$YJ'[M([O(^R+_T*ްポoar`p`q[j\j^m_p^o\ldtbuasascu]o_s\p^p]p_qWjzVjy[oPbmVfr\m~ZjzP_jQ`nP^oIVcO[jQ\pNZlJVeJVgTatQ^oJWe7IMDU]DT^APY>R[4GL7IM6HL/BC/AE8IN2CG6EI0DG'@>4ECI:H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8H8J:EQP:HSEUdO`tDSbJXmHUmDTi-?G43"=81@4G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I9I9I9I9I9I9I: I: I: I: I: I: I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9I:I:I:I:I:I:I:I;I:I:I:I:I:H9H9I:H9H9H9H9H9H9I:H9I8I8I8J: K; WRN[hVcXfWe^nTeKXoMYrQ]|ZfUbEOhLVrBNaDPcHSjIUlLXrQ]xR]xR^S`UbTb\lgu\lYiYiVfO]LXtLXuLXvP]~YhVf\n\mYgXhN\|HWpRaUcXfVdVdNZsP^vO]sP\rN[nIWiHUhGShLWnS`uO^sQ`tUf{WhWfVgYiYgXe[i^n[ldyjgf~l^u^taxav[lVeXhWh[lav\q]r]pXlWjJXiM[kLZiSatKZj@LZBO[BNZGR]P\jHWe@P[AOY>NX!M>!M>!L= N?"UF%\\P|wudupcn}i|tyWh-AL42#=9(??,AD1CG:LR4FL0CG,@C,AC'?=&@=+CA-ED5KL;PR+CA+DA)C@(A=&?;&@<*DA(B?/FF":7*FD.FG4NL4OQ4QR7OP;VX8RU7RT4LN-FB-FC.FF/FE*B@.HE.HF,ED/HJ/DG-CE,BB0FH/EG%=;%<<5JO!:53>-.>/MG(PA"M>!K< J; I:H9H9H9H9I:I:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H9H9I:I:I:J; L< M>!N?"PA"SD$XI'ZM(\O)^R*_S*sw}xcvkh|`q^o_n_o]nctewgzbueyi|g{ex`rcu`r[n[nYk|QcrVgvXhwXhvTcpN]hL\hKZgJYfKXeGUaDP]CP[CQ^S`rVdxN[l)>?>OV@PYDR\?QZ7JO3GI:NQ4GJ1CF1DF4FI9KO4JM;NT@NHI;!H9H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8I9LWZCP_HXgP_tMZpO]tETiAQd6FS43 :5<>+G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I9I9I9I9I9I9I9I9I9I9I: I: I: I9 I9 I9 I9 I9 H9 H9 I8 H8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:I:I:I:I:I:I;J; I;I:I:I:I:I:I:I:I:I:H9I:I:H9H9H9H9I8I9K; N?&\iYh]m[j[k^m^mS_P[uQ]yVaVaXdT`O[xLWpLVnQ]wNZrNZuO[~R_R^R_R_Sb^mVeWgWgVeN[KVuKWtNYzR^XhYhUcUbYiXhQ_O\{VdVdTaUbTaT`}T`|MYqIVjHUhKXkGUeLYkO[oR`vO\pR_uVc~YhVdWf[iYgZiYgZh\lmjk]rjelh]o[kXhTeVg^p^r[rYpShWjTcwR`tUbuM[lR`rM[lFUcDR`CP\HT_FSa8GPDP\DR]8HR:JS5EJHD.J; I: H9G8G8H8H8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G6G6G6G6G6G7G7H8 G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:I:I;J; J; J; K< L>!M>!M>!M>!M>!M>!P@"]_`vvouvivlzkyyrhy[lH[o33$;8 74$:9*BA0DF:LQ0EG0EG-DD&?='@>$=:"<7#<8(?>5LK,EC(A=&A<)B>)A=(B@&B>'A>(C?&?<&A="<9/HG/IG2LL8PQ8ST5QP6PP5KK.GE0HG/GF)C?&?;!96$<9+DA&=;&<=+BB&<<521+0)3,;D/NI,RC$PA#OA#M>!J; I:H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H9I:I:I:J< L< M>!N?!PA"TE$WH&ZL([M(\O)_S)tkywezcvev]of{bv^n_nbrctcsdwg{nlrkfyas_q]oTftScqUeuYhzXfvP_kJZfEU_CS[ET^GT`AOYBNYDOZALXHUdHTcGTd+LUDS]AR[>OY:MS6KL4IJ6GM4FI5GJ7KO4JM6JM=NRH9H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H9H9I:JSWCP\O]q\lVfR`xdVa[j\k]ndvdv^nVcUaS_U`UaQ]yP\vQ]uOZrMWoLXwP\TbVdVdTbQ^UeYiTbUeUdQ_MY|LWuLXvMZxS`VdWfVdTbQ_P\N\}VeWfVcUbWeXfSaQ^wJVjDObGShGSgLXmNYrNZuP\vP\rVdUcYgZjWeZjYiZjZiYh[kmshRcmprlasZhZjZjZj\nZlTiTg|RcwUg|UfzUduHUcKXfHVcBR_M\lCQ_AN[DP^FS`/=C=JSO]kKXf5DL=LU7DD;@2I; H9H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G6G6G6G6G6G6G7G7G6G7G7G7G7G7G8G8 G7G7G7G7G7G7G7G7G7G7G8G7G7G7G7G8G8G8G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9I:I:I;J; L=!L< L>!M>!N>"O@"O@"N?"O@"TE$`djxpoiwp{{|{marXhBTg0CF0FE31&:<,AA*@@(=>,AC,BC+AB,BC)A@*A@%=;!;6";7'?<$=9&@:%?9&@;*C>+FB)D@-FD)C?$?;%@<"=9)AA,CC0GE0IF1JG/GF/GE1HF.FD/HF-GG(A?#:873*@@#982.612.0*:3925+NJ,PA"M>!L=!L=!L!N?!O@"RC$WH&WH&XI'ZK(]Q*|xa~ml`rap[gZiZkdwaqct_parg|i~pwyjgzgzfzcuYjzTgwVgxVfvVetTcpJZdCT]GWaMVAPZ>PW>PX8JP2HH+.J: I9K!N>"O@"P@"PA#O@"RB#TF%bdkkxk{vlgtcnhup}yZh|IXk9JR*>=(;:42=PV3IL'@?)AA'??(@?'?>(@?*A@&=<$<:%=;#<8#<9&>;&?;%?9%?8(B>)EA&?<'A>*D@&@<%@;%?;,DB/DE1GC0HF3LI1IG+E@+FA-FC+AB*BA#?;%<;*B@+AA)B? :54-4.60715B.TJ)O@"M>!L=!J; I;I:H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H9I:I:J; L= N?!N?!N?"QB#SE$VG&WH&YJ'YK'`V4}fkjdxr\jZg}cqlfxfwdvcvg|jtnqleyh|dwbtZkXk~TfvXhzVdtKXcFV_BSZ8KN6GK7GL7FK9GN?KUAMWBOYJXeIVbWezESd@LX.>E=OV?QW=NU7HN6GL4GJOS6FFCH'I:H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:K="ESZ@NXO]nKYiUcyFTd>KV-=C"84F?'H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8H8H8H8I8I8I8I9I9I9I9I9I9I9I9I9I9I9I9I9 I9 I9 I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I:J; J; J; J; J; J; J; I;I;J; I;I:I:I:I:J; J; I:I:I:I:I:H9H9H9H9J; K< O?%UH'_lZiUcT`Xhdvgxfzaq_nXeQ\~OZ~Q\|OYyJUqKWtLXvMZzO\P]P]LW}O[R`Q^R_UdO\{MZyMYwKWsMYuNZvMXtQ^O\KXsTbSaTbO\P]Q_R`NZvP\|P^R`R_}R_P\|NYxNZ{P\~Q^}UbS`R_Q^UbUcXfWeUbVdXfZh\k]ldwimcxjijjdzbs[kcv\nXhRaw\nScxCQ`RasSapR`pSbrGUa6CJ6DL2AI(6<$486DN"N?"P@"QB#QB#PA"PA"SD$WRHepbpg{qm{htup~rsgzVe{Vdz5DK&78!42'==4HL1HJ(A@)@@(@@(?@&==$<;)@?)@?(?>'?=(@>";772)A>+C@*B>(B?,ED+DB'@>)C?'A?+DC&>:+CA.EB2IE+DB'?=,DB+DA+EA+CA)>?#99 97'=>*A@.DE41622.2,2*2>+TF%N?"M>!LOV:JR>MU>KSES^EP\ER[P^mDQ\FSc?M\=JW242EI!M>!M>!N>!P@"P@"PA"QB#QB#SE$TW_k|cs^p_scqcnfqhtrgzap\j/=B+:@5HJ,@B+AB7LN+CC(@@(??'>>%=<#;:%<;,@A+@@+BA'><$=9'>*B>-DC'@< 85(@=-EB*C?)@>*BA0EG*@B42'=>$;:+AA)=>,?B#876-?F0UH&O?"L=!L=!J; I:I:I:H:H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H8 I8 I8 I8 I8 H9 H9 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H8 H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8 H8 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9I:I:H9H9J;N>!N?!N?!PB#TE%VG%WH&WH'WH&ZK&zptbtaq^l]lftslneyatcvlo{vrlli}bs`r\l[i{TdsQ_nR_lP^kFUb8GOLUBP[@NVHVbFS_JVfLXiDP^DP`CPa2AI'9<7IN5HK8LN8JO6ILKA'J:H9H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H8H9J;M= RH2HQPHQNLC-K< K< J; H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I9I9I9I9I9I9I9I9I9I9I9I9I8I8I8I8I8I9 I9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:J; J; J; J; J; J; I;I:I:I:I:I:I:I:I:I:I;I:I;I:I:I:H9H9I:J; L< RI0\U6c\2^jR^NYyQ\Zi^oevbr\j]lcr_mUbO[~R^P]Q]S`O[zT`NY{LWwJUqLXwMYxR_TcR`R_MYvLXxLWuIUqLYyHSkKWsHTqMZJVsJVuJVrKWxKXzP\~O[~Q_Q^O[zO\}MZ{LX}JUuJUtMX{Q^MXzO[VeVeWd[kYhXfYhXg[k[k_rbukvmzyg_vnnf|`rfzZkey`rVfTc}MYpHUhN\oKXhN[mR^nP\jIUd@MX5AH0=B?LV3@H6CK1?FMXcNZf>JT=ISAMW=LT=LT1BG#79-B?9=&I:H8H8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G6G6G7G7G7G7G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G7G7G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9I:J; J; I;I:J; J< L=!M>!L=!L=!N?"O@"PA"QB#QB#SF*WdaoSaPcYhbo`klygsizsm\kVc|5BN-=@2EG/EF/DF0FG+CB*BB*@A*?@'>>%<?4HK*?>)@=(@=,CA/ED.ED+B@+C@(A>.FF*BA-EE)B?*B@+C@1HF&>;2.63-ED/GE0HG/GE)A?(?=310-!66"89"88'<;(;:2.6,ZN*PA#N>"L=!J; I:I:I:H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H8 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H8 I8 I8 H9 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H8 H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H9H9I:L< L= M>!N?!PA#RC#SD$WH&YJ'ZL(|{codvbrbq`mdquqnnbvbth|oz}{mlfz`r\nXgyYfyUduVdsSaqUewO\jKVfIVgBP\=KW@OZAP\FTaJWgKVfHTcJVfFTc9FR0@F*;?3FI?)I:H9G8G8G8G8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I:J; K< K< J; J; J; J; K< L%;:%;;,AA.CB*@>1GG3II5KK0GE-DB&>;*?<0GH(@?+BB+CA$<9,CB/ED":74/2.*B@-CC1IH/GF+@A422/31%:<(=>#87%97 542./B5VH&O?"M>!K< I:I:H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H8 H8 H8 I8 I8 I8 I8 H9 H9 H9 H9 H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H9I:I;K< L< L= N?!O@"O@"SD$ZM(\O)v~vړ}lk~k~aoeqnikldw^s^rf~rxwwley_qg{^nYgzZi}Q`qUdyZkXfzR^rP\mNYkLVfITfHXeJXgKWhKWiKXgN[lJVg9GQ8FP;IS:LQ6KL9JP3HFJR?I:H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I9I9I9I9I9I9I9I8I8H8I8I8I8I8I8I8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I;I:I:I:I:I:I:H9H9H:I;K; M@&`gX_`SdlPVbLVxMWxQ\XeYf[k^n\kbr]k^mWeLX{EPlJUvHSqQ^NZ|KWxITqO[xP]|SdRaN[zQ_O\MY{NZ|LYyJVqJVsLWuLWuNYtNYtOZyN[{LXqJVsLZqN\vOZuKXsJWsQ]P^~P\xNZqLYqLXqN[zMZ~KXP^R_Xh\l`rcvbu_r]navjȂقnzsykmnjb{`uUf`rbtewbvWf[jYhIUkFRdHTdKWhJVeIUcFR_4AH=HR@MWVcrTamTamO[gVcpJR;IR4EL(>>(??69&I:H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G7G7G7G8G8G8G8G7G8G8G8G7G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G8G8G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:J; K< L=!L=!L=!K< K< J; J< K< L=!L=!L=!M>!P@"QB#PB#PE+Vf~`pgwctxzxepqtYjaq/CM*=?)A@;NR,DC(B?*CA.BC-?B*A@/DD/EF-AB.BB2DE6HJ2FG-DB2GH/FE.FD,B@-BA':;1GG(>?,BC)A?#;80GG.DC953.40(@?+CA,CC/FE,BB*bhYS`|R]HRqJTrR_XfXf]k_nWg[jXdXfTbKWvGRnHSoHQoOZLVvKWvLWuKVpNZvOZvO\zP]}O]GSnNZ{LY}JW{HTuHSnKWvNYyMZyO[zQ\xPZzMXwITsMXvKUrNYvJUtMXzNXxQ^O[P[xOZwLWvLYyN\~MZKXKV~Xh]n]mdxdw^p`rhv̉Ҏه؈VppvrnkdvbvZnhdv_pfzat[i^oWeO\wMYpGSfKVhEO\EP^IUcDO\GS`P]lR^lR`mP]kGS]HR^ALVAMW>JS!M>!M>!M>!L=!L=!L=!M>!N?"O@"P@"P@"QB#QB#WUJcvhz]lZfo{fr}fvh{yPau%:?4NL>UU>QV*BA,EC)A@-ED(@>0GH,CB1DF1CF=NS8JM8MN6KL,DC*B@,CA,DA*?>&<:(=<-DC1GH*=@.EE/GE+DA$;97352/+'?=,CB)A@+BA*@?43$9:565531755260718H8WH%P@"M>!J; I:H:H9H9H9H9H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H8 H8 H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9H9H9H9H9H9I:I:I:J; M>!N?"PA#QA#TE%ZL(ݓ܉j~mrj{j~ftetdtfxfyobti}lii~ezcu^par^n]nS_pNZfSbwZjVe{Q_qM[kLZjFTaLYhO\mUctR^rS`tR_rO[mKXi8EN/A5H9I:H9H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I9I9I9I9I9I9I8I8H9H9I8I8I8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H9H9I:I:I:H:H9I:H9H9H9H9H9H9I:I:J; J; I;I:I:I:I:I:I:I:I:I:I:H9H9I9K< M>!N?"KKBDRfIToHUpEQkR_S`[j\kZhYhP\{WdQ^|R^~R_JVvMZ}KVtR_LWvLWxFPlO\HSqHTmMZxP^P\JVqJVuN[P^P^KVsMZxNZR_OZ{P[zQ\NYyNXxR^P[OZO[OZQ]R^MVyNVwOZ|OZ}LX|NZzR_O\Q]NYNXVc_patatezqՙݓڒqVmioyi|_pbs\nofy`r_r]n[j`qTaQ_}LXoO\rR^tDO^CNZCO\EP]FQ^JVdS]nO[jN[gIU`KWdHUaHT^FQ]CO[3DI*=@0BF#:97@1K=!H9G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G7G7G7G7G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8F9"H:"H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H:J; L=!L=!L=!M>!N>"N?"O@"N?"N?"PA"QB#RC#RB#RC#RC#RD#TE#l{j~`pXgco}vfvu`o`oUcwn$9@/IE4KH8MO5JM*BA+BC/EF0FG)@@,CC3FH;MP:LP?OT8KN0GF.GD,BA/ED0FD.DB.CD-CB)??$:;*@@-DB0GF-DC!:7 9585":8!97+CA.DD,BA+AA)??&;:%<<&<>#8:32 86&?>402-)A6WL(P@"K< I:I:I:H9H9H9H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8H8H9H9H9H9H9H8H8H9I:K< N?!N?"N?!N?!O@"VH&s{}o{Ճgyfzrk~h{hz\l^jfxf{h}i|hzf|h~jatSbYh\l[kGSaBMWHU`Q_rUe}Xg|UewR`rTatO^lQ_oQ_oSbuUcxR_sO\pLYlKXj@O[6EN9IQ>PY6JL5JJ2GGB<'H9H9H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H8G8H8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I9I9I9I9I9I8I8I8I8I8I8H8H8H8H8H8H8H8H8 H8 H8 H8H8H8H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I:I:I:H9H9H9H9H9H9H9H9H9I:I:I:I;I;I:I:I:I:I:J; I;I:I:I:H9I:K!N?"P@"QB#RC#RC#RC#RC#RC#RC#SE$RC#TF'umcrhvclÂp~bq~LZlGUdFVhFVd5FN3KH0DA7IJ5HK7MO4IL0FG1FG)@@0EF9LN:KO>PT:KO2HH'@=(C=(A>+CB3IH.BE)>>%8:':<*??'<:*><1GH)A@";8#;9*A@/DE/ED0HE0EE/FD.DD,BB(>>*@A#;;!88!7654!76$:9521H"J; I:H9H9H9H9H8H8H8H8H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H9H:H9H9H8H8H8I:M>!O@"O@"N?!N?!PA#RC#YL-}pxmcudxnsg|]n_neyg|i~kexcwf|iezS`uR^uITeOZlGR_>JRLZjP^pSbsUewYk\lTcuP_nQ`pO]lP]pN[nN\oLXkFTgDSb@O\7FO;KT6HM7JL5JJ5GDH9H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I9I9I8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:H9H9H9H9H9H9H9H9H9I:I:I:I:I:I:I:I:I:K; K< J; I:I:I:I:J; L!O@"IF6ASa>O_CRiKWqP\zUbYhYiTaP_VgR`KWtIVsHUpJVtMZxO\{NZyNYvMYxR_MXsO\P^Q`UfQ_LXwNZ~Q^N[O[P]JTtIUvLXyP\NY}KWwKVvP[KUwKUwNZOYLV~NXMX~OZO[NZMWNWJT~ISz\mezdy_u_tbv`shէޔۋrh}n|lpkk^rXj^p`rdy]nZj`rXdTaO[wNZtQ^uQ^uNZoNZoIUhGRbHTdFTaP^jER_;HQMYfUarR_n8DL4@F9DM!L=!N?"PA"QB#RC#RC#RD#SD$TE$SE$RC#QL@ 65';=';>!652040*:-TE$M>!J;H8H9H8H8H9H9H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H8 H8 H9 H8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8G8H8H8H8H8H9H9I:H9H8H8H8H9M>!O@"O@"O@"PA"QB#QB#WH&mobzjh~\k|k|rmjeyapbsdvdvh|dvfyexg{dzQ`tLWkITeITcJV`JW`JYeQasYj^q[nVg~TdxTcuQ`pP^oUcwTavR`uO\rBQaJYhFUcDUa8HP9KQ>PW3HH9C:H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H:H9H9H9H9H9H9H9H9H9H9I:I:I:I:I:I:I:I:J; J; J; I:I;J; K< L!N?"ID2AT\BXbCUhCOcP\xUdUdSbO\xR`TaTbO[}KWrFQiJUpNZxQ]}JVtKWuQ^}P[zP[xLXxP^N\JWxKW|Q^OZzO\Q^Q^P^P^MZ}O\JVxNZMZ|P\MX{KVxNZP\NXOZPZR^R`R_P^MXJU~HRzFNtVddy`vbyihf|lӦݤxpizvf|bu`r\ocw`s^p[lbuYhR^}S_~S`}Q_{XhTbxVbyP\qKWiQ]oP\mAN[JYf>LVAOZDS]FV`HVa7DK2?D?MU9HO1DJ'<=3JL*CAAB0I:H8H9H8H8H8H8H8H8H8H8G8H8G8G8G8G8G8G8G8G8G8G8G8G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G8G8G8G8G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9I:I:I:J; K< K< L=!M>!L=!L=!N?"O@"O@"PA"PB#QC#SD$RC#RC#SSK`pgvbpsmxTb{O^pO[oOZqfux~eu5GQ-AB.DC3GH2DG7JN8KM3FI-DD1FG/EE6KL=OT7JN&98!64 51%?:+BA/GE.DC.BE%:;%8910,)$68,@C*@A1FI7LP4KL3KJ0HF1IG3LH6QK4OI4MJ2JH/DD/BE5HN,?B->B$8:45!86(A=CH4QB#L= J;H9H8H8H8H9H9H8H8H9H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8G8H8G8G8G8H8H8H8H8H9H9H9H8G8H8H9K; N?"O@"O@"PA"PA#N?"O@"YK'jndtshzfzja}l|qi|^m_ogwducrapaqeyZjOZnHTdJVbJV_GV^HWcP_rUeUduYiRcwN\kP_mSbsO^nQ_qN\oMZnFTf@P^>MX@P\KZhAP\DR^=NU4KK=<)H9H9H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8G8G8G8H8G8G8G8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I9H9H9H9H9H9I:I:I:I:I:I:I:J; I:J; J; K< K< L!M>!PA#QB$CQH@[[H^lJWpJVmLYpP]~R`UcSbP\}P]}MYxITmJUmN[vP[vNZxMZwMYwMYtMZvJVtKWuKXxKYyLZzKXzLY|KXwLXxP\}S`O\P^O]O\KWwJVvP]P]LXyKUxNYLX|NZNXMXMXP]Q^O\KWHRxFOtHPvNY~h~^raxmituҀَ{trur|`s\lWg`sas^o^n_qVeMYwR_|O\yKWoUbYh}Xg}Vf{NZpUbvT`sQ^oN[iJ[eGWdFTbBS\CT\BU[@PX.=A=KT>LV7IR$98$964.,>2I:H9H9H8H8H9I:H9H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:I:I:I;J; J; K< L=!L=!M>!N?"O@"P@"RC#RC#SD$SD$RD$HVc\k\mcr~rdpRb{]nXe}P\p\iXh~}CS_2CH4EI/EE1FC/CEBT[8KN3GI.ED/DE8JL;OO>PU:NR.CD2/3.+A@5IJ0GE1FG+?A$99&:9+?>(:<);>1BF6IM8KR5JM7MO6MN6OL6OL7RM4PI4PH2JH-BA(<<)=>-@B';<(;=&:<42)B?!O@"QA#RB#SD$RC$RD$RC#XJ&eeMu_parbtjvuxkpri}dvk~dtap`sUcyS_wKWfNZdO\iMZgTctO\mQcsTd|VexP_nO^lR`pM\jL[kMZk@M^BP`ETbBQ^>MWAP[7FN6GN6HM;NR1@4H; H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I:H9H9H9H9H9H9H9H9I:I:I:I;I;J; J; K< L!M>!PB#P@"PD':XSAZ\GZgRb}BNaLXuMZwTbQ^LXsLYyCNeIUpJ\zIUnJVoNYrO[{KVrGRiGRiHSmFQjGSqN]ZnO]~ITmKXtJWySbSaP\LY|Q^O\P\MY~MX|NXzKVuKUuKVwLY|LWzMYNYMYMYNZMYJUFPwGQwHRzUbexe~f~mh~ilçՏׇɃ|vzdxdy`tWfZiavf}x\kQ]{O[xP^vMXpKVnJUkZlXf{WeyO^qKYmO\oQ`nKZgN_lFXcCS_=OV9LQ>OW@QZ3CI@NW9HQ+>A31"95*C=*>5I:H8H8H8H8H8H9H9H9H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8H8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G6G6G6G6G6G6G6G6G7G7G7G6G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I;J; K< L=!L=!L=!L=!N?"O@"RB#RC#SE$TF$SE$SD$VTIL`xh{WhdshwpN[lXg}WbuFXkSbwJWg=JR4AEBOV3EI3IJ2FG:OZ2GO0EH1DF(>=0EF;PR@TW@SZ0CF/CE,@@,@@5HI6KL2HG1DE.BC6JK5HM0BE,>B+=A4EJ6IN7KP9MS6KN:OS:RR:RR:QQ6OL1HG,AB#86#:8#97#76':<';=55(@>IK8UF%PA"L= J;I:H9H8H8H8H8H9H9H9H9H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8 I8 I8 I8 I8 I8 H8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H9H9H9H8H8H8H8H9H8H8H8H8H8H9I:K< N@"PA"RC#SD$XI'XI'XI&VG&VG%fjc`sexottsqlpszk~du`o_o[kS`xO[oP]jN\hP]nQ^nSatSatP_uP_vM]rO^kP^nJYfQ`pUdv!N@#PB#P@"DO>=\XBZ`DWfLZtDPd>HYN[xNZvFQiHTrBOdFUlBSmJZxFRmBMbFRiDOhGRlDPfETvDQlAMdGTrO^N]IWqGSmO\~P]O]P\zNYxSaO\{P\LW{LX}HSsFQpKVxKX}LX|N[P]R`LWMYNYMYMYKVKVKTOZ_og~kuf|knzͱیxn|Վ}_sav^r\n_qd}nnS_NYwKVlQ^yJUnFRdPasVdxSatO]pM\lUdtTcrL[gHYdBS\9NQ!M>!M>!M>!N>"O@"QB#QB#SD$UF%TE$SE$SD$VJ-P]o[iYi|oUcuMYjVcx\i?N^\l9GP7FKGT_Q_m9JO0DF/DHH^n;PX7HL0DE+>>1DE4KK-CB9MQ2GI1GG/BE0DD:LO0GF1EF*??4IK;MR8KP2CH-?D/BG2FL1CI7KQ:"865220%:;50EL;WH&QB#M>!K< H9H9H9H9H8H8H8H9H9H9H9H9H9H9H9H9H8H8H8H8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8H8H8G8H8H8H9H9H8H8H:H:H9H8H8H8H8H8G8G8H8H8H8I:I:J; M= M> N?!RD$WH&XJ'ZM([N(YK'_S,hybtbwh~nkkmwtuunbt^nTb{O\oP]lVdwUbxTaxSaxSbyQ_uN\pLZlM\lN\kM[kKZhSbt?M\;IXBO`DRd=2GH4LGGE,N?"I:I:H9H9H9H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I:I:I:I:H9H9H9I:J; J; I:I:I;J; J; J; L!M>!L< K< M>!O@"RF'%I:H9H9H9H9H9H9H9H8H8H8H8H8H8G8H9 G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G8G8G8G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G6G6G6G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8H8H8 H8H8H8H9 H9 H8 H9 H9 H9 H8 H8H8H8 H8 H8 H8 H8 H8H8 H8 H8H8 H8 H9 H8 H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H:I:I:I:I:J; L!M>!M>!M>!M>!O@"QA#QA#QB#TE$TE$SD$RC#SD#JS^TczR`vvhzQ_qIWfjyk{LXuev6DLCPYM[h?MV7IN2EIBUd7KR5GJ@RZ/FF.DD-'0+;PRATZ0FF.@@.BB4JI:OP*C?.CD&;:9MP>'?>)@@,DC+BA)@?*@@,B@720C!J< I;H8H8H9H8H8H8H9H9H9H9H9H9H9H9H9H9H9H8H8I8H8I8I8H8H8H8H8H8H8 H9 H8 H8 H8 I8 H8 H9 H9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:H9H8H8H9H8H8G8H8H8H8H8I:I:J< L< N?!PA#RC#SD$XI'\P)^R*^S+`U,djk`sYibvarodvbt_r^s]qfxh|g|^o[jP^pZiZgWeYiXjSc|N[oJYgN]lKZgLZhIWeTdxFTd:IV;HW?L]XZD]c;TVMdsCO^?JZARiERk=I]>L\BQa9CV?J_>H\=G\@KaBLdIVtAKbNZwEPi=H_FVqIYrReXoFToCNeLXoKVjMXlOZkMYlNYnLVmKVpGSjBOgGTmIUrITsJVvO\~R`SaTaQ]P\P]WfVdXfXeVcWdUc_pkphg|qzqtpjdyiljc{awf}icx`vdyUeO[MXxO\yKWrQ^yHTgFScKXjUdv[lXi|GVcIYdJZf@SY7MN8LP:IR=NS;KQ1AH3DL1AI3HN!22($&:9%:9H<"I:H9H9H9I9I:I9H9H9H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8H8H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:J; I:J:L!M>!M>!M>!N?"PA#QB#PA"SE$TF$SD$RD#RD'DRZHUgLYndqSfZkAOZhxboVdDPaKWfHS_>MV:IQDVhLaxBS`/CFLZ?L\?L\AO^=KX8IQ+>>1ED:KFL?$J; H9H9H9H9H9H9H9H8H8H8H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H9H9H9H9H9I:H9H9H9H9H9I:I:I:I:I;I:I:I:J; J; LJbBMhE2HK"45'"*$$3)J; H9H9H9H9I:H9H9H9H9H8H8H8H8H8G8I: G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I9J: J; J; L!M>!M>!N>!O@"P@"P@"QA"SD$TF$SD$RC"EPPCP^JXkYh|xVg|ZjzTctuiyFQ]JVfLWdANW5FJ:IP@Q]:MT3FI3FI6HL>RW0FE'<:-BA2HB@XVCW[ATZ9NP:PQ6JJ*C@.EB2HH3HI7LN5JL6IN7JP7JP7LR3FK:NR5KN4IJ4GL4GL4HM2IJ/GG0HI.FG,EE&><)A@*AAcqqTaZ8IG^R.RC$L= I:H9H9H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9I8I8I8I8I8I8I8I8H8I8H8H8 H9 H9 H9 H9 H9 H9 I9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9I:I:I:H9I:I:H9I9I9H9I:I:H9I:I:I:I;J;K< M=!PA"UF%YK'YK([N(]Q*aV,_jxUe|P^pWg^o]oYm^r_s^r\q]rbv`s^oZh^n\m[lUd{N\lO^lQ`oR`pVeuQ_nO^lJXfKYiIWg;IU@N^M\oDTcAR_4EK6IL3IHDA+J; H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I;I:J; LND:VSI`g@X\@Z^GajJbqThWiL]r8FT;IZ8DT3>KHVlKZu@K`;FZ?Jb=H[:EY?K`@Ld=I`JZt?McDPjFRkGRdKVfN[kP_rLZlM[lN\pP`wRb}Rb|J\qI[pH[qI[sAUgI\vOaTeWhUfQaRaP^P^O\S`XeXeWdVa[i]m`r^obtkmeyex_oP_uZkq~cz_u`vZl\pf|ZmScUgTeXgUbP\wQ^sO_sESe@L]7CM"N>"N>"N?"N?"N?"P@"QB#RC#TF$VG&VG%=NPAQ[CQ_bp~P`z[lO_p`qrzGR_DOXR^oBOZ6FJ3DH8HN7GK5FJ7GNASYDX^BV[:OS,A8*@8?WUE[]E[^>TVBWY6IK+DA5KK2FG2GH7KN6KN8LP;PT:OT>RV9MR6LQ8MQ4HL4HK2HJ4JL1GH/FF/GH&><)AA+CB,CC=RSzYjdY\EWI&O@"L< H:H9H9H8H9H9I:H9H9H9H9H9H9H9I:H9H9H8I8I8I8I8I8I8I8I8I8I8I8H8H8 H9 H9 I9 I9 H9 I9 H9 I9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9I:I:I:I:I:I:I:I:I:I:H9I:I:I:I:I:I:J; K< L< N?!PA"RD$ZL(]Q*^S+a[!M=!M=!O>"O?"O@"O@"N?"QA#JI79QQ?[X9RP=UXM[MOay?L^!N?"O?"O?"O?"O?"N?"N?"N?"QB#>LJ8NP3KH:ST9UT=Y\AY`GZgL_rL^qL^sDRh4AN4CN8FU5BO2J_9DW6BR:FX8EXAM\DQaJVjLYnM[pHVfHWiHWjCScFUdL[nN^tI[pG[pAUj?Sf9L[7L[DWlJ[oFWhM^tRc}P_wR`WhRaUdVeUbS__nbp]k]l[k_qbrZjVh\mESb`qh~on]sXk]pjatTcWgQ`R`TcQ^vVf{P\pCQ`?NZ7HR1BI0@H;HTLZhJZeEU]CVZBVY=OS"25.?D(H:H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H9H9H9H9H9H9H8H8H8H8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G8G8G7G7G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I9I9K; L!P@"RC#RC#QB#P@"P@"QB#RC#RC#RC#TE$VH&XJ'CJBANXS_l\kYh@O[N^m`rDP[eu[h}Xfy;JR8HN7FL7GJDR\L\i>MTJ\dL^gEY_EY`GZaBU\CY[BYWBYYBZYTV2HI.BD7MN7OO6NM3KI3JJ3JK,DB-CB,DD.FGwfwyX^H^S+UF%L= I;H9H9H9H9H9H9I:I:I:I:H9H9H9H9I:H9H9I9I8I8I8I8I8I8I8I8I8I8I8I8I9 I9 I9 H9 H9 I9 H9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I:I:I:I:I:H9I:I:I;I:I:J; L= M>!N>!N?!O@"PA"TF%XJ']Q)aV,aW.S`lVi[p!L=!M>!P@"LG00EF*==8PP@Z^@Z^AY_NctEZgDXcL_qGWl2@L>N\4BL:GU9FS0I@MYBP^HUgHVfFTcDTdGXiGYmFVgDRaEUfHYlI[n?Q^SU5GK:JR1AG5FL:KR5HK0GF.,.+' 2,"4,K=!I:I:H9H9I:H9H9H9I:H9H9H9H9H8H8H8H9H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9I:I:H:H9H9H8H8H8H8H8H8H8H8H8H8H8H8G8H8H9H8H8H9H9H9H8H8H8H8H8H8H8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G7G7G7G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9H9I8I8I8I8I8I8J:K; M"N>"M"QB#SD#RC#RC#RC#RC#RD#RD#SD$TE$TF$VG%XI'BD36HJ>MW_mbpDSbKZgasdspiyWdyM]k8GM8FK8GK8HNDT`9IPTdpP`kFZ^DY\GZ`GY`DX\DZ[CYZ>TT5JK?TW/GG.FFJ[[anlZX<_S+ZL(QB#K< I:H9H9H9H9H9H9I;I:I:I:I:H9H9I:I:I9I9I9I9I8I8I8I9I8I8I8I8I8I9 I9 I9 I9 I9 H9 H9 H9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I:I:I:I:I:I:I:I:I:I:J; J; K< M>!N@"N?!N?!N?!N?!N?"RC#WI&[N(`T,bV-^V6H[qI[lIYiRbvDS_UcvYfxZi{WdwYg|S_tNZlN[mP]pS`tR_pIWfGUcHWeRasVezQ]tIVfLYiDSaJYkCSbHYhN^mGZe:NS@A0J; I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9I:I:I:I:I:J; J; J; L; L; L!N?"MF2@L2>K+9E8F]2>L.8B-7@3>J6CQ@MZAO[=LVBR_FUeFTcFUdDTeBSe?P`BP_CR_@O\JTXOJ8PB&O?"N?!O?!N?!N?!O?"PE,CKJ?S_?MV?O\>N\>N_CSgHXsLYtO\yN\xblWeYhVdYiTeFWfCRbVf^qWhYj]pWgYjYhYjUdR_ScZlN[xP]tIUiCPc?M\>MZ:HU5FK3DH0CF0BE-CD(>>!65.* 4-$;6<=(J; H9H9H9H9I9H9I:I:H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H9I:I:I:I:I:I:H9H9H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H8H9H8H8H8H8G8G8G8H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G7G7G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8I8I8I8I8I8I8J: L< M"O?"M=!M"RB#TD$SD#RC#RC#RC#SE$TF%WH&WH&VG&WH&VG&DD11BDCP[v[kL]mQaqfxfwfv\kDP\EU`7FL9GM7DI!N?"O@"O@"N@"PA"RC#TF%TE%WH&[M(]Q*`U,bV,F\g@S`GVcZnXiFUcHUcP_qLYjIVfMZjLXhJXiTcyXh~LZjNYDT_L[jO]oIWdN[kFUb?NXCR]EVaDV_4JKBE4J; I:I:H9H9H9H9H9H9H9I:H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8H8H8H8H8G8G8G8G8G8G8G8H8H8G8G8G8G8G8H8G8G8G8H8G8H8H8H8H9H9H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9I:I:I;J; J; K< K; L; LKV=FG7AA,9:-88<@9HD1SH+SD#P@"N@"N?"M>!M>!M>!M>!M>!M>!O@#QC(P@"OOBINDITO@R]@Q`DSgQV@5GK5GL,<@2DH/CG0FH/)1+$:5(8-O?"I;I:H:H9H9I:I:I:I:H9I9I:I:I:H9H9H9H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8H8H8H9H:I:I:I:I:I:I:H:H9H9H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H8H8H8G8H8G8G8H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8I8I8I8I8I8I8I8I8I8J:K< M"O?"O?"M=!M"O?"O?"RC#TE$TF%SE$RC#RC#SE$VG&XI'XI&WH&WH&WH&NF+0AB5DImwԪVd|GXgTdv`oZgzUcu_o@KU>LT7EK?MW?MVBQY>NWHWbL\fPanH[cFZ^FY_HZ`HZaEY]E\]AXZ)BA7QR=TXPS7KJgd9cX.^R*ZL(UF%O@"I;I:H9H9H9H9I:I:I:I:I:I:I:I:I:I9I9I9I9I9I9I9I9I9I8I9 I9 I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I9 I9 I9 I9 I8 I8 I8 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9I:I:I;J; J; J; J; I;J; J; J; K; L!N?"N?"PA"RC$VG&XI'XI'XJ']P)^R+bW.?T^7LT;IR]pYl|JZf?LUJXfL[jXi|\mZi{]l`qZjXiTfyRbtL\kET_!M"O@"RC$5MB'&%8:7PP=VYE^fCZeH]oE\hEZg9PV0?G@O\4GS+7A.:C-9A-"M>!M=!L=!L=!M>!N?"O@"O?"O?"PF*KQ@BW^CUa9JY4BN@MaANaGSjKWpS`Q_u;NTAS`FVgSbR`{Sb|YiarZjZmYjSabw]pZjatQ_{HThEPaDOaAM`8DS@LZ>JWBO\DR^=NU;NT:PR7OO4HJ9RQ6HL8LO(8;,/!23.BF.FG'B>3+><&L< I:I:I:I:I:I:I:I:I:H9I:I:I:I:H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8G8G8G8H8H8G8H8H8H8H8H8H9I9I:I;I;I:I:I:I:I:I:H9H8H8H8H8H8H9H9H9I:I:H9I:H9H9H9H9H8H8H8H8H8G8G8G8G8H8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8H8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9I8I8H9H9H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H9H8I8I9I9I9I9I9I8I8I9I9J; L!N>!N>"O?"O>"N>"N>"O?"PA"RC#UF%VG%UF%TE$RD#TF%VG&WH&XI&XJ'XI'YJ'FG6(;:3DHMYbmv;HSM[hQ^mMZhMYg[i}>KT9FM9HOFVdBR\L\hBR]M]hR`pRapGYaDW\H[`K]dL]fHZaEZ^@WY4LM51*BA6OP=UW>VX8OP/DF2JI7OO8NP8NP:PS8LN4LK4LK8PP5NM5ML2IH,C?2CA5GEESCia3_S+ZM(XJ'TE%N?!I;I:I:H:I:I:I:I:I:I;I;I;I:I:I:J:J:J:J:I9I9I9I9I9I: I: I: I: I: I: J: I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I9 I9 I9 I8 I9 I9 I9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H8 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8H8H8H9H9H9H9H9H9H9H9I:I:I:I;J; J; J; J; J; K< L!M>!N?"N?"O@"RB#UF%XJ']P)[U1NT@RXCU\7LL8MO8LN4IJ5E>LB'J;I:I:H9H9H9H9H9H9H9I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8G8H8H8H8H8H9H8H8H8H8H9H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H8 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8G8H8H8H9H9H9H9H9H9H9H9H8H9H8H8H8H8H8H9H9I:H9I:I:I:J; J; J; K; K; K; L; L; K; J; K; K; M"M=!M>!O?"O?"P@"RF'*H>&%-FD2MJ8RSAV]EZfG^oBYf?T`:SV7OQ:EO2>G-:B)8?4FN6JS$06!-3%28'3:+9?-9@;DF=@7KB*RC#RC#QB#QA#QB#QB#RB#QB#QB#PA"O@"N?"N?!M>!L=!L!M>!N>"LN>9NS3EKLB?S[CUbFUhR`xWfSaLZuCPhHUtQ`P^XiTbMYuTbO\}HUkMZmO[kFR`KYCQ`>PV:NQ9PP6PL2IH8RO1AD0@E,>B&&$ )&!520@7G@'N>!J; I:I;I:I:I:I:H9I:I:I:I:I:I:I:H:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:I;I:I:I:I:I:I;I:H9H9H9H9H9H9H9I:I:H9H9H9H9H9H9H9H9H9H9H9G8G8H8G8G8H8G8G8G8G8G8G8G8G8H8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G8G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9I9H8H8H8H8H9H8I8I8H8H9H9H8H8H8H8H9H9H8H9H9H9H9H9H9H9H9H8H8I8I8I9I:J:I9I9I9I9I9J: J; J; L"O>"N?"O?"O?"O?"P@"QA#RC#UF%UG%WH&WI&UF%UF%XJ'[N(]P)ZL(YK(YK'(;7%872DHLW^[htWZ/FH40 860HH2JJ=ST6MM6PN7NP8MP;RU9QS8OQ9OR;RS5ON5MK2KH,D@+<7)A>6KCgg@dY.\O)XI'TE%SD$N?!J; I;I:I:I:I:I:I:I;I;I;I:I:I:J:J:J; J; J; J:J:I9I9I9I: I: I: I: I: I: I: I: I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I9 I9 I9 I9 I9 I9 I9 I9 I8 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 J: I9 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 I8 H9 H9 H9 H9 H9 H8H8H8H8H8I8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I9H8H8H8I9I8H8H8I8I8I8I8I8I8H9H9H9H9H9H9H9H9H:I:I:I;I:I:J; J; J; K; K; L!N>"N?"N?"N?"N?"N?"O@"QA#YJ'`T,FO?2QL0SI2FH@Q\L\oJXiHVdQ_oLZiPbsParDR^L[jO^nJZjCR`FVdJZiHXeBR\3EH6HK;KQ6HL0DE8JLDG7NA#J;H9I:I:I:I:I:I:H:H:H9I:I:I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H9H9H8H9H9H8H8H8H8H8H9H9H9H9H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8G8G8H8H8H8G8H9H9H9H9H9H9H9H9H8H8H9H9H8H8H8H8H9I:H9H9I:I:K; K< L"N?"O?"O?"PA"TF&+D<++%<95UN8TTBY`I]nMasDYdAXb3HJ4LL2IJ&18)7=.AD5LP5MQ"16 -2+8>!.3$15.:=RD%SD$RC#RB#PA"O@"N?"N?"N?"O?"N?"N>"M>!L=!L=!K!L=!N@$IG49EE6JP>U[:OV:QW>QZ:FUEP]^V2CUO8NP?V[ETeS`zO\xDPeFRlAMcERjQ^|WjP_sMZoJUjS`{P^yUczVezTcvRarGVc;IT9GQ@Q[BS]AUY>VU9TP8RO0FE3NJ3EH3DI%49&'$!'#0(H>#K< J; I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I:I:I:I:I:I:I;I:I:I:H9H9I:I:I:I:I:H9H9H9H9H9H9H8H8H9H9H9H8H8G8H8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G7G7G7G7G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H9H9H8H8H8H9H9H9I8I8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8I8I8I9J; J; J: I: I: I: J9J;!K; K; L"O?"O?"P@"P@"P@"P@"PA"TE$WH&XJ'YJ'[M(XI'\N(]P)]P)ZM(YJ']O)4E;)A>2EI:GMmyAPYFS^HVaIVaER\>JR8EL!N?"O?"N?"O@"O@"P@"O@"N?"O@"P@"WH&_S+^R+MW9IQ9HN1CD5IG8LJ2GD>F9MD(L= I:H9I:I:I:I:I:I:I:I:I:I:I:I:I;I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H9H8H8H8H8H9H9H9H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H9H8H8G8G8H8H8G8G8H8H8H8H8H8G8G8H8H8H8H8H8H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H8H9I9H9H9H9H9H9H9H9H9H8H8H9H8H9H8H8H8H9H9H9H9I:I;J; L"O?"O?"O?"O?"P@"ED,;I6"<543*C?5RK7TR:UV=U[F[gI`m,;A;NT8NP->B->B0HG0MH2PK4ON7OQ3LL0JI,0#06BB2RB#RB#QA#P@"N?"M>!L=!L!M>!K; J; J; J; J; J;I:I:I:I:J; J; J; J; J; K< L=!M=!M>!N?#LL84FK1DG;RX!N?"N>"N?"O?"O?"P@"SD$WH&WH&ZL'ZL(_R*]O)\N(^Q*]P)YK'ZK(HK3.HC&;8*;=dnqy@OYER]EQZ=IPEQZBMVALU?LSAQZKYiM[iL[gK[fL\gFXdDU^7HO?QW>QU;OS:NRAUZ?SW:PQ8QR:TS7PQ5MO/BD*=<1FD:RQ9QQ8QQ9PR;RT!M>!J; J; J; J; J; J; J; I;I;I;I;J; J; I;I;J; L!N>"N?"P@"P@"N?"N?"O@"RC$SD$QA#O@"SC$ZM(_S+COB1KH,"P@"O?"O?"O?"P?"&>4(%,(#<6,HA3QH7UM;VT?V[E\cDZa"L=!L=!L=!L=!M>!K< J; J; J; J; I;I:I:I:I:H9H9H9I:J; J; J; K; L=!L=!M>!O?"HL>5MO2HJ=TYINBTI*^R,IUE=VV9SP6PL?SZM\sHWk;GWJ[P_tP_pR`oLZiM\kJXhFSdTU:SO8ON5NK8NM-<@,<>-.$ ,?@7IJJA*J; J; J; I:I:I:I:I:I:J; J; J; J; J; I:I:I:I:I:I:H9H9H8H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H:I:I;I;I:I;I;I;I:I:I:J; K; K; K< J; I:H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H9H8H9H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8G8G8G8H8H8G8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:H9H9H9I9I9I9I8I9J: J< J< J< J< J< J; K; K< K< L"M=!N=!N>!N>"N>"O?"O?"QA"UF%YK'YJ'ZL(ZL(]P)_R+_R*^P)^P*\N(ZK'+9/5PL$88,=>RZ\xGVcBQ\O^h?KRAMVCOXDQ[>NUCT]M[jJYeIXcK[eIZbFYa@QZPW9LQ2FF8NN!N?"N?"N?"N?"N?"O@"QB#UF%TE$P@"P@"SD$ZL(RJ,JH/3C?7ON:UTLamHZgHVYBNR@KITYEcX.]O)VH&SD$RC$TD$PD'NE,UF$TD#TE$SD$M>!I:H9H9I:I:I:I:I:I:I;J; J; J; J; J; J; J; J; J; J; J; I:I:I:H9H9H9H9H9H9I:I:I:H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H9H9H9H9H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H8H8H8H9H9H9H9H9H9H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8H8H8H8H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H9 H8 H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H9H9H9H9H9H9H9H9H8H9H9H9H9H9I:H9H9H9H9H9H9H9H8H8H8H9H9H9I9H9I:I:I:J; K; L!M>!M>!L=!L=!L"N>!O?"O?"M>!N>"O?";?,&3*)$400..GB2MF9TQ8KP;NS?QW@VY1@@M@#N?"O@"O@"O@"O@"O@"P@"O@"P@"O?"O?"O@"N?"N?"M>!L=!LPV>QVAVY>UV=WR>XU:RR"N>"N?"O?"O?"O?"QB#WH&YK'ZK(YK'^Q*`T,_S+`T,]P)^Q*[M(WJ'%94-EB)<<$45鮴WfxHWdES^ET^@MVCOWBNWDPZDT\FU`JWeGT_FU_HXbFW_ATZ;NSTU8MM(:9*><.BB-B@1FH5JL4LK1JG3MK4ML5LLL^em|rlzkw~H^\3JF0HF2HD/GD3KI2JI>OAbb9h^1cX.]P*WH&TF$N?"J; J; J; J; J; J; K< L=!M>!L=!K< J; J; J; J; J; L=!L=!L=!L=!M!N?"N?"N?"N?"N?"N?"O?"P@"P@"O@"O@"O@"QB#TE%XI&\O)=D83DEFNCUI*ZN(]Q*\O)[M(UF%PA"PA"O@"N?!N?"N?"N@"O?"O?"M=!J; I:H9H9H9J; I:I:I:I:I:J; J; J; J; J; J; J; J; J; J; J; I;I:I:I:H9H9I:H9H9H9I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8H8H8 H9 H9 H9 H9 H9 H9 I9 I9 I8 I8 H9 H9 H9 H9 H9 H9 H9 I9 H9 I9 I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H9H8H9H9H9H9H9H9H9H9H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I: I:K< K< L!N?"N?"M>!M>!L=!L"N>"M=!N?"N>"M!N>"O?"PA#:=,,%(#/,"74/IC3KI9MN>C6N@#M?#N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"L=!L=!L"O>"TH(5TMUR4MO65RN1MILWETaAO\DS^N]hO]jQapWfwWeuJYd>PW;NS=RT@VY=UU!O?"O?"O?"O?"O?"P@"SD$XI&XJ'XJ'YK']Q*\O)]P*^Q*\N([L(YJ'HG-!74*D>'>>4@Aq~GXhKZhER]@NWHU^HVaBNV@MWBPYGS`IWeAPY@OW?PVDV\>RV>RV8NO9NP;RR/ED1FF&;9*@=+@?.DD6MP3IJ0GF1IH6NM7NO4LK@WVm{vbma^gMmj:db7TW7b`7ld4g^1dY/`T+XI'QC#QB#K< J; J; J; J; J; J; K< L=!M>!M>!L=!K< L=!L=!L=!L=!L=!L=!L=!L=!M!L< K; L< L=!N?"N?"N?"N?"N?"M>!M>!N?"QA#N?"N?"N?"N?"O?"O@"OA"SD$RD$PA"QA#WH&WI&TE$ZL(O@"N?"N?"N?"N?"L=!K< K< J< J; I:H9H9H9H9H9I:I:J; J: I:I:I:J; J; J; J; J; J; J; J; J; I:J; J; J; I:I:H9I:I:I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I9 H9 H9 H9 H9 H8 I8 I9 I9 I9 I9 I9 H9 H9 H9 H9 I9 I9 I9 I9 I9 I8I8I8I8I8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:H9H9H9H9H9H9H9H9H9I:I:I:I:I:I:H9H9H9H9H9I:I9H9H9H9H9H9H9H9I:I:I:I:I:I:I: I:J; I;J; L!N?!N?"M>!M>!L>!N>!N>!M=!M!N>"O?"N?"N?"M=!N=!O?"O?"O?"G>$/4$/7)3<-3C68E6E@)P@"O@"N@"N?"N?"N>!N?"N?"N?"N?"N?"O@"O@"O?"N?"N?"N?"N?"L=!L=!L=!L< L< L$#,9.M>!M=!M>!L=!N?"J; I:I:J; J; J; J; J; J; I;I;J; J; J; J; I:I:I:H9H9H8H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H8H8H8H8H8H9I:I:I:I:I:I:I:I:I:H:I:I:I;J; N>!?E.3?-??(L>!J; I;J; J; J; H9H9H9H8H8H9H9H9H9H9H8H9H8H8H8H8H8H8H8H8H9H8G8G8G8G8G8G8G8H8H8H8G8H8H8H8G8G8G8G8G8G8G8G8G8H8H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G7G7G7G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G8G8G8G7G7G7G7G7G7G8G8H8H8H8H8H8H8H8H8G8G8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9I9H8H9H8H8H8H8H8H8H8H8H8H9H9H9H9H9I8I8J: L< J:K; J9I8I8H8H8I8H8H9I8I8I8I8I8I9J:J:I9J:I9I:I9I9I9I: I: J; J< J< J< J< J< J; J; L64}lyCVhK\nJYf@NYCOV=JRHS]N[fCQZGT`CQ[=LS8HN=NTDV]1HF-CB.FF1GH,AA.DC0GD/HE0HF.EB0GEl||utuErp>pm!N?"N?"M>!L=!L=!L=!L=!L=!L=!K< L=!L=!M=!M=!M"M>!M>!M>!K< J; J; J: K; K; K; J: J: J: I9 J: I9 I9 I9 I9 I9 I9 I9 J: J: J: J: J: I9 I9 I9 I9 J: J: J: J: J: J: I9 I9 I9 I9 I9 I9 I9 I9 J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: K; K; J9 I8 I8 I9 J: J: J: I9 I9 J: J: J: J: J: I: I: I9 I9 I9 I8I8I8I9H8I8I8H8H9I:I;I:I:H9H8H8H9I:I:I:I:I:I:I:I:I:I:H9I:I:I:I:H:H9H9H9H9H9I:I:I:I:J:J: J: I8I8I9J: J; J; K; I9I8I9I9J:J: J; J; J: J:J: J: J; K; M!N?"N?"N?"M>!M>!M>!M>!O@"N?"M>!N?"O@"N?"N?"L=!L=!L=!N>"N?"O@"P@"RC$WH&N?"M>!M>!K< K< J; J; I;I:H9I:I:I:I:I:I:I:I:J; J; J; J; J; J; J; J; J; J; J; J; J; J; I:I:J; I;I:I:I:I:I:I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H:H9H9H9H9H9H9H9H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I8I8I9 I9 H9 H9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 I9I9I9I8I8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:H9H9I:H9H9H9H9H9I:I:I:I:I:I:I:I:I9I:H9H9H9H9H9H9H9H9H9H9H9H9I:I:H9H9I:J; K< J; J; L< L!N?"N?"N?"N?"O?"N>"M=!N>"O?"N=!N>!O?"O?"O?"O?"N?"N?"O?"O?"O?"N>"N>"O?"P@"P@"QA"RB#P@#P@"O?"N?"M>!M>!N>"N?"N?"N?"N>!M>!N?"O@"P@"O@"N?"N?"N?"M>!L=!L=!L< L< L"HA)QE'TF&TF'HL2*JB?\[>YX;UV>X^AZbCZc=QY9KR:KR?RZE\dH[hBV]AU\>QWBU[HZaGZ`J[cK\gHZb@WX;TQ;UQ:RQ4KJ0DA'"&57!M>!N>!N?"N?"J; I:J; J; J; J; J; J; J; J; I;J; J; I:I:H9H9H9H9H9H9H9H8H8H8H8H8I:I:I:H9H9H9H9H9H9H8H8H8H8H8H9I:I:I:I:I:I:I:I;I;H9H9I:I:I:J; L'=<$43tO`pMbpQcuK[k?MWGT]DQYO]kIXcHUc?OX:JP;LS=NT?QV7JN:NS@UX>SV8OO0FE.CC*@>)?=&:8)>>(>=,AA.DF)?>)=;0HE-D@,B?-DAmzhvzJqo=ni9ni8h`2eZ/bV-_S+\N(YK'UG%P@"N?!L=!L=!K< K< J; K< L=!L=!L=!L=!N>!N?"N?"M>!L=!L=!L=!L=!K< J; L=!L=!M>!O>"N>"M=!M=!M=!M=!N>"M"N>"N=!M>!N>"N?"M=!K< J< J; K< K; K; K; J; J: J: J: J: J: I9 I9 I9 I9 I9 J: J9 I9 I9 J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: I9 J: J: J: J: J: I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 I9 J: J; K; I9 I9 I9 J: J: J: J: J: J; J; K; J: J; I: I: I: I: I8I9I9I9J9I8I8I8I8I8I9I:I:I:H9H9H9H9I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:H9H9I:I:I:I;J; J; J: J: J; J: I9J; L!L=!N?"M>!N?"N?"M>!M>!N?"N?"N?"M>!L=!L=!L=!N?"M>!O@"PA"L=!L!N>!M>!N?"N?"O@"P@"P@"N?"O?"N>"O?"P@"N>!N>"N>"M=!N>"O?"O?"O?"N?"O?"N?"N?"N>"N>"O?"O?"O?"O?"O?"O?"N>!M=!M>!N>"M>!N>"M>!M>!M>!M>!N?"N@"P@"P@"P@"N?"N?"L=!L=!L< L< L< L< L=!LWW6PP;QU-;B;MW*:A+:?2CH9NSCY_CX]DW`DVc!M>!M>!L!L=!L#76fnnxZi{I[mN_rHXgIWcEU]HV_IXdL\kETb:LS8GN9HN7HM>QU:LQ8LPBV[ATZ=RV1HF5JK0DE-BA*@>&<,DB(=;*?<.EB2IEfqXqrBlf6ja3f\0cX.bW-aU,[M(XJ'VG%QA#N?"M>!L=!L=!L=!L=!K< L=!L=!K< L=!L=!M>!M>!N?"M>!L=!L=!L=!K< K< L=!L=!L=!N>"N?"N>"N>"N>"N>!M=!N>"N>"O?"N?"O>"N>"O?"O?"O?"O?"M>!L=!J< J< J< K; K; K; J: J: J: J: J: J: J; I9 I9 I9 I9 J: K; I9 J: J: J: K; J; J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: J: I9 I9 I9 J: J: J: I9 I9 I9 J: J: J: J: J: J: J: J: J; J; J; K!M>!N?"M>!L!M>!L=!L=!L=!M>!M>!M>!M>!K; K; J; J; J; J; J; J; J; J;I:I:I:I:I:I:I;I;I;I:J; I;I;I:I:J; J; J; J; J; I;I:I:I:I:I:I;I:I:I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H9I:I:H9I:I:I:I:H9H9H9H9H9H9H8H8H9H9H9H9H9I:I:I:I:I:I:I:I:H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H9H9H8H9H9I8I8I8I8H8H8I8I8I8I9 I9 I9 I9 I9 I: J: J: J: J: J: J: J: J: J: J: I: I9 I: I: J; J; J:J:J:J:I9I9I9I8H9H9H8H9H9H9H9H9H9H9H9H9I:I:I:I:I:I:I:I:I:H:H9I:I:H:H9H9H9H9H9H9H9I:I:I:I:I:I:I:H9I:H9H9H9H9H9H9H9H9H:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I9H9H9H9I9I:H9I:I:H9I:I:I;J; I:I:I:I:J;J; L!N?"N?"N?"N?"O@"P@"P@"O?"N>"P@#QA#QA#N>"M"O@"P@#P@"O?"N?"O?"N?"O?"O?"O?"O?"O?"O?"O?"N>"N>"M>!M>!M>"M>!M>!M>!M>!M>!N?"N?"P@"P@"O@"N?"N?"M>!L=!L= L= L= L=!L+F@(N@#P@#RC%YL*Z\:4MK8QS3JM>V]>S[6KR?V[;UV>WX@VXHZd@RY>WWVV5JJ=WV"O?"P@"P@#PA#PA#QB#QB#SD$UF%VG&WH&WH&YK'\O(\N(WH&WH&ID(2/*B?(><+(縼cqLXh[j{HZjK[iM\iHWaJYa=KRHWfBP[9FN7FL7EK5DH=MR>PV;MSCU[>QV>RV@TX;OR5IL4GI3FG*@?$99(=;)?;$:7#95%:6(=:-DB2IH1FBO`Vje6f[0cX.cX.`T+\N(YJ'WH&TE$QB#O?"M>!M>!L=!M=!L= K< K< K< J< K< L=!M>!M>!M>!N>"M>"M>!M>!L=!L=!L>!M>!M>!M>!O>"O>"O?"O?"N>"M=!N>"O?"O?"O?"P@"O?"O?"P@"O?"O?"O?"N>"M=!L=!K< K< L!M=!L=!N?!L>!L=!L!K; J; I;J; L!M>!M>!M>!L=!M>!M>!L=!L!O?"O@"P@"PA#P@"O@"P@#O?"N=!RB#P@"O?"N=!M=!M"P@"QA#P@#O?"O?"O@"O@"O?"O?"O?"O?"O?"O?"O?"N?"N?"N?"N?"N?"M>!M>!M>!M>!N?"N@"O@"P@"P@"O@"N?"M>!L=!M>!M>!M>!M>!L=!L=!LWU:SR:SP8ON5MI&:7'<7.)*&*&(6:@PY7GN&$"2+L!M>!M>!L"L=!K; J; I:H9I:I:I:I:I:I:I:I;J; J; J; I:I:I; I: I:H8G8G8G8G8G8G8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8H8H8H8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8G8H8I9G8H8G8G7G7G7G7H7G6G6G6G6G6G6G6G6G6G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8H8H8H8G8G8H8H8H8H8H8H8H8H9H9I:I:H9H8H9H8H8G8G8G8H9H8G8H8H9H8H8H8H8H8G8G8H8H8H8H8G8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8J9 I8I8I9I8I8H8H8H8H8I8H8I8I8H8H8I8H8I8I8I8I8H8H8I8I8I8I8I8I8H8H8H8I8I8I8I9I9I9I9I9I9I9J:J:J:J:J:J; J; J< J< J< J; J< J< J< J< J; J< K< L=!L=!L=!L=!M=!M=!M>!O?"O?"P@#PA#QA#QB#SD#TF%UG%SD#UF%YJ'[M(]P)\N(XI&VK*)6-1/*@>&79?IHБQauO^pIWeL\jGWcCR\ES[ET\:GOM]kFUb@MY9GO8GM7EL:JP:LP:LR?QX:KP;MS>QV9KDjb4eZ/dX._S+ZL(YK(VG%TE$QB#QB#O@"N?"N?"N?"P@"N?"L=!L=!K< L=!M>!M=!M>!M>!N?"O@"O@"O@"N?"N?"O@"N?"N?"N>"M>"O@"PA"QA#O?"O>"N>"N>"N?"O?"P@#P@#PA#QB#SD$RB#QA#O?"O?"M>!M=!M>!L=!L=!K; J; J; J; J: J: J; J; J; J; J; K< K< K< J; I; J; J: J: J; J; K; K; K; K; K; K; J; J: J: J: J: J: J; K; K; J: J: J; J; J: J: J: J: J: J: J: K; J; K; K; J: J; J: J: J; K; K; M=!M=!M=!M"M=!N>"N>"M=!M=!M!L=!L=!L=!M>!N>!K; J; J:J: J: L!M>!M>!L=!L=!L!M>!O?"P@"PA"PA"N@"O@"O@"QB#PA"P@"QB#P@#M=!O?"N>"N>"O?"QA#QA#PA"PA"O?"O?"O?"O?"O?"O?"O@"P@"O@"O?"O@"O?"O?"N?"N>"M>!N>"M>!M>"N?"O@"P@"P@"O@"O@"N?"N?"M>!M>!N?"N?"N?!M>!M>!L=!L=!L=!M=!M>!M>!L"O?"XK)TV5.MD4RK4NI.FD.DD6MM8RQ8QP9RQ4JK3GH9QQ0CF6LM0DC6PL/GC(=8"52+&&"#$ !**1?D2FI$755:,L=!L=!M>!M>!L=!K< L!ND&)C6OQ0UN+1=)M@#K< J; J; I:I:I:I:I:I:I:I:I;J; I:I:I:I;J; J; I;H9H8G8G8G8G8G8G8H8H9H8H8H8H8H8H8H8H8H8H8H9H9H9H9H9H8H8H8H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H9H9H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9I:I:H9H9H9H9H9H9H8H9H8H8I:H8H8G8G8H8G8G8H8G8G8G8G8G8G8G8G8G8G8G8G8H8G8G8G8G8H8G8G8H8G7G7G7G7G7G7G7G6G6G6G6G7G7G7G6G6G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7G7H8H8G8H8H8H9H8H8H8H8H9H8H8H8H8H8I9H9I:J; I;H8H8H8H8G8H8G8H8G8G8G8H9H8H8H8H8G8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I:H9H9H9H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8I8I8I9I8I8I8I8I8H8I8I8I8I8I8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9I8I9I8I8I9I9I9I9I9I9I9J:J:J:J:J; J; J< J< J< J< J< J< J< J< J< J< J< L=!L=!L=!M=!M=!M=!M=!M>!M=!N>"O?"P@"QA#RC#UF%UG%TF%TE$TF%WH&\O(\O(ZL(QJ)OM-+( 32!42&69DNO|~PbuLZlIWfCQ^ES^CR\ET]9FN8DLFT_CS^SW>TW:PQ5OL8NO8JN7JN1HG/HE,C@+C?0FC,A?,?=Y`Eg]1dY/_R*ZK(XI&XI'WI'VG&QB#N?"N?"N>"N?"O@"O@"PA"PA#L=!L=!L=!L=!L=!M=!N?"O@"P@"P@"QA"P@"P@"O@"O@"P@"P@"O@"O@"P@"PA#P@#O?"O?"O?"O?"O?"P@"PA#QB#RC#SD$RC#QA#P@"O?"O?"N>"O>"M>!K< J< J< J< J< J: J; K; K; K; K; K; J< J< L=!K< J< J< J; J; K; K; K; K; K; K; K; K; K; J; K; K; K; K< L"M=!K< L=!L=!M=!L="K>#M>!N=!N>"N>"N=!N>!N>"N?"N>!M=!M=!M=!M!L=!L=!L=!K< J; J; J; I;J; K< K< L< L< L< J; J< K< J; J; K< J; J; I;J; K< K; J; J; J; J; J; J; J; J; J; J; L"M>!L=!L!L=!K< J; J; I:I:I:J; J; J; I:I;I:I:I:I:I:J; I;I:I:I:I:I:J; J; I:I:I:I:I:I:H9I:I:I:I:I:I:I:I:I;I:I:J; J; I:I;I:I:I:J; I;I;I:I:I:I:I:I:I:I:I:H9I:I:I:I:H9H9H9I: J; I:I:J; J; J; J; I;I;J; J; J; L!M>!N?"N?"N?"N@"O@"P@"O@"SD$TE$QA#P@#O?"P@#N?"O?"O@"P@"QA#QA#P@#PA"O?"O?"N?"O?"O?"O?"O?"PA"PA"PA"PA"P@"P@"O?"O?"N>!M>!M>!M>!N?"O@"O@"N@"N?"N?"N?"N?"M>!L=!M>!M>!N?"N?"N?"N?"N?"N?"N?"M>!L=!K< J; J; J; J; J; J; J; J; J; J; I;I:J:I9I9I9I: I: J; J; J; K; J; J< K< L=!M=!PA#EM60QD2PF1NE.JB.HC.HE%<:#871KI+AA0FH5ML/ED3LJ-GA.IE.CD-A@$""!00 /-)&'$%66 1.& 14"L=!L=!L=!L!M>!M>!M>!M=!N>"N?"O?"P@"PA#SD$TE$TE$TE$UG%UF%[M(^Q*\O)?@(& +(!53#86$45R[Z{O]iL[hGVfLYkWezR`pM[iBP[DS^=JS@LW>LU"M>!L=!M=!N?"O?"O@"P@"QA"QB#QB#QA#P@"O@"O@"PA#O@"O@"PA"P@"QA#P@#O?"O?"P@"P@#QA#QB#QB#QC#RC#QA#QB#PA#O?"N?"M>!M>!M=!L=!L=!L=!L= J< J; J: J; J; J: J: J; J< K< L=!L=!L=!K< J< J< K; K; K; K; K; K; K; K; K; L< L"N>"N?"N?"O?"N>"N?"N>"O?"N>"O>"N?"N>"N>!M=!N>!M=!M!M=!M!L=!L!L!N?"L=!K< K; J; J; J; J; J; J; J; J; J; I:I:J; I;I:I:I:I:I;I;I;I:I:I:I: I:I:H:I:H9H9I:I:I:I:I:I:I:I:I:I:J; J; J; J; J; I;I;I;J; J; I;I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I:I; J; J; J; J; J; J; J; J; K< L=!M>!N?"N@"N?"N?"N?"N?"P@"QB#P@"QA#QB#P@#P@#P@"PA"O@"O@"P@"QA#RB#QA#P@"O?"O?"N>"M=!O?"O?"P@"P@#QA#PA"PA"P@"O@"O?"O?"O?"N?"P@"N?"N?"P@"P@"O@"N?"O@"N?"N?"M>!M>!L=!M>!N?"O@"O?"N?"N?"N?"N?"N?"M>!L=!K; K; J; J; J; K; J; J; J; J; J; J:J:I9I9I9I: I: J; J; J; J; J; J; J< K!L=!K< K; K; J; K< J; I:I:I:I;I:I:I:I:J; I:I;I:I:I:I:I:I:I:I:I:I:I:I:I:I:J; I:I:I:H9I:I:H9H9I:I:J; J; J; L!RH)*H;&F;'E98C.RC#L=!L"K< J; J; J; K"N>"M=!M=!N>"O?"O?"O?"QB"SD#SD#TF$UF%UG%[N(]P)ZL(FB(,&-,30!42 10JTTCQ^IYfBO`R^wR^sGUdKZjJXfDQ]@LWES^COYBPY9GO4CG0>C1AE7HK6HJ:MO7LN8LO;NS=QV=OU:LR:NQ4IH1HF2FF0FE/GF3HJ3HI4JJ3IH0HDHVCh_3aV-]P*YK'XJ'ZK(WH&WH&VG%RD#QA#O?"QB#RB#N?"PA"QA#P@"PA"PA#O@"O@"N@"N?"QA"QA#PA"PA"QB#QA#P@"P@"PA"PA"P@"P@"P@"P@"P@#RB#QB#P@"O?"P@"PA#QA#PA"QA#RC#QB#QB#O?"QA#QA#P@"M>!M=!M=!M>!M=!M>!M>!M>!L=!J< J< K; K; K; J; J; J< K!M=!L=!J< J< J< K; K< L"M=!M=!N=!M>!N>!N?"N?"O?"O?"O?"O?"O?"N>"O?"N?"N>"N>!O?"O?"N?"N>"N>!N>"N>"M=!M=!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!L>!M>"O>"N>"M=!M!K< K< K; K; N?"N?"M>!L=!L"N>"N=!N=!N="L!L!L=!M=!M>!L=!L=!L=!K< J; I:J; J; J; J; J; J; J; K< L#L=!L=!J; J; J; J; J; J; J; J; K!L=!L=!P@"RB#O@"N?"O@"O@"P@"QA#QA#P@"P@"P@"P@"P@"O@"PA"PA"P@"P@#QA#P@"O@"O?"O?"O?"N>"N?"O?"P@"P@"PA"PA"O?"O?"O?"O?"O?"O@"P@"P@"P@"O@"O@"O@"P@"O@"N?"N?"N?"N?"M>!M>!M>!N?"P@"O@"N?"O@"N?"N?"O@"N?"L=!M=!M=!K< K; K< K< K; J; J; J; J: J: K: I9J:J:J: I: I: J; J; J; J; J; J< LOL(@<$#!/+"82,E>-<.16%;?+89#88#C;"O?"L=!K< J; J; J; L!PB#1H8*K>,M@">20D4CE+PE'QD%,3 1(6@-M>!K; J; J; K< J; J; J; J; J; J< J; J; J; J; I;I:I:H9H9H9I:I:I:I:H9H8H9H9H9H9H:I:I:H9H9H9H:H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:I:H9H9H8H8H8I9H9H9H9H8G8G8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8H8G7G7G7G7G8G7G7G7G7G7G7G7G7G7G7H8G7G7H8G7G7G7G7G7G7G7I:H8H8H8H8H8H8H8H9H8H9H8H8H8H8H8H8H9H8I:H9H9I:H9H9H9H9H9H8G8H8H8H8H8H8H9H9H8H9H8H8G8G8G8H8H9H8G8G8H8H8G8G8H8H8H8H8H8H8H9H9H8H8H8H8I:H9H8H8H8H8H9H9H9H8I8I8I8I8J: I8I8I8I8I8I8I8I8I8H8H8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I8I9I8I8I8I9I9I9I: I: J; J; J; J< J< J< J< J< J< J< J; K; L!N>"N>"M=!N=!O?"O?"O?"P@"PA#RC#SE$TE$VG%[N)\N)ZL(ZM).)32"65$44,)[cd@MYK\iP]qFRgUb}[jRatKYhER\"M=!M>!N>"O?"N?"N?"O?"O?"N>"M=!K< J< J< J< J< J< K< M=!M>!N?"N?"L=!K< L=!L=!L=!M=!M=!M=!M=!N=!M=!M=!M=!M=!M=!N=!M=!M=!M=!M=!M=!M=!L"N=!N>"N?"N>!N>!N>!M>!M>!M>!N?"O?"O?"O?"O?"O?"P@"QA#QB"O?"O?"O?"P@"O?"QA#O@"N>"N>"O?"O?"O>"N?"N?"N>"N?"N?"N>"N>"O?"O>"O?"O?"O?"O?"N>"N>"M=!M!N>"N>"N>!N>"N>"M=!M!M>!L=!O?"N>"L!M=!L!M>!M>!L=!L=!L!M>!PA"RB#P@#P@"P@"P@"QA#QB#P@"PA#PA"PA"PA"P@"P@"P@"P@"P@"P@#P@"QA#O@"O?"O?"O?"O?"PA"O@"P@"PA"PA"P@"O?"O?"O?"O?"P@"P@"O?"O?"O@"O@"O@"P@"QA#PA"P@"O@"O@"N?"N?"N?"N@"O@"O@"O@"O@"O@"N?"N?"M>!L=!L=!M>!L=!L"M>!M>!M>!M>"M>!L=!J; J; J; J; J:I:J; I:I:I:J; J; J; J; J; I;I;I:I:I:I:I:I:I:I:I:I:I;J; J; I:I:I:I:I:I:H9I:I:J; K; J; L2*L?%E92)$:00&4(2%.%4+FB(L=!L"O?"O?"O?"QB#TF$TF$TE$UF%XJ'XJ'WJ(VL)+'1/#66*;<*9:{cjoBR_L[hTdwESeLZlHT\GUaDR^BO[ANZ=IS>JS;GO:FL>LS8HL5FH4GG1?A)882CF9NO7OO=WV?UY;PT9MQ7IN4HK6IO6IN2GI0BF:HHEN@SR6_S,^P)\N([M(YJ'WH&VG%XI'UF%TE$SD$P@"PA#RB#P@"O?"QB#RB#QA#QB#SD$RC#RC#SD$RC#P@"N?"P@"PA"QA#QB#QA#PA"PA"P@"P@#P@"P@"P@#QA#RC#RC#PA"P@"PA"PA"QB"PA"PA#O@"P@"PA#QC#RC#SD#QB#O?"N>!N>"N>"N>"O?"O?"O?"O?"O?"O?"M=!L=!K< K< K< K< L=!M=!M=!N>!M=!L=!L=!L=!L=!M=!M=!M=!M=!M=!M=!M=!M=!N>!O?"O?"N?!N>!N>!N>!N>!N>!N>!M=!M=!M=!M=!M=!M=!M=!M=!N>!N>!N>!M=!M=!N=!N>!N>!N>!N>!N>!O?"P@"O?"P@"N>"N>"N?"M>!N>"O?"O?"O?"O?"PA#QA#O?"QA#QB#PA#P@"O?"O?"P@"P@"P@"O?"O?"PA"PA"P@"N?"N?"N?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"N>!M>!N?"N?"M>!M>!M>!P@"P@#PA"O?"O?"O?"O?"O?"N>"N>"M=!L!M>!L=!K"PA"L!M>!L< K< L!L!M>!N?"N?"N?"N?"RB#SD$P@"P@"QA#QB#QA#P@"QB#QA#P@#QB"RC#RB#SD$QA#QA"PA"PA"PA"P@"P@"P@"O@"O?"P@"P@#PA"P@#PA"PA"PA"O?"O?"O?"O@"O?"O?"O?"O@"O@"P@"P@"QB#RB#QB#P@"P@"P@"O@"O@"O@"O@"PA"P@"P@"O@"N?"N?"M>!L=!L"N?"O?"ND(SC%PH+KN33N<&E99009)QF'WJ)IL2JQ8/QC-M@6-%>3LM0WH&RC#QA#QB#Q@"P@"O@"M>!L=!L=!L=!K< L!M"O?"N>!M=!M=!N?"O@"M>!L=!J; J; J: J: J: J:I:I:I:I:I:J; J; J; J; J; J; J; J; I:I;I:I:I:I:I:I:I:I;I;I:I:I:I:I;I:I:I:I:J; J; K< L!JI,$A6(D93)"<46.,"'6-/JA,B7NE'L"P@"P@"O@"O?"O?"P@"PA"QA#TE$UF%WH&XI'XI'VG&TF%ZL(4>3(<<+B@-BB0@?pwwht~CR_O_pSbuScyP`sIWgBPYCR^@MX?2DD;QR:OQ7LLEXY?RT=OR;KNBQNHUHPVAWV:`Y6bV-`S+^Q*^Q*]O)ZL(YK'XI'XI&WH&WH&RC#QA"RC#P@"QA"SD$PA"N?"PA#O@"O@"P@"PA"QA#QB#RC#SD$RC#QA#QA#QB#QA#PA"QA#PA"PA"PA"P@"O@"QA#QB#QB#RB#RC#RD#QB#PA"P@"PA#SC$QB#QA#P@"P@#RB#RC#RB#RB#P@"N>"N?"N>"N>"O?"O?"O?"O?"O@"O?"N?"N>"N=!N>!M>!N>"M>!M=!M=!M!M>!N>!N>!N>!N>!N>!P@"P@"P@#O?"N?"N>"N>!N>"O?"O?"O>"N>"N>!N>!N>!N>!N>!N>!N>!N>!O>"N>!N>!N>"P@"O?"N>!N>!N>!O?"PA"PA#O?"PA#O?"N?"O?"P@"N>"N>"O?"O?"P@"P@"UF%RC#SC$RB#TE$SC$P@#P?"P@"P@#QA#P@"P@"PA#PA"P@"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"O?"P@"P@"O@"PA"O@"O@"O@"P@"P@"O@"O?"O?"O?"O?"O?"O?"O@"PA"P@"O?"N>"N>!M=!M=!M=!M=!M!M>!L=!M>!M=!L=!K< M=!M=!L!M>!L!M>!M>!L=!L=!L=!L"O?"O?"O?"O?"P@"QA#TD$JC&C@'RD$RB#SD$UF%UF%RF'DO7CM4YN,TE%SD$QA#P@"PA"P@"O@"N?"M>!N?"L=!M=!M>!L=!L=!L=!L=!L!M=!M"N>"N>"L=!L=!M=!L=!M=!L6$<3SK+M"N>"N?"N>"O?"QB#RC#P@#P@#P@"O?"P@#QB#SE$TE$UF%VG&VG&TF%TE$VG&JH.2.(;:/@@"/*@JJz}~pw}amyK[jL[iSbsSbrN\iQ`pHWcDS]@NX>KT=IR;GP9FL8EJ9GL3BE5CG3AD/>>/@@;MQ9NRHZ]Yhfo}ijiAf_8cZ1aV-aU,`T,_S+^Q*^Q*]O)[M([M(ZL(ZK(YJ'XJ&YJ'WH&SD$SD$SD$RC$N?"O@"SE$O@"N?"N?"P@"O@"PA"P@"QB#SD$TF%TF$SD$RC#QA#QA#QA#O@"PA#P@#P@#P@#O?"QA#RC#QB#RC#RC#RC#QB#P@#QB#P@#PA#QA#RB#PA#QA#P@#QB#QB#SC#SC#QB#O?"O?"O?"O?"P@"PA"P@"O?"O?"O?"O?"O?"O?"O?"O@"O?"N>"M"M>!M>!N>!M>!N>"O?"O@"P@#P@#O?"O?"N>!N>!N>!N>!N>!N>"O?"O?"O?"N>"N>"N>"N>"N>"N>!N>"N>"O?"O?"O?"O?"O?"O?"O?"O?"O?"O@"P@#QB#RD$QB#P@#O?"P@"QA#P@"O?"O>"O>"O@"P@"QB#RB#SD$SD$TF%TE$SD$QB#P?"O?"QB#PA#QA#PA#P@"P@"P@"O?"P?"P@"O?"O?"O?"P@"P@"O?"O?"P@"P@#P@"PA"PA"P@#PA"PA"PA"PA"Q@#PA"P@"P@"O@"O@"P@#P@"P@#P@"PA"P@"O?"O?"O?"O?"N?"N>"M=!M!M>!L=!L=!L=!N>!M=!M=!M=!L"O?"M>!L=!L!M>!M>!L=!J; J; J; J; J; J; J; J; K; L!J; J; I:J; I:I:I:J; J; J; J; J; J; J; J; J; I:I:J; K; J:I9I9K; M=!L!L=!L=!J; K< J; J; I;J;K< J; J; J; J; J; K< J; J; J; I;J; J; J; J; J; I;I;J; J; I;J; J; J; J; J; J; J; J; J; J; I;I;J; J; J; I:I:I;J; J; I;I:I:I:I;I:I:I:I:I:J; I;I;I:I;J; J; J; J; J; J; K< L!N>"O?"O?"O?"O?"O?"O?"O?"QA"QA#RB#P@#P@"QA#RB#RC#RC#RB#QA#RC#UF%SD$RB#QA#PA"RB#RC#QB#P@"PA#P@"QA#PA"P@"P@"P@#PA#PA#QA#P@#PA#P@#PA"P@"QA"QA#RC#RC$SC#P@"QB#RC#RC#RC#RC#QA#PA#QA#QA#QA#QB#PA#PA#O@"O@"N?"N?"N?"M>!M>!M>!M>!L=!L=!L"O?"O?"O@"O?"P@"P@"PA"PA#QB#SD$RB#RC#SD$SD$TF%SE$TE$OD&RC#RC#RB#RB#QA#P@"N@"N?"N?"M>!M>!M>!M>!M>!M>!M=!L=!L=!M=!M=!M!N>"O?"M=!N=!O?"O?"N>"M>!L!M=!L< K; L!M>!L=!;B-'F94,*!3+4?>*&'"!707C2NF)RM.OC&M"N>!N>!O?"PA"QB#RB#QA#P@#O?"O@"QA#RC#RD#SE$UF%VH&UF%UF%XI&=>("8441(85EOMpvvHQULWa:IV@NZFT`FUaAPQMZiGVdHWeKZfIYdCR\=JS@MV>KS7EJ5CF4BE3AD2@B0??,=>7JK9KO8KO]mbonD`T,[M([M(\O(]O)^P*\O([M([M(ZL(YJ'YK(YK'YK'YJ'XJ'WH&SE$TE$VG%TE$SD$M>!QB#O@"M=!M>!O?"O?"O@"PA#QB#RC#RC$SD#UF%UF%UF%SD$RB#SD#QA#PA#P@"P@"P@"QA#RC#SE$RD#RC#RC#RC#PA#P@#QA#P@#RC#QA#O?"P?"O?"QA#QB#RB#RB#SD#TE$RB#QA#P@"O@"QA"RC#QA#O?"P@"P@#P@#PA"PA"PA"PA"PA"O?"N>"N>!M"O>"O?"O?"O?"O?"O?"O?"O?"O?"O?"N>"N>"N>"O?"P@"P@#O@"O?"O?"O?"O?"O?"O?"P@"O?"O?"QB#QB#O?"N?"RB#QB#RC#P@#N?"N?"O?"PB"PA"SD$VG%TE$RC#TE$TE$SD$P@"P@"QB#SD$QB#RC#P@"O?"O?"P@"QA#P@"O?"O?"O?"P@"P@"P@"PA"P@#P@#PA"QA#PA"QA#PA#P@"O@"P@"P@"P@#PA"P@"P@"P@"PA"PA"QA#P@#PA"PA"O@"O?"O?"O?"O?"O?"N?"N?"M=!M=!M=!M=!L!M>!N>"M>!M>!M>!M=!N?"M=!K; K; M"K; N=!M=!N>"M=!K; J: J: K; M=!M>!L!L=!J; J; J; J; J; J; J; J; J; J; J; K; J; J; J; J; I;I:I;I;I:I;K< K< L=!L!M>!M>!L=!L=!L!L=!M>!K; J; K!N>"O?"O?"O?"N>"N>"O?"O?"P@#QA#RB#P@#P@"P@#PA"RB#SD#QB#QA#QA#SD$RB#RB#QA#QA#SD$RC#QB#P@"QA#RB#QA#QA#P@"P@"QA#P@#QA#QA#P@#PA"QA#QA#P@"PA#RB#RC#QB#TE%QB#RB#RC#RC#QB#QB#P@"P@"P@"O@"O@"PA"P@"P@"P@"O@"N?"N?!N?"M>!M>!M>!M>!L=!L=!L!N?"O?"O?"P@#P@"O@"P@"QA#QB#QA#QB#TE$NF*VG%UF%SD$TE$TE$SD#SD$RC#QB#RC#UF%UF%PA"N?"N?"M>!M>!N>"M>!M>!M>!M>!M=!M>!M=!M=!N>!M=!M=!O?"N>"M=!P@"PA"N>"O?"N?"K< K"L< L< K; L; K; J; K; L!N?"M>!N>!M=!FA'8G22)*!#<6(@>(?= 504PIMO4N?"N?"M=!M=!M"N>"P@"P@"QB"PA"QA#O@"O@"QA#RC#RC#RC#TE$WH&VG&TE%F@%/'1-'>9".'AJHuyy8DL5BN9GQ"M=!M=!M=!M=!M=!M=!M=!M=!M=!M"N?"N>!L; K; L< M!L!M=!L=!M>!L=!J; K< J; I:I:I:I:I:I:I;J; J; J; L!N?"M>!K; K< J; J; J; J; J; J; L=!J; J; J; J; J; J; J; J; I;J; J; I:J; K!M>!L=!L=!L=!L=!L!M=!M=!M!M>!M>!L=!L!L=!L=!L=!L=!L=!M=!L=!L=!L=!L=!L=!K; L=!L!N>!N?"O?"O?"N>"M=!M"M>!M>!L=!L"N>"O?"O?"O?"O?"PA"P@"P@"O@"O@"QB#PA#RB#TE$WH&4D4XI'WH&VG%TE$RC#QA#QA#RC#QB#SD$A@(EE,RB#O@"N?"N?"M>!M>!N?"N>"M>!M>!L=!M>!N>!M"N?"P?"QB#O?"O?"O?"M=!L=!L=!N>!O?"O?"O?"N>!N>"N>!N=!L!M=!K< K; J; J; J; J; J; J; J; J; J; J; J; J; J; K< K< M>!N?"N?"N?"O?"N>"M=!O?"JC)/F?-I?6RIHG/M>!M>!M=!M"O?"P@"M=!N>"N>"M=!L!L=!L=!L=!L=!K< J; I:I:J; J; I;I;I:I:I;I:I:I:I:I:I:I;J; J; K< K< J; J; J; J; I;I:I;J; I:I:J; I:I:J; J; I:I:I:I:I:I:I:J; I;I:I:H9I:I:H9H9H9H9H9I:I;I:H9H9H9H9H9H8H9H8H9H9H9H9H9I:H:H:I:I:I:I:H9H9H9H9H9H8H8H9I:H9H9H8H8G7G7G7H8H9H8I: H8H8H8H8G8H9H8H8H9H:H8H8H8H8H8H8H8H9H9J;J;J; I:I;I:H9H9H9H9H8H8H8I:J< J; I:H9H9H9H9H9H9H9H9H9H8H9H8H8H8G8G8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H9H9H9H9H8H8H8H8H9H8H8H8H8H9H8H9H8H8I8I8I8I8I8I9I9I8I8I8I8I8I8I8I8I8I9 I9 I9 I9 I: I9 I9 I9 I9 I9 I9 I9 I9 I: I9 I9 I9 I9 I9 I9 I9 I9 I9 I: I: I: I: I: I: I: I: I: I: I: J; J; J< J; J; J; J; J; J; J; J; J; K< K< K; J; J; K< L< M=!N>"MKXAO^BO`FTdKZkKYhIWfFS_?KWCQ[AOX@MU!M=!M!L< L!N?"M>!L"M=!M>"N?"M>"L!M=!L=!L!M>!M>!M>!M>!L=!L=!L!M>!L=!L=!L=!L=!M>!M=!L"N>"N>"O?"O?"O?"N?"O?"N>"N=!O?"O?"PA"QA#QA#P@#PA"QB#RB#QA#P@#SC#RB#RB#UF%SD$SD$RC#RB#RC$RB#PA"Q@"QB#QA#QB#PA#P@"P@"O@"O@"PA#PA#QB#QB#QA#QA#QB#RB#RB#RC#RC#RC#RC#RC#RC#RB#QB#QA#P@"O@"O@"O@"O@"O@"P@"O@"O@"N?"N?"N?"M>!N>"M>!M>!L=!L=!K; K; J; K; K; K; K< K< L!L=!N>"N>"M=!M=!N>"O?"O?"O?"O?"O?"O?"P@"PA#P@#O@"N?"P@"P@"RB#TE$VG%SE%VG&UF%UF%UF%SD$P@"PA"QB#SD$SD#UH'6B/SE%P@"N?"M>!L=!L=!N?"M>!N?"M>!L=!M>!N=!N>"M=!M=!N>"N?"P@"RB#QB#O@"P@"RB#O?"N>"N?"O?"O?"N>"PA#QA#N>"N>"M=!N=!M=!M!N>!N?"P@"QA#PA"P@"O?"O?"P@"=L8.OD)H=/KB?P@O@#N?"N?"M>!M=!O?"QA"N>"N>"N>"N?"N>!N?"M=!L!O?"O?"P@"P@"PA"QB#QB#QB#RC#RD#TF%TF%VG%TF%-"'>92NF.D"N?"P@"QB#QB#RC#SD$SE$UF%VG&WH&WH&WH&TF%UF%WI&VG&UF%UF%UF%TE$RC#RC#QA#QA#TE$UF%UF%UF%TE$TE$SD$RC#TF%SD$TE$TE$TE$TE$SE$UF%UF%VG&WH&WH&VG&VG&VG%TE$TE$TF%TF%TE$SD$SD$RC#RC#SD#SD#RC#RB#QB#QA#QB#RB#QB#RC#RD$RC#QB#PA#PA#PA#P@"PA#QB#PA#PA#P@"P@"P@"P@"P@#RC#QC#PA#QB#RC$QA#O@"PA"PA#QB#RC#QB#O@"PA#O?"O?"P@"QA#P@#QA#P@#O?"O@"P@"O?"P@"RC#O?"O?"O?"QA#PA#PA#SC$O>"P@"QA"P@"RC$TE$TE$QB#QB#QB#QA#QB#QA#QB#QA#QA#QA#P@#O@"O?"P@"O@"PA"RB#P@#O?"P@"RB#SD$RC#QB#QB#QA#QA#P@#QA#P@#P@#QA#QA#RC#RC#RB#SD$TE%RB#RB#QA#RC#RB#PA#QA#PA"P@"RB#O?"O?"O?"O?"O?"O?"N?"N>"N>!M=!N>!M=!M!M=!M=!M"N>!M=!K; L;!L!N?"N?"L=!K; K; K< K< K< K< K< K< K; L!M>!N>"N>"M>!K< K< J; J; J; J; J; K; J; J; J; J; I:H9I:I:K< K< J; I:I:I:I;J; J; I:I:I:J; J; I;I;J; J; K; K< K< L< L!L=!L=!L=!L=!L=!L=!M>!M>!L=!L=!L< L!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L=!L!M>!M>!M>!M>!M>!M>!M>!L"N?"O?"N>"O?"O?"N?"O?"O?"O?"P@"O?"O?"P@"P@"P@#P@#P@"RC#RC#P@"QB#SD$P@#QB#VG&VG%TE$RB#PA"N?"QA#O?"QA#QB#QA#P@"P@"O@"N?"O@"PA#QA#RC#QA#P@"PA#P@"QB#QB#QB#RC#RC#RB#QB#PA"P@"P@"P@"P@"P@"P@"O@"O@"N?"P@"O@"O@"N?"N?"N?!M>!M>!M>!M>!L=!L!M=!L!M=!N>!N>"N>"O?"O?"O?"O@"O?"O?"N?"P@"RB#P@"O@"O@"QB#RC#TE$TE$TE$TE$TF$OJ,PK-VH&UF%RB#SD$TE$TE$TF%VH&PH)RC$P@"O@"N?"M>"N?"N?"N?"N?"N?"O?"N?"O?"N=!O?"O?"P@"P@#PA"P@"SD$RC#O?"O?"QA#O>"N?"O?"O?"O?"O?"RB#O?"N>"N>"N>!M=!M=&QO.YL)SD$PB$P@"P@#SD$9I8(C9-JA5F:NA%O?"O?"N?"O?"O?"N>"N>"O?"O>"QA#O?"N>"O?"N>"N>"N=!M"M=!N>"N>!O?"O?"O?"O?"P@"QA#PA"PA#QB#RC#UF%VG&TF%TF%H?$-'+D>0E:1?6=F@bc[V_e;IWLXGVeGUfDQ`AN[AN[@MXBO\DQ^DR^FNJVJ*MG2BG?>MR6HL:NMERGX[C[O*ZM(\O)]Q*\N(_S+`T+_S+]Q*\O)[N([M'ZM&ZL&YK&VG%QB#RC$UF%VG%TE$TF%VG%TE$XJ'XI'SD$RC#QA#N>"O@"P@"PA"RC$RD#UF%TF$UF%VG%UF%TE%SE$SE$VG&VG&UF%VG%UF&TF%SE$SD#QB#RC#RD#TE$TE$UF%UF%VG%UG%UF%UF%UF%VG%TF$UF%UF%UF%VG&WH&WH&WH&XI&XI'WI&VG&VG%UF%TF$TE$TE$TF%UF%UG%VG%UF%UF%TF%TE$RC#RC#RC#RC#SD#RC#SD$SD$RC$QB#PA#QB#QB#QB#QB#QB#QB#QB#QB#P@#P@#O@"RB#QB#RC#QB#SD$SD$QB#P@#QB#QB#PA#QC#RC$RC$RC#O@"O?"P@#QB#QB#O?"RB#SD$RB#RC$P@#P@"PA#O?"O?"O?"O?"P@#QA#RC#O?"O?"O?"P@"RC$TE%TE$SD$RB#RC#QA#TE$SD$RB#RB#SD$QB#QA#RB#P@"PA"QA"RC#RC#P@#P@#O?"P@"P@#RB#QB#P@"QA#PA#QA#P@#P@#QB#QB#QB#QA#QA#QA#RB#RC#SC#SD$SD$PA"P@"O?"P@"RC#PA"P@"QA#P@"O?"O?"O?"O?"O?"O?"O?"N?"N?"N?"O@"P@"N>"N>"P@"O?"N?"N>"N>"L"L"N>"M=!M=!J; J: J: K; J; K; J; K< L=!L!L< I:J; L< L=!L=!L=!L=!L=!L!L=!K!O@"QA#O?"N?"L=!L!K< J; J; J; K< J; I:I:I:I:I:I:I;J; J; L!L< L!M>!N?"M>!L=!L=!M>!K; L!M>!M>!L=!L=!L=!L=!L!M>!N?!M>!L=!L=!M>!L=!M>!L=!M=!L< K< L=!K< J; I:J; I:I:I:I:I:I:J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; L< M>"L=!N?"K; I:I:I:I:I;J; J< J; J; J; J; J; J; J; J; J; J; J; K; K< K; K< J; K< K< K; M"N?"O?"N>"O?"N>"N>"O?"O?"O?"O?"O@"O@"O@"P@"QB#P@#P@"RC$SD$RB#UF%TE$QB#QA#QA#TD$QB#RC#RD$QB#QB#PA"QB#RB#QA#P@"P@"O@"O@"QA#QB#P@"RB#PA"P@"P@"P@"QB#QB#QB#RB#RC#RC#RB#QA#QA#PA#P@"O@"O@"O@"O@"O@"O@"O@"N?"O@"N?"N?"N?"N?"M>!M>!M>!L=!L=!L=!L!M=!N>"N>"N?"O?"O?"O?"O?"O?"O?"O@"P@"PA"SC$RC#QA#RB#VG&SD$VG&TF%SD#RC#VG&9?*!8,%2%AB,TG'XH&NE(B@*=C0+;/0:+QB#RC#QA#O@"QB#QB#QB#PA"P@"O?"O?"O@"P@"O?"O?"P@#O?"O?"N>"P@"QA#QA#M=!M"O?"P@"O?"O@"RB#N>"O?"N>"M"N?"N>"N>"M=!M!N>"N>"N>!M=!L=!K< L"N?"N>!N>"O?"O?"O?"P@"QA#PA"P@"P@"RC#TF%WH&VG&UF%TE$QF&2,&C;-<3)5+NWRu~9GT>JXS^lCP^JXgBO]DRaAO]>L["O?"P@#N>!N>"N>!L M>!M> L= K< L< L!L!M>!M>!M>!M>!L=!K; K< N>"M=!N?"P@"RB#QB#RC#P@"N>"M>!L=!L!M>!L=!L=!L!J;J; J; J; J; J; J; I:I:I:J; J; L=!M>!M>!M>"K< L=!M>!L=!L=!L!N?"N?"N?"M>!L=!M=!K; L!M>!M>!M>!M>!L=!L=!M>!L=!L!M>!M>!M>!M>!M=!L=!L=!L=!L=!M>!M>!L< K< K< K< L= J; I:I:I;I:I:J; J; J; J; K< J; J; J; J; J; J; J; J; J; J; J; J; J; J; J; K; K< L!N>!N>"N?"N?"N?"N?"O?"O?"N?"O?"P@"O@"O@"QA#O@"PA"PA"P@"QA"SD$P@#TE$SC#RC#SD$PA"P@"P@"QB#RC#QB#RC#RC#RC#SD$QA#P@"O@"P@"P@"P@"P@#QA#QA"PA#P@"P@"QA#QB#QB#PA#QB#RB#RC#SD$RC#QB#QB#P@"P@"P@"O@"O@"P@"P@"P@"O@"N?"O@"N?"N?"N?"N?"M>!M>!L=!L=!L=!L!N>!M>!M>!N?"N?"N?"N?"O?"P@"PA"QB#P@"O@"QA"QB#SD$RC$WH&WH&YJ'WH&SE$RD$SD$B>&%#(!!4,*>42*"60,%+#$."RB#SD$VG%TF%TE$TE$SD$RB#RB#RB#QA#PA"O?"O?"P@"P@"QA#O?"O?"O@"QA#P@"M=!O?"P@"O?"O@"O?"O?"QA#O?"P@"O?"P@"N>"M=!M>!M>!L=!N>"L=!J< K< K"UE$7;%$0(9H4-##4(FD'OC&3;*,D9-C;EA(O?"O?"O?"O?"O?"O?"P@"TE$UF%RC#SD$N>!N>"N?"N>!M=!N>"M=!M=!M=!M=!M=!M>!N>!N>"M>!M>!M=!L=!L=!M=!M=!M=!M!K< J; J; K< J; J; J; J; J; J< J; K< J; K< J< L=!L=!K< K< K< J; J; J; J; I;I:I:I:I:I:I:I:I:I:I:I;I;J;I;I;I;I;I:I:I;I;H9I:I:H9H9H8H9I:I:H9H9H9I:I:H9H9H9H9H9H9H9I:K< I:J:H9H9H9I:I:I:I:J; J; K< J; K< L= K< K< M>!K< H9H8H8H8J; J; I:I:I:I:K< I:I:H:H9H9I;I:H9I:I:H9I:J< I:H:H9I:I:I:I:H9H9H9H9H9H9H9H9H9H8H8H8H8H8H8I:H9H8H8H9H9H9H8H8H9H9H8G8H8H8H8I9I9H9H8H8H9H9H9I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:H9I9J9I9I8I8I9I8I9I9I9J:J:I9 I: I: I: I: I: I: I: I: I: I: I: I9 I: J: J: J: J: J: J: J: J: I: I: I: J; J; J< K< J< K< J; J< J; J; J< J< J< J< L=!J< J< K< K< L=!M=!M=!L"O?"P@"P?"N?"O?"P@"P@"O@"PA"TE%XI'WI&VG&VH&UH'2<*%8-KI..8+]fbpxvV^^P]kDP^HVgDP_ESdUcrDRb>L[@N\;HT=KW>KXCQ^HVdM[jKYhFU`TH)VG&XI'[N(]P)^R*^R+]Q*\O)]Q*]Q*\O)[M([N([N([N(]P)[N(ZM&XJ&XJ&WG%RC#RB#UF$WH%WI%WH&UF%SD$SD$VG&XJ'\N([N(UF$RB#QA#RC#SE$VG&WH&WH&VG%XI'XI&WH&UF%UF%WH&XI&WH&WH&WH&WH&WH&WH&WH&WH&WH&VG&VF&UF%VG&VG&UF%TF%UF%TF%TF%TF%TF%VG&VG&WH&WG&WH&WH&VG&WH&XI&XI&XI&WH&VG&UG%UF%UF%UF%VG&XI&WH&VG&VG&VG&UF%TF%SD$RD#TF$TF%UF%UG%UF%TE$SD$SD$TE$TF%TE%TE%SD$RD$RC#SD$SD$RC#RD$TE$SD$RC$SD$SE$TE$RC$RC#QB#QB#QC#QC#RC#QA#N>"O?"PA#O@"P@"O?"QB#P@#UF%SE$VG%YJ(XJ(ZK(WH&VG%SD$SC$QB#SC$QA#P@"P@#O?"O?"QA#RB#P@#QA#SD$RB#QA#RC#RD#TE$RD#VG&SD$QA#SD$QB#P@"PA#P@#RC#P@"P@#P@"P@"P@#RB#QB#RC#QA#P@"P@#RB#QB#QB#P@#QA#P@#QA#RB#QA#QA#P@#QB#PA"QA#O?"P@#O?"O?"P@"P@"QA#QB#P@"PA"P@"QA#P@"PA"PA"O@"O?"O?"O@"PA"QA"P@"O?"N?"N>!N>"O?"P@"P@"O?"O?"O?"N?"O?"QB#N>!L"K; K; K; K; J; K< L< L!L= L= L= L= N?!N?!N?!M> L= L= L=!M>!L=!L=!L=!L=!L=!L=!L=!L"M>!K< L!O?"P@"RC$PA"QB#O@"RC$RC#RC#N?"L!N?"M>!M>!M=!K< K< L< L< K< J; J; J;I;J; L< M>!J; J; J; K; J; J; J; I;I;I:J; J; K< M=!M=!L!O@"O@"N>!M=!L=!L!L=!L=!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!M>!N?"M>!M>!L=!L!K< J; I;L< K< I:J; J; J; J; J; J; J; J; J; J; J; J; K; J; J; K; J; J; J; J; J; J; J; K; K; K< L"N>"N>!N>"O?"O@"P@"PA"P@"P@"QA#RB#P@#QB#QA#PA"QA#QA#QA#P@"P@"N?"N?"O@"PA"QB#RB#SD$SD$RB#Q@"P@"P@"P@"P@"O@"P@"PA#QA#P@"P@"PA#QB#PA#PA#QB#RB#RD$SD$RB#RB#RC#RB#QB#QA"O@"P@"P@"P@"P@"P@"N?"N@"N?"N?"N?"N?"M>!L=!L=!L=!L=!L=!L=!L=!L!M>!N?"N?"N?"N?"N?"N?"N?"O@"O@"O@"QA#QA#P@"SD$RC$RC#QA#RC#SD$XI'XI&UF%UF%SD$SD$$- $%% 1-#824NI&960-&2&RC#UF%VF%SD$RC#RB#RC#P@"P@"P@"QB#QB#RB#RC$QA#PA"P@"P@"QA#QA#QA#O?"O?"N>"O?"P@"RB#P@"P@"SD$PA"P@#SC$PA#O?"M>!O@"O?"O@"N?"O?"M>!L=!K!M=!M=!N>"N>"N>"N>!N?"N>"N>"N>"M>!N>"M>!N?"N>"M>!M=!M=!L=!M=!M=!M=!L=!M=!M=!M"M=!L=!L=!M>!L=!L=!M>!L!K< L=!J; I;J; J; J; I;I:I:I:I:I;I:I:I;I:I;J< J;J< I;J;J;I:I:I;I;I;I;I;I:H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:L= K< J; I:K< H9H9H9H9I:I:I:I:J: I: I:L< M>!N?"O@"M>!J; H9H8H8J; L= I:K< L= J< I:I:I:I;H:H9H9H:I:I;I:H9I:K< I:I:H9I:I:I:I:H9H9I:H9H9H9I:H8H8H8H8H9H8H8H8I:H9H8H9H9H9H9H8H8H8H8H8G8H8H8H8H9H9H8H8H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:H9H9H9H9H9I:H9H9H9H9I:I;I:I9J: I9I9I9I9I9I9J:J:I: I: I: I: J; I: I: I: I: I: I: I: I: I: I: J: J: J: J: J: J: K; J: I: I: I: J< J< J; J; J; J< J< J< J< J< K< K< K= K=!J< L=!J< J< J< K< L=!L=!L=!L"N>"N>"N>!N?"O@"P@"P@"QA#TE$XI&XI'XJ'XI'28&"6,WK*UJ'-4$NWVBOZESaHUdKZmL[lIWfJZkxJXg@M[DQ_KXhERaCP]LYhKYhFT^SF(UF$YL*WS4_R+]Q*\P)\O([N([N(ZL(YK'ZL(\O(\P)\O(\N(ZL'XJ&YJ&VG$SD#RC#UF%XI&XI&XJ&WI&VH&VG&TE$UF%WH&[M(\N)WH&SD$TE$TE$TF%UF%VG%UF%VG&XI&WI&XI&UF%XJ'XJ'WH&VG&WH&WH&WH&UF%VG%VG&WH&XI'WH&VG&VG&VG&VG&UF%SE$TE$TE$TF%VG%VG&VG%VF%UF%UF%UF%VG&VH&WH&WH&WH&WH&VG&VG&UF%VF%VG&VG&VG&WH&WH&WH&WH&VG&VG%VG&VG%TE$VG%VG%UG%UG%UF%UF%TE$TF%TE$TE%TF%TF%TF%SE$SD$TE%TE$TE%VG&UF%SE$TE$VG%TE$TE$TE$RC$PA#RB#RC$QC#PA#O?"O@"PA#PA#SC$N?"O?"RC#SD#UF%TE%VG&WI&XI'VF&UF%SE$TE$TF%UF%UF%VG&TE$TE$QB#RB#SD$SD$RC#QA#RC#QA#PA#QB#QB#QA#RC#SD$RC$TE%RC$RB#QB#QB#P@#QA#O?"P@"QB#TE$SC$SD$RB#SD%P@#P@"P@#QA#PA#P@"O@"O?"QA#RC#RB#RC#QA#P@#O@"P@"P@"P@#P@#P@"P@"O@"P@"PA"QB#P@#O@"P@"RB#QA#P@"O?"P@"O@"O@"PA"PA"PA"P@"P@"P@"N>!M"M=!N>!M"L=!L=!J; J; J; J; I:K; M>!N?"M>!N?"M>!L=!K< J; J; J; K; K< K< L!M>!K< J; K; M>!N?"N?!N?!N>!M>!N?!N?!N@"O@"N?!N?!N?!N?"M>"M>!N?"N?"N?"N?"M>!L=!L=!L=!L=!L"N>!M>!M>"N?"N?"O@"O?"N?"N?"O@"P@"RC#QA#N?"N?"N?"O?"N?"N?"O@"N?!L= L= M>!M>!L= M> M>!L= L= M>!M>!K< J; J; K; L< K< J; J; J; J; J; J; J; K< K< L"L!L=!K< L!M>!M>!M>!N>"M>!M>!M>!M>!M>!M>!M>!N?!M>!M>!M>!M>!M>!N?"N?"N>"M>!M>!N?"L=!L"M>!N>"N>"N>"O?"P@"PA"QA#P@"P@#P@#QA#RC$RB#PA"P@"P@#QA#QA"QA#O@"N?"N?"N?"P@"QA#SD#SE$QA#P@"O@"O@"O@"P@"P@"QA#QB#QB#P@"P@"P@"PA"PA"P@"PA#QB#RB#RB#RB#RC#RB#PA"PA#QB#P@"O@"P@"P@"QA#QA#P@"O@"N?"N?"N?"N?"N>"M>!L=!M>!M>!L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!M>!N>"N>"N?"N?"N?"N?"N?"O@"P@"RB#SD$RB#QA#TE$VG%UF%QB#RB#QB#SD$VG&VG%UF%SD$RC$QD%)$$)(!./#660JF+(4=.RC#RC#SD$RC#RC#RB#QA"O?"O?"P@"O?"P@"PA"RB#P@#RB#RC#SC$TE$RB#P@"O?"O?"O?"N?"N>!P@#RC#QB#QB#RB#UF%VG&O?"O?"N?"O?"P@"P@"P?"O?"P@#M>"K< M>!K< K< L=!J< L=!J; J; J; J; J; J; J: J: J: J:J:J: J; L< P@"67"*"' ,92bihHTZ2>F0<9PD)QA#RB#QA#P@"O?"O?"O?"O?"P@"O?"N?"P@"SD#TE%PA"N>"M=!M=!N>!N>!N>"O?"O?"O?"O?"O>"O>"N>"N>"M>!M>!M>!M>!M=!M=!M>!M=!M=!M>!N>"N>!M=!N>"M>!M=!N>"L=!K< L=!M=!K< J; J< K< J< K< L=!L=!K< L=!J; J; J; J; J; K< K< L=!L=!K< K< J; J; J; J; J; J; J; J; I:J; J; J; J; I;I;I;I;J< J< I;I;I;I;I;I;I;I;I:I;I:I:H9H9H9H9H9H9H9H8H9H9H9H9H9H9H9I:K; I:I; I;J; H:J; I:I:I:L< J; K< K< K< M>!K< L< J< J;I:L=!J; I:I:K; M>!M> J; J; I;I:H9H9I:I;J;I:I:I:H:I:H9H:I:I;H:H9H9H9H9H9H9H8I:H9H9H9I:H8H8H8H8H8H8H8H8H8H8H8H8H9H9H9H8H8H8H8H8H8H8H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:H9I:H:H9H9H9H9H9I:I:J; I:I:I:H9I:I9I9I9J:J:I9I9I9I9I9J: L=!L=!J; I: K< I: I: K< I: I: J; J; J; I: I: J: J; J; J: J: K; K; M=!K= J< J< J< J< J< J< J< J< J< J< K< K< K=!J< J< K< L=!L=!L=!K"N?"N>"N>"M"O?"O?"N?"P@"P@"P@"QA#SE$YK'YJ'ZL(XI'*!*:.HF*TH'6=1rxyBOZETbFT`FS`M[lL[mL[mM\oM\mM\kHVeGTaGVd?LVCO]GSaN[iAOX8DHJJ:HMA>NS^V0\O)ZL(YJ'WH&WH&YJ'ZL([N(\O)\N(ZM'YJ&WH&VH%UF$RC#RC#VF%XJ&XJ&YJ&YJ'XJ'XI'XI&WH&VG&VG&XI'YK'UF%UG%RD#UF%VG&VF&WH&UG%VG&XI'XI'XJ'XI'XI'XJ'WH&WH&XH&WH&WH&VG&UF%VG&VG&UG%SD#TF%VF%TF%SE$SD$TE$TF$UF%TE$TE$WH&WH&VG&VG%UF%UF%VG&XI'XI'XI&WH&WH&XH&WH&VG&VG&VG&VG&UF%UF%VG&WH&WH&WH&VG%VG%UG%VG%VG%VG%UG%UF%TF%TF%UF&UG&UF%TF%SD$SD$SE$TE$TF%UF%VH&UF%VG&UF%VG&TE$RC#SD$QA#SD$QB#PA#QB#QB#RC$QA#O@"PA#PA#O?"O?"O?"RB#SD#QB#RB#PA"QA#QB#UG%WH&XI&TF%TF%TE$SD$UF%VG&UF%XI'UF%VG&RC$RC#QA#P@#QB#QB#QB#RC#QB#RC#RD$RC$RB#QA#QA#QA#QA#P@"P@"QB#QB#QB#P@"RC#QB#SD$SD$PA#QA#QA#P@#P@#O?"O?"P@"P@"P@"RB#QA#RB#PA#QB#O@"O?"O?"PA"PA"QA#P@"P@"QA"QB#P@"P@"O@"PA"P@#O?"P@#P@#O?"O?"O?"P@"PA"P@"O?"P@"RC#QB#N>"O?"O?"O?"O?"N>"M=!M=!M!O@"M>!M>!M>!K< L!O@"N?"N?!N?!N@"PA"O@"O@"N?"O@"PA#PA#P@"O@"N?"O@"O@"N?"O@"N?"N>!M>!L=!M>!L=!L!M>"PA#N?"N?"O?"N?"N?"N?"N?"N?"N@"N?"P@"P@"QA#QA#PA#P@"N?"M>!N?"N?"O@"O@"O@"O@"O@"N?"O@"O@"N@"N?"N?!N?!N?!N?"L>!M>!L!L=!K< J; J; L=!L!N?"L=!J; K< L=!M=!L>!L=!M>!N?"O@"O@"M>!M>"L=!L=!L=!L=!M>!M>!M>!L=!L=!L!M>!L=!M>!M>!M>"M>!M>!M>!M>"M>!M>!M>!M>!M>!M>!N?"O@"N?"N?"PA#P@"M>!M>!N?"N?"M=!K< K< L"M>!M=!N?"N?"O?"P@"P@"O?"PA#P@"PA"QA#QA#RC#RB#RB#P@"P@"P@"VG%QB#PA#N?"N?"N?"N?"O@"RB#QB#QB#QB#QA#O@"N?"O@"P@"P@"QA#P@"P@"QB#P@"P@"PA#QA"QA#QB#QB#QB#RB#SD$RC#QB#RB#QB#P@"P@"P@"QA#PB#PA#P@"O@"O@"N?"N?"N?"O?"O@"M>!M>!M=!L=!M>!L=!L=!L=!L>!M>!M>!M>!M>!M>!M>!N?"N?"N?"O@"O@"O@"P@"QB#RB#QB#QB#RB#TE$WH&TE$QB#QB#QB#RB#SD$UF%TE$RC#RC#SD$*/!#%'")@;(@;+E> 3-QD%QB#RC#SE$TE$QB#RC#QA#Q@#O?"O?"O@"O?"QB#QA#SC$RC#SC#SD$SD$QA#P@"O?"P@"QB#O?"O?"P@"P@"RB#RB#TE$TE%SD$QA#P@#O@"P@#P@"O?"O?"O?"O?"M>!M>!M=!L!UH'#/#,$$2+PWSCPV3AH2<8LC'QB#RC#P@"P@#QA#QB#P@"P@"QA#RB#P@#O?"RB#TE$SD#QB#QA#O?"M>!M=!O?"O?"P@"P@"P@"P?"QA#O?"O>"N?"N>"M>!M>!M>!M=!M=!M=!M=!M>!N>"O?"N>"N>"O?"O?"N>"N>"L!L= J; K< L= K< K; L= J; J; J; J;K< J;I;I:H9H8H9I:K< I:I:H9I:I:I;J;K< I:I:H9H9H9H9H9H8I:K< H9H8I:H8H8H9H8H8H8H8H8H8H8H8H8H9I:H:H8H8H9H9I:I:H9H9H9H9H9H9H9H9I:I:H9H9H9H9H9H9I:I:H9H9H9I:H9H9H9H9H9I:I:I:I:J; I:J:I9I9I9I9J:I:I9J:I9I: J; M>!N>"M>!J; I: I: I: K< K!L=!J< L=!J< J< K< K< J< J< J< K< K=!K"N>"M=!M!N>"M>!N>"O?"O?"N@"P@"QB#TE$VG%ZK'ZM(YK'YJ' -"1>-SI*D?%?KE^bfUcpHVeLYfDR`HXfHWfM]nM]oM]nJYhDR_IXfKZiL[mKXiBMYBOZ?LUPM"N>"N?"P@"P@"QA#P@"RB#N>"N>"TE$XI'XI'YJ'WH&WH&WH&VH&XI&VG&VG&TF%UF%RD#RC#RB#QA#QB#QB#P@#QB#RD$QA#QB#P@#RB#RB#QA#SC$SD$TD$QA#O?"QA#RC$QB#QA#P@"RB#P@#QA#P@"P@#P@#P@"O?"O?"P@#O?"O?"P@"P@#P@"PA"QA#P@"O@"P@"P@"P@#P@"O?"P@#O?"QB#QA#P@"O?"O?"P@"PA#QA#QA#O?"O?"O?"O?"P@"P@#RB#QB#SC#SD$QA#O?"N?"O?"P@"P@"N>!L!L=!N>"M>!K< N>!M>!J; L=!N?"PA#O@"O@"N?"O@"N?"M=!L!M>!L= K; J; K; J; J; K; L N?!O@"O@"PA#PA#P@"PA#QB#PA#PA#QB#PA#PB#QB#O@"O@"N@"P@"P@"N?"N?"N?"M>!L=!L=!L=!M>!N?!M>!O@"P@"P@"P@"O@"N@"N?"N?"M>!N?"N?"N?"O?"O?"O?"O@"N?"N?"N?"N?"N?"O@"P@"P@"O@"O@"O@"O@"O@"N?"N?"N?!N?"N?"N?"N?"M>!M>!M>!N?"O@"O?"M>!N?"P@"PA"O@"N?!L=!M>!L= J:L< K< K< N>!N?!N>!N>"N?"M>!L=!M>!M>!M>!N>!N?"M>!N?"M>!N?"M>!L=!L=!M>!N?"N?"N?"M>!M>!L=!L=!L=!L=!L=!L!N?"N?"N?"O@"N?"N?"O@"N?"N?"N?"N?"M>!N?"O@"O@"N?"N?"N?"P@"P@"N?"M>!N?"N?"N?"N?"N?"M=!K; J; I:I;J; J; J; J; J; J; J; J; K; K< K< K; L"M=!M=!N>"N?"N>"O?"N>"N?"N?"N?"N>!N>"P@"PA#RB#P@"PA"P@"RB#RC#RC$RB#SD$RB#O@"P@"RC$PA#N?"N?"N?"M>!N?"N?"O@"N?"O@"QA"PA#P@"P@"O@"O@"PA#RB#RB#P@"P@"P@"P@"PA#P@"QA#QB#QB#QB#RB#RC#RB#QB#QB#QB#P@"P@"PA"QB#QB#QA#P@"O@"N@"N?!N?"N?"N?"N>"N?"M>!M>!M>!M>!M>!L=!L=!L=!M>!M>!M>!M>!M>!N?"N?"N?"N?"N?"N@"O@"P@"SC$TE$RC#RB#RB#TD$UG%RB#QB#RC#QB#RC#RC$TF%UF%SE$RC#RC#34!$)%%3.$95-A9/;.MA#QB#QB#RC#SD$QA#RB#SC$P@"O?"O?"P@"RB#SC$VG&SD$RC$RC$QB#RC#RB#PA#O?"O?"O?"P@"P@#P@"O?"P@#UF%RC#RB#TE$P@#PA#RC#RC$QB#P@"QA#P@"PA#M>!M=!M=!M=!M=!M!PA#QA#O?"O?"O?"RB#QB#PA#P@#O?"O?"O?"O>"N>"N?"N?"M>!N>"N>"O?"M>!N>"N?"O?"O?"O?"O?"P@"PA"N?"M>!K< M>!K< K< K< L=!K< K< J; J; J; K< L=!L=!M>!L=!L=!J; J; K< L=!K< J; J; J< K< K< J; J; I:I:I:I:J; J; J; I;I;I;J;L= K< J; J< K< J< I;I;I;I;I;I:I:I;I;J<J< I;I;H:H9H9I:I:H9I:H9H9I:I;K< J< K< J;J; J; J;I:I:H9H9I:N?!N?"P@"M= N?!M>!K< L< J; K< N?!O@"N?!L=!L= M>!K< I;I;J;K< J; H9H8I:I:I:I;I;I;I;I;J;L= I;H:H9H9H9H9H8H9H9J; I;J; H9H9I9H9H9H8H9I:H9H8H8H8H9H9H9H8H9H:I:H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H:H9I:I:H9H9I:H:H9H9H9H9I:I:I:I:J; L< L< J; J:J: J: J: J; I9I9I9L!M=!L"M=!M=!M>!M=!M=!M=!N>"O?"N?"O>"N>"N?"N?"RD$SE$VH&XI'XJ'XI'XI&C>$()5$TF%LC'MXR@JM>KVBO\IXfCP\FTcHVcQatN]pBQ^HXdJZgO`rO^qP_uGVdCR]AOZ@NWFRWNN;^R,`S+ZL(YK'XJ'XI'YJ'[M([N(\O)[M(YK(ZL(XJ&VF%SD$RB#RB#VG%WI%XI&YK&ZM'[M(ZL(ZL(ZL(YJ'YJ'XJ'XJ'XI&WH&SD$RD#VH&ZL(YK'XI'XI'XJ'YJ'XI&YJ'XI'XI'XI&WH&XI'WH&WH&XI&XI'XI'WH&WH&UG%VG&WG&XI'WI'UF%VG%WH&VG&SE$SE$SD$VF$VG%VH%XJ&XI&WI%VG%VH&XJ'XI'WI&XI&XI&VH&UG%UF%WG&VG&VG&VG&VG&UF%VG&WH&WH&WI&WH&VG&WH&UF%SD#RC#RC#SD#TE$UF%UG&TE%TE$TF%UF%UF%UF%UG&VG&XI'VH&VG&UF%VG&UF%TE%SD$TE$SD#PA#P@#QA#PA#O?"P@"QA#SD$QB#O?"O>"QA#RC$TE$TE$P@"O@"P@"P@#QB#SD$TE$WI'XI'XJ&YJ(YJ'ZK(YJ'VG&SD$SD$RC#QB#QB#QA#QC#QA#PA#SD$SD$RC#RC#QB#RC#RC#RC#QA#QB#RB"RC#QB#SD#RC$QA#TE$RC$SD$P@"P?"P@"QA#O?"TE$PA#P@"P@"O?"O?"N>"O?"O?"P@#P@"P@"P@"PA"P@"P@#P@"P@#O@"O?"QA#P@"O?"O?"O?"P@"P@"P@#QA#O@"P@"O?"O?"O?"O@"P@"QA#RC#SD#RB#O?"O?"O?"O?"O?"N>"M=!L=!L=!M>!M>!N>!O@"N?"M=!M>!N?"M>!L=!M>!M>!N?"N?"N>!N?"P@"O@"L=!L=!L=!M>"L=!K; J; J; J; J; K!N?!PA#O@"L= L= N?!O@"PA"RB#RC#RC#QB#PA#PA"O@"O@"PA#PA#PB#PA#PA"O@"O@"PA"P@"O@"N?"N?"N?"N>!N?"N>!N?"N?"N?"N?"O@"P@"O@"N?"M>!M>!M>!M>!M>!M>!M>!N?"N?"M>!M>!N?"O?"N?"O@"O@"P@"P@"P@"O@"N@"N?!N?!M>!N>!N?"N?"N?"N?"O@"O@"O@"N?"N@"PA#P@"PA#O@"QB#PA"PA"O@"N?"L= M>!K< I:I:I:J< L= M>!M>!N?"N?"N>!L=!L!M>!N?"N?"P@"N?"M>!N?"M>"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N>"M>!M>!M>!M>!M>!N?"N?"O@"O@"O@"P@"P@"P@"P@#O@"O@"N?"O@"P@"P@"P@"P@"P@"O@"O@"N?"L=!M>!O@"N?"O@"N?"M>!K; J; J; J; J; J; J; J; J; K< J; J; K< K; K< L!M>!L=!L!M=!M=!M=!N>!N?"N?"N?"N?"N>"M=!N>!N>!N>!N?"N>"N>"P@"P@"O@"O?"PA"QB#RB#P@#QA#QA#P@"P@"P@"O@"N?"N@"O@"O@"N?"N?"N?"N?"N@"P@"O@"O@"O@"O@"O@"O@"RB#P@"QB#O@"O@"P@"RB#P@"PA#QB#QB#RB#QB#QA"QB#RB#RB#RB#QB#QB#QB#QB#PA"P@"O@"O@"O@"N?"N?"N?"N?"N?"N?"M>!N?"N?"M>!L=!L=!L=!L=!L=!L=!M>!M>!M>!N?"N?"O@"O@"O@"N?"O@"O@"RB#QB#QB#RC#TE$TE$VG%RB#RB#QA#P@"P@"P@"SD$TE$TF%SD$QB#QD$+0#(#'!&/&JE*37$RC#SC$RB#TE$UF%TF%TE$UF%RB#RC#QA#QB#RB#RC#UF%RB#QB#QA#SC$RB#QA"P@"O?"O?"O?"O?"RC$P@#QA"SD$TE$TD$UF%TE$P@"O?"RB#RB#PA#RC#SC$RC$P@"N>!N=!M=!N>!O?"N>"M!N>"P@"P@"O?"O?"O?"N>"N>"N>"N>"O?"O?"P@"N?"M>!N?"O?"N>"M=!M=!N>!O?"P@#N>!M=!M>!L=!M>!L=!J; J; J< J; J; J; L=!L=!L=!L=!L=!L!N?!N>!M>!N?!M>!N?!M>!L= K< J;I;J;L=!J; H8I9I:I;J;J< I;I;I;I;I;I;I;I:I;H9H8H9H9H9H9H9J;H8H8H8H9H8H9J< J; H9H9H9H9H8H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9H9I:I:I:I:I:I:I:I:I:I:I:I:I; I9I:I:J; I:J:I:J; L"K< J; J; J; J< J< J< J< J< K< L=!K=!K< J< J< K< J< K< K< J< J< K=!O?"L=!L=!L=!L=!K< K< J< J< K!M=!M"N>"N>"N?"N>"O?"N>"O?"O?"O@"P@"TE$WH&WH&XI&WI&TF&ND&=<$LD&WG&4=0~|@HM[dl@LYFTcCQ`GVeCR`K[kO^oPbuL^sQdyQbtN^pJZkHWdHXe@OYHST]Q,[N(ZL(XJ'XI&YJ'YJ'ZM(\O)\N([N([M(YK(WH&VG%VG%UF%RB#QB"UE$WH%XJ&YK&ZL&ZL([N(ZL([M(YJ'YJ'YJ'XJ'XI'WH'VH&SD$UF%YJ'YK(ZL(YJ'XI'XI'XI&XI'YJ'YK(XJ'XI'XI'XI'WH&VG&WH&WH&XI&XI&WH&XI'XI'XI&XI'VG&UF%UF%VH&WH&TE$UF$YK&XI%QB#SD$WH%YJ'XI&VG%WH&YK'YK(WH&UF%TE%TE$SE$TE$TE$TF%VG&WH&VG&UF%TF%UF%TF%UF%VG&WH&VG%SD$RB#PA#QA#QB#TE$UF%UG%TE$TF%TE%UF%TF%SD$VG&WH&VG&WH'VG&TE%SD$RC$SD$QB#RC#RD$QA#PA#P@"P@#P@#P@#P@#QA#P@"P@#P?"P@#RB#TE$RC#QB#O?"O?"QA#RC$RD$UF%VG&VH&XI'WH&WH&WI'YJ(VG&TE$TE$SD$SD$SD$QB#QB#QB#RB#QC#RC#SC$PA#QA#QB#RC#UF%SD$RC#QB#QA#RC#SD$RC#P@"QB#QA#QA#SD$TE$P@"O?"P@"QB#RC#SC$O?"O?"O?"N>"O?"O?"P@#O?"O?"P@"P@#P@"PA"P@"P@"PA"RB#RC#RB#RC#P@#O?"P@"P@#P@#P@"P@"PA"O@"O?"O?"P@"PA"QA#QA#RC#RC#QA#O?"O?"O?"O?"O?"O?"M>!M>!M>!M>!M>!N?"N?"N?"O?"N?"N?"N?"N?"N?"N?"N?"N?"O@"N?"N?"M>!M>!N?"M>!O@"O@"L=!L=!L=!L!N?!O@"N>!M>!M>!N?"PA"QB#PA#RB#QB#QB#QB#PB#O@"O@"PA#PA#PA#PA"O@"O@"O@"PA"PA"O@"N?"O@"O@"O@"P@"N?"N?"N?"N?"O@"O@"O?"N?"M>!M>!M>!N?"N?"N?"N?"N?"M>!M>!N>"N?!O@"QA#P@"N?"QA"QA#QB#N>!N?!O@"N?!N?!N?"N?"N?"N?"N?"N?"O@"N?"N?"N?"N?"N?!N?!N?"N?"PA#PA#PA#PA#O@"M> K< K; J; J; I;K; N?"N?"N?!M>!N?!N?!M>!M>!M>!N>"PA"RC#O@"QB#M>!O@"P@"N@"O?"O@"O@"O@"O@"O@"O@"N?"N?"N?"O@"O@"N?"N?"N?"N?"N?!N?"N?"N?"O@"P@"O@"QB#PA"O@"N?"O@"O@"O@"O@"O@"O@"O@"N?"N?"N?"M>!N?"N?"N?"N?"N?"N?"M>!L=!J; J; J; K< J; J; J; K< J; J; J; J; K; L!L=!L=!L=!L=!L=!L=!L=!K< K; K; K< J; K; L!M=!M=!M=!M=!N>"N?"O?"N?"N>!N>"O?"N?"N>"N>!N>!N>"N>"N>!O?"P@"P@"QA#P@"P@"PA"QA#RC#P@"P@"N@"O@"P@"O@"N?"N?"O@"N?"O@"N?"N@"O@"N?"N?"O@"P@"O@"PA"P@"P@"O@"O@"O@"QA"P@"P@"QB#PA#QA#QA"P@"P@"QA"RB#QB#RB#RB#P@"P@"O@"P@"P@"P@"N?"N?"O@"M>!M>!N?"M>!M>!N?"N?"M>!L=!L=!L=!L=!L=!M>!M>!N?"M>!M>!M>!O@"QC#QB#N?"N@"O@"O@"P@"QA#SD$SD$VG&RC#O?"PA"QB#O@"O@"PA"SD$TE$TE%SD$QA#RC#RD$03$!+&><#NA#QB#RC#SD$RC$WH&VG&TF%TE%VG&TE$RB#QA#QA#SC#TE$UE%VG&TE$RC$RC$SD$P@#O?"O?"O?"O?"SD$TE$TE%UF%RC#TE$TE$QB#O@"O?"O?"QA#O?"O?"P@"QA#O@"PA#QB#O?"O?"N>!P@"N>!M=!M!LC%BG7]ho=MU3DH7LK9MJZ]=^R,QA#QA#SD$TF%RC$RB#SD$RB#QB#QA#O?"P@#P@"RC#RB#QB#PA#QA#QB#PA#PA#QA#P@"P?"PA#P@#O?"PB#JF,PF*N>"O>"M>!N>"N>"N>"O?"O?"O?"O@"O?"N>"M>!M>!N>"M=!L< M!N>!M>!L=!L=!K< J< K< M=!J< K< K< L=!N>"N?"M>!M>!L=!M>!K< J; J; K< L=!K< J; J; J; I:I:I:I;J< K< L=!K< K< K< K< L< L< L< L< L< K< K< J;J;I;I;J;I:I;M>!K< I;I;J;J;I:I:I;I:I:I:I:I;I:I;J;J;J< I;I:I:H9H9H9H9I:I:I:J; L< K< L= M>!K< J; J: K< L< M=!M>!M>!N?!L= K< J;K< J;I:J;K< K< I:I:I:I;I:I:I:K< J;J;I:I;I:I;I;H9H8H9H:H:I:I:I:H9I9I9H9I:I:I:I:I:I:H9I:I:H9I:H9H9J; I: I: I9I:H9H9H9H9H9H9H9H9H9H9I:H9I:I:I:I;I:I:I:I:I:I:J;I:I:I:I; J; J; J; J; L!L=!K< J< J< J< K!N>"O>"N>"N>"O>"O?"N?"O>"O?"P@#P@#QB#QB#RC#RC#SE$TF%UF%UF%OC#VG%G?%RF&TF&07'ovqFS`DTcHWgKZiHWgDR_N^oQ`tTevXiVhO_uIWeJYgIXg?MV"O?"O?"O?"PA#P@#QB#QA#QA#P@#P@"P@#RC#SD$TE$SD$QA#P@"QB#QA#P@"P@"P@"P@"O?"O?"P@"PA"PA"PA"QA#PA#RB#QA#P@#O?"O?"O?"O?"O@"N?"N?"N?"N?"N?"N?"N?"N?"O@"P@"O@"O?"O@"O@"P@"O@"P@"O@"N?"N?"N?"N?"N?"O@"P@"RB#PA"M>!M>!M>!L=!L=!L!M>!N?!N?"O@"O@"O@"PA"RB#PB#QB#PA"PA"QB#PA#QB#QB#PA"O@"O@"N?!N?!N?"N?!N@"O@"O@"P@"P@"N?"N?"N?"O@"O@"N?"N?"N?"M>!N>"N>"N>"M>!M>!N?"N>"N?"N?"M>!N?"P@"QA#QB#O?"QB#RC#QB#N?!M>!N?!N?!N?!N?!N@"N?"N?"N?"O@"O?"N?"N?"N?"QB#QB#O@"PA#PA"PA#O@"O@"PA"O@"N?!N?!M=!M>!M>!M=!L< L=!L< M>!N?!N?"O@"O@"O@"N?"O@"O@"N?"PA"PA"O@"QA#N?"N?"O@"O@"P@"P@#O@"O@"O@"O@"N?"N?"O@"P@"P@"N?"N?"N?"N?"N?"N?"N?"N?"O@"O@"O@"O@"N?"O@"O@"P@"QA#P@"P@"P@"P@"O@"N?"N?"N?"N?"N?"N?"M>!M>!M>!M>!L!M>!M>!N?!M>!M>!M>!M>!M>!N?"N?"N?"N?"M=!L!L=!L=!L=!L< L!N?"L!N?"O?"N?"N?"N>"N>"N?"O?"N?"N>"N?"N>!N>!O?"O?"N>"QA#O?"O?"PA"QA"SD$P@"O@"P@"O?"P@"N?"O@"P@"QA#O@"N?"N?"N?"N?"N?"N?"N?"O?"O@"N?"N?"O@"O@"O@"O@"P@"P@"QB#QB#QB#QB#P@"P@"PA"QA#RC#RB#QB#QA#P@"P@"O@"N@"O@"O@"N?"N?"N?"N>"N?"N?"O?"O?"M>!M>!M>!M>!L=!L=!L=!L=!N?"O@"O@"N?"L=!M>!PA"QB#TE$QA#QB#O@"QB#QB#QB#QB#RB#RC#PA#N?"N?"N?"N?"O@"PA"RC#SD#SD$RB#QB#QB#RC#UE$VF%RD$UF%QA#QB#SE$TE$RC#RC$TD$SD$RB$RB#RB#PA"P@"QA#QA#P@#O@"RC#VH&WH&UF%RC#P@"O?"O?"O?"QA#TE%VG&WH&WH&SD$SC#QA#RB#O@"N?"N?"N?"N>"O?"O?"O@"QB#RC$QB#O?"N?"N>!N>!M=!M=!M!J@$15$BIAx~]kv7GQ4KK8ML:OIFXHDJ=RJ.QB#O@"RC$UF%SD$VG&RC$SE$TE%SD$RC$UF%SC$RB#RC#RC#SC$QA#SD$P@#RC#P@#P@#QA#SD$RB#RC$QB#I@&LB&PA#O@#O@#O@"P@"O?"O>"O?"QB#O?"O>"O?"N?"M>!M=!M=!M"P@"N?"L=!K< L=!K< L=!L=!N>"K< K< K< K< L=!N?"N?!L=!N?"M>!J; J; J< J; J; L=!L!K< L< J; J< K< K< L< L= K< K< K< K< K< K< J< J;I;I;I;K< L= J< K< J;J;I;I;I:I:I;I;I;I;I;I;I;I:L= K< I:H9I:I:I:I:I:I:J; L< L= L= M>!M>!J; J; J; L= L= M=!L= N?!M>!K< L< J;I;J< J; J;I;I:I;I:I:H:H9I:I;K< L= N?"L>!K< I;I:I;I:H9H8H9I;H9H9H:I:J;I:I:J;K< I:H:K< J<I:J< K< J; I:H9I:I:J; J; J; J; J; I:I:H9H9H9H9H9H9H9I:I:H9I:I:I:I:I:I:I:I:J; L< K< J< I;J;K< I; I;J; L"L=!K< J< J< K; L"O?"O?"O?"O?"N?"O?"O?"O?"O?"O?"O?"O?"QA#RB#RD#RD#RB#RD#TE$TE$TF$TF$HA%;=&E@$KD'@LEqzwu{w||^ejIWeDRaETeEUeFUdFVeDTeN]tO_qP_rTeyRdzK]mFT`DR]!N>!N?!N?!N?!N?!N?"O@"O@"N@"PA#QB#QB#RB#QB#RB#QB#QB#QB#QB#QB#PA"O@"O@"O@"N?"N?"O@"P@"QA#QA#QA#P@"N@"N?"N?"N?"N?"N?"N?"N?"N?!M>!M>!M>!M>!M>!N?"M>!N?"N?"N?"O?"O?"P@"O@"P@"SD$RC#O@"QC#PA"QB#O@"N?!N?"O@"N?"N?"N@"N?"N?"N?"PA"UF%PA#PA"RB#RC#RC#RC#QB#QA#RC#QB#PA"O@"N?!N?!M>!N?!N?!L= M>!O@"RC#PA#SE$QB#QA#RC$QB#O@"N?"N?"O@"N@"N?"O@"O@"QB#SD$P@"O?"O?"O@"O?"O@"O@"N?"O@"P@"QB#P@"O@"N?"N?"N?"N?"N?"N?"P@"O@"N?"O@"O@"O@"N?"PA#RB#N?"O@"O?"M>!L=!M>!N?"N?"N>"N?"M>!L=!M>!N?"M>!K< L!M>!M>!M>!M>!M>!M>!M>!N?"N?"O?"Q@#P@"N?"M>!L=!K; K"M>"N?"M>!L=!L=!M>!L=!M>!L=!L=!M>!L=!M>!O?"M"N>"N?"O?"N>"N?"M=!M=!N>"N>"N>"N?"O?"N>"N?"O?"N>!N>"N?"O?"O?"P@"O@"SD$PA"N?"P@"P@"N?"PA"PA#RB#O@"O@"O@"O@"N?"N?"N?"N?"N?"N?"N?"N?"N?"P@"P@"QA#P@"P@"RB#QB#QB#QB#QB#P@"P@"P@"P@"QA#QB#QB#QB#PA#O@"O@"N?"N?!N?!N?"N?"N?"N?"N?"N?"N?"N?"N?"O@"RB#N?"M>!M>!L=!L=!O@"P@"O@"QA#O?"M>!O@"O@"QB#O@"P@"O@"P@"P@"P@"P@"P@"QA#PA"O@"N?"N?"M>!N?"N?"RB#RB#QB#RB#PA#RB#RB#RC#SD$UF%UF%TE$SD$SD#SD$SD#RB#QA#QB#QB#SC$RC#TE$RB#PA#P@#P@#O?"P@#RB$UF%UF%RC$O?"P@"P@"QB#UF%VG%VG&VG&ZL(UG%QA#RB#RC#P@"P@#P@#P@#N?"O@"O@"QB#QA#SD$O?"O?"N>!M=!M=!M=!N>!M=!L!84(1&QVNMRL||S]aBOW8LT0GF?SKOQ8YM*VG&TE$SD$QB#UF%VG&XH'WH'VG&UG&VG&RC$RC#SD$TE$RC#QA#RC#RC$UF%PA"QB#RC#SD$P@"P@#RC$RB#RB#SD$QB$OA$M@$OA#OA"QB#P@"P@"P@"P@"QB#QA#P@"O?"O?"O?"N>"N>"M>"M=!M>!M=!N>"N>"O?"QB#O>"M=!N>"O>"M=!O?"M>!L=!K< L=!K< K< K< K< K< L=!J< J; K< K< J; J; K< K< J< J; J; J; J; J; J; K< L=!K< L=!K< K< K< L< M=!K< L< L= L< K< L= L< K< J< I;J;L= L=!N?!I;J<J< J< I;I:I;H:I;I;I:I;I:K< J; I:J:K; J; I: I:I:I9I:J;J; J; N>!N?!L= L= L= J; K< K; I: K< N?!L< J; K< K< K< J;J;I;J< L< J;J;I;I:I:H9H9I:I;J<K< K< J< J;I;I;I:I:H9H9H8H8H8H9I:H9I:I:I:J; J; I:L=!L= I:H:K< J; J< J; H9H9H9H9H9I:I:J; J< I: I:I9H9H9H9H9H9I:I:I:J; I:I:J; I:I:J; I:L=!K< I;J; I;I:I:J; J< J; J: J:J:J; J: J; J:K; L=!N>!O@"N>"K< L"M=!M=!M=!M=!M=!M=!M=!M=!M=!M=!M=!M=!M!N>"N?"O?"O>"O?"O?"O?"O?"P@"O?"O@"O?"O@"P@"P@"RC#RC#RB#RC#SE$TE$UF%WH&RF&9:'29(@@(DC,BK@jph`irDTcDSbARdCScCQ_AQ_@N[>KXIXgZl\oUf}GXhBQ^5FO=NWFT\UM3YJ'VG&XJ'[M(\N)[N(ZL(XJ'YK'ZL(YK'YK(YK'XJ'WI&UF%PA"P@"PA"SD$WH&ZK(YK'XI&WH&WI&YJ'ZK(ZL([M([M(XI'WH&XI'YK'XJ'XI'YK(XJ'VH&XI'ZK(YK'YJ'VG%XJ'XI'YJ'XJ'XI&YJ'XJ'WH&WH&VG%TE$VG&WH&XI&WH&XJ'YJ'WH&VH&XJ'XJ'YK(XI'VG&XI&ZL'XI'XJ&UE$WH&WH%UG%TE$UF%WH&WI'VG&UF%SD$SD$QC#RC#RD#SD$TE$SD$RC#RC#SE$SE$SE$SD#RC#RC#QB#QB#QA#QB#QB#RC#RC$QB#PA#QA#QB#SD$SD$TF%TE$SD$RD$P@#P@"RB#RC$TE$VH&WH&VG&SD$TE$SE$TF%TE$SD$QB#RB#QB#RB#TE$TE$SD$RC#UF%SD$QB#RC#QA#O?"O?"O?"QB#TE%VG&UF%RC$QA#TE$SD$RB$PA#P@#QA#P@"RC#QC#RC#RC#RC#QA#QA#P@#O?"P@#PA#QA#UF%TF%SD$SD$TE%RB#RC#RB#P@"QA#QB#QB#RC#QB#RB#RC$SD$QB#VG&TE%RC$SD$SD$P@"O?"QA#O?"P@#P@"O?"O?"O?"O?"O@"P@"RC$RC#RC$QB#QB#RC$RB#P@#O?"P@#O@"O?"P@"P@"O?"O?"QA#PA#P@#O?"O?"O?"O?"PA"QA"PA"PA"P@"O@"P@#O@"N?"N?"O@"N?"N?"O@"N?"N?"N?"O@"P@"O@"O@"P@"P@"O@"N?"N?"N?"P@"P@"P@"O@"P@"PA"O@"N?"O@"O@"QB#QA#P@"O@"O@"P@"P@"O?"N@"O@"O@"O@"PA"SC$RB#RC#RC#RC#RC#RC#RC#QB#RB#QB#O@"O@"O@"N?"N?!O@"QB#QB#PA"P@"O@"N?"N?"N?"N?"M>!M>!N>"M>!N?"M>!N?"N?"N?"M>!N>"M>!M>!N?"O?"N?"QA#RB#QA#QB#SD$QB#O@"QB#SD$RC$O@"O@"PA#O@"O?"O@"N?"N?"N?"RC#RC#RC#PA#QB#SC$RC#RC#RB#RB#QB#RC#RC#SD$RC#P@"O@"O@"O@"O@"N?!N?!L= PA"UF%TE%RC$SD$TE%RC#RB#PA#QB#O@"N?!N?"O@"M>!N?"SD$QA#SD$PA"O@"O?"O?"O?"N?"N?"O@"QB#PA#O@"N?"N?"N?"O@"O@"N?"O@"O@"PA#Q@"QA"SD$RC#P@"RB#O@"O@"N@"O@"M>!M>!L< L= N?"N?"N>"L=!M>!N?"M>!L=!L=!L=!L< K< K< L!N?!M>!M>!L=!M>!M>!N?!N?"O@"O@"N?"O@"N?"M>!M>!L=!K< K< L!N?"L=!N>!N?"M>!N?"M>!N?"PA#N?"O?"L=!N>!O>"N?"M=!L"N>"N?"N?"N>"PA#O?"N?"O?"O?"N>"O@#O@"O?"O?"N>"P@#P@"P@"N?"O?"P@"O?"QB#QA#PA#P@"PA"P@"P@"QA#O@"P@"O@"O?"O?"O?"N?"N?"N?"N?"N?"N?"N?"N?"O@"QA#P@"QB#QA"RB#PA"QB#RB#RC#QA#PA#QA#P@"P@"QB#QB#QB#PA#PA#QB#PA"N?"N@"N?"N?"QB#O@"N?"N?"N?"N?"N?"QA#RB#O?"O?"O@"M=!M>!M>!O@"QB#SD$RC#QA#O@"QB#PA#O@"P@"O@"O@"P@"QA#PA"QA#QB#PA#O@"O@"PA"M>!M>!N?"P@"QB#SD$QA"QB#SD$SE$TE%VG%XI&XI&WH&TE$SD#TE$SD$PA#P@"QA#RC#SD$TE%VH&VF%SD$SD$RB#P@#QA#RA#QB#SD$SC$P@"P@#QB#TE$TE%UF&SD$VG&XI'WH&SD$QB#P@"QA#QB#P@#P@#RC#QB#QB#RC$SD$UF%P@"O?"N>"N>!N>!N>!N>!N=!M=!M=!M=!M=!M>!B?+RWQx}{5<8GT^9JW9GO9N[6PP[R/UF%SD$RC$RB#RC$QB#UF%WH&WH&UF%TE%VG&VG&SD$RC$RB#QB#P@"O@"QB#QB#TE$SD$QB#SD$O?"P@"P@#RC#PA"QA"TE%TE$QB$RD%PB$O@#O@#O@"P@#P@"O@"O@"PA#P@"O?"SC$PA#M>!N?"N>!M!N=!N=!M=!N=!L!K< K< L=!L=!L=!L=!L=!L=!L< L= K< L< L< L< K< L< L< K< J; K< J< K< L= J< I;J;K< I;I;I:I:I;I:I:I;I;H:I:I:I:I:J; J; J; I:H9I:I:J; K< K< L< L= L= M=!L= M>!M= K< L< K< M>!L=!K< L< L= K< L= L= K< J; J;I;I;I:I:I:J< J;J;J;I:J< L= K< L< J; I;I:I:I:J;H9H9H9H9H9H8H8H9I9H9J; K< J;L=!I;J; I:K< I:I:H9H9H9H9H:I:H9I:H:K< K< I:I:H9H9H9I:I:I:J; J; I:I:I:I:I:K< J< L=!K< J; J< J; J; I:J; I;I;J:J: J:I9J; J; J:J< K< M=!L=!M=!M=!N=!L!K< L=!J< K< K< K=!L=!K=!L=!L=!L=!M>!N>"N>!M>!M=!M=!M=!L=!M=!M=!M=!M=!M=!M>!M>!M=!M=!M=!N>"N>!M=!N>!N>"N>"O?"O?"O?"P@"O@"O?"O?"O@"P@"P@"P@"P@"QA"QA#SE$UF%VG&XL*UH&5:'1:+HF->B1\e\M\nDUf?Qb=KXDSbReyQatAQbPatQdwPdy@S_>Q[@QYAR[UQ7ZK'XI'XJ'ZK(\P)^Q*[N(ZL(YJ'ZL(ZK(YK'YJ'YK(XJ'TF%RC#O@"O@"PA#QB#SD#VH&XI'XI&WH&XI'WI'YJ'XJ'YK'ZL(XI'YJ'WH&XJ'XJ'WH'WH&UG%RC#VG%UF%UG%XI'WH&YJ'XI'XJ'XI'YJ'XI'WH&WH&WH&TF%VG%XI&XI'XI'XI&XI'VG&ZL(XJ'WI&YJ'XI'UG%UF%VG%XJ&ZL'XJ&RC#YK'VG%VH&WH&XI&VH&UF%TF%TE$TE$RC#SC$TE$SD$RC#RC#RC#RC#RB#QB#RC#SE$TE$UF%TF$SD#SD$RD#SC#RC#RC#RC#QB#P@#P@#QB#RC#SD$TE%RD$TF%UF%RB#RC$TE$TE$XI'UG%XJ'UF%SD$TE%SD$TE$UF%SD$PA#SD$UF$UF%TE$UF%SC#RB#TE%SC#P@"O?"O?"N?"M>!O?"O?"P@#QA#P@"QA#QB#PA#SE$SD$P@"P@"P@"P@"P@"P@#QA#SD$QB#P@#P@#P@"P@"O?"O?"O@"QB#QB#RC$RB#P@"P@"PA"PA"QA#QA#SD#VG&RC#RB#UF%VG&TD$RC#TE$RC$QA#QA#PA#P@"O?"P@#P@"QA#QA#P@"P@"O?"N?"N?"P@"QB#RB#RC#QB#QB#RC#SD$QA#O?"N?"N>"P@#PA"O@"P@"P@#O?"O?"O?"O?"O?"O?"O?"O@"PA"P@"O@"N?"N?"N?"N?"N?"N?"P@"O@"N?"O@"O@"O@"N?"N?"O@"P@"O@"P@"QB#O?"N?"N?"N?"P@"P@"O@"N?"N?"N?"O@"QA#RC#RC$QA#Q@"QA"O@"N?"O@"QA#QB#TE$QB#O@"N?"P@"TE$SD$UF%RC#RB#RC#RC#RC#RB#RB#QB#PA#PA"O@"N?!N?!O@"PA#RC#PA"P@"P@"O@"N?"N?"N?"N?"N?"N?"PA"O?"N>!N?"N?"N?"N?"N?"N?"N?"N?"N?"O?"RC$SD$SC$VG%XJ&TF%SD$QB#O@"O@"PA"O@"PA"PA"QA"RB#RC$QB#QA#UF$WH&TF%PA#QB#RC#RB#RB#RB#RB#RC#RC#QB#RC#SD$RC#PA"QB#P@"PA"PA#O@"N?!N?!SD$VG&VG&TF%TE%QB#TE%SD$QB#PA"L= N?"N?"K!K< K; L< L< L!N?!N?"M>!L=!L=!L"M>!M>!N?"M>!O@"N?"M>!M>!N?"M>!M>!M>!M=!M>!L=!L=!L=!L=!L=!M>!N?!M>!O@"N?"N?"RC$RC$O@"L=!L"M=!N>"N>"N?"P@"QA#O?"P@"RB#P@"O?"O?"SD$RC#O?"P@"QA#QA"P@"N?"QA#QB#SD$QB#RC#RB#P@"N?"O@"N?"O?"O@"O?"N?"M>!N?"N>"N>"N?"N?"N?"N?"P@"SD$QB#QA#QB#P@"P@"P@"P@"QB#QB#QB#PA"QA#P@"P@"P@"P@"PA"PA#PA"N?"O@"O@"O@"N?"N?"N@"O@"O@"O@"N?"PA"O@"O@"P@"N?"N?"N?"N?"P@"QB#SD$QA#P@"O@"O@"N@"P@"O@"O@"P@"QA#TE%TE$VH&TE$RB#PA#O@"N?"N>!M>!M>!N?"P@"RC$QB#RC#TE$UF%VG&UF%VG%XJ'SD$SD$RC#RC#QB"P@"P@"P@"SE$TE$UF%WI'UF%TF%SC$SC$TE$RC$QA#UF%VG%RC#SC$TE$QB#RC#SD$SD$VG&VG%WH&UF%SC$SD$O?"P@"N?"P@"P@"RC$TE%SD$QB#QB#QB#N?"N?"O?"P@"N?"N=!N>!N>!N>"M=!N>!G: .1$W[UZ`\^dh[foLYbHVcXfuK^k2KU7NHXJ'RC#RC#RC$QB#RC#PA#SC$TE$TE%SD$RC#RB#RB#PA#P@"QA#QB#O?"RB#PA#P@#RC$PA#QB#RC#PA#P@#O?"RB#RC#SC#RC$QB$QB$QB$PB#O@#PA#PA#RB#O?"N>"P@"QB"QA"O?"QA#O?"N?"RB#M="M=!N>"K; L=!K; M=!N>"O?"QA#M=!M=!L=!L!K< L< K< J< J< K< K< J; J; J; I:I:H9I:J; J; J; J; J; K< M>!N?"M>!M>!L=!L=!L=!L=!L=!L< L< K< L= J;J< K< L< L= I;J;L< K< J; K< I;J;K< K< J< J; J;J;I;I;I;J;J; J; I:I:I:J; K< K< I:I9H9H9H9H9I:J;K< L< L= L= M>!O@"L=!L< J< K< L= L= K< K< K< K< L= L= K< L= K< J;I:I:I:I;I;J;M=!K< L=!K< L= J< I;I;I:H:K< K< I:H9H9H9H9H:H8H9H9J; J;L< J< J< K< J< J< I:I:J< I:H9I:I:I:J; I9I:H9H9H9H9H9H9H9I:I:J; J; I:I:I:I:I:J; I:I:I:I;J; J; J; K< K< J; J; J; J; J; J; K; J; J:J: J; J; J< J< K< K< L=!M=!M=!L!M>!L=!M=!M=!M=!M=!M=!M>!M=!M=!M>!N>"N>"M"N?"O>"O?"O?"O?"O?"O?"O@"PA"QA#PA#QB#RC#RC#UF%WH&WH&UH&8<*%2*AB,NSD{floKXa@N[CRbDTdCTe=N\FWfFZiBQ_PauN`pM`rBTaGSTMOEYN-XM*XK)YJ'XI'WH&YJ'[N(ZM(YJ'XJ'YJ'YK'YJ'YK'YJ'YK'YJ'SD$QB#O@"O@"QB#RC#RB#TE$WH&XI'XJ'XI'WH&XJ'XI'YJ'WH&UF%VG&VG&UF%VG&YJ'XI'RC#SD$VG&TE$ZK(XJ'WH&WH&VG&WH&VG&VH&VG&UF%UF%UF%TE$UF%WH&WH&XI'XI'WI&XI'YJ'YK'VG&WI&WH&UF%UF%UF%WH&XJ&XJ'VF%UF%XI'YJ'ZL([L(VG%TE$TE$VG&VG&SD#RC#UF$TE$RC#RD#SD$QB#QB#QB#QB#RD#RC#RD$SD$RC#TD$TE$TE$SD$SD$RC#QB#P@#P@"PA#QC#SD$SD$WH&XK(YK(WH'YK(UF&SD$VG&VH&WH&UF%TF%TE$RC#TE%SD$TE$QB#QA#SD#RC#QB#QB#RB#QB#RB#QB#O@"O?"P@"O?"O?"O?"O?"P@#P@"O?"O?"QA#RB#RB$O?"O?"O?"O?"P@"O?"P@"P@"QB#RC#QB#QA#P@#P@#O@"O?"O?"O?"PA#PA#RB#QB#P@"O?"QA"PA"RB#QB#RB#P@#QA#RC$SC$RC$RB#RC#RC#QA#P@"QA#P@"O?"P@"P@"P@#P@#PA#P@"O?"O?"O?"O?"P@#PA#SC$RC$RC#RD#RB#P@"O?"O?"O?"QA#PA"O?"P@"QA#P@"O?"N>"N>"N>"N>"O?"P@"P@"O@"N?"O@"O@"P@"N?"N?"N?"N?"N?"O@"N?"O@"O@"N?"O@"P@"P@"PA#P@"QA#PA#N?"O?"O@"O?"O@"O@"N?"O@"N?"O@"O@"RB#TE$QB#P@"O@"N?"N@"O@"QA#QB#SC$SD$O@"N@"P@"RC#RC#RC#RC#QB#RB#RB#RB#RB#RB#RB#PA"O@"O@"N?!N?!O@"O@"RD$QB#QA#P@"P@"N?"N?"N?"N?"O@"O@"PA"O@"O@"N?"N?!N?"N?"N?"N?"N?!N?"N?"N?"O@"SD$UG%XI&YJ'WH&TE%RC#O@"PA"SD$VG%WI&[N([M'WH&SC$QB#P@"SD$XI&XJ&PA"O@"RC#TE$UF%UF%SD$QB#QB#QB#RB#RC#SE$UF%QB#PA"QB"RB#PA#N?!O@"QB#SD$SD$SD$QB#QB#QB#QB#SD$PA#N?!M>!N?"N?!N>!M>!M>!M>!QB#RD$RD$PA"QB#N?"N?"N?"N?"N?"O?"O@"QB#QA#QA#P@"P@"QA#QA#O@"O@"P@"QA#PA"QA#RC#N?"N?"P@"QB#QB#RC#O@"N?"M>!M>!L= N?"N?!O@"O@"M>!L=!M>"M>!L!N?"O@"P@"P@"O@"PA#QB#N?"PA#P@"M>!L=!M>!N?"M>!M=!M>!M>!M>!N>"L=!L=!M>!M>!M>!N?"N?"N?"N?"O@"P@"PA#L!N?"N?"N?"O?"N>"M=!N=!N>"P@"QA#QB#P@"RB#QB#O?"O?"O?"QB#RC#PA"PA"RC#SD$QB#P@"O@"QA#QA#PA"RC#RC$O@"N?"N?"N?"N?"O?"O?"N?"N?"N?"N?"N?"N?"N?"O@"N?"O@"QA"QB#SD$SD$P@"O@"O@"PA"PA"P@"PA#QA#QB#QA#P@"P@"P@"P@"P@"P@"O@"O@"N?"N?"N?"N?"O@"N?"O@"RC$N?"P@"PA"RC#N?"N?"N?"N?"N?"N?!QB#O@"O?"N?"N?"N?"O@"P@"O@"O@"P@"SC$RC#SD$TE$RB#RC#QA#O@"O@"O?"O?"N?"O@"P@"QB#RC#SD$VG%UF%VG&VG%XJ'WH&UF%SD$RB#SC#RB#PA"PA"UF%VG&XI'VH&RB#RC$UF%TE$UF%RB#TE%VG&VG&TE%RB#VF%TE$SD$RC$QB#SD$RC#VG&VG&VG&SD$QB#O?"O?"P@"RB#SD$QB#RC$SD$RC$RC$RB$QB#O?"N=!N>!N>!N>!N>"N>!O?"N>"G;!(.$=D>&.%dovY``Q_i"O?"N>!M=!O?"N>"P@"RC#RC$QA#P@"P@"P@"RC$RC$QB#QB$PA#QB$P@#P@#QB$QB#P@"P@"PA"RB#P@"P@"P@"P@"N?"N>"N>"N>"N>"M=!N?"M=!N>"O?"O?"N?"N>"N>"N?"M=!M=!M=!N>!N>"N>"K< K< J< I;J; J; I:I:I:H9H9I:I:I:I;J; J; N>!L=!M>!L=!M>!M>!M>"L=!L=!L=!M=!M>!L= M=!L= J< K< L< J;I;I;I;I;J;I;I;J< J; I;J; J< J< J< I;I;I;I:J: K< J; I:J;K< K< L< K< I: J; K; J; J; I9 H9I:J;K< J; K< M>!M>!L= M= O@"L= N>!K< K< M= L= L= L= K< L= K< L= J;J;J;I;J;K< L= N>!L= M= K< J;K< J< I;J; J< J;J;K< H:I:H:J; J;H:H9H8I9I;J; J< J;L=!M>!L= J; K< K< I:I:J; I:H9H9H9I:I:I9H9H9H9I:I:I:I:J; I:K< J; I;I;I;I;I:J;J; J; J; J< J; J; J< J; J; K< K< L< K; K< J; J; J; J< J< J< J< K< K< L"P@"N>"M>!M=!M=!M=!M=!M>!M>!M=!M>!N?"N>"M"M"O>"O>"O?"N?"N>"O?"O?"O?"O?"N?"P@"QB#QB#RC$QA#QB#TE$VG&WH&KD'/8(18(8=,^e]`g`R]Zt||W`eHU`?O\7GVAP_FXlJ]pDUdF[eUgxEVeHZiFVbFPK\P+\P)[N(ZL(XJ'XI'WG&VG&WH'XI'XJ'XI'YJ'YJ'YJ'XJ'YJ'ZK(ZK(YJ'RC$O@"O@"O@"QB#RC#RC#SD$XI'XJ'YJ'XI'XI'XI'XI'WH&VG&VG&TE%TF%TE%VH&XI&UG&TE%SE$RC#UF%WH&TF%WH&UF%TF%TF%TF%TF$TE$UF%UF%TE$VG&VH&WI&WH&UF%XI'XI'XI'XJ'ZL'YK'ZK(WH&VG&VF%VG&WH&UG%XI&VG%WH&TE$WH&XI'VH&XJ'VH&VG%WH&YJ'SE$SD$SD#VH&VH%YK'YJ'XI&VH&SD$PA"PA"QB#RC#RD#TE$SD$SD#SD$SD$VG&VG&WH&SD$O@"PA#RD$TE%TF%XJ'WI&SD$SE$TE%SE$UF%UF%VH&UF%TF%RC#RC$RD$RC#UF%VG%VG&RB#P@#QA#QA#P@"O?"QB#RC#SD$P@"O?"O?"N?"O>"N>"O?"N?"N?"O?"P@#PA#SD$QB#O?"O?"O?"O?"O?"O?"O?"P@"P@"PA#QB#QB#QA#RB#QB#O?"O?"O?"PA#PA#QA#P@"P@#P@#P@"O@"O?"P@#P@"O?"O?"O?"P@#QB#QA#RC#RC#RC#RB#QA#P@"P@"O?"P@"P@"RC$QB#P@"O?"O?"O?"O?"O?"O?"P@"QA#RC$RB#O?"N>"O?"QB#P@#P@"P@"O?"N?"N?"N@"N>"N>"N=!M=!M=!N>"O?"O@"P@"O@"P@"QB#QA#PA"O@"N?"N?"N?"N?"N?"O@"O@"O@"P@"P@"O@"P@"QB#QA#P@"O@"P@"O@"N?"N?"N?"N?"N?"N?"O@"P@"O@"QB#QA#QA#O?"P@"P@"PA#RB#RB#QB#QA#O@"O@"P@"P@"PA"PA"PA"RC#RC#QB#Q@"QB#RC#RB#PA#O@"N@"N?"N?"O@"O@"PA"RB#QB#RB#P@"O@"N?"N?"O@"N?"N?"N?"N?"O@"N?"N?"N?"N?"N?"N?"N?!N?"N?!M>!M>!QB#XI&YK&ZK'ZL'TF%VG&RC#PA#XJ'[N(]P(^Q)SD$O@"N?"O?"N?"P@"SC$ZL'WH%PA#SD$WH&XI'VG&VG&TE$SD$SE$RC#RC#SD$SD$SD$QB#QB#QB#QB#PA#O@"QB#PA"O@"QB#O@"N?"PA"QB#RC$RC$P@"M=!M> M=!M=!M=!L"M=!M=!L= M>!M>!M>!N>"M>!N?"O@"QA#QA"PA#PA#P@"QA#QB#O@"O@"O@"RB#PA#PA#PA"QB#QA#PA#QB#RC#RC$QB#SD$QB#L= M>!N?!PA#O@"O@"N>!K< K< M=!L= L>!L!M>!M>!N?"N?"N?"O?"Q@"QB#RC#QA"P@#N?"M>!N?"N?"N?"M>!M>!L=!M>!N?"M>!M>!N?"M>!N>!M>!N?"N?"N?"O@"N?"O?"M=!M"O?"M=!N=!P@#SD$QA#PA"QB#P@"N>!N>!M!P@"P@"N>!N>!O?!P@"O?"K>!&, DKG8B:-C?9KI,AGmy~TgsG\oDZj.J\:IBSD$QB#QB#O@"O?"O?"O?"O@"P@"QA#QA#QB#P@#O@"P@"P@"O?"O?"O@"O?"N>"N?"O?"P@#M"N?"O?"N?"O@"O?"P@"P@"P@"O?"O?"N>"N>"N>"N?"N?"O?"P@"O?"O?"N>"O?"O?"P?"P?"M=!QB#RB#O?"M>!N?"L= K< J; J; J< J; J; I:I: I:I: I:I:I;K< N>!M=!M=!L=!L=!M>!N>"M>!M>!M>!M>!L= N?"M>!L= L= K< M>!J;I;J;J< J;I;I;I;I;I;J; J;J;I;I;I;J; K< J:J; K< J; I:I:L< L< K< J; L< K< I: J; K< L< J; J:J:I9K; L< M>!K< K< J; N?!N>!O@"N?"N?!L= M> M>!L< L< J< J< J< J< I;K< K< I;J< K< H:J< J< J;J;J;I;J;I;I;I;I;J< N?!O@"J; J< K< J; H9H8H8H9H9I;J; L=!K< I: I:J; L"M=!M=!M=!L=!M>!L=!L!N?"P@"N>"N>"N>"M=!M=!M>!M=!M>!M>!M=!M>!M>!M=!L"O?"O?"O>"N?"O?"O?"O@"O@"P@"P@"PA"TE$VG%TE$SD$UF%WH&HA&=A32<32:-7=,U_YyDPZBP\NT[S2\N(\P)[M(ZK(XI'UF%UF%TF%VG&VG&VG&XI'YJ'XJ'XI'XJ'XI'YK(ZL(XI'TE$QB#PA#PA"QB#RC#RC#TE$XI&YJ'YK(XI'ZK(XI'YJ'WH&WH&WH&UF%TE%RC#TE$TE%UF%TE%SE$SD$UG%TF%UF%UF%VG&TF%SE$TF%TF%TF$UF%UF%SE$UF%UF%VG&WH&VG&XI&XI&YK(\N(ZL(YJ'YJ'VG&VG&XI'ZL(WH&UG&XI&YJ'YK'TF%YJ'XJ'VH&YK(YK(YJ'WH&UF%UF%XI&XI'XJ'\N)\N)ZL(]O)YK(UF%RB#RB#UF%UF%TF%UF%SD#RB#RC#SD$XI'XI'XJ'VG&TE$RC#RD$SD$SE$UF%RC$RC#RB#SD$VG&UF%UG%VG&UF%VG&SD$RB#VG&RC$UF%UF%RD$PA#P@"O?"PA"P@"O?"QB#RC#QA#RB#QA#O?"O>"O>"O>"N>"N>"O?"O?"O?"PA#P@"O@"O?"O?"O?"O?"O?"O?"O?"O?"P@"P@"P@"PA#P@#QB#QB#QA#QB#QA#RB#SD$QB#O?"P@#QA#P@#QA#P@"QC#RC$P@#P@"P@"P@"QA#SD$QA#PA"RB#QB#RB#QA#PA#QA#QA#QA#RC#RC#P@"O?"O?"O?"O?"O?"O?"O?"O?"P?"O?"N>"M=!N?"O?"QB#QB#SD$P@"PA#O@"N?"N?"N>!M>!M=!M=!N>"N?"N?"N?"N?"N?"N?"N?"O@"O@"N?"N?"N?"O@"N?"O@"P@"O@"O@"O@"O@"P@"P@"O@"O@"O@"P@"N?"P@"P@"O@"O?"N?"N?"QA#QA#O@"P@"O@"QA#P@"O@"N?"RB#SD$QB#QB#PA#QA"O@"O@"P@"P@"QB#QB#QB#RC#SD$RC#QB#QA#P@"O@"O@"O@"PA#RC#O@"O@"N@"O@"PA#RB#QA"P@"O@"O@"O@#N?"N>!N?"O@"O@"N?"O@"O@"O@"O@"O@"N?!N?!N?"M>!L=!L= TF%ZM']P(ZL(TE$SD$VG%WI&VG&YJ'\O(\O(VG%N?"N?"O@#PA#RB#UF$WI&ZL'ZK'XI'XJ'WG&WH&WI'XI'UF%RC#RC$RC#RB#PA#QB#RB#RC#PA"O@"P@"N@"QB#QB#N?!PA"O@"PA#PA#M>!M>!M>!L= L< L< L< L< L=!L=!J< J< L!M>!N?"N?"O@"PA"P@"P@"P@"P@"P@"P@"O@"O?"O@"N?"M>!QA#P@"QB#SC$SE$QB#SD$UF%TE$TE$PA#N?"PB#RC$O@"O@"M=!K< K< L< L< L< L< K< L!N>"N>"N?"M>!N?"N?"O@"P@"QA#QA#P@"O@"N?!N?"N?"N?"M>!M>"L=!L=!M>!N?"N?"N>!N?"N?"N?"M>!N?"O@"N?"O?"N>"M>"M=!M=!N>"O?"N>"M=!M"N?"O?"O?"O?"P@#N>"M=!P@#PA#RC#P@#P@#P@"N>"P@"N>"P@"UF%SC$TD$RC#RB#P@#P@#TD$RB#TD$UF%P@"N?"N?"N?"N?"N?"O@"P@"P@#P@"P@#P@"P@"N?"N?"N?"O@"N?"N?"O@"RB#QA#P@"RB#P@"P@"QA#RB#QA#QB#QA#P@"O@"O@"PA#P@"P@"P@"P@"P@"PA#PA"O@"O@"O@"O@"P@"O@"P@"PA"RC#PA"PA#P@"P@"P@"P@"N?"P@"QA#O@"N?"O?"O@"O@"O@"O@"O@"O@"O@"O@"PA"RC$RB#RC#P@"O@"O@"O@"O@"P@"QA#SC$TE$TE%VG%TD$VG%SD$SD$SD$TF%SD$P@"P@"P@"P@"P@#Q@#PA"PA"RC#RB#QA#QA#RB#RC$QA#QA#TE$UF%WI'WH&TE$QB#SD$SD$SD$TD$UF%VG&TD$QB#RB#TE$QB#P@"RC#RB#RB#SD$RC$TE%TE%SD$RC$PA#PA#P@"PA"PA#RC#P@#P@#QB#QA#PA#:7!&1)FNH!2(0FC-GA0JD/KG*FA.FF&@D/?3ID+P@"QB#RC$O?"O?"PA#PA#QA#P@#P@"O?"O?"O?"PA"QB#QB#PA#PA#PA#TD$RB#N?"PA"P@"QA#RC$SE$VG&SE$SD%TE&TE%TF%SD%QB$QB#QA#PA#P@#O@#P@#O@"O?"O?"N>!N>"O@"P@"O?"O?"P@"P@"O?"O?"P@"O@"PA#PA#RC#QB#O@"O@"O?"O>"P?"P@"O?"O?"PA#P@"O?"N>"M=!L=!L= M> K< K= K< K< J; J; I: I:J;J;J; K< M=!M>!N>!M=!M>!L=!M>!N?"N>"M>!N>!M= M> M> L=!M>!L=!L=!K< J; J< J< J; I; J; J< J; J<K< J< J;J;J; K< K< J; J; J< K< K< I:I:K< L>!M= M= J; L= K; K< K< L< I:L= K; H8I9J; L< L= M>!PA"N?"O?"QB#PA"M>!N?"N?!M>!O@"L= L= L= L= L< J;L=!L= J; J; K< I:I:M>!PA"K= I:I:L< K< J< J;J< L= M>!O@"J<K< M>!L= H9I:I:I; I:J< J;I:H:H9H9H9I9I:I:H9I:H9H9I9J; H9H9I:J; I:J; H9I:I:I:I:K< L=!J< K< K; K< K; J; K< K< J; J; J; K; L!M=!M=!M=!M=!M=!M=!M=!N>!M=!N=!N>"N=!N>!N=!N>"N=!M=!M=!M=!M=!L=!L=!K< L=!L=!K< M>!N?"M>!L=!L=!O?"O@"M>!O@"N?"M=!M=!M>!M=!N>"N>"M>!M>!M=!N>"N>"M=!N>"N=!N>"L=!M>!N?"N?"O?"N?"N?"O?"N?"O@"PA"QB#QB#QB#RD$TE$UF%WH&XJ'::$$1*6@;'5-PUDgos]is>LZ?O`BQbCScFWhNbv@Q^=P\K\hKUQ]P)[N(\P)[N(ZK(YJ'WH&UF%UF%UF%UF%TF%VG&XI'WI'WH&XJ'XI'XI'ZL(XI&RC#QB#QB#QB#SD$SD$SD$TF%WH&XI'YJ'XJ'\O)\O)ZL'XI'VG&WH&WH&VG&UF%VH&UF%VG&TF%TF%UF%TF%TE$TE$VG&XJ'YJ'UF%UG&YK'WH&UF%TE$SE$SE$SE$TF$UG%UF%WH&]O)^R*[M([M([N(XI'WH&WH&XI'WH&VG&VG&VG&XJ'ZL(WH&YK'ZL'YJ'XJ'[M([M(WH&VH&VG%YK(YJ'VH&VG&ZL'ZK'YJ'XI&RC#UF%WH&XI&YK'XI&UG%TF%SD$RD#TE%WH&ZK(XJ'YK(WH&WH&TE$TF%SD$RC#QB#P@#RB#TE$VG&VG&UF%WH&XI'XI'VG&SD$VG&UF%SC$RB#SD$QA#QA#P@"PA"O@"O@"RB#UF%RC#RC#P@"O?"O?"O>"O>"N?"N>"O?"O?"P@"O?"O?"N?"O?"O>"N>"O?"O?"O?"O?"P@"P@#P@#PA#P@#P@#P@#PA#P@#QB#QB#QB#TE$RC$PA#QA#P@"O?"P@"P@"O@"QB#QA#QA#PA#P@"P@#P@"O?"P@#P@"RB#UF%VG&SC$UF%QB#QA#P@#QA#P@"O?"O?"O?"O?"O?"O?"N?"N?"N>"N>!M=!N?"O?"O?"P@"P@"SD$QA#QA#P@"N?"O?"O?"N>!O?"O?"N>!N>!M>!N?"N?"N?"N?"N?"N?"O?"N?"N?"N?"O@"N?"N?"P@"O@"O@"P@"O@"P@"P@"P@"P@"P@"QA#QB#QA#QA#O@"O@"N?"N?"O@"RB#TE$TD$PA"P@"P@"P@"O@"O@"QB#RC#RB#QA#O@"O@"O@"P@"QB#QA#QB#QB#RB#QB#RC#QB#QB#P@"O@"O@"O@"P@"O@"O@"N@"N@"N?!N?!O@"P@"P@"P@"QA#QB#QB$N?"N?"P@"P@"O@"P@"P@"O@"P@"P@"O@"N?!N>"M>!M>!L= M>!TE$[N'ZL'XJ*RC$UF%WH&XI'WI*XJ(WH&PA#N?"PA"P@#SD$SC#RC#RD$VH&ZL(WH&VG&XI'XJ'WH&XI'XI'TE$RC#RB#QB#QB#PA"O@"O@"PA#QB#QB#P@"PA"O@"N?!O@"O@"O@"PA#L= L= L= L< M>!N?!L= K< K< L=!K< J; K< K< K< L< M=!L=!L=!M>!N?"M>!N?"N?!O?"O@"P@"P@"P@"P@"P@"O@"N?"N?"N?"P@"P@"PA#RB#PA"QB#PA#QB#RC#SD$RD$PA"M>!O@"QB#O@"N?!M>!M>!M= K< L= K< I:I:I:J; J; J; K< M>!L=!L=!M>!M>!M>!N?"M>!M=!M>!O@"N?"N?"O@"QB#O@"N?"N?"N?"N?"M>!N?"N>"M>!M>!N?"N?"N?"O@"N?"N?"N?"M>"O@"P@"N>"N>!N?"N?"N>"N?"N>"N?"M=!M=!M=!N>!N?"O?"O?"O?"QA#N?"O?"RC#O?"P@"O?"O?"QA"SD$SC#TE$TD$WH&WH&VG%UF%TE%VF%SD#SC#QA#SD$TE$QA#N?"N?"N?"N?"N@"O@"P@#P@"O?"O?"O?"N?"N?"O@"N?"N?"N?"N?"O@"QA#N@"PA"QB#PA#P@"P@"QB#QB#QB#QB#QB#QA"P@"P@"P@"P@"QA#QA#QB#QB#QB#P@"O@"O@"RB#QB#RA#QB#RB#PA"PA"PA"QB#QB#P@"N?"O@"RC#PA"O@"O@"O@"O@"O@"O@"P@"P@"SC$QA#PA"O@"QA#QA"QA"P@"P@"P@"O@"N?"O@"P@"SD$XJ'VG%VG%WG%UF%VH&VG%SD$SD$TE$RB#RB#SD$PA"QB#SC#RA#QB#QB#QA#RC#SD$QB#P@#P@#P@"P@#P@#SC$TF%TE$TE$WH&VG%TE%UF%TE$VH&UF%VG&TD$SC#P@"P@#SD$SD$P?"P@#QA#RC$RC$TE%QA#PA#O?"P@#SD$QB#RC$QA#SD$SC$QB#PA#O@#97"46#EE+(>23PD,J@.MC)ID*I@7B/QC$QB#RB#SC$QB#O?"O?"PA#QB#RC$QA#P@"O?"O?"O?"QA#RC#RB#QB#QB#QB#SD$UF%SD$SE$SC$SD$SD$TE$UF%SD$TE$TF%UF&VG&UF&RC$SD&PA#PA#QA#P@#PA#QB#PA#O@#O@"N>!N>"O?"N>!O?"P@"P?"QA"QA#PA#QB#QB#P@"QB$RC$P@#O@"O?"O@"P@#O?"O?"O@"N>"O@"O@#N>"N>"L=!L=!L>!M> N@!M> L> K= J< K< K< J; K< K< K< L=!M=!M=!M>!M=!M=!M>!N>"N?"N>!N?"M>!M>!M> M= N?!L>!L=!L=!L= K< K< K< K< K< L= L= L= L= K< K= K< K< L= M> K= L= K< K= J; J; I:K< M>!M>!M>!K< J; J; L= L= L= K< K; M=!M=!L< L< M>!L= O@"PA"O@"L= O@"PA"N>!N?"N@"M>!O@"N?!M>!L< M>!L= K< K< M>!L< M>!K< K< K< L=!J; I:H9J;N?!L= L= M>!L= L= N?!M>!M>!K< L= N?"J; J; J; I;J; J; L=!K< I:I: H9H9I:I:I:I:I:I:H9I: J; I:I:I:L"M=!M=!N>!M=!M=!P@"O?"O?"N>"N>"M=!N>"O?"O?"P@"O?"N=!N>!O?"M=!M=!M=!M=!L!N>"N>!M=!L=!L=!L=!M=!O?"N?"M>!M=!M=!M>!N>"M>!M>!M=!M>!M=!N>"N>"O?"O?"N?"M>!L=!M>!M>!N>"N>"N?"N?"N?"O@"P@"RB#RD$SD$SD$TE$XI'TG'37$,3#)","&4(ոwujX[UJRTDSaARaBTfDViEYkI\nBVg@R`"O>"O>"O>"O?"O?"O?"O?"RB#O?"N>"O?"O?"O?"O>"O?"O?"O?"O?"P@"P@#QB#RC$RC$QB#P@"P@#RB#QA#RC#QB#QB#RC$QA#P@#QA#P@#P@#P@#P@"P@#PA#QB#QB#PA#P@#QA#O?"P@"P@#RB#RC#RC#SD$VG&TE$TE$RB#O?"O?"O@"P@"O?"O?"O?"N?"N?"M>!M=!M=!M"N?"O?"P@"QB#SD$RC#SD$QA#O@"O?"O?"N?"N>"N>"N>"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"O@"N?"O@"N?"N?"P@"RC#PA"P@"P@"P@"QA"RB#QB#RC$QB#QA#QA#O@"O@"N?"N?"O@"PA"TE$RC#QA#P@"P@"P@"O@"RC$RC#QB#P@"P@"P@"QA#P@"PA#QB#QB#RB#QB#RB#RB#QB#QB#QB#O@"O@"N?"N?!O@"O@"O@"O@"O@"O@"O@"O@"O@"O@"PA"P@"P@"N?"P@"QA#P@"QB#QA#SE$SD$QB#O@"PA#PA#N?"N?"O@#M>!M=!L=!SE$YK'XI'VG&YJ'XJ'VG&TG(UH*RB#M>"N>!O?"SC#XI&XI&TE$PA"QB#RC#RC#SD$WH&WH&XJ'YJ'WH&TF%UF%RD$SD$RC$QB#PA"O@"PA"O@"PA#RB#PA"PA"M>!N?!N?!N?!N?!L= M>!M>!M>!M>!J; L< I:J< L< K< K< K< L< L< L=!L!M>!M>!M>!N?"N?"N?"N?"N?"O@"O@"O@"N?"N?"L=!N?"N@"O@"P@"O@"O@"O@"PA#QB#PA"PA#QB#O@"N@"O@"O@"N?!N?!N?!N>!L= M>!M>!L= J; J;K; J; J; K; L=!M>!M>!L!L=!M=!L=!O@"N?"N?"M>!N?"P@"N?"N?"M>!L=!M>!N?"O@"N?"M>!N?"P@"O@"P@"N?"N?"N?"N?"P@"O?"N>!N?"N?"N>!N>"N?"N>"M=!M=!N>"N>"M=!N?"O?"O?"O?"O?"O?"O?"QA#P@"PA#O?"N>"O@"SC#VG&VG&RC$VG%VH&UF%TF%XI'XI&TE$TE$SD$TE%TE$RC#N?"N?"N?"N?"O@"O?"P@"O?"P@"RC$PA"O@"N?"N?"N?"N?"O@"O@"P@"QB#QB#PA"SC$SD$QA#QB#QA#RB#TE$RC#RC#RB#QB#QA#O?"O@"PA#RB#RC#RC#QB#O@"O@"PA"RD$QB#O@"P@"QB#SD$RC$QB#QB#QB#P@"N@"P@"RB#PA"PA"QA#N?"O@"PA#RB#QA#P@"QA#RB#QA#P@"O@"P@"P@"P@"QA#P@"O@"O@"P@"QA#SD#YK&XI&TF$VH&WH&YJ'XI&WH&SC#SD$TE$SD$TE$RB#QB#RB#QB#QA#RC#RC$SD$TE$QB#P@"P@"P@"P@"P@"RB#TE%UF%UF%TD$TE$VG%WH&UG%XI'WH&UF%TD$TE%RB$RC#QA#SC$P@#RC$QB#RC$TE%SC$P@"PA"RC#QA#RB#SD$SD$RB#SD%QA#SD$QB#O@"O?"RC#RC$OB#PH,?F28H61:(FE.QA#PA#RC$SD$QA#P@"O?"P@#PB#RC#SD$RC$RC#QB#P@#P@"QB#QB#RC$RC$TE%TE$QB#SD$SD$RC#TF%RC#TE%VG&UF%TE$TE%TE%RC$TD$UF%SD$SD%RC%RB$PA#QA#P@#O@"P@"QA"QA#P@#O?"O?"N>!O?"O?"O?"RB#SB#RB#TD$RC$QB#QB#O@#P@#P@#P@"P@"O?"O?"O@"N?"N>"N>"O?#N>"N>"L=!L= L=!L>!O@"N?!N?!N?!L>!L= K< K< L= L=!L= L=!M>!M>!M>!M>!N>!N?"N>!O@"O@"N?!N?!N?!N?!M>!M>!M>!M>!N>!L>!L=!L= L= L= L= L= M> L> L> M> L= L= K= L=!L=!N@!PA"N?!M>!K< L= L= K; L=!N>!M>!M>!L=!K< L= M>!N?!M=!L= M=!L=!N?"N?"N?"L= O@"N@"O@"O@"N?"N?!N?!O@"RC#O@"N?"O@"O@"O@"L= L< L=!M>!N?!N?!L= N?!QA#PA#N?!I;I:K< J< PB#L>!K< L= N?"O@"N?!M>!L=!J< J< N?"K< J; L=!M=!I;I:J;J; J; J< I:H9H9I:I:J; J; I:I:J; J; L=!J;I:I:J; I; I:J: J:J:J:J:J:J: J; K< L"L"L!M=!N>"N=!N>!O?"N>!RC#N>!N>!M=!M=!N>"P@"PA"O?"O?"N>!O?"O?"M=!N>!M=!M=!M=!M=!N=!M=!M=!L"N?"N>"M>!M>!M>!N>"M>!N>"N>"N>"N>"N>!M=!N>"O?"O?"M>"L=!L=!M>!N?"N?"N?"O@"P@"PA"QB#RC#SD$TF$SD#WH&XI'VH'GA([M(QH'KG*U^Zᬬ}󦬴VfvM[mHYlFUfL\lHYhEXiJ[kL]mBQ]:ISENJ^Z:eb"O?"O?"O?"O?"O?"O@"O?"O@"P@"P@#PA#RB#RC#SD$QA#P@"O?"P@"QA#RB#UF%UF%O?"P@#PA#RC$SD$QB#RC#RB#QA#PA#P@"P@"PA#P@"P@"P@#O?"P@"QB#SD$RC#PA"P@"PA#SC$PA#O@"QB#QB#O?"O?"O?"O?"N?"N>"O?"M=!N>"M=!M!N?"P@#P@"N?"PA#N?"O>"P@"O?"O?"O?"O?"O?"N?"O?"O?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"P@#QB#QB#QA#RC$RB#PA"RC#O@"QA#O@"N@"O?"N?"N?"N?"N?"O@"P@"PA#RB#PA#P@"P@"QA#Q@"QA#P@"P@"P@"P@"P@"P@"P@"P@"QB#PA#PA"RB#RC#VF%SD$PA#O@"N?!N?"TK7N?!N?"N?!PA"PA"O@"N?!N?"O@"PA"PA#P@"N?"P@"QA#QA#RC#RC#QB#O@"QB#RC#P@"O@"PA"RC#N?"N?"O@"M>!K< M= M>!TE$ZL([M(YK'WH&TE%SD$RB#RC#O@"M>!N?"N?"RC#SD$RC$P@"O@"QB#RC#SD$TF%UF%UF%WG&VG&UF%RC$SD$SD$RC#RC#QB#QB#O@"O@"SD$RC#QB#O@"N?!N>!N?!L= L= L= M>!N?!N?!N?!M>!K< J;I:K< L= K; K< M>!N?"N?"M=!M=!N>!O@"N?"M>!L=!L=!L=!M>!M>!M>!N?"N>!M=!M>"M>!M>!M>!M>!M>!M>!N?"P@"RB#PA"O@"QB#O@"O@"QB#RC#O@"O@"O@"O@"O@"N?"O@"N?"M>!M>!M>!L< J; J;K< J; K< N>!L=!L!M>!N?"N?"N?"M>!M>!N?"N?"M>!M>!M>!N?"N?"O@"P@"O@"O@"P@"PA#PA"N?"O@"O?"QA#P@#P@"O?"O?"O?"M=!N>!N>!N>"M=!M=!N>"M=!M=!N>"N?"N?"N?"P@#RB#P@"QA"QA#QB#QA#P@"QA#P@"TD$TE$RB#SD$SD$XI'VG&WH&WH&VG%VG%WH&TE$SD#QB#N?"N?"N@"O?"O?"O?"O?"P@"QA"SD$QA#P@"N?"N?"N?"P@"P@"P@"P@"TE$UF%SD$TD$SD$SD$TE$TE%SD$UF%SD#RC#RC#RC#RC#QB#QA#QA#QB#RB#RB#QB#PA#PA"RC#SD$RB#P@"RB#QA#RB#Q@"RC#QB#RB#P@"P@"P@"SC$RC$QA"P@"PA"RC#PA#QA"SC$RC#SD$Q@"P@"P@"P@"O@"O@"P@"O@"N@"O@"O@"QB#RB#TE$WH%ZL'XI&YJ&VH%XJ'VG&TD$SD$RC#RC#SD$WH&VG&SD#RC#RB#QA#RC#RC$SD$XI'WH&RB$QA#P@"P@"P@#QA#Q@#SC$SC$P@#TE%VG&XJ(WH'YJ(XI'QB#SD$RB#O?"SC$SC$P@"QA#RC$QB#RB#SD$QB#SD$TF%SD$RC$SD$SD$QB#RB#QB#RC#QB#PA#O?"QB#PA#N@# .#H?#SD$SD$TE%RB#PA#QA#QB#O@"O?"O?"O@"PA#QB#QB#SD$TE%QB#RC$UF%QB#QA#QB#QB#RD$RC#TE$RC#RC#UF%RC$UG%SD$VG&VG&UF%SD$SC#TD$TD$SD#PA"PA"QB#RC#RC$RC$RC$QB#O@"O?"QB$P@#P@"O?"O?"O@"O?"P@#P@"QA#PA"O?"O@"QB#QB#RB#P@#PA"PA"P@"P@#P@#O?"O?"O?"O?"N>"N="N>"L=!L=!L= L= L>!M>!O@"O@"N?!N?!N?!M> M>!M>!L>!M>!N?"N?"M>!N?"M>!O?"O@#N?"O@#O@"N?"N?!N?"N?!N?!M>!M>!O?!O@!N?!M>!M>!M>!M>!O@!N?!N?!N?!L> M>!L> L= L>!L>!L>!L>!M?!N?!M>!M>!M>!M>!L= N?!N?!N>!M>!M>!M>!M>!M>!M>!N?!N?"N?"M= O@"O?"N?!L= N@!QB#PA"N?!O@"O@"QB#SD$RC#PA"N?"O@"N?"PA"PA"O@"M>!N?"O@"N@"L=!M>!PA"N?"PA"N?!I:I;J; M>!O?"L< L= L= L= N?"M>!N?"O@"L=!M>!M>!M>!M>!O@"L=!J; I;J; J; J; I;I:J; H9J; I:L=!K< I;J; I:J; J; I:K< J; K< K; K< L"L"N>"M"N>"N>!N>!QB#N>!PA#N>"PA#N>!M=!N?!SD$O@"O@"O@"O?"N>"M=!N=!M=!M=!N>!N=!N>!M=!M=!M=!M=!M=!L=!M=!L=!L=!L=!M>!M>!M>!N?"O?"N>"N?"N?"M>!N?"O?"N>"N>"M=!N>"O?"O?"N>"M>!M>!M>!N?"N?"N?"O@"P@"QB#TE$SE$UF%WH&VG&XI'YJ'YJ'ZL(]O(^P*JG3䕗dhk~|KUXcoxVgxQbtP`rUcwR`tO^qRcuL_rSf}HZmGXhK\lCTa>O["N>"N?"O?"O?"RC#RC$RC#QA#P@"P@#RC#QB#RC$RC#TE$TE%TE$TE$QA#RC#QB#SE$RB#SD$TE$P@"P@"P@"P@"P@#O?"O?"QA#QB#RC#RC$SD$RC$P@"QB#O?"QA#O?"PA"O?"P@"P@"P@#N?"P@"P@"N>"N>"N>"N=!M=!M>!M>!M>!N?"N?"N?"N?"P@"M>!N>!N>"P@"N>!O?"N>"O?"O?"O?"O@"O?"O?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N@"O@"QB#QA#QA#QB#RB#P@"P@#QB#PA#N?"N?"M>!L>!M>!O@"P@"P@"QA#O@"O@"QB#N@"O@"QA"P@"P@"O@"O@"O@"O@"O@"N?"N?"O@"QA#QB#PA#PA#QB#QB#P@"O@"O@"N?!N?!N?!N?"O@"L= O?"QB#O@"N>!N?"O@"PA#PA"QA#N?!M>!O@"N?"N?!O@"N?"M>!M>!PA#TE$SD$RB#SD$O@"O@"O@"N?"M>!N?!M>!PA"XI&XI&O@"N?!PA"O@"O@"QA#RC#O@"N?!N?"N?!PA"O@"O@"N?"PA#RC#RC#TE$SD$RC$SD$SD$O@"M> N?"O@"PA"PA"RC#RC#PA"QB#SD$SD$O@"N?!M>!L= L= M>!L= L< M>!N?!N?!N@"PA#O@"K!N>!QB#SC#SD$QA#O@"N?"N?"N?"L=!L=!L=!L=!L=!L=!L=!L!L=!M=!M=!M>!M>!M>!N?"M>!N?"PA#QB#RC#N?!N?"O@"O@"O@"O@"O@"O@"O@"O@"O@"N?"O@"O@"O@"PA"M>!K< I:L= L< L= N?!M>!L!L=!M>!M>!M>!M=!M>!N?"O?"M>!N>!O@"N?"N?"N?"N?"N?"O@"P@"QA#QB#O@"P@"P@"QA#QA#QB#RB#QA#QA#QA#P@#O?"M>"N>"N?"N?"N?"N>"N>!M=!M=!M=!N>!N>!N?"N>"P@"O?"P@"P@"RB#P@"PA"UF%WH&VG&UF%UF%WH&VG%ZK'YK'XI&ZL'XJ'WI&VG&SD$RC#P@"O@"O@"N?"O@"O?"O?"O?"O?"P@"QA#QA#PA"P@"O@"O@"O@"P@"O@"P@"RB#TE$XI'VG&UF%VG%TE$UF%SD$TE%SD$SC$SD$SD$RC#QB#QB#QB#SD$RC#RC#QB#PA#PA"PA"P@"QA#RD$RC#PA#SD$TE$UF%TD$SD$QA#QA#P@"Q@"QB#QB#SD$P@"SC$SD$TE%RC#SD$RB#QB#PA"P@"P@"P@"O@"P@"P@"P@"O@"PA"RB#P@"P@"Q@"SD$XI&XJ'VG&SC$RB#PA"QA#RB#RC#TD$SD#RB#RC#SC#RC#QB#QB#SD$SD$TE%VG&WH'TE$QA#P@#P@#P@#P@#QA#QB#RB#UE$XI'[L)YJ(YJ'XI'WI'WH&TD$QA#O?"QB#P@#P@#RC$SD$TE$SD$PA#QA#QB#RB#RC$UF%TE$TE$RC#QB#RC#PA#O@"PA#PA#O?"I@%MB$RC#UF%SD$PA"RC$QB#PA"QB#SC$QA#P@#P@"P@"PA#QA#QA#P@#O?"P@"QA#RB#PA#RC#RB#SD$TE$TE$SD$SD$UF&SD$VG&UF%WH&RB#SD$TE$SD$RB#SC#SD#QB"QB#RB#RC$SD$SD$RC#PA"QA"RB#PA#O?"P@#PA#O?"O?"N>"O@"O@"PA"PA"QB"P@"P@#QB"QB#QB#PA#RB#O@"P@#P@"PA"O@"O@"O@#N>"N?"N?"L=!L=!L>!L>!L=!M>!M>!N?"O@#N?"L=!K< L=!N?!N@"M?!N?"N?"N?"O@"O?"O@"N?"N?"O@#N@"O?"N?"N?"N@"N?"N?"N?"N?!O@!N?!N?!O@!OA!N?!N?!N?!N?!M>!L> M>!L>!L>!O@#N@"M?!N?!N?!M>!N?!M>!M>!N?!N?!M>!M>!M>!N?"M>!N>!M>!M>!N>!O?"N@"O@"M>!L=!L= L= O@"O@"O@"QB#RC#PA"N>!O@"RC$RC#RC$QB#PA"QB#PA#RC#N?!N?!N?!O@"N?!N?!L= M>!RC#O@"O@"K< L=!I;J; O@"M>!M>!M>!J< M>!O@"PA#QB#O@"PA"O@"N>"P@"N?"N?"M>!L=!L=!L=!K=!L!M=!N>"M=!N=!M"N>"M"L"N>"M!L=!L=!M=!M=!M=!M=!M=!N>"O@"N?"N>"N>"N>!O?"N>!QB#N>!N>!N>!N>!O?"P@"PA#P@"QB#N=!O?"O@"O?!N>!M=!M=!N=!M=!N=!M=!M=!M=!M=!L=!L=!N>"L=!M=!M>!PA"O@"P@"O>"O?"N>"O?"M>!M>!N>"O?"N>"N>!O?"O@"O?"O?"O?"N>"N>"N>"N?"N?"O?"QB#QB#SD$TE$UF%YJ'ZL(ZK(YK'YJ'YL(SJ+QI*=?4̉hwQe{Vj~SbuTezUeyL]nFYmDYlLawH\qG[oBXk>TdASa@NNfd:_R+XJ'XI'XI'UG&VG&XI'WH'VG&VG&TE$SD$TF%RC#TE%TF%SE$SE$UF%UF%VG&VG&WH&VH&QC#TE$VF%XH&WH&UF%XJ'[M(ZM([M(XI'WH&WH&WH'VG%TF$TE$TE$VG&TF%VG&WH&YJ'YK'[M(ZK(YK(YJ'UF%UF%WH&ZK'XJ'WG&WH&[L'XI'WH&WH&XI'XI&WH&YJ'ZK'WH&WH&XI&YJ'ZL([M(ZL([M([M(\N)XJ'XJ'\O)ZL'WH&VG&VG&VH&UF%TF%XI'WH'WH&VH&WH&WH&WH&TF%TF%VG%YK'XI'WH&WH&YJ'WH&VG%VG&[N(ZL([M)ZL(ZK(WH&UF%WI'UF%UF%SD$SC$P@#P@"O?"QA#QA#P@"PA#O?"O?"P@"P@#O?"RB#QA#QA#RB#SD$SD$TF%TE$QA#RC$UG%UF%TE$TE$PA"SD$RB#SD$RC#PA#P@"PA"P@#P@"PA"PA"P@"P@"O?"O>"N?"N>"N?"N>"P@"RC#RC#P@#O?"PA#QB#QB#RC$TE%TE$UF%TE$TE$TE$TE$UF%TF%SD$SD$QB#RC#SD$QA#QB#SC$QB#P?"QB#P@"PA#QB#PA#P@"P@"QA#P@"P@"O?"P@"P@"O?"P@"QA#P@"P@"PA#O?"N>"N=!M=!M>!M>!M>!L=!M>!M>!N?"N?"N?"O@"O@"O@"QB#P@"O?"O?"O?"O?"P@"P@#QA"P@"N?"O?"N?"M>!N?"M>!M>!N?"N?"O@"P@"PA"P@"P@"O@"O@"O@"O@"O@"N?"N?"N?"N>!M>!N?"P@"N?"O@"O@"PA"O@"O@"O@"O?"O@"P@"O@"N@"N?"N?"N>!N?"M>!N?"N?"P@"QB#QB#PA#QB#TE$UF%RC$O@"N?!N?!N?!O@"PA"L< L= N?!RC$M>!M>!N?!O@"PA#RC$PA"N?"O?"P@"P@"O@"O@"QB#QB#QB#RB#SD$SD$TE%SD$N?"M>!M>!N>"N?"N?"QA#UF%TE$PA#N?!M>!N?"N@"O@"O@"QB#QB#N?!N?!O@"O@"O@"L=!O@"QB#RC#TE%SD$QB#O@"PA"M>!M>!N>!M>!O@"O@"PA#QB#QB#QB#PA#QB#O@"N?!N>!L= L< L= L= L= L= M>!M>!O@"PA#PA#N?"M>!N?!O@"OA#QB#UF$SC#RC$QA"O@"N?"N?"L=!L=!L=!L=!L=!L=!L=!L=!L=!M>!K< K; K; L!M>!L=!M>!M>!L=!M>!PA"QB#N?"N?!N?!N@"O@"O@"O@"PA"PA#PA"O@"QB#PA"RB#QA#QB#N?!K< I:K; M=!M>!M>!L=!N?!N?"PA"PA"N?!N?"N?"N?"M>!M>!N?"N?"N?"N?"N?"N?"N?"N@"N?"N?"O@"P@"P@"P@"N?"P@"P@"P@"PA"QA#RB#RB#P@#P@"PA"P@"O?"O?"O?"O?"O?"N>"M=!M=!M=!M=!M=!N>!N>"N?"O?"N?"O?"O?"P@"O?"QB#SD$TD$WH&TE$UF%TD$WH&TE$XJ&XI&XJ&WH&VG%TE$RC#QB#QB#RB#O@"N?"N?"O?"O?"N?"N>"N=!O?"PA"QA#RB#P@"N?"N?"O@"PA"QA#O@"P@"RC#UF%XH&VF%RB#RC#SD$UF%UF%TE$SC$RC#RC#RC#QB#QB#RC$RC#RB#QB#QB#QB#PA#PA"QB#QA#SD$VH&TE$QB#QA#QA#RB#P@"P@"P@"P@"P@"P@"QB#VG%UF%RB#P@"QB#SD$QB#QA#RB#QA#PA#QA#P@"P@"P@"PA#QA#P@#PA#QA#P@#QA#RB#SD#RB#SD$RB#QA#QA#QA#QA#QB#SD#SD$RC#RC#RC#RC#SC$QB#QB#O@"P@"TE$TE$UF%TE$QA#QA#QB#QB#P@#QB#QB#RC#WI'XI'XI'WH&WG&XI'TE$RB#TE$P@#SC$TE$P@"PA"RC$TE%RC$P@#P@"RB#QA#RB#RC#RC$SD$RD$TE$RC#QB#RC$UF%SD$RC$UF%RC$QB#TE$VG&UF%TD$SD$RB#QB#QA#RC$P@"SD$PA"P@"QB#RB#P@"O?"P@"O?"QB#RC#RC#SC$SD$TD$TF%UF%TF%TD$XJ(WI'XI'XI'QA#QA#SC#SD$SD$RC#UE$TD#SD#TD#RB"SD$SC$TE$RC#QB"RC#QA"QB#QB#QB$RC#PA#O?"PA#P@"PA"P@"PA"QB#PA#QB#QA#RB#RB$QB#QB$PA"P@"PA"P@"PA#PA"P@"N?"M>!M>"M>!M>!L=!L=!M>"N>"M>!N?"N?"N?"M>!M>!P@"N?"P@"N?"N?"N?!N?!P@"O@"QB#PA#PA#P@"O@"N?"N?"O@#N?"N?!O@"N@"O@"O@!N?!N?!N?!M?!M>!N?!N?!O@#N?"M>!M>"M>"O@#N@"O@"O@#M>!M>!O@"M?!L= N?"N?"N?!N?!M>!M>!M>!M>!M>!M>!M>!N?"O@"O@"N?"N?!N?!O@"O@"PA#QB#VG&SD$QB#O@"QB#RC#RC$RC#PB#RC$TF%PB#TE%SE$N?!N?!RC#N?!O@"PA"L=!O@"QB#O@"N?!O@"J;K< PB#N?"O@"M>!O@"M>!PA"PA"O@"RD#RC#QA#P@"N>!QB#PA"N?"M>!N?"M>!N?"M>!L=!K< L=!J; J; J; K; K< J; I9K; K; N>"L!QA#M=!L< N>"P@"O?"O?"P@"O?"M=!M=!N>"M"O?"N>"M=!N>"O?"O>"L"O?"N>"N>"M=!M=!M=!M=!M>!M=!M=!M>!M>!O?"O@"O@"N>!O@"QB#PA"O?"O?"O?"N>!N?"O@"O@"P@#P@#P@"N>!P@"RC$QA#N>"O?"M=!N>!M=!M=!M=!M=!M=!L=!L=!L< M=!M>!M=!M>!N>"O?"O@"O?"O?"N>"N?"N>"N?"QA#O?"P@"P@#P@"PA"PA#P@"O?"O?"O?"O?"O?"O?"PA"QB#RC#SD$SD$UF%VG%YK'ZM(YK(ZL(LF+.2(>@.^`Tvui`cPи‹qXkZl~SdwN`uK^tOcyK_tMaxVkJ]qG]sAUf8JW?NYMRDg_5[M)YJ'YJ'YJ'WH&VG&WH'UF%TF%SD$SD$TF%UF%UF%TE$RC#PB#PA"TE$VG&UF%VG%WG&UF%RB#P@"RC$UF%VG%XI'YJ'ZL(YK'YK'UF%TE$UF%WH&UF%UF%UF%VG%TF%TE$UF%WH&XJ'WH&WH&WH&XI&WH&WH&WH&VG&WH&UF&UF%UF%VG&XI'XI&WH&YJ'XJ'YJ'YJ'XI&WI&WH&XJ'YJ'XJ'XJ'XJ'YK'ZL'[M([M(ZK'VH&XI&SD$TE$TE$RC#RC#TE$WH&VG%VG&VG&UG%UG%VH&WH&UF%WH&VH&VG%UG%VG%YK'WH&UG%XI&ZL(XJ'YJ'XI'WH&TF%SD$XI'VG&TE%TE%WH&SE$VG%QA#PA"P@#P@"O@"QB#RB#RC#QA#P@"QB#QA#SD$RC#SE$SD$SD$SD$P@#P@"UF%UF%UF%TE$RB#SD$SD$TE$SD$QA#PA#PA"P@"PA"PA"QB#RB#O@"O?"O?"O?"O?"O?"O?"P@#QA#QB#PA#PA#PA"RC#SD$QB#SD$VG&TF%UF%SD$UG%TF%UG%UF%SD$RC#QA#P@"RB#RB#SC#QA#RC$QA#QB#P@#O?"QB#RC#P@"QA#QA#QA#O?"P@#O?"P@#O?"O?"P@"P@#O?"QA#QA#P@"N>"M=!M!M>!M>!N?"N?"N?"N?"N?"M>!O@"O@"PA"P@"Q@#P@"N>"O?"O?"QA#QA#P@#O?"N?"N>"M>!M>!M>!N?"N?"N?"O?"O?"P@"O@"O@"O@"N?"N?"N?"N?"N?"N?"M>!M>!M>!O@"N?"M>!M>!P@"QB#O@"O?"N@"P@"P@"N?"O@"PA#N?"N?"N?"M>!N?!N?"O@"P@"QA#RC#UF%WH&RB#QB#RB#SD$O@"N?!M>!O@"N?"N>!N?!N?!N?"M>!M=!N?"O@"RC#QB#QA#SD$RC$QA#RB#N?"P@"PA"PA#M>!P@"PA"QA#PA"N?"M>!M>!M>!N?"P@"O@"O?"N?"N?"N?"M>!L=!N?!N?"N@"QA#O@"L=!M>!PA"QB#RC$N?"N@!M> N?"PA"PA#PA"N@"O@"PA"L=!L= M>!M>!M= M>!N?"O@"PA"PA"N?!N?!M>!M>!L= L< L< K< L< L= L< M>!N?"O@#N@"N?!M>!N?"L= RC#YK'XJ&SC$O?"N?"M=!L=!M>!L=!L=!L=!L=!L=!M>!M>!L=!L=!M>!M=!L!N>"L=!M=!L=!L< K< K< N?"N?!N?!N?!N?!N?!N?!N?!PA"N?!RC#RC#SD$SD$QB#PA"P@"P@"L=!K; L= P@"O@"PA#PA#PA#O@"RC$RC#N?"QA#P@"N?"L=!M>!N?"N?"N?"N?"O@"N?"N?"N?"O@"O@"O@"O@"O@"P@"P@"PA"RB#RB#P@#O?"P@"P@"RB#PA"PA#RB#QB#P@"P@"O?"P@"O?"N?"N>"M=!N>"N>!N>"N?"O?"O?"O?"O?"O?"O?"QA#P@#QB#RC$WH&WH&XI'UF%SC#RB#TE$XJ&YJ'UF%TE$TE$UF%QB#RB#QB#O@"N?"N?"O@"O@"QA#P@"O?"P@#P@#QA#RB#P@"P@"QB#SD$RB#TD$O@"QA#P@"RC#SD$SD$QA"QB#PA"QB#RB#TE$SD$RC#RC#RC#SD$QB#QB#QB#RB#QB#RC$RC#PA#RC#RB#QB#QB#TE$SD$RB#P@"P@"QB#P@"P@"P@"P@"N?"O@"QB#RB#QA#P@"PA#P@"SD$SD$RC#RC#RD$RB#QB#RB#PA#PA"PA"P@#PA"P@#Q@#QA#QA#QA#QA#QA#RB#RC#QA#QA#P@"P@"QA#SC#SD#SD$SD$SD$SD$SD$SC$RB#SD$SD$VG&XI'VG&VG&XI'TE%QB#QB#P@#P@#QA#QB#UF%WH&UF%SD$TE$VG%QB#SD$QB#UF%RC#RC#RC$P@"PA"QB#PA#P@"TE$P@#RC$RB#P@"RC$RB#SD$TE$QA#QB#QB#QB#RC$SD$RC#PA"RC$RC$TF%TF%VG&RB#P@#P@"QA#QB#UF%UF%P@"P@"SD$P@"P@#P@"P@#P@"QA#QB#QA#RC#RC$RC#RD$RB$SC$RB#WH&VG&XI'TE$RC#QA#RB#RC#SD#SC#TD#SD#RC#RC#SC#TE$UE$TD$RC#QB#QA"P@"RB#RC$RC$RC$QB#QB#RB$P@"O@"QA#QB#QB$RC$QA#RC#QB#QB$QB#QB$PA#QA#QB#QA#QB#PA"PA"O@"M?!M>!L=!M>!M>"M>!M>!M?"N?"N?!N?"N?"O@"N@"PA"PA"PA"PA#O@"P@"O@"PA"QB"RC#PA#O@"N@"N?!N?"N?!N?!N@"N?!N?!N@"N?"N?!N?!N?!M?!M?!N?"N?"N?"O@#N?"N?"N?"N?"PA#O@"PA#OA#QB#O@"N?"N@"N?"N@"O@"N?"N?"N?"M>!L>!M>!M>!N?"N>"N?"O@#PA#PA"QB#RC$RC$SD$RC#SD#UF%PB#O@"RD$RD$TE%TF%QB#QB#RD$TE%SE$RC$RD#N?!N?!PA#PA#SE$TE%O@"O@"OA"QB#N?"O@"N?!N?"L= O@"N?!L= N?!N?"L< N?"O@"PA"UF%RC#UF%RD$PA"QB#O@"P@"RC#N?"M>!M>!L=!N>"M=!L!O?"N>"P@#RC#PA#O?"P@#O?"M=!N=!P@#N=!M=!M=!N>"N>"N="M=!N=!N>"O?"P@#P@"N>"M>!M>!M>!N?"N>!N>!N>!N?"PA#P@"N>!QB#PA#O?"O?"O?"O?"O@"O?"PA#PA#QB#O?"O?"PA"PA#P@#P@"RB#PA#M=!M=!N>"O?"M=!M=!M=!L=!K< K< M=!M=!M=!M=!M=!L=!M=!N>"P@"N?"N>"O?"O?"QA#RB#QA#P@"P@#P@#QA#PA"QA#O?"O@"O?"O@"P@"QB#QA#QB#SD$TE$XI'XJ'ZK'[M(YJ'YK(26,KOGPRFTUI~ºRboG[mG[n!P@#P?"O@"QA#QA#P@"P@#QB#O?"O?"P@"RC#O@"QB#QA#QB#QA#RB#QB#RC#RC#SD$RC#SE$TE$PA"RC#PA#QA#P@"QA#QA#O?"O?"N?"O?"P@#QB#QB#RC$SD$TE$RC#QA#P@"PA#QB#UG%VG&VH&TE$TE%TE$SD$SD$RC$RD$RC#QC#SD$SD$QA#QA#RB#QB#QB#RC#RC#SC$P@#QB#QB#P@"RC#QA#QA#QA#O?"O?"O?"O?"P@"P@#P@#O?"N>"O?"P@#QA#N?"N>"N>"N>"M=!M>!N?"N?"N?"N?"N?"N?"M>!M>!N?"O?"TE$TE$P@"O>"O?"O?"QA#RB#RC#QA#O?"N?"M>!M>!M>!N?"N?!N?"O?"O?"O?"O@"O@"O?"N?"N?"N?"N?"N?"N?"M>!M>!N?!N?"P@"M>!M>!PA#SD$RC#O@"O@"QA#O@"N@"P@"QB#N?"N?"N?!N?"N?!M>!N?"O?"P@"N@"PA"RC#RB#P@"P@"N?!M>!M=!N?!N>!L= L= PA"N?!M>!M=!N?!P@"RC#SD$QB#P@#PA"RC#QB#N?"N?"O@"N?"N?"N>"O@"O@"O@"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?!M> L=!N?"N?"L=!L= K; K< QB#O@"N?"O@"O@"L= O@"M>!N?"N>!K< M>!N?"L= K< L< L= L= L< M=!M>!N?!M>!M>!K< L= L=!L= L< L< K< L< L= K< K< N>!N?!P@"PA"N?!L= M>!SD$XI&XJ'SD$N>"M=!M>!M>!M>!L=!L=!L=!L=!L=!M>!M>!M>!M=!M=!N>"M=!L=!L!O@"N>!M>!N>!N?!N?!O@"M>!M>!QB#TE$TE$SD$PA"RC#N@"PA"M>!K< M>!O@"O@"M>!N?!QB#PA"RC#QB#P@"RB#O@"P@"O?"O?"N>"M>!N?"N?"N?"N?"N?"N?"N?"O@"N?"O@"PA#O@"P@"P@#P@#QA#SC#QB#P@"PA"QA"QA#P@#QA#RB#QB#Q@#O?"P@"O?"O?"O?"O?"O?"N>!N>"O?"O?"O?"O?"O?"O?"P@"P@"RC#RC#RC#VG&WH&XI&WH&VG&O?"UF$XJ&XJ'XI&VG%TE$SC#QA#QA#QB#O?"P@#QA#P@#P@"P@"P@#QA#QA#QA#QA#QB#QA"RC$QB#PA"UF%VG%UF%SD$SE$SD$QB#RC#RB#QB#O@"O@"O@"O@"RC#SD$RC#RC#RC#QB#QB#SD$SD$QB#TD$UF%VG%SD#SC$RC#RC#RC#UF%RB#P@"P@"P@"P@"P@"P@"P@"PA#P@"Q@"QA#QA#QB#SD$SD$TE$RC#RC#RC#UF%RD#QA#PA"RC#PA"P@#P@#QA#QA#QA#RB#RC#RB#QA#P@#QA#SC$RB#RB#QA#SD$WH&UF%SD$RC$RC#SD$SD$TD$TE$RC$P@#QB#YJ(YJ(WH'UF%ZK(TE$TE$QA#QA#P@"P@#QA#TE$VG%SC$RC$TE%UF%TF%VG%TE%SD$VG&RC#RC#QA#QB#TE%RC#QB#SD$SD$UF%VG%RB#RC$QA#P@#RC$SD$RB#SD$TE$TE$SC$TE$SD$RC#RC#TE$TE%TE%RC$RC$TE$RC#SD$VG&RC#P@"RC$SD$QA#P@#O?"O?"RC$QB#QA#P@#QA#SC#SD$SD$QA#QA#QB#WH&TE$XJ'TE%RB#P@"QB"SD#SC#TD#TD#RC#TE#RC"TE$UF%SC#SD#RB#RB#RB#P@"RB#RC#RB#RB#RB#QB#RC#QB#PA"QB#QA#RC$SD$SD$RC$QB$PA#QB$RC$RC$QB$QA#PA#O@#O@"O@"O@"N?!M>!M=!M>!M>!N?!N?"N?"O@"P@#PA#PB#QB$O@"PA#PA#SD$TD$QB"PA"O@"O@"RB#RC$RC$RB$QB$QB$O@"N?!N@"O@"N?!N?!N?!N?!N?!N?!N?!N?!O@"O@#OA#O@"O@"O@"N@#N?"M?"PA#PA#N?"O@#O@"SD$PA#PA#PB#PB#O@"N?"N?"QB#O@"N?"M>!N?"N?"N?"O@"P@#QB#QA#RB#UF$SD$QB#SD#SE$SD$RC$RC$RD$RC#SD$WH&TE$RD$RC#RC#TD$VG&RC#O@"O@"SD$RC#TF%PB#M>!N>!M>!N?!PA"RD$QC#P@"N?!N?!O@"SD$N?!N?!RC#P@"O@"RC#SD$O@"PA"SD$TE$SD$P@"QB#PA#QB#PA"M>!N?"N>"O?"O?"M=!J; J; J; J; J:J: L"PA"RC#QA#L=!N>"O?"K< L=!M=!N?"N?"P@#O?"N>"N>"O?"O?"N>"N>!N>"N>"P@#N?"N>"N?"O?"O?"O?"M>!N>"N?"N?"PA#QA#PA#O?"N>!N>!N>!M=!N>!O?"P@"PA#O?"O?"O?"N>"P@"QB#P@#O?"O?"O?"RC#RB#QB#QB#QA#N>!M=!N?"N>!O?"QA#M=!L=!L=!L=!L=!M=!M=!M>!M=!M>!M=!N?"P@#O>"O>"O?"O?"P@#P@"P@"RB#N?"N?"O?"P@"QB#P@"O?"P@"P@"P@#QA#PA"P@#P@"SD$VG%VH&WH&YJ'WH&UJ)3:3BF>acZihXꮮߓK^lMcxPiCZn@ZpD\s[qPdwK]nIYgDTb>NW\\CaU.[M)XJ'XI'XI'XI'YK'XJ'VG&UF%TE$TE%UF%TF%VG%WH&VG&VG&UF%SE$TE$RB#QA#SD$TE$TF%TF%VG%WH&UF%RC$QB#QA"QA"RD$QA"QB#QB#RC#TE$UF%WH&TF%SD$RB#RB#RD#SD$SD$RD$SE$RC#SE$TF%TE$TF%TF%UF%XI'XJ'WH&TE%SD$RC#RC#RC#RC#RC#TE$VG&WH&XH&WH&SE$UF%SD$VH%ZK(WH&WH&YJ'YJ'ZK(ZK(VG&QB#QA#QA"RC#RC#RC#RC#UF%TF%VG%WH&VG&UG%TE$TE$TE$TF%UF%TE$TE$VG&WH&TE$UF%YK([N)YJ'YJ(YK(UF%TE%SD$SE$SD$UF%WH'TF%UF%VG&RD$SD$PA#N>"PA#O?"PA"QB#P@#P@#N>!P@#N>"N>"QA#QA#O?"SD$RB#RC#PA"SD$RD#RC$RB#QA#SD$SC#RB#O?"PA"P@#P@"PA"O?"O?"O?"N>"N>!O?"SD$TE%RC$SD$TE$SD$RC#RB$RC$RC$QB#SE$TE%TF%RC#SD$SD$QB#QA#RB#UF%UF%RC$SD$RC$RB#RC$SC$SC$RB$Q@#O?"PA#P@"QA#RB#QA#P@"P@"RB#QA#P@"P@"O@"O?"O?"O?"O?"P@"P@"P@"P@"P@"O?"O?"N>!M"N>"O?"O?"O?"N?"N?"N?"N?"N?"N>!O?"PA#O?"P@"QA#P@"P@"RB#QA#RB#P@#QA#O?"N?"L=!L=!M>!M>!N?"N?"O?"O?"O?"O@"O@"N?"N?"N?"N?"N?"N?"N?"N?"N>!N?"QA#QB#O?"QB#RC$RB#RC#SD$QA#P@"O@"O@"O@"N?"M>!N?"N?"M>!M>!M>!N?"P@"O@"N?"PA#P@"QB#O@"M>!PA"O@"O@"N?!M>!L= M>!O@"QA#O@"N@"PA"PA"RB#RB#QB#P@"QA#SD$PA"N?"PA#P@"O?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"N?"O@"O@"N?"N?"N?"O@"O@"N?!L=!N?"K< J;J; M>!O@"N?"N?"O@"N?"L= M>!M>!M>!M>!L=!M>!L= K< L= L= N?!N?!N?!M>!M>!N?!L= L< L< L< L=!N>!L= L< L< L< M>!M>!N?!N?!M>!N?!O@"L= OA%WM7QB$RC#QB#PA"L=!L!N?"N>"M=!M=!L=!L=!M=!N?"O?"N>"O?"N>!N?"N?"M>!L!M>!N?!N?!N?!N?!O@"RC#PA"O@"PA#SD$TE$RC#SD$RB#RC$QB#QB#N?"L= L< N?"P@"O@"N?"QB#O@"O?"PA"N?"N?"P@"QA#O?"N?"N?"N?"M>!N?"N?"N?"N?"N?"N?"N@"N@"O@"P@"O@"O@"P@"PA"P@"P@"RB#RB#P@"PA"PA"PA"PA#P@#P@#QB#P@#O?"O?"O?"O?"O?"O?"N>"N>!N>!N?"N?"O?"O?"O?"P@#N>"O?"QA#RC#VG%UF%WH&WH&VG%P@"UF%YJ'WH&XI&WH&TE$QA#RB#P@"P@"O?"P@#P@"O?"RC#RB#QA#QA#Q@#PA#QB#RB#RB#QA#PA"O@"RC#XJ'TF%PA"PA"QA#RC#RC$TE$UF%RD$QB#QB#QB#QB#RC#SD$SD$SD$TE$SE$RC#RC$RC#SD$RC#RC#RB#SD$SD$RC#QA#SD$UF%UF%RC#PA"QA#QA#QA#PA"QA#QB#P@"QA#QB#RC#SD$SD$TE$TE$RC$QB#RB#P@"PA"RB#RC#SD$QB#QA#RC#RB#RB#RC#RC#RB#RC#RB#RC#RB#RC#SC#TE$XI'XI'VG&UF%TE$SD$SD$SD$TF%TF%TF%SC$SC$YJ(XJ'UF%XI'[M)XI'YL(XJ'UF%QA#P@#QA#RB#QA#RB$RC$TE$UF%UF%UF%UF%TE$UF%QA#RC$SD$QA#P@"P@"P@"QB#RC$RC$TE$TE$SC$SD$QA#SE$UG%UF%VG&UF%SD$UF%VG&TE%SD$RC$WH&RC#RC#UF%WH'TE$QB#P@"SC$O?"O?"QB#QA#RB#PA#O?"O?"RC#RB#QA#PA"RB#SD$UF%SE$QA#RB#SD$UF%VG%WH&TE$P@"P@"P@"SC"TD#SC#RC#UF$SD#RC#SD$RB#TE$TE$RC#RB#RC#QA"QA#RB#QB#QB#RB#RC$SC$RC$SD$SD$QA#QB#PA#SD$RC$P@#PA"O@"PA#PA#RB$QB#QB#O@"O@"O@"PA"N?"N?"N?"N?!N>!O@"O@"O@"QB$PA#QB$RC$RC%PA#O@"P@"TE$RC#PA"PA"P@"PA"TE%TE%UF%TE%QB$PA#O@"PA$P@#N?!N?!N@!N?!N?!N?!N?!N?!N?!O@"PB$QB$QB$PA#PB$PA#O@#O@"PA#PA"QB$PB$SD$TE$TE$RC$QA$RC$QB#O@"O@"QB#PB#QB#QB#N@"O@#PA#PA#QB$QB#P@#P@#RC$RC$SD$RC$PA#QC#QB#RC$TE$RB#QB#TE%VG%UF%SD$RC#TE%TF%QB#O@"N@"PB#SD$PB#RC#O@"O@"O@"N?!M>!PA"TF%SD$SD$RC#O@"O@"QB#L= N?"QB#RC#O@"N?"QB#O?"O@"RC$TE$QB#PA"O@"M>"O@"P@"P@"P@"O?"N>!L< M=!L=!J; J; J; K< J; L"N?"N>"M>!P@"P@#L=!N>"N>"M>!K"N>!N>"O?"P@#P@#N?"N>"N?"N>"N?"N@"PA#TE%SD$P@"RB#O@"P@"M=!O?"P@"O?"O?"O?"P@"O?"O@"O?"P@"P@"O?"O@"P@"QA#QA#SD$P@"PA#P@#PA"O@"O?"O?"O?"M=!M=!M=!L!M=!M=!M=!M>!O?"P@"P@"O?"N?"N>"P@"N>"O?"P@"O?"O?"O?"O?"P@"N>"P@"QA"PA"P@#P@"P@#P@"QA#TE$UF%UG%XI'ZL(UK)EIBXYOuvnºɯnwrd}Qh~PejF_vLezRg{AZoF]qDYkM`qGYh?P]IX\_[6]P+XI'XI'WH'XI'XI&VG&YJ'XJ'XI'VH&SD$TF%VG&TF%TF%UF%UF%TE$UF%TE$XI&VG&PA"QA"SD$TF%UF%TF%XI'WH&WH&UF%QB#P@"P@"PA"P@"P@"PA"QB#TE$TF%RC#RC#QB#RC#RC#RC#RC#RD#SD$SE$UF%UF%TF%TF%VG&WH&XJ'YK(WH&SE$RC#RC#RD#TF$SD$QA#QA"RC#RD$VH&XI'VG&TE%TE$SD$UF%VG%TF$XJ'WH&YJ'XI'SD$P@"P@"PA"RC#RD#RC#QB#QB#SD$TE$TF%SD$TE$TE$TF%TF%TE$TE$VG%SE$TE$VG&UF%VG&ZK(YJ(XI'WH&VH&RC#RC#TF%TE$SD$QA#VG%VG&WH'WH'UF%QB#RC$RB#P@"QA#QB#O?"O?"RC#N>"O?"O?"RB#QB"PA#P@"PA"UF%UF%RB#SD$VG&RC#TE$RC#P@"O?"QA"P@"P@"RB#QB#PA#O?"O@"O?"O?"N?"O?"RC#PA#QA#QB#SD$RC#RC#RB#SD$SD$TE$RD$P@#QB#QA#RC#RB#RC#RC#SE$RC#TE$TE$UF%RB$PA#QA#PA#P@"QA#P@#P@#O?"N?"N>!QA#TE$SD$QA#RB$RB#O?"QB#O?"O?"P@"O?"O?"RB#RC#O@"P@"O?"O?"O?"M=!M=!N=!M=!N>"O?"O?"O@"O@"N?"N?"N?"O?"O?"O?"O?"QB"P@#O?"O?"O?"O?"QB#P@"QA#QA#P@"N>"M"N?"N?"N>"O?"N?"O?"O?"N?"N?"N?"N?"N?"N?"N?"N?"M>!L=!P@#PA"QB#VG&VG%TE$UF%SE$QB#PA#N?"N?"N?"M>!M>!L=!M>!M>!M>!M=!M>!M>!N?"N?"O@"P@"O@"N?"O@"O@"O@"O@"O@"O@"M>!N>!N@"N?"PA"O@"PA"RB#QA#RC#SD$RC#QA"QA#RB#QB#PA"N@"O@"PA#P@"N?"P@"O?"N?"P@"QA"N?"N?"O@"O@"N@"O@"L=!N?!O@"M>!K< L!M>!N?"N?"N?"O?"O@"M>!N?"L=!J;N?!N>"N>!M>!K< L= M>!M>!N?!N?!N?!L= M>!N?"M>!L< L= K< L< M>!N?"M>!M=!M>!N?!M>!N?!N?!M>!N?!N?!I8rgSQNAN@"OG3G?+M>!L!M>!M>"N?"N?"M>!N?"P@"PA"P@"QA#QA#RB#RB#P@"O?"O?"M>!M>!M>!L=!J; K< L!O@"O@"O@"TE$SD$RC#PA"TE%SD$QB#P@"RB#QB#SD$QB#N?"PA"N?"RC#O@"N?"L=!N>"L!N?"N>"O@"QA#QA#QA#O?"N?"M>!M>!N?!N?"N?"N?"N?"N?"N?"N?"N?"N?"O@"P@#O@"O@"O?"P@"QA#P@#O?"O?"P@"P@"O?"O?"O@"O?"O?"O?"O?"O?"O?"N>"N>"N>"N?"O?"N>"N>"N>"N>"O?"P@#QA"QA#P@"TE$P@#SC$XI'VG%UF%XI&XI&XI&XI&TE$TE%P@#QA#PA"P@"O?"P@"QA#RB#RB#QA#RC#QA#QA#PA"QA#RB#SD$QA#P@"QA#QA#P@"VG%TE%N?"O@"P@"QA#SD$SD$QB#RD$SD$RD$QB#SE$UF%UF%UF%WH&XI'XI&WH&UF%UF%SD$RB#QB#RC#SD$SD$SE$QB#RC#RC$RC$RC#RC#P@"P@"QA#PA"P@"PA#QB#RB#RB#RB#RB#PB#PA"PA"P@"O?"O?"P@"VH&WI&RC$P@#QA#RB#RC#RC#RC#RC#RB#RB#VG%UF%TD$UF%TE$UF%ZK'YK(UF%VG&VG&UF%TE$SD$TE$TE$TD$SD$RC$VG&YJ'XJ'YK(WI'VH&YK(WH&VG&TE$P@#P@"P@#P@#P@#QA#QA#UF%VG&VG%QB#QB#TD$SD$QA#SC$TE$RC$N?"P@"P@"PA"P@"SD$UF%VG&UF%QA#RB#UF%TE%UF%UF%UF%UF%SD$TE$RB#RC#UF%QA#RB#UF%TE%VG&VH&SD$TE$P@#QA#QA#QB#P@#P@"P@"P@#O?"O?"P@"PA"QB#RC#SC$UF%PA"P@"QA#P@"UF%TE%PA#P@"QB#QA"RB#TD#SD#SC"VF$VG$TE$RB$RC#SD#UF%SC#SC#RB#P@"RC#RB#RC#RB#RC$RC$RC$QB$PA#RC#SD$SE$QA#QB"QB#P@#RB#P@#P@#QA#QB#QA#RC$RC$OA"PA"P@"PA#P@#N?"M>"O@#O@#N@"PA#QB$QB#RC$RC$QB#QB$PA#QB$RC$QB#QB#RC"PB"QB#SD$RC$TE%SD%SD$QB#QB$QC$PA$N?"N?"N@"N?!N@"N?!N?!N@!N?!PA#QB$PA#PB$PA#PB$QB$PA#O@"PA#QB$QB#QB$QB$SD$RD%RC#QB$RB$QB#QB#PA#QB#RC$QB#RC#QB#PA#SD%RC$SD$TE$RC$PA#RC$RC$SD$SD$RC$SD$TE$SD$SD$SD$RD$TE%UF&VH%TF%TE%SD$TE%UG&RC$QC#UF%TD$UF&UF%SD$N?!P@"O@"RC$O@"RC$TF%VG&PA"SD$O@"O@"O@"N?!QB#RC$N?!L!N?"P@"N?"N?"N?"O@"M>"M>!O?"O@"QA#P@"P@"P@#O?"N>"N>!K< J; J; J; K; J< L=!N>"P@"N?"QB#QA#N?"O?"O?"O?"O?"M=!L=!L"PA#QA"P@"O@"N>"O?"N?"O>"PA"QB#UG%RC$P@"QA#SD$P@#N>!O@"O?"P@"O@"O?"O@"P@"O?"QA#RB#O@"QA#P@"QB#RC#TE$SD$TE$UF%RB#TE$O@"O?"QB#O?"O?"N>!M=!M=!M=!M=!M=!M=!M=!M=!M>!M=!M>!O?"O?"P@"O?"O?"P@#P@#QA#P@"O?"M>"O?"N?"O?"N>"O>"P@"P@"P@"P@"QA#Q@"QB#VG%TE$VH&XI'YK'^R*LH7|񸻵OdwJ`sJbwPezH]nJ\lH]qDZl;SeBVeH^n?P\S^VcX/XI'XH'XI'XI&YJ'XI'WH&VG&WH&WG&VF%TF%VF&VG&TF%TF$TE$TE$TE$TE$TE$XI'WH&RC$QB#PA"RC#UF%UF%VG&WH&UF%TE$RC$QB#QB#QB#PB#PB#PB#PA"QB#QB#RC#QB#QB#QB"PA"QA"QB#RC#TE$VG&VG&TF%TF%UF%TE$UF%UF%TF%SD$RC#RC#SE$SD$RC$P@"P@"SD$TE$TE$VG%VG&UF%SE$UF%WH&VG&UF%UF%VG&XI(WH&SD$RC$PA"QB#QB#RC#SE$RD#PA"QA#RC#SE$RC#SD$TE$TF%TF%TE$TF%VG%XI'YJ'YJ(YJ(VG&UG&XI'XI'WH&WH&VG&TF%TE%TE$UF%VG&VG%TE$UG%TE%TE$TF%RC$SD$TE$QA#QB#QA#O?"P@"RC$P@"O?"P@"SD$TE$P@"P@"QA#RB#SC$SD$TF$WH%SD$SE$RC#O?"O?"P@#P@"P?"O?"O?"P?"PA"PA#O?"O?"O?"QA#QA#O?"O?"O?"QB#QB#QB#QB#WH&VG&UF%SE%P@"QA#RC$TE%QA#SD$UF%TE%SD$QB#SD$SD$SD$RB#QA#P@"O?"P@#PA#RB#P@"P@#QA#P@#SC#P@"SD$QA#PA#P@"N?"O?"P@"O?"O?"P@"P@#P@"O?"P@"PA"P@#O?"M=!N?!N?"N?"N="N?"O?"N?"N?"N?"N?"P@"O?"O?"P@"RC#RB#O?"P@"N?"N?"P@"O?"QA#PA"Q@#O@"O?"N>"N>"O?"N>!N>!N>"M=!N>"N?"O?"O?"N?"N?"N?"N?"N?"N?"N?"N?"O@"O?"N?"RC$RB#TE$UF%UF%TE$SD$P@"N?"N@"N?"O@"P@"N?"N?"O@#M>!M>!M>!N?"M>!N?"O@"O@"P@"P@"P@"O@"M>!O@"L=!M>!N?"N?"O?"N?"M>!O@"M>!M>!N?"N?"O@"QB#SD$RB#RB#O@"N?"N?"M>!N?"O?"O@"M>!N>!QB#P@"O@"QA#N>"N?"O?"N?"O?"O@"J; M>!N?!N?"O@"M>!O@"RB#QB#P@"O@"P@"N?"QB#I:K< L=!M>!O@"M?!O@"M>!J: L=!M>!M>!N?!N?!N?!L= L= O?"N?!M>!M= M>!M>!M>!M>!M>!M>!M>!M>!N?!N?!N?!N?!N@"N?!I9\O7ߡSUQTTME=*L!M>"M>!N?"M>!N?"PA#QA#QA"QA"QB#P@"QA"RB#QB#QB#RB#QB#QB#P@"M>!K< K< K; K; L!SD$RC#PA"O@"PA"M>!QB#UF%QB#RC#QB#RC#QB#PA#QA#QB#O@"M>"O?"M>!M=!M>!L=!L=!M=!P@"P@"O?"QA#QA#SD$RB#RC#QA#O@"N>"N?"N?"N>!N?"N?"N?"O@"O@"O@"P@"RB#O@"N?"O?"O?"P@"P@"O?"O?"O@"P@"P@#P@"O?"O@"O?"N?"O?"O?"O?"O?"O?"N?"N?"O?"O?"O@"O?"O?"O?"P@"O?"O@"RB#QB#PA#PA#VG&WH&VH&TE$WI&YJ&YK'UF$TD$P@"QA#RB#P@#QA#RB#SD$TD$QA#SC$UF%RB#P@"P@"QA"QB#QA#QA#SD$RC#QA#SC$TE$SD$N@"QA"PA"O?"QB#RC#QA"SD$SD$QB#PA"TE%UF%TE$UF%UF%WH&YJ'XI&VG%WH&VF%TF$SD$RC#TE%TE$RC#RC#QB#QB#UF%SE$RB#P@"RB#RC#RB#P@"QB#TF$RC$RB#RB#QB#QB#QA#P@"P@"O@"O?"O?"TE$UF%TE$P@#SC#TE$RC#RC#RC#TE$UF%TD$TD$TE$VG&WH&XI&VG&TD$UF%SD$SD$SD$VG%UF%WH&UG&TF%TF%UE%TD$UF%WH'XJ'XJ'VG%TF%UF%UF%SD$VG%SD$QB#P@"P@#P@"P@#QB#TD$XI'VG&TE%RC$QB#VF%TE$RB#UF%TE$P@"P@"QA#RC$O?"P@"QA#TE$SC$RC$SC#QA#RC#RB#QB#RB#P@"O?"O?"P@"P@"TE%RC$QA#QA#UF%TE%RB#TE$UF%TE$SD$PA#P@"P@"P@"QB#N>"O?"PA#P@"P@#QA#QA#P@"RB#P@#QA#RB#RB#TE$SD$P@"QB"PA"QB"RC#TD$TE$TE$UF$UF$UF%SD$SD$SE$RC#SD$VG%TD#QB#QA"PA"P@"QA"QB#RC$QB$PA#P@"PA#TE$RC#RC#SC$SD$QB$QB#QB$QB$RB$QB$QB#RC$SD$PA#QB#RC$PA#O@"N?"O@"PA#PA#N?!PA#RC%QB$QA#PA#QB$RC$QA#RB$RC$SE$TF$QB"OA"O@"QC$SD%SD%RC$RC#TE%SD%RC$QB$O@"N@"N?!N?"N?!M>!N?!N?!N?!O@"RC%QB$QB$QB$RC%QB$RC%RC%QB$QB%PA#SD$RC$SD$UF%UF%SE%RC$PA#O@#PA$QB#QB#QB$RC$PA#QB$QB$RC$TE%UF%SD$SD$SD$RC$RC$TE$RC$SD$RC#RC#RB#RC#RC#SD$SE$UG%TE$TE$TE%SD%SD$SD$TF&UF%WH&UF$VG&RC#QB#QB#RD#QB#PB#SD$SD$VG%QB#RD$O@"OA"O@"PA#PA#N>"N@"M>!M>"O@"N?"O@"N?"N?"P@"QA#O@"M=!L"O?"O?"N>"M"M=!N>"P@"L< J; J< J< J< L=!L=!P@#SD$SD$QB#QB#P@"O@"RB#O?"L!M=!M=!M=!M>!M=!M=!M=!M>!M>!M>!O?"P@#P@#P@#QB#RB#RC#SD$QB#P@#M>!M>!N>"O>"O?"O@"O?"P@"P@"N>"O?"PA#RC#TF%TE$UF%TF$YJ'^Q+?>,MMD~q͉qwXgsPbql|]pSg|D\q;VkF[l;N^BS`AQ_8GRY]G`S,XI'XI'WH&XH&XI'YK'[N(WH&XI'UF%WH&VG%UF%TF%TF%TF%UF%UF%VG&UF%UF%WG&YJ'YJ'XI'UG%RD$TE$VG&VG&UG%SE$SD$RC#QB#QB#PA"P@"P@"PB#PB#PA#QA#P@"P@"P@"P@"P@"P@"O@"PA"QB#RD$SE$SE$RC$RD#RC#QB#QA#RB#QB#RC#RC#RC#RC#RC#RD#TF$UF%TF%UF%UF%UF%UF%VG%WH&XI'YJ(XI&SD$PA#UF&YJ(XI'VH&RC$TE%RC$RC#SD$VG&VG%VH&VG&UF%TE$UF%UG%TF%TE$UG%VG%UG%VG%WH'ZK(VG&VG&WH'XI'VG&XH'XI'WH&VG&UF%VG%WH'UF%VF%RC#RC$PA#RD$TF%SD$SD$PA#QB#TE$SC$O@"P@#RB#RC$RC#RB#RC#SC#VH%VG%SD#SC#RC#RC#QB#SD#VH$UF$UF$RB#P@"QA#QA"RB#PA"P@"P@"RB#QA#QA#PA#QA#P@#RB$O?"O?"O?"O?"QB#RD$QB#TE%UF%TE$PA"SD$QB$RB$RC#RB$RC$UF%SC$TE$SD$P@"P@"O?"PA"O?"O?"P@#QA#QA#P@"O?"O?"RB#QA#QB#QA#QA#P@#O?"O?"O?"O?"O?"P@#P@#P@"P@"P@"P@"P@"P@"QA"QA#P@#O@"M>!M>!N>"N>"M>!N>!N?"N?"N?"O?"O?"O?"O?"PA#RB#O?"O?"O?"O?"O?"O?"P@"P@"RB#P@#O?"O?"O?"N?"N>"M=!M=!N?"N?"O?"O?"N?"N?"N?"N@"P@"N?"N?"N?"N?"N?"N?"PA#SD$QA#PA#PA"UF%RC#RC#RC$N?"O@"N?"O@"P@#N?"P@"P@#PA#PA"O@"O?"O@"QA#QA#QA"PA"QB#RC#O@"M>!M>!M>!N?"O?"P@"O@"M>!K< O@"N?"M>"M>!M>!M>!O?"O?"N?"N>!M>!M>!M>!M>!O@"P@"O@"P@"M>!QB#QB#RC#SD$PA#P@"M>!M>!O?"O@"L=!M>!M>!O@"N?"M=!M>!N?"O?"P@"SD$QA#O?"O@"O?"M>!M=!P@"O@"N?"QA#M=!I:I:L!L< M>!O@"O@"N?!M>!M>!O@"N?!L= L= M>!M>!N?!L= K< K< N>!N?"I8eX@_T=\N3`U?]UBM=!L!L= L= L!M>!M>!N?"O?"O@"P@"PA"QB#RB#RB#QB#P@"M=!L=!K!M>!L=!L!QA#O@"N?"N?"M>!M>!RB#PA#UF%TE%UF%SD$RC$QB#RB#O@"O@"P@"N?"N>!M=!M>!L=!L>!N>!N?"P@"QA#RC#UF%QB#RC#N?"O@"N?"N?"M>!M>!L=!M>!N?"P@"QA#P@"QA"TE$N?"N?!O@"O?"PA"O?"O?"P@"PA"QA#P@"P@"O?"O?"O?"N?"N>"O?"O?"N?"O?"N?"O?"P@"P@#P@"P@"O?"O?"O?"O?"O?"P@"P@#PA"QA#RC#TE$RC#RB#RC#VG%XH&UF$QB#QB#QB#QB#PA#UF%UG%VG%QA#RB#QB"P@"O@"N?"N>"SD$SD$P@"P@"VG%UF%SD$TE$SD$RB#QB#QA#P@"P@"P@"QB#RB#RC#QB#QA#QA"SE$TE$TE$UF%VG&WH&XI&XI&WH&WH&VG%VG%SD$PA#SD$TF%RC#RC#QB#SD$RC#RC$SC$RB#QB#RC#TE$RB#RC#SD$RC#TE$UF%QB#P@"P@"QB#QA#P@#P@"PA#UF%RB#TD$QA#QA#QA#QA#RC#UF%WI&XI&TE$TE$TD$UF%UF%VG&UF%VG%UF%TE$VH&TE%VG%VG%WH&VG&UF%UF%UF%TE$VG&VG&YJ(XJ(WH'SD$VH&VG&SD$QB#SC$TE$TD$PA#P@#P@#P@#RB$RB$RC$TF%VG%SD$RC#TE%QA#SD$P@#P@"O?"P@"O?"QB#RB#QB#N>!N?"P@#O@"O?"SD$QA#N?"N>"N?"O?"O?"O?"O?"O?"O?"O@"O?"PA"PA"PA"RB#TD$WH&UF%PA#O?"N?"O?"N>"N=!O?"QA"P@"QA#PA"P@"P@"P@"QB#P@"SD$RC$QA"QB#QA#RC#RB#RC#RC#SD#TE$UF$UG%UF$TE$TE%TE%TE%TE%TE$SD$RC$QB"PA#PA"O?"P@"QA"RB#RB$QB#SD$RC$TE$RD#SD$RC$RB$QA#QB$QB$QB$QB#QA#QB#QB#PA#PA#PA#QA#QA#PA"O@"PA#P@#PA#PA#PA#RC%RC%QB#PA#QB#QB#P@"QB#RC$SD$TE$RC$QB#PA"QB#SD%SD%TE%SD%TE%SD%QB#RC$QB$PA"N?!M>!N?!M?!N?!N@"N?"PA#PA#QB$PA#RD%QB$PB#QC$QC$PB#RC%QB#RD#SD$TE%RD%QB$QB$RC$QB$PA#QB$RD$SD$QB$RC$SD$SD$SD%RC$SD$RC$RD$RC$RC$RC$RC$RD$SD$SD$TE$SD$SD$RC#QB#PB"RC#TD$TE$UF%RC$RC$SD$RC$RC$SD$VG&UF%TE$RC#RC$PB"PA"PA!QB"QB#RD$QA#QC"SD$SD%RC#PA#PA#QB#O@"L=!M>!SD$QB#L=!RC#N?"M>!N>!N?"N>"N=!M=!M="PA#P@#N>"N>!M=!L!O?"J; J< J< J< K< J< L=!RB#SD$SD$RC#RC#QA"RB#RC#QB#P@"O@"N=!L"O?"P@#O?"N>!N>!M=!M=!N>!N>"N>!M=!M=!M>!M>!N>"O?"P@#P?"P@"QA#RB#RD$SD$P@"QA#O?"O?"O?"N>"O?"O?"O?"P@"P@#O?"O?"QA#QB#SD$TE$SD$TE$XI&\N)XQ6JJ:heUz¸lxuSco[kznLatMbuDYkF[kBTbAUd9JTQ]XV[H`W/[M)XJ'XI'WG&WG&WH&YK'[N([N(XI'UF%UF%UF%VG%TF%TF%UF%UF%TF%TE$UF%UF%UF%VH&VG&UF%VH&TE$TE$WH&UF%TE$RC#QB#QA"PA"P@"P@"P@"PA"P@"PA#PA"P@"PA"PB#P@"P@"P@"P@"P@"RB#P@"P@"QA#QB#QB#QB#QB#PA"QA"RB#QB#RC#RC#RC#RC#RC#RC#SE$SE$SE$TE$UG%XI'WH&UF&WH&VG&XI&XI'WI'TE%UF%VG&UF%RC#RB#TE$TF$TE$UF%YJ'XI&WH&XI&WH&WH&VG&VG&VG%WH&WH&WH&VG&VG&VG&XI'UF&VG&WH&UF%TE%XJ(XJ'WH'WH&XJ(XI'WH&VG&TE$QA#QB#PA#RB#SD$SC$SD$RC#O@"QB#SD$QA#P@#QA#PA#SD$RC#TD$SD$UH%TE$QB#P@"RC#RD#RD#SD#SD#SD#SE#RC#RC"RC#RD$RC#RC$RC#RC$QB#PA"P@"QA#PA#P@#QB#P@#O?"P@"QB#O?"QB#SD$SD$SD%RC#QA#QB#SD$RC$TE$SC#SD$QB#RB#TD$SE$TE$QB#PA#P@"P@"P@#QA#QB#P@"P@"O?"O?"QA#O?"P@#RC#RB#QA#P@"QA#P@"Q@#P@"QA#O?"QA#RB#QA#QB#P@"P@#PA"QB#O?"O@"N?"O?"M>!M=!L=!M>!N?!N?"N?"N?"O?"O?"N?"N?"O@"P@"RB#P@#O?"P@#O?"P@"O?"PA#P@"P@#P@"O?"O?"O?"N>"N>"O?"P@"O?"N?"O?"O?"N?"O@"O@"P@"N?"P@"O@"N?"N?"P@"P@#QB#RC$QB#SE$SD$TF%VG&RC#QB#N@"O@#RB$SD$RC$P@#PA#QB#PA"QA#O@"N?"PA"PA"P@"PA#PA"N?"M>!M>!M>!N?"O@"O@"N?"M>!L< M>!M>"O@"M>"K< M>!N?"K< L=!M>!N@"M>!M>!M>!N?"N?"P@"RC#N?"PA#QA#QB#PA"QA#O@"L>!L=!L=!M>!P@"M>!N>!N?"P@"PA#O@"N?"N?"N?"P@"O@"QA#PA#PA#QA#SD$N?"L=!M>!QA#M>!I: J; K; H9J; L=!O@"M>!K< M>!O@"O@"O@"N?"L= M>!M>!N?"M>!L< M>!L< L< K< J; L< L< H9J; L=!K< L< L=!N>!L= M>!L= L< L< L= L< J; J; K; K< L!O?"P@"N>"K!K; N?"PA"RC#RC$RC#RB#QA#P@"O@"RC#QB#PA"M>!M=!L=!L=!M>!M>!M>!P@"RB#RC#QB#RC$SD$SD$O@"PA#N?"O@"N?"M>!M>!N>"N?"QB#QA#P@"PA"PA"O?"O@"O?"O?"O@"PA"QA#QA#P@#O?"O?"P@#P@"P@"P@"N?"N>"N?"O?"O?"O?"O?"O?"O?"N?"N?"O?"O?"O?"PA#P@"Q@#P@"PA"PA"RB#TE$RC$RC$QB#RB#SD$UF%RC#QB#RB#QB#RB#SD$SD$VG%SD$QB#RC#RB#SD$QB#SD$PA"UF%VG&RC#P@"RB#VH&SD$VG&VG%RC$QA#P@"P@"P@"P@"RB#SD$SD#TE$UG%SC$UF%UF%UG%TE$UF%UF%WI&VH%WH&WH&VG%RC#RC#RC#QB#SD$SD$RC#RC#VG%VG&RC#UF%RC#QB#RC#SD$SD$QB#RC#SD$RC#SD$RB#QB#QA#QA#SC#SD$QA#RB#RC#TE$SC$QA#RB#QA#RC#SD$SD$SD$UF%SD$TE%UF%TE$TE%TE%VF%SD$SD$WH&VG&UF%TE$UF%UF%TE%UF%TE$TE$WH&VG&SC$UF%XI'VG&UF&TD$TE%UF%RC#QB#TE$WI&WH&PA#P@#P@#P@#O?"P@#RC#SC$TE$TE$RB#P@#P@#P@"QA#RB#O?"O?"TD$QB#RB#O?"O?"N>!M>!N?"O@"P@#N?"M>!M>!N?"O?"O?"O@"O@"P@"PA"O@"O?"O?"P@"RB#RC#SD$QA"O?"O?"N>"O?"O?"O?"QA#RB#RB#QB#QA#QA#P@"P@"P@"P@"QA#QA#P@"P@"O?"RC"SD$SD$RD$SC$TE$TE$TF$TF$TF%TE$TD$SD$TF%UF$QB"RB#SD$PA"RB#QA"QB#QA#RC$QB$PA#RB#SD%SD%TE$TE%TE%RB$RC$QB$QB#QB#RB#QB#RB#QB#QB#QB#QA#PA#QB#PA#PA#QB#O@#OA"O@"O@"QB$QB$PA#PA"QB#RB$QA#QB#QB#RC#TD$TE%TE%QB"PA"RC$SD$UF'SD%TE%TE%RD$RC$QB#P@"O@"N?"O@"O@"O@"O@"O@"PA"PA#QB$RC$SD%TE&RC$SD%RC%PB#QB#QB$QB#RC%QB$RC$RC$QB$QB$QB$QB$RC$RC$RC$RC%RC$TD%SD$RC$RC#TE%SD$RB$RC$RC$RD%SD%SE%SD$SD$SD$TE$SD$RC$RC$QB#QB#SD#TE$TE$TE$TE$TE%SD%RD%SD%RC%RC$P@"PA#PA"PA#PB#QB#RC#SC#TE#QB#RC#SD#SC#TD$RB#RC$PA"QB#PA#N?"PA#SD$PA#O@"N?"M>!M>!QB#N?"N>"M=!N>"N>"O?"O?"N>"O?"N>"L"P@"O?"N?"O?"N>!N?"N>!N>!N>!N>!N?"O?"N>"P@"O@"PA#RC$RC#RC#RC#TD$QA#SD$P@#P@"P@"P@"O?"QA#O?"P@#RB#PA"QB#RC#SE$RD$VG&ZL(QJ5_[I\W@rⶵy`sRgz;Re;Qa;Pb;Qb:LZFUVZV2aW/^S,ZL(ZL(ZL(ZK(XJ'XI'WH&VG&VG&ZL(XJ'UF%VG&TF%UF%TE$TE$UF%UF%TF%UF%VG&VG&WH&WH&XI'WH&VG&UF%UF$WG&VG%VG&UF%RC#P@"P@"P@"PA"PA#QB#QA#QB#RB#RC#RC#PA"P@"P@"RB#PA"P@"P@"P@"QA#P@"P@"PA"QB#QB#QB#QB#QB#QB#RC#SD$RC#RC#RC#SE$SE$SE$SE$TE$TE$UF%WH&WH&XI'VG&\M,ZK*ZK(WI&XI'VG&VG&WH&UF%UF%VG&VG&WH&XI'XI'XI'XI'WH&WH&WH&WH&VH&WG&WH&WH&WH&VH&VG&UF%TF%VG&WH'XI'XI'XI'WI'XH'XI'XI'XI'WH&XI'TE$SD$RC$RC#RC#UF%VG&TE$RC#SD$QB#P@#QA#P@"RC#SD$RC#SD$SC#O?"TE#QB"P@"PA"SD$RC#RC#SD#SD$TE$SD$QA"PB"QB"QB"RB$SD#RC#SD$RC#PA"P@"O?"QA"SD$O?"O>"O@"O@"O>"O?"P@#RC$QB#RB#SC%P@#RC$RC#O?"RB#QA$VG&RD$RB#SD$RC$QC#QB#Q@#P@#P@"O?"QA#P@"P@#QA#P@"PA"P@"P@"P@"SD$SD$PA"PA"SD#RC#QA#QA"QA#RC#SD$RC#RC#QB#QA#PA#QB#RC$Q@#P@"RB#O?"O?"M=!K"N?"N?"N@"N?"N?"N?"O?"O?"O?"P@"O>"N>"P@#P@"PA"P@#P@"P@#PA"P@#PA#O?"PA"O?"O?"O?"O?"O?"P@#RB&QB%O@#N?"O@"PA#O?"P@#M>!M=!M>!M>!O@"O@"RB#QB#RC$UF%SD$SD$TD$SD$PA#O@#N?"O@"O@"PA"TE$TE$QB#N?"N?"N?"N?"QA#O@"RB#P@"O@"M>!M>!M>!O?"N?"N?!N?"PA#O?"M>!M=!O@"N?"N?"QA#O?"N>!N?!QB#VG%TF%QB#O@"QB#P@"UF%RC$N?"M>!N?"PA#P@"N?"N?"N?!PA#O?"QB#RC#RC#RC#RB#O@"QB#QB#RD$SD$QA#O@"N?"N?"M>!N?"N>"O@"O@"N?"N>!N?"L=!K< L=!J; H9L= N?"QB#QB#PA"O@"N?!L=!PA"O@"M>!O@"M>!M>!M>!L< K< K< L< L< K< K; K< J; K< I: I:L< L=!L< M>!M>!M>!M>!L< L< L=!L=!L"N?"N?"O@"M>!J; H8J; N?"N?"M>!K< L=!O@"QB#O?"N?"SD$P@#QA#RC#N?"N?"N?"P@"N>!L=!PA"O@"L=!L=!N?"PA#RC$P@"O@"QB#RC#QB#N?"N?"O@"N@"O?"N?"N?"P@"P@"O@"QB#PA#O@"P@"PA"P@"P@#PA#QA#P@#QA#QA#P@"P@"QA#P@"P@"O?"N?"N>"N>"O?"O@"O?"O?"O?"QA#O?"SC$P@"O@"P@"O?"O?"P@"P@"P@#QA#RB#QB#QB#RC#SD$SD$QA#QB#QB#RB#RB#RC#RC#RC#RC#RC#RC#QB#QB#TE$UF%UF%XI'WH&SD$UF%RC#RB#UF%SD$VG&VG%VG&RB#QA#QA"SD$QB#QA#SD$VG&UF%VF%VG&WG&VG&VG&WG&VG&VG%UF%WH&WH&WH&UF$UF%TE$RC#RB#PA"QA#TE$RC$RB#SD$WH&RB#VG%UF%TE$WI'WI&TF%SD$SD$SD$RB#SD$TE$SD#RC#QB#SD$SD$QA#RB#RC#TF$TE$VG&VG&TE$UF%SD$SD$SD$UF%SD$UF%TE$WH&VH&XI'ZK(UF%UF%UG%UG%VG&VG%UF%SD$SD$TE$TE$SD$SD$RB$RC#SD$SD$SD$SD$SD$SD$VH&WH&WH&VG%UF%WH&VG%QA#QA#QB#QA#P@#P@#RC#TE$TE%UF%TE$SC$RB#P@"P@"P@#RB#P@#RC#RB#PA#O?"O?"N?"O?"N?"QD*N?"M>!N?"O?"O?"O?"O@"PA"PA"PA"P@"O@"O@"O@"QB#QA#P@"RB#RC#RC#QB#O@"P@"RB#P@"P@"SC#QA#P@"P@"P@"QB#P@"PA#PA"O@"O@"P@#O@"SD$UF%UF%UF%TE%TE%UE%UF%TE%TE$TE$TE$SD#TE$SD#RD#RC#QB"PA"QB"RC#RC$QB#QB#RC$QB#SD$RD$RD$TE$TE%RC$RB#TD$RB$RB#P@#QA#QA#RB#SC#RB#QA#RA#RC$QB#RC#RC#SD%QA#PB#PB#QA$QA$QA$PA#RC$RC$RC$RC$RB#QB#RB#RC$SD$TD$PA"O@!SD$SD%VG'TE&TE&TE&SD%SE%RC$RB$QB#PA"O@"O@"OA"O@"O@"PA"PA"O@"PA#PB#RD%QB$QB#QB$O@"O@"O@"QB#QB$PA#QB#QB$RC%QB$QB$PA$QB$RB%QB%QB%QB$QB$QB$RC$QB$SD$SD$RC#RC$QB$RC$SD%SD$RD$SD$TE$TE$TE$SD$RC$RC$RC$RD#RD$TD$TE$TE$TE%RC$QB$RC$QB$QB$RD$TF$SD$RD$SD$RC#QB#SD$TD$RB#P@"RB#RC#QA#QC#SD$RC$SE%QB#PA"O@"M>!L=!O@"N?"L=!K< L= N>"N="N>"O?"M=!M=!N>"N?"N>"N>"O>"O?"N>!O?"N?"M=!L=!L=!P@"PA#O?"N>"N>!P@#QB#QB#P@#SD$SC$P@"SD$P@#M=!L=!L=!N>"N>!O?"RB#RB#RC#RC#SD$TE$QB#RD$QB#QB#RC#PA#PA#QA#O@"O?"O@"QA#SD$SD$SD$SD$RD$SD$SD$TE$TE$UF%SD$RC#RC#SD$VG&XJ'VG&RC$PA#O?"O?"O@"TE%TE%UF$TF$P@#RD$TE$SD$TE$TE$SD$N?"O?"O?"P@"P@"O@"N>!N>!N>!O?"O?"P@"P@"P@#QC#TE$SD$SD$SD$TF%UF%RC#RB#SC#SD#RC#TE$SD$QB#PA"QB#PA"RC$RD$TF%WH&ZL(TJ,UM2xui|šoMbv@Vh4L_.GY*EW8L[;MX_eN`W0ZL)YJ'YK'YK(ZL(ZL(ZL([N(ZL(YJ'XI'VG&WH&TE$TE$UF%UF%TF%TF%UF%TE$TF%UF%WH&WH&WH&XI&XI'UF%XJ'XI'SD$UF%VF%VG&SD$RC#QB#QB#PA#PA#RC#RC#RB#SD$SD#RC#RC#RC#RC#RD$RD#SD$RC#QA"QB#QB#RC#RC#QB#QB#QA"QB#QB#RC#SD$UF%TE$RC#RC#SD$SE$SE$TE$TE$TF%TE$TE$TF%UG&YK'YJ'[L+WI'WH&ZL)YK'ZL(XI'YK'ZK'YK'WH&TE$XI'VG&UG%XJ'XI'WH&WH&WH&WH&VG&WH&WH&WH&WH&WH&VG&UF%TE$TE%UF%VG&XJ'XI'XI'WH&YJ(YJ(XI'ZK(XI'VG&UF%UF%XI'XI'WH&VG&WH&SD$QB#QA#QB"O@"P@"PA"QA"RC#QA#O?"SD$RC#SD#UG$TE$TF$WI%UF$TE$UG$TF$RD$P@#P@"P@#QA#PA"PA#PA"PA#P@#P@#QB#QA#P@#SD#QA#RC$SD$TD&O?"QB$RD$SE$SD$SD$SD%P@"P@"P@"QA$O?"O?"RD$PA#SC$QB#O?"P@"QB#P@#P@#P@"O?"O?"RB#SC$SC$RB#SC$RB#SD$TD$TD$UE$SC$O?"QC#TD$RC#RB#SC#SD#SE$TE$SC#TD$RC#SD$QB#RC#TD#QB#TE$TF%QB#O?#N?"M>!O@"N?"O@"O@"N?"N?"N?"O?"O?"P@"O@"O?"O?"O@"P@"O@"P@"PA#P@#P@"P@#P@#P@"P@#P@"P@"P@"O?"O?"O?"SC&QB%P@#N>"N?"O?"P@#QA#O@"N>"N?"M>!O@"O@"SD$TE$QB#O@"QA#VH&TF%TE$SD$O@"O@"QA#QB#O@"O@"QB#RC$O?"PA#SD$PA"RC#SD$RD$TE$QB#N?"O@"N?"N?"O@"N?"O@"QB#O?"L=!M>!M>!M>!N>"P@"O@"O?"PA#RB#QB#SD$QB#P@"VG%QB#QB#O?"QB#PA#PA"PA"PA#QA#O@"O@"P@"QA#PA#UF%UF%RB#TE$RB#M>!PA#RC$QB#RC#QA#PA"PA"N?"O@"M>!N?"N?"P@"N?"PA#M>!N?"I9I:I:M>!PA#QB#QB#O@"N?"O@"M>!N?!N>!M= L= K< M= L< L= L< J;K< K< L= M=!K; K; L= K< J; J; L< M>!M=!L< L= L= K< K< K< K< J; J; J; J; J; J; J; J; J; J; J; J; J; J; L="L>#RC'RC%M>!L=!L=!L=!N?"M>!J; J: H9H9I: J; J; N?"P@"PA"RC#RC$SD$PA#QB#M>!QB#O@"P@"N?"L!P@"N?"N@"O@"P@"RC#SD$RC#N?"N?"M>!M>!N?"O?"P@"O@"O@"O@"QA#QB#RB#P@"P@"P@"P@"P@"O@"QA#QA#P@#N?"O?"O@"P@#PA#O?"O?"O?"O?"O@"P@"O?"QA#O?"O?"N>"QA#PA#N?"O?"N?"O?"O?"P@"QB#PA#QA#PA#QA#RB#TE$TE%TE$RC#QB#RC#RC#RC#RC#RC#RC#RC#RC#QB#SD#TE$TF%WI&ZL'VG%YJ'XJ'UG%UF%SD$PA"RB#UF%VG&TE$QA#SD$UF%SD$VG&WH&VG%TF$WH&WH&XI&WH&WH&WH&WH&WH&TF%VG%TE$SD$RB#SD$RC#RB#QB#QA"QB#QB#RC#TE$TF%TE$RB#RB#RC$UF%XI'XI'WH&UF%TE$UF%RB#SC#VG%SC#QB#TE$TE$QB#QA#RB#RC#SD$VG&XI'UF%TE$SD$RB#SD$UF%SD$SD$TE%UF%VG&WH&XJ'VG&VG&ZK(UF%XI'WH&XI&XI'WH&TE%SD$RC#RB#SD$PA#SD$SD$UF%UF%WH&VG&VG&WI'XH'VH&WH&WH&WI&YK'WI%RB#QA#QA#RC$TD$VG%SD#RC#TE$SD$QB#QA#P@"P@"P@"P@"P@#SC$RC#RB#SD$O?"PA#SD$TE(\WHO?"N?"O?"O?"N?"O?"P@"P@#P@#PA"O@"O?"O@"O@"O?"O@"RB#QA#QB#QB#TE$O?"O?"P@"P@"RB#RB#RB#RC#RB#QB#RC#RB#QA#RC#SD$QB#SC$RC#UG&UG%UF%UF%UF%UF%VF%TE$SD$SD$SD$RC"RC"RC#SE$RC#RC#RC$RC$SD%SD%SD%RD%TD%SD%SD$RC#SD$SD$SD$RC$RC#SC$SC$RC#SD$RC$RB$RB#SC$SD$SB$RC$RC$TD$SE%RD$TE%TE%SD$SD%RC$RC$RB%RC%RD%RC$RC$QB#QB#RC$RC$RC$SC#RC#QB#O@!PA"RC$TE&SD%SD%TE&TD%SD$TE&TE&RC$RC$PA#PA"RC$PA#PA"QB#QB$PB#PA#O@"PB#RC#PA#QB#QB#O@"PA#RC$RC$RC#QB$QB$RB%RC$RC$RC%PA#PA#RC%QB#QB$QB$QB$QB$RC$SD%RC$QB$RC#SD$SD%SD%SD$RC$RC$TD$TE$TE$TE$RC#SD$RC#RC$RC#RB#QB#RC#QB#QB#QA#QB$PB$QB$QB#TD$UF%VG$TE$RC$VF$TD$TE$TD$QA#QA#QA#PA#RB#QA#PA#QA#SD$RC$PA#O@"PA#L=!M>!N?"O@"N?"M>!M>!L"M"O?"P@"QA"TE$UF%P@"RB#SD$QB#TF$P@#M>!P@#O?"QB#P@"RC$TE$SD$UF%RC#RB#O?"M>!M=!M>!O?"P?"RB#QC#RC#RC$TE%TF%SD$UF%TE%RB#RC$VG&XI'SD$O?"O?"P@"RC$RC#RC#SD$SD$SE$SD$SD$SD$TF%WH&UG%UF%O?"PA#QB#WI'WH&UF%UF%SE$RC$VG&VG&TE$TE$RC$SD$UF%TF%TE$SE$SD$P@"N?"O?"O?"O?"O?"N>"N>!O?"N?!O?"O?"O@"O?"QB#SD$RC$TE%TE$TE$SE$QB#RB#RC#RC#SD#VG%VG%TE$SC#SD#QB#VG%SD$UF%WH&YJ'^Q+WQ:pph^[JwvnU^\IW[?RaBZnJ]p>Rd3HZ=P`.>H5EP6EO_iUjc5\O*ZL([M([N(ZL(ZL(YK([N([N(ZL(XI'WH&XI&UG%UF%TE$TE$TF$UF%VG&TE$TE$WH(WI(VJ*UJ*YK'WJ(WI'\N'WH&TF%WH&WH&VG&RC#RC#RC#QB#RC#RC#QB#RC#RC#TF$SD$SD$SD#RC#UF%SE$SE$SD$SE$SD$RD#SD$SD$QA#QB#SD$TD$QB#QB#RC#RD#SD#SE$SE$SD$SE$SE$TE$TE$TF%TF%UF%TF%TF%VG%XJ'YJ'YJ(XJ'^P.YK(ZM(YK'XJ'ZL(ZL(ZK(YK(TE$UF%WH&UG%UG%VG%VG%UG%TF%VG&ZL,WH'XH'XH'WH&WH&WH&WH&VG&UF%TE$SD$TE$VG&VH&YJ(ZK(YJ(WH&XJ'VG&WH&WH&TE%TE$VG&TE$TF%TE$SD$SD$TE$SD$RC#O@"RB#QB#SC$RC$RC$RC$TE%TE%UG%UF%TF$VG$VH%UG%UG$RD#QB#O?"QB"RC#QA"QB"PA"P@#O?#SD%SD$TE%SC#SD$RB#QB#UG$UG$SD$QA#PA#SC#RC$QB#QB#QB$QB#PA"RC$QB$O@"RC$SD#SE$TF$QA#P@"P@"RC#QA#PA#P@"Q@"O@"RB$SD$TD$RC#TE$VG%UE%TD$UE$TE$TE%QA#SD$VG&UF%SD$SC#TE$TE$TE$TD#RB#RB#UF%SD#P@"SD#RB#SD$TF$SD$QB#RE#N?"N?"PA#P@#QB$P@#O@#OA$O@#O?"O@"P@#PA#RC%O@"PA#PA#PA"PA"PA"P@"PA#PA#O@"O?"PA#PA"P@"P@"O?"P@#P@#QB$RB%P@"O@#O@#QB$QB$RB%QA$O@#O@"O@"M>!N?"RB#RC#PA#SD$TE$UF%TE%QB#O@"QA#P@"QB$PA#QA#SD$UF&PA#O@"UG%SD$UF%TE%TE$UF%RC$PA"N?"O@"N?"QA"O@"O@"P@"M>!L=!N?"N?"QB#QA#O@"O@"O@"QB#RC#P@"N?"O@"PA#RC$SC$SE$RC#RC$O@"QA"SD#P@"QB#PA"O@"P@"QB#P@"RB#UF%QC#SD$TE$M>!N?!N?"O@"QB#SD$RC$QA#RB#TE$P@"O@"QA#QB#SD$P@"P@"O?"J; K< N?!PA#RB#QB#QB#PA#L= L< N>!N?!N?!N?"M>!K< M>!M>!L=!L= L= K< K< L< L< K; K< L< L< L< L< L= L= K< K< L= L= K< L"N>"O@"M=!I:I:J; I:J; K< O?"TE$RC#RB#QB#SD$RC#O?"M=!O@"QA#N?"PA#QB#QA#RC#SD$QB#SD$QB#TE$SD$RC#QB#M>!N?"L=!M=!N>!N?"O@"QA"O@"O@"P@"P@"QA#P@"P@"O@"O?"N?"O@"RB#P@#P@"P@#O?"O?"QA"O?"N?"O?"O?"O?"O@"P@"P@#QA#O?"O?"QB#SC#RC#P@"O?"O?"O?"O@"P@#RB#QA#QA#PA#QA#QA#RC#QB#RC$RC#RC#RC$SC#SD$SD$SD$SD$SC#RC#QB#RB#QB#TE$QB#VG%XI&XJ'[M'WH&UF%QB#O@"PA"SD$TF%VG&RC$RC#TD$UF%WH&VG&VG&VF%VG%VG&UF%UF%VG&VG%WH&WH&VG%WH&SD$QA#QA#QA#QA#SD$RB#SD$TD$QB#SD$TE$VG%SD$RB#PA#P@"P@"PA"RB#UF%SD$UE%WH&VG&VG%RC#RB#RB#RB#UF%UF%UF$VG%SD$SD$UF%UF%UF%RC$TE$UF%SC$WH&RC#UF%RB#SC#VG&XI'YJ(XI'ZK(ZL(YJ(YJ(YJ(YJ(XI'WH&SD$TE$SD$TF%VG&UF%TD$UF%VG&TD$WH&WH&XI'WH'WH&XI'WH&WH&VG%WH%ZL&ZL'SD$QA#RC#XI'XI'VG&UF%RC$RB#P@"O?"P@"P@#QB#PA"RB#QB#TE$QA#SD$RC$P@"O?"N?"N?"N?"N?"N>"N?"O?"O?"P@"P@#P@#QA#PA"O?"O@"O?"O?"PA#SD$QB#QA#RC#UF%QB#SD$QB#RC#QA#QA#RB#QB#PA#QA#QA#TE$TE$TE$VG&WH&XI'XI'VG&WH&VG&VG&UG%WH&VH&WH&TE$TD$TD$SC#RD#RD#SD#SD$SD#TE%SD$TE%TE&TE&SD&SD%SD%SD%TE$TE$SD$RC$SD$SD$SD$RC$RC#SD$TE$SC$TD$RC$RB#SC#SC$TE%UF%TE$SD$TE%SE$SD$SD%RC$RC$QB$QB$RC%RD%SD%RC$RC$SD$SD#SD$RC#SC#RB#PA"QB#RC$SD%SD%SD%SD$TE%SD%SD%RD$QB$QB$SD%RC$RC$QB#PA#SD%RC%QB$QB#PA#PA#QB$RB$QB#SD%QB$PA#TE%TE%TE%TE%RC$QB$RC%RC%QB$RC$RC%RC%QB#QB$RC%PA$QB$QB$RC%RC%QB$RB#RC#UF%TE%RC$UF%SD$SD$SD#TE$SD$RC#RC#SD$RD$RC#RB#PA"RB#PA"O@"PA#QB$PB#RC$TE$UF%SE$RC#RB#RC$TE$RC#TD$QA#SC$SD$SE$SD$RC$SD$QA#O@"PA"QB#N?"N?!O?"O?"M>!N>!QB#RC#L=!M"M"TE%UF%UF%YL(WI'VG&WH&UE$TE$SD$SC#TE$TE$TF%TE%TF%RC#QB#O?"O?"O?"RC#QA#QB#O@"N>"N>!O?"N?"O?"P@#SD$UF%TE$SD$SD$SE$SD$RC#RC#SC#RC#SD$UF%TE$TF%UF%SD#VG&SD$VG%WH&XI&YJ']P-WSAb\ERJ+IJ9!O@"PA"QA"P@"QA"O@"N?"O?"PA#QA"RB#QA#PA#QA#PA"P@"PA"N?"N?"N>"P@"RB#SD$TE$QB#RC#QB#TE$TE$RD$UF%SC$QA#PA#TE$PA#PA"RC#QA#RC#TE$SD$QB#N>!N>"QB#QA#SD$RC#RC#SD#RC#RC#RB#QA#PA#PA"N?"P@"M>!M>!N?"O@"RB#RC$RC#QB#PA"L=!M>!N?"N?!O@"O@"O@"N?!O@"K< L= L= J; J; K< L= L= L= L< L= L= L= L< L= L= J; M=!L= L=!L=!L=!L=!K< K< K< J; J; J; J; I:J; J; J; J; J; PB(YK3TE-UF.K!N?"QA#O@#XJ1PA%J; I:I:I:J; M>!PA#RD$PA#K< K< L=!M>!L=!K< M>!L=!M=!QB#RC$TE$TF%QB#TE$TE$TE$SD$PA"O?"M>!L=!L=!K< M=!M=!N?"P@"P@"O@"QA#P@"QA#P@"P@"QA#O?"P@"RB#RB#P@"P@"P@#O?"O?"P@#N?"O?"O?"P@"QA"PA"P@#PA#RB#RB#RB#TD$UF%UF%SD$SC$O?"P@"P@#QA#PA"P@#RB#RB#QB#QA#QB#QB#P@"QB#QB#RC#RC#SC#TE$TF%TD$RC#RC#SD$RC#QA#SD$RB#PA#TD$VG%UF%TD$RC$RC$QA"P@"RB#TE$VG%TE%SD$RC#RC#UF%VG&WI&WH&WH&UF%SD$UF%WH&XI&XI'UF%XI'UF%PA"P@"P@"P@"QB#TE$TE$TE$TE$SD$TF%PA"P@"P@"N?"N?"O@"O@"P@"P@"O@"SC$RC#QB#QA#VG&VG%PA#O?"PA"UF$TE$UE%TE$QB#TE$RB#P@#QA#QB#RB#RC$RB#WI&WH&XI&VG%UF%TE$VG&XJ([M)YJ(YJ(YK(XI'XI'YJ(YJ(VG&SD$SD$WH&UF%VG%VG&UF%UF%UF%TF%VG&XJ(XK(XI'WH'VG&VG&WH&XI&WH%XI&]P)[M'UF%RB#SD$XI'WH&SD$SD$RB#P@"O?"O?"O?"QB#P@#SD$SD$RC$UF%TE%TE$QA#P@"O?"O?"O?"O>"N>"O?"O?"O?"P@"PA"P@"P@"P@"O@"P@"P@#P@"SD$RC$SD$VG%VG%UF%P@"RC$SD$RC$P@"QA#TE$SD$O@"SD$VG&XI'XJ'YK'VG%YJ'YK(ZL(WH&WI'WI&WH&VH%WH%VH%VH%UF$UF$UF$SD$SD#SE$RC#TD$TE%UF%UF%UE%SD$TE%TE&SD%SD$TE$TD$SC#RC#RB#RC$SD%SD%RC$RC$RD%TE%SD$SD$SD$RB#SD#UG%UF%TE%SE$TF$TF%TE$SD$RD$RC$QB#PA#RB$RC%RC%SD&RD$SD$SD%RC$TD%UE%TD%QA"RB#QB#SE%TE&TE%SD$SD%SD$RC$RC$RC$QB#QB#SD%RC$SD%RD%QB#RC$TE&SD%RC$RC%SD%SD%SD%TD&RC$QB#RC#QB#RD$SD%TE%TE$RC%RD%RC%QB$PA#RC%RC%RC%SD%SD%QB#QB$RC%RD%RC%SD%QB$SD#TE$UF%UF%VG%SD$TE$SD$RC$SC$SC#SD$SD$RC#RC#RC#PA"PA"P?"O@"QB#QB#QB#SD%RC$RD$RC$QC$QC$QB#TE$TE$UF%SD#VG&SD%SD$TE$RB#TD$SD$RD$QB#RC#QB$PA#SD$PA#SD$RD$N?"N?"N>!M=!M"N>"N>"O?"N>"L< O?"P?"P@"SD$SE$SD$QB#P@"P@"O@"RC$RC#RC#O?"O>"PA"O?"QA#UF%SD$RD$TE$UF%SD$QA#RC#SC$SC#QA#QA#SD#VG%XJ'XI'YJ(VF%SD$VH&VG&TE%TE%RC#P@#O?"PA#RD$SD$VH&RD$SD$PA#RC#QB#UF%XJ'XJ'XJ(YL(UF&PA#O?"SD$TE%UG%QB#VG&VG%TE$TE$SD#SD$SD#TE$TF$TF%TE$RC#PA#P@"O@"O?"QB#PA#QB#PA#PA#O@"P@"P@#P@"PA#RC$TF%UF%VG&VG%UF%TF%SD$RC$QA#RC#SD#TE$SD$TF%VG%VG%YJ'YJ'YK(XJ'XI'XI'\O)aYAxvj^YDZ[Nqnapoa>D8.AL0FU>O^>O]JGIH6SG)WH&YJ'XI'VG&SE$SD$RC#RC#QC#RC#RC#QB#RC#RB#SD#SE$TE$UF%UF%VG%TE%QB#QA"QB#PA"PB#QB#QB#SD$SE$TF$RC#SD$SD$SE$SD$TE$TF%TE$TF%TE$TE$UF%VG%VG%TE$VG&VG&XJ'YK([M([N(\N)\N)[M*ZK'ZK(ZK*XI'YJ'WH&UF%VG%WH&VG&UG%VG&UF%VG%UF%TD&P@!naHynU\N/UG&UG&UG&VH&WH&VH&VG&UF%TE$QA#O?"O?"QA#SD$UF&WH&WH&WH&VG%TF%SE$TE$UF$VG&UF%TE$TE$QB#SD$UF%TE$SD$PA#QA#P@"QA#RB$RB#RC$RC$RB#RC$SD$TE$TF$RD#TF$RC$RC#QC#QB#QB#PA"PA"QB#TF%VI&TG$TF$RC#RB#P@#Q@#TE$TF$UG$RB#QB#RB$RC#SC$RC$RC#SD$RD#SE$SD$SE$RC#QB#P@#QB#RC#TE$SD#RC$P@#QB#QB#RB#SC$RB#QA#RB#TD$SD$RB#TD$TD$VG%TE$TD$SC$SD$SC$RC$RC#SE%UE%TE$TE%QA"P@#QB#QB#SD#SD#TE$VH$SD$TE$TE$RC#RC$RC$UF)TF'UG&SD%QB#O?"O?"SD)O@#QA%RB&P@#O?"O?"O?"PA#P@"O@"RC&QA#QA#QA#P@"O@"O?"QA#TD$QA#O?"PA$QA$PA#P@#QB%O@#QB%VH,QB%RC'SD(TE*TE*RC&O@"QA#RC#SC$SD$QB#SC$TE$UG&VG'UF%RC$QB#O@"QB#PA#TD%TE%TE%SD$UF%VG&TE%PA#N?"O?"O@"N?!QB#PA"P@"PA#M>!QB#O@"PA#PA#P@"P@"RC#QA#O@"P@"PA#QB#QA#PA#N>"N>"O@"SC$RC$UF%SD$P@"QB#PA#QB#TF%TD$QA#TE$RC#RC#VG&UF%TE$RB#RC$SD$WH&XI'UF%RC#QB#PA#QB#P@"P@"QA#RB#P@"QB#O@"P@"O@"QA#N?"N?"L= M=!M>!M>!O@"PA#VF%UF%QB#M>!O@"O@"N?!N>!O@"PA#PB"O@"L< M>!N@"N?"N?!N>!L= L= M=!L= M>!L= L= L< L< M>!M>!N?!L< M=!M>!N>"M>!L=!M>!M>!L=!J; I:I:I:I:J; J; J; I9SE+rgSk^JXI2M="K< N?%L<"L=!L"K!O?"O@"M=!P@"O@"O@"L=!L=!K< L=!M=!K< PA#TE$UF%TE$SD$TE$RC$RC#QA#N>"N?!M>!M>!M>"P@"P@"RB#P@"PA#QA#QA#QA#QA#P@"O@"QA#O?"P@"TD$QA#O?"P@"O?"P@"P@"QA#QA#P@#P@"O@"UF%UF%QA#QA#QB#QA#SD#TF%UG%VG%VG&VG&SD%QA#PA"TE$QB#SD$SD$TD$RB#QB#PA#QB#SD$QB#RC#RB#RC#RC#SD#RC#QB#RD#VH&VH&TE$RB#RC#SC#SC$RB#QA"QA#O?"O@"QB#RC$RC#QB#RC#RC#TE$TE$RC#RC#SD$WH&XI&XI'XJ'XI&SD$UF%WH&VG&VG%SD$SC$QB#P@"N@"P?"QA#UF%TE$RB#TE$WH&TE$SC$P@"O@"N?"N?"N?"PA#SD$SD$SD$QB#PA"O@"SC$SD$UF%VH%WH&TF$RB#Q@"RC#SD$TE$TF$TE$RC$P@"P@"QA#WH&XH'TD$QA#TD$WH&WH&WI&YJ(WH'YJ(\P)\N(ZK'YK(YJ'YJ'XI'XJ'VG&RC$RC$TE%TE$WH'VG%XI'YJ'XI'VG&WH&VG%XI'VH&XJ'WH&XH&XI'WH&TE$SD$YK&\O(\N(UF%RC#TE$WH&RC#UF%TE$RC$P@"O?"QA#SD$PA#PA"RC$SD$TE%SD$SD$SD$UF%XI'WH&UF%SC$UF%TE$RC#RB#RC#RC#SC$SC$RB#QB#QA#SD$SD$TE$TE$UF%VG%UF%WH&RC#QA"QA#RC#SD$RB#UF%QB#O@"SD$WH&UE%VG%VG&TD$WH&YK(XI'WH&VH&VG%VG%WH%XH%WH%VG%UG%VG%UF$TE$TF$TE$TD$TE$UF&UF%UF%UF%VG%SD$TE%TE$RC#RC#UE$VG%SE$SD$RC$RB#RB#SD$TE%TE%SD%SD$RC$RC#RD$SD$TD$UF$VH%WI%TF$VH&TE%SE$TF%TE%RC$RC$RC$QB#SD%SD%RC#RD$RD$RC$TD%TD%SC$SC$PA"SD$TF&TE%TE%TE&SD%SD$SD%SD%RC$RC$RC%TE%TE%TE%SD&RC%RC%SD&SD&SD%SD%TE&SD%SD%RC%SD%RC$RC#RD$UF%UF%TF%RC%RC%SD%SD%RC$QC$QB#QB$SD&RD&RC$O@"QB$QB$RD%SD%RC%RC$RC$SD$RC$RB$SD$SD$UF$SD$SC$TE$TE$TD%RC$RC#RC#QB#PA#RD%PA#P@"QA#RB$RC#RC$RC#SD%QB$O@"P@#RB$RC#TD$UE$SC$RC$RB#TD$UF%UF%UF&TF$RD$SD$VG&TE%RC$SD$QA#WH&VG&TD$PA"P@"M=!L"P@"O?"N>"QB#UF%TE$TE$TF%TE%SD$QB#P@"SD$SD$N>!N>"N>"N?!O?"PA#PA"RB#P@"QA#SD#RC#UG%TE$RB#RC#SD#TE$TE$VG&VG%WH&WH&YJ'TE%UF%UF%UF%RD$RC$PA#PA#P@"P@"O?"SD$UG%SD$RC$QB#RC#RC$RC#SD$TE%UF%\O)[M(YJ'TE%QA"RB#TE$QA#RC#VG&TE$TF%TE$SE$RC#SD$SD#SD$RC#PA#O?"O?"P@"O?"QA#RC$SD$RD$RD$RC$P@"PA#O?"RC#QC#UF%WH&WH&WH&UF%TF%TE$RC#QB#RB#RB#RC#RC#UF%UG%VG&YK'YJ'XI&XI'ZK(YK'\N(^R/`]NLJ6TYRWWJSWPTbk?P_:L[:HR:HS6DM@PRDTQDSU]aBd^5_R,ZM(ZL(\N(\N([M(XJ'XI'WH&WH&WH&VG&VG&VG&WH&WH&WH&VG&WH&SH*DE7OH.VI'BF"RB#M="SD$TE$TE$SD#TF$SD#SD$RC#SD#QB#QA#P@"RC$TE&TF&QB#RC%P@#QA%P@$N>"QB%O?"O?"O?"O?"O?"SD'P@#PA#TE)TE'RB$SC$RB#RC$PA"P@#QA#QA#O?"P@#PA$QB%P@#P@#O@#O@#N?#QC'RC'SD)WI-RC%RB$RC&PA$QB#SD$XH&TE$SD$UF%TE(UF%TE$VG&VG%PA#TE%TE%TE$SE$RC$VG%VG&VG&QB#PA"RC#QB#SD$N?"PA"O@"O@"P@"N?!P@#RB#RB#RB#RB$QB#RB#P@"P@"O@"PA#RC$SD#RB#O?"O@"PA"QB"PA#PA#SD$O@"M>!M>!PA"SC$PA#QB#RC#PA#RB#UF%TE$UF%SD$XH&XI'XI&WH&UF%SD$RC#RC#TE$RC$P@"PA#RD$QB#QB#PA#P@"N?"O@"N?!O@"QB#SD#QB#O@"M>!L< PA#TE$PA"O@"N?!M>!PA#PA"PA"PA#O@"OA"N>!N?"N?"O@"M>!N?!O@"M>!N?!M>!M>!L= L= L= K< L< M>!M>!L=!N?"M>"N?"M>!N>!M>!L=!N>"L=!K; L= J; I:J; K< J; H8]O8wkYVG/TF.SD*TE,RB)p{p]h[EL=!L!M>!O@"RB#QB#O@"L!M>!RC$TF$WH&WH&VG&UF%RC#PA#O@"O@"PA"N?"M=!P@"QA"O@"O?"P@"QA#TD$SD$SD$QA#O?"O>"N>!QA#QB#QB#O?"O?"O?"N>"P@#P@"SC$RB#P@"P@"TE$VG&RC#QA#RC#RC#RC#RB#RC#TE$TE$UF%TD$VG&VG&QB#SC#VG%WH&XI&UF%RB#QB#QA#QA#TD$RC$RC#RB#SD$RB#QA#P@#SC$UF%XI'XJ'XI&SD$SD$RB#UF%VG%RB#RC#QB#RB#RC#UF%SD$RC#QA#P@"RB#SD$SD$RB#RC#SD$UF%WG&WH&VG&WH&VG%TF%RB#RB#QA#P@"QB#O@"N?"O?"QA#SD$WH&UG%XI&VG&QA#O@"N?"N?"M>!M>!N?"RC#SD$TE$UF%TE$SC#RC#O@"QB#WI&XI&XI&WI&WH%WG%RB#P@"O?"P@"QB#QA#P@"P@"PA#RC$WH&SD$UF%TE$QA#SD$WH&XI'XH&ZL(]P(\O([N'ZL'ZK(ZK(YJ'WH&TE$UG%QA"QB#QA#TE$SD$UF%WH&WH&WH&WI'WH&XJ'YK(WH'XI'XI'XI'WH&XJ'WH&WH&[N(]P)[N(WH&TE$VG&UF%UE%WH&WH&UF%QA#RB#SD$RB#QB#P@"O@"P@"TE$TE$TE%VG%VG&WH&VG&TF%RB#VG&UF%UF%XI&WH&WH&TE$SD$UF%WH&UF%TD$SC#TE$WH&UF%XI&ZK'SC#TE$P?"TE$TE$UF%TE%VG%TD$SD$VG%TE$TE$QB#QB#RB#VG%WH&VH%XI&XI&VG%UG%VH%UG%WH%VG%VG%WH%WG%UG%UF%TF$VG%TF%UF%TE%UG%VH%VG$TE#UF$TE%UF%TE%TE%TE&TD%SD$RB#QB#QB#SD$SD%RD$SD$RC#SD$SD$TE$SE$TE$UG%XI&WI&WH%VH%UF%TF%TE%TE%SD$RC$QB$QB#RC$RC$RC$RB$RC$TD%TD%TE%TE&RC$TE%TE%RC$RC$TD%TE%SD%SD$TE$TE%SD%RC$RC$UF&TE%RC$RC$SD%RC%SD&SD%SD%SD&SD%RC%RC%RC%TE%SD%TE%TE%UF%TE%SD%SE%SD%SD%TE%QC$RC#QB$RC$SD$PA$O@"QB$RC%RC%RC%RC%RC%SD%SD$SD$SD$RC$RB$TE$SD$TE%SD%TE%SD$SD$SC$RA#RC$RC$RC$SC$RD$RB#P@"QB#SD%QB#QB#PA#QB#SC$TE%SC$SD$TE$QB#PA#QB#PA"SD#SD#RB#SE$RC#SE$VG&UF%VG&TE%WI'WH&RC#RC$O@"M>!L=!M"P@#PA#RC$QA"M=!N>"N>!N>"QA#RC$TE%SD$TE$WH&WH&UF%PA#O?"P@"M=!M=!P@"QB#RC$O@"RC#VF&TD$RC$RC#TD$UG%SD$RC#TE%TE$TE$UF$UF%WH&WH&UG%TE$TE$UF%VG&TE%QA#P@"P@"O?"O?"N>"QB#SE$PA#UF%VG%XI'VG&SE$RC#RC$UF%ZL'ZK'WI&WI&TD$UF$VH&UF%RC#TF$RC#SD$TE$SD$RD$SD$SD$RD$RD$QB#O?"O?"P?"P@"SD$SD$SD$QB#PA#O@"O?"O?"P@"SD$RC$VG&WH&UF%VG&VG%TE$UF%SD$SD$SC#RB#RB#RC#WH&XI&XJ'YJ'YJ'YJ'YK(ZL(YK(YJ'\N)YO,TK+GH8]^Uso_]\JCI?CPR?Q\:LY=OZJVPP^NKZWhr\[cLlnFnnGdZ2ZL(YK'ZK(ZL(ZL(XI'XH&XH&WH&VG&TF%TF%UF%VG&VG&VG&WH&VG&WH'VG&WH&WH&VG%VG&WH&XI&YK'ZL'YJ'VG&UF%UF%SE$VF%UF%UF%TF%SD$QB#RC#RB#QA#RB#QA#QA#QA#PA"P@"QA#P@"QB#QB#RC#TF%WH&WH&TE$SE$SD$TE$UF$TE$SD$TE$TF%TF%UG&VF%UF%UF%VG&YJ'[M(YJ(ZK)XI'XJ(YJ([L*YK(YK(ZL*XI'YJ'WH&[M*XI'SE$TF'YJ+TE$SD$TE$TE$UF%XI'YJ(ZK)VG&VH)cU8gZ>]O0VG&UG&UF%TF%UF%VG'UG%YJ)ZK+WI(UG&TE$RC#RC#RB#RB#SD$VG%UG%WH&VG&WH&VG%VG&WH&VG&SD$SD#SD#RC#SD$QB#RC#TE#UF%TD$TD$UF%UG%TF$UG%VG%TE$QB#SE$SD$TE$RD$QB#QB#QC$RC$RC$QB#RC$SD$UF$UG$WI%SD$TE$UH$SE#RC$SD%UF&TF%RC#QB#RC%TE%RC#QB$QA#O?"PA"QC#RC#RC#RB#RD$QB#RC#QB#RD#PA$O?#RC$RC$QB#QB"QA"TD#P@"N?"N>"O?"RB$QB#RB#P@"RB#RB#TD$SC$RC$O?"SC$UE$QA#RB#QB#N>"P@"RC#RC#SE#TE$SC#SD$SC$SD#RB#QB#P@$RC$QB$WH+UF(RD'P@#O@#P@$N?"O?"O@"O?"O@"QA#QA$O@#PA$N?"VG,PA$PA$P@#PA"RB#PA#QA#QA#RB#PA#QB$P@"O?#P?$P@$N@#PA$O@#QB&QB&PA$QA%QB$QB$RC%P@#QB#RC#RC$RC$RC$UF%VG&UF%TE$QB#RC%TE%UG&SD%SD%RC$SC$SD$UF%YJ(VH&RC$RC#SD$UF%RC#QA#N?"QB#L=!O@"RC#RB#PA#PA#RC$SD$SD$RB#RC#QB#RC$QB#PA#O@"O@"O@"O@#PA#P@#RD$SD$P@"M>!O@"QB#QA#O@"RD$TE$SD$RC$SD$UF%VG&WI&XI&WH&XI&WH&VG%VF%TF$TE$QB#PA#RB#TD$RC$QA#QB#SD$SD$P@"N?"M>!M>!QA#QB#RC#QB#RC#QA#O@"M>!O@"PA#O@"N?"PA"O@"M= O@"M>!N?!N?!N@"N?"N?!O@"O@"PA"O@"O@"N?!L= N?"M>!J; K; L= K< N?!N?"M>"L!L=!L!L=!K< I:J; K; H9M=!i\F{}eXCcV@N?#L="J; J; J; I:J; N?"QB#QA#O?"RB#O@"K"N>!O?"SC$SC$QB#O?"N>"N?"O?"O?"O?"P@"QA#P@"P@"TE%UF%RB#RB#RC#SD#RC#RB$RB#RB#SD#TE$UF%RC#QB#RB#RB#RC#SD$UF%SD$RC#SD$QB#SD$TD%SD$RC#TD$TD%SD$SD$TE$TF%UF%TE$TE$XI&UF%SD#WH%WH&YJ'XI&WH&UF%O@"SD$TE$TE$SD$RB#RC#SD$RC$SD#RC#RC#RD$RC#SE$TE$TF%UF%SD$TE$RD#RC#RB#P@"QA#N?"N?"N?"O?"SC$UF%VH&VG&SE$SD$QA#O@"N?"N?"N?"N?"PA"RB#O@"RC$SD$SD$VG%VG&SD$TD$TE$XI&WH%XI%XI&WH&SC$P@"O?"O?"O?"O?"O@"PA"SD$YJ'TE%SD$RB#RC#SD$TD$VG&WH&ZL(\O(\O(\O([N'YK'YJ'XI'UF%TE$VG&TE$RC#RC#RB#RC#SD$VG&XH'XI'XI'XI'XI'XI'XJ'XH'XI'WH'XJ'XI&XI&XJ'YJ'YJ'[M'[M'WH&UF%TE$UF%WH&WH&XI'VG&WH&UF%VG&TF%SD$RB#P@"SD$UF%RC$RC#SD$TF%TE$RB#QA#VG&WH'WH&XI'XJ)TH,WH&WH&WH&WG&VG&VG%SD$VG%UG%VG%WH&TD$RB#RB#PA#P@"TE$UF%O@"VG%VG%RC#SD$SD$SD$WH&VG%UF%WH&VG&XI&WH&XI&XI%XH%WH&WH&VG%WH&VG%VG$VG%VG$UF$UF%UE$UF%TE$TF%UF%UF%TE$UE$UE#UF$VF$SD#SD$TE%TE%RC#SE$RC#RC#RB#RC#RC#QB#RC#RC$RD$SD$SE$TF%UF%VH&YK'WI&WH%VG$SD$TE$SD$TE%SD%RC$RC$RC$RC#SD$RC$SD%SD%RB$SE%TF&TE%SD$TF&TE%TE%TE%TD%UE%TE%TE%UF%VG&TE$TD%TE%TE%SD%TE%TE%RD%RD&SE&RD&SE&SD&QB$RC%RD%SD%TF&TE%UF%UF%VH&VG%UF$TE%TE%UF&SD$SE$SD$SD$RC$QB#PA"QB$SD%TE&SD%QB$RC$RD%SD%SD$RC$RC$RC$SD$RC$SD%RC$SD$TE%SC#SD$TD$SD$TE%UF%SE%RC$RC$QB#RB#QB#QB#QA#RC$RC$RC$QB$QB$RB$TE$RC$PA#QB$SC$SC#PA#RC$TE$TE%SE%TF$TF%UG%VG&UG%WH&XI&O@"O@"M>!M>!L=!L=!M=!M"P@"P@"UF%O?"P@"P@"N>!P@"P@#SD$TF%PA"SC$SD$SD$SE$SD$PA"QB#O@"QB#P@"RC$TF%QA#O?"N>"N>"P@"QB#QA"SE$SD#UG%TE$SD#SD#UF$VG&WH&UF%RC#RC#QB#P@"QB#SD$UF%RC$O?"O?"O?"N?!O?"TE%TE$TE$WI'XJ'XJ'VG&XJ'VG&YK(XJ'UF%XI&XI&WH%XI&WH&TE%SD#RC#RD$SD$RC#QB#RC#UF%RD$RC#QA#PA#PA#QB#RC$UF%XJ'TF%P@"O?"P@"O?"O?"RC$WH'TE$SD$SD$TF%UG%VG&TF%TF%SD$RC#SD$RC#SC#SD#WH&XJ'WH&YJ'XI'YJ'XJ'[M(ZL(XJ'YK(^T5ibMldJQM4ejdWXACLDAG?VR0BND6GI3DM3EN4ENapku|YaZ4\N)XJ'YJ'ZL(ZL(XI'XI&XI&VG&TF%SE$TF%WG&WH&VG%VF&VG&TF%TE$TF%WH&WI&XI'ZL(ZL(\N(\O([M(ZL(XI&UF%SD$RD#RC#SE$SE$SE$RD$TE$RC#PA#RB#TE%VG%UF%UF%VG%TF%VG&UF%SD$RB#RB#RC#SD$TE$VG&VG&VG&RC#RD$TE%TF%TF$UG&UG&UF%VG&VG&XH'WH&VH&XJ'ZK([M)_Q.ZL)[L+\N,ZK)YK(YJ'XJ'YK(ZK(\N)ZL(TF$SE$TE$VG&SD#TE$UG&VG&XI(ZL*YK(ZK,|qXZL+[L,WH'VG&UG%TE$UG&XI(YJ)UG&UF%UG&TF%SD#SD$SD$SD$SD#RD#RD#SD#UF%VG%VG%XI'VG%VH&UF%TE$SD#TF%SD$RB#RB#RC#TD$RC#QA"UF$UG%UF$UF%VH%UF%RB$QB#QC#SE$UG$RC#O@#RB#SE$PA#PB#QB#RC$RC$SE$TE$TE$SE$QB"SD#RC#RB#SD%VG(YK1TF)RC%P@"QA$P@"P@#PA#P@"SD$UG'SE$RC$YK,TF$SC$SD$SE$SD$TE&RC$RC$QB#P@#RB#Q@"VG%VG%QA#RB#Q@#P@"P@"SD$SC$TE$SC$SC#RB$QA#P@"SC#TC$TC$RB#Q@"O?"RC$QB#QB#RC#SE#TF$RD#RB#RB#QA#QA"L: L; N>!N> TE)O?!UF*P@%O?%N>"O?"O?"P@#SD'RB$P@#O?"O?"PA$QB%PA$QA$P@#P@#O?"O@"O?"P@#P@"P@"O@"O?"N>"M=!RB'N?"TD)YK0PB$N?"O@"O@"O@"SC%UG&SC$RC#RC$TE$TE%VG&VG&WH&VG%SC$SD$O@"SD%WH(TF%TF%VG&TE%WH&VG%VG&WH'VG&SD$SD$QB#P@"RB#RC#SD$O@"N>!QA#QB#QA#QB#PA"RC#TE$SE$SC$SD$RC$RB#P@"O@"PA"RC#O@"O@"QA#N?"N?"N?"M>!N?"O@"P@"QA#TE$TE$UF%UG&UF%UF%TF%WH&WH&WH&TE$SD$RB#RB#SD$SD$RC#TF%QB#RC$RB#PA"RC#VG%TE$RC#O?"M>!RB#O@"RC$TE$RB#RB#P@"K< I:K< N?"N?!N>!QB#P@"O@"N?"M>!M>!M>!N?"N?"N?"PA"P@"O@"J< J; J;M>!M>!M>!M>!M>!PA"L=!M>!N?"N>!M=!L!M>!K< K< K< J; K< L=!J; K< L=!J; K"J:M="TD+QA'zn\SD,L="K"P@"QA#QA#N>"N=!N>"N>"N>"N>"O?"O?"O?"O?"O@"QB#UF%RB#SD$UF%TE%SD#RB#QB#UF%UF%VG&RC#RC#RB#RD#SC#SD$SD$RC#SD$TD$SD$TE%SD$QA#QA#RB$UF%XI&VG%WH&XI'XI'VG&UF%XJ'YK&WH%WI&XI&XI&XI&YJ'YJ'WH&VG%WH&UF%TE$SD$TE$SD$SD$RC#TE$UF%RD$SD$RC#RC$SD$SD$SD$TE$TE$SD$RC#QB#QB#O@"N?"N?"PA"VG%TE$RB#SC$RB#QB#RB#SD$O@"N?"N?"N?"N?"N?"N?"N?"O@"QA#QA#SD$SD$RB#UF$WH&YJ&XJ%YK&XJ'YK'VG%QA"P@#O?"O?"O?"O@"SD$UF%QB#QA#P@#QA#RC#SD$SD$TE$XI&[N([N'\O([M'ZK'XI&VG&UF%TE$SE$UF%TE%RC#RC#SD$SD#TD$TF%UF%WH&YJ'XJ'YK(XJ'WH'XI'XI'XI'VG&YK(YK(YK(YJ'WH&[M(XI'WH'VG&VG&VG&VG&VG&TE%XI'WH&VG&UF%WH&TE$TE%TE%TE%SD$RB#QA#P@#QA#P@#RC$VG&VG%UF%UG&WH&WH&VG%UF$XI&WH&YJ'WH&XI'WH&UF%VG%VG&SD$UF%RC#UF%RB#RB$TE%RB#UF%TE$SD$RD$UF%UF%WH&VG&WH&UF%TE$XI'WH&WG%WG%XH%WH%WH&WH&VG%VG&UF$UF$WH&VH$UF%TE%TE%SD$TE$TE$UF%UF$UE$SC#RC#TE#RC"RC$SD$UE%TE$RD#RC#RC#RC#RD#SD$SD$SD$SE$RD$SE%SD$SE$TF$VG%WI&VH&VH&VH&TE%TE%TD$TE%SD$RC#QB#SD#SC$RC#SD$RC$RD$SD%QB"RC#TE%TF%UF&UF%TF%UE%TE%UF&UF%TE%TE%TE%TE%TE%UF%UF%TE%TE%SE%RD%RD%RD%RD&SD&SE%RC$RC%SE&TF&UG&VG&UF&VG&VG&UF&TE%TE%UF&UF%VG&TE%SD$QB#QB#PA#RC$SD%UF%TE%SD$RC$SD$QB#RC$TE$QB#QB$RC$RC$SD%RC$RD$RC#SD$SC$SD$TE$SD$SD$UF%TF$TE%SD$SD$RC#RC#RB#RB$RB$RC$RC$RC%SD$RC$QB#P@"O@#QB#RB$RC$RC$TE$VG%TF%UG&UG&UG&TF$VG%WH&VG&VG&UF%UF%O@"N?"PA#L=!M>!L=!L=!P@"SD$RC#SD$PA"O?"M=!RC#RB#M>!P@"QB#QB#N?"RC$TF%SD$TE%PA#QB#P@"P@"QA#RC$QB#RC#PA"SE$SD$SD$RD$QB#SD$TF%TE$SD#TE$TE$VG%VG%SE$SD$TE%QA#P@#RC$SE$UF%TF%UF%QB#O?"O?"O?"O?"QB#VG&WH&VG&XI'XJ'VH&VG%VG&VG&WH&XI&VG%VG%WH&UF%SE$VG%TE$SE$TE$TF%TE$VG&TE%SD$QC#RC#PA#PA#QB#RC$RC#UF%UG%RD$QB#SD$O@"P@"RC$VH&VH&UF%VG&WH&UF%TE$UF%SD$TF%RC#TE$VH&TF%SE$WH&VG&VH&ZL(WI&UG%VG%XI'YJ'YJ'YJ']Q*ZN-]U:`]LieR{~{lxs\UN3ON7VdhKVVAMO:O]@Uagwtsh`_:]P*ZL(ZL(ZL(YK(YJ'XI'WH&UF%TF%TF%TF%UF%XI'VG&XH&VH&TF%SE$VH&XJ'YK'ZL(ZK(ZL'WI&VG%VG&WH&VG&TF$RD#SD#SD$RD#TE$UF%SD$SD$UF%SD$QC#RC#SD$SD$SD$QC#TF$VG%VH&XI'YJ'WI&SD#WH&XI'XI&XI&VG%TE$TF%TF%SE$UF%TF%TF%VG&WH'WH(VG&VG&XH'ZK+]O/YJ*dX9bU4`S1[L)ZK([L(ZL(YJ'YK(ZL([M(YK'WH&VG%UF%[M.i]A[N.[L,XI'YJ(\M-XI(\M-zoVsZ\M+\N,[L+`S3YK)YK*YJ)WI(WH(YL,VG(SD$TF$TF$TE%UG&TE%SD$RC#SD$TE$SE$TE%XI'YJ(WG&VG&SE$UF%TE$SE$VG&TE%RD#RC#UG%TE$VG%UF$UF%UF$SE#UF$TF$QC#PA#QB#TF$RC#P@"PA"PB#RD$O@"O@#QB$QA$QB#QB#P@$RC%SE&TE(RB#QB"SD&RC%WH,SC'RD(SE(P@"Q@#O?"O@#N?#QC%RD%PA#SD$SE%RD$VG'TE%RC$RC$QB#SF$RD$RC$PA"Q@"QA"RA"UE$RC#QB#RC#QA#N="Q@#SD$TD$SD$TE$SD$P@#N>"P@#SC$TD$QA#RB"QA#P@"QA#P@"QA"RD#RD#QA#QB#RC#O?!P@"PA"O@"O>"P@"O?!PA#M=!M>"P@%P@%M=!P@"O?"O@"PA#TF(RB$PA#P@#QA"SC$P@#O?"O@"P@"O?"O?"O?"O@"O?"O?"N?"O?#O@#QB%O@#P@#RC%RB$O@"N?!N?"O@"P@"O@"RC#RC#SD$RB#SC$SD%VG&XI&VG&WH&TE$VF&RC$QB$RC$SD$UF%TE%UF%VH&WH&UF%SC$XI'VG&TE%QB#QB#RC#O@"O@"QA#QA"N?"M>!QB#QB#QA#RC#TE$TE$TF%SD$RC#PB#M>!O?"P@"RC$SD$RC$O?"N?"O@#QB$N?"N?"QA#RC$RB#UF%TF%UF%WH&VG&VG&VG&UF%VG%VG&SE$RB#P@"P@"QB#QA#O@"UF%TE$RC#RC#RC#RC#SD$SD$SD$QB#QB#P@#RC$TE$N?"L=!QA#M>!N?"P@"O@"QB#PA#N?"PA"O@"N?"N?"N?"O@"N?"M>!N?"N?"P@"O?"K< J; J; J; K< N?"O@"K; M>!N?"L=!L=!M>!M>!L=!J:VG+i\CM=!L=!K< J; J< K<"J; L=!L=!J; M="O@"N>"M= VH.~msgRWH/UF-obOl_I{p]k^JbU?N?%M="PB'M>#J; K"O@"O?"N>!M"P@"O?"QB#P@"O?"O?"RB#UF%TE$TE$VG%VG%SE$SD$TD$RC#TE$SD$SD$TD%RC#SD$RC#SC$RC$SD$UF&TD$UF%RB#UE'SC$QA#SD$VG&WH&UF%WH&YK(VH&UF%WH&[M'\O)YJ'YJ'XJ'VG&WH&XI'YJ'TE$WI&WH&XI'VG%UF%VG&WH&WI&ZL'YK(WH&SD$RB#QB#RB#RC#TE$UF%SD$RC#SD$RC#QA#O@"O@"P@"RC#UG%WH&SC$QA#RC#QB#PA"QA#O@"P@"N?"N?"N?"N?"N?"O@"RC#TF%TE$QB#RB#QA"SD$WI&XI&XJ&YJ&ZM'YJ&XI&SD$O?"O?"O?"O?"P@"QA#RB#RB#QA#QA#QA#QA#QA#TE$UF%VH&XI'XI&XI&YJ'XJ'XI&VH%VG%VG&VG%UG%UF%TE$SD$RB#RC#SD$TE%TE$TE$SD$TE$WH'ZM)XJ'YL(YJ(YK(XI'YK([N)\O)[M(YK'YK(VH&XI'VG&WH&YJ(XJ'UF%WH&XI'WH&UF%VG%UF%TE$SD$TD$VH&VH&VG%UF%SD$SC#QB#QA#RB$SD$VG&WH&XH'WH&WH&VG%WH&UF%WH&WH&VG&WH&XI'XI'WH&VG%QB#RB#TE$RC#RB#QB#PA#RD$RC#UF%VG&VG%VH&VG%TE$VG%UF%UF%XI&XI'VG%WG%WH%WH%VH%VG%VG%VG%VG%UF%VG%UF$UF%TE$TF%SD$SD$SD#TD$TE$TE$TD$TE$UF$TE$SC$RC$TD$UF%TE$TD#TD$RD#TE$UF$UF%UF%TF%TF%TF%SE$SE$SE$UG%UG$WI&WH&WI'VG%UG&UF%UF%SD$TE$SD#SD#RC#SC#SD#SD#TE%TE%TE%SD#TF%UF&UF&UF&UF&UF&VG'VH'WH'UF&TF%TF%UF&TF%UG&UF%UF&TF&SE%SF&SE&SE&SF&TF&UF&VF&SD%TE%TG'VH&XI'WI'XJ'VH'VH&VG&UF&UF&SD$TE%TE%SE%TE%RD$RD%TE%TE%TE%TE%RD#RC$SD$RC$TE&TE%RC$SD$RC$QB#QB#QB#RB#QB#RB#SD$SD$SD#SD$SD%SD$TE$UF&TE%SD$SD$RC$RC$RC$RB#SD#TE%SD%RC$QB$PA#PA#O@#PA#RB$SD%SD$TD$VG%VG%VH%VG&VH&UF%UF%WH&UF%VH&VH&SD$P@"UE%SE$O@"QC#M>!L>!RC$VG%RC#QA#O?"QB#L=!N>"QA#O@"N>"QB#VG&RC#TE$PA"UF%WI'PA#RC$UF&PA#QA#PA#TE%UF%P@"O?"RB#UF%QB#QA#RB#SD#UF%UF%UE$VG%UF%VG%WH&WH&UF%PA#PA#QB#QB#PA#PA#QA#SD$QB#PA#PA#P@"RD$SD$VG&VG&WH'VH&WH&XJ'XJ'YJ'XJ&WI&WH&VG%UF%UF%WG&UF%UF%UG&TE$TF%UF%UF%VG&SE$QB#RC#RB#PA#O@"SD$VG&VG&RC$RC#SD$UF%QB#PA#QB#UF%XI'WH'UF%SE$TE%RC#RC#SD$TE$SE$TE$TF$TF$UF%XI&YJ'YK'\N(UG%SD$TE$UF%VG&UF%WH&YK'ZL(ZM)\UAig[|ÇTM.PL0UM,LK4BMH=PY3HQAVfPbchnMbZ2^Q*\O([M(YK(YJ'XJ'VG&TF%TF%UF&VG&VG&VG&WH&XJ'WH&TF%UF%UF%UF%WH&WH&WH&VG&SE$RC#TE$WH&WH&VH&TF%RC#RC#SD$SD#TF%RC#QB#QB#SD$SD$TE$RC#RC#UF%WH&WI&WH&UF%VG&WI&XJ'VG&WH&YJ'XI'XJ'VG%UF%TE$TF%WH&YJ'VG&VG%VG&WH'XJ'thMnbF^O/\N/XI)cU8xmS^P1^P.[M(]O)]P)\N(ZL([M)YJ'VH&VF%WH'VG&VH&YJ*maGshMgZ=^Q2WH(vlSzoV¾[N,]P.]O.]O0XI)VH)UF'QB#RC#XJ*VH'TE%UF&SD$RB#TE$TF%TE$TF$VG&VH'YJ(XI'WH&WH&UG%UG%XH&TE$TF%TF$VG&VF&UE%UF$TE$UF%UG%VG%TF$RD#PB"QB#QB#QB#RC#SE$PB#RD$QC#PB#RD$RC%QB#QA$QA$SD&TE&QB$O@"QB#QB#RD$YK/]O5RD%TE'RC&O?#N>"PA#O@#P@#P@"TE(P@#TE(SD%RC$SD&SC$SD'RC$RD#TE&P@"PA"RA#RB#RC#SC#RC$QA#RC$RB#P?"QA#SD$RC$SD%SD$TE%QB#O?"QB#SD#UF$RC#SC#RB#PA"O>!O?"P@#QA"QB#P@"QA#QA"O>!N>!P@"P?"N>!O?"N>!O?"O@#N?"P@"RD'P@$PA#RC&QA$O@"PA#YK/QA#QA#RC#WI*RB%O?"P@"O@"O@#QA$QA$P@"O?"P@#QA$N?"O?"RB$QA$O?"O@#QA#QB#QB#RC%TE$PA"RC#TE$UF%VG&VH&YJ*XI(YK(ZK)YJ'WH'UF%UF%SD$PA#QB#SD$SD%TE&VG%WH'WH&YJ)VF%VG%XJ'VG&VG%PA#UF%SC$RC$TE%WH&SE$TE%P@"RC#RC#P@"VG%XI'UF%TE$SD$O?"L=!N?"O?"QA$QA#P@#P@#N?"QA#P@#PA#QA"O?"RC#VG&UF%VG&VH&VG%UF%WH&VG&VG&VG&RC#QB#RB#PA#PA"RC$RB#QB#UF%TE$RC#SD$TE$UF%UF%UF&RC$SC$SD$RB#SD$SD$N?"M>!P@"PA#QA#QA"M>!M>!M>!M>!O@"O@"O@"O?"O@"N?!RD$QB#QA#P@"P@"N>"K!M>"O@"N?"O@"QB#N?"N?"N>"N>!M>!L=!L=!K; K< M>!M>!L=!K< M>"M>!K< J; J; J; L=!N?"K< K<N>!VG-eXCeW@ZL2QB&N>!L<UF+l`KvjVPA%YJ0gZ@XJ/M>#J; J; M=!N?!N?"QB#QB#RC$QB#K< L"SD$SD$SD$SC#QA#SC$RC#RC#SD$QB#N=!N>!P@"QA#P@"O?"RC#P@#RC#XI&SD$N>"M"O?#O?"O@"N>"O?"P@"RB#WH'VG&P@"O?"QA#UG%SC$TE$YJ'WH&UG&VG%TD$SD$UF%TF%TD$UG&SD$SD$TE$RC#SC$RC#SC$RB$RB#QA#PA#RC#PA#QA#QB#TE$WH&WH&WH&VG%TD$VH&XI'XI&YJ'XJ'XJ'UF%VG%XI'WH&WH&XJ'YJ'WH&TF%SD$TE$VG&XI'XJ'YJ'XI&VG&RC#QB#RB#SD$VG&XI&VH&VF%WI&VG&PA#N?"N?"QA#RC#RC#TE$UF%TE$TE$TF%SD$RB#SD$RB#O@"N?"N?"N?"N@"RB#TE$SD$QA#QB#PA"P@"PA"TE$RB#TD$WH%YK&WH%VG%UF%P@"P@"P@"P@"RB#RC$PA#PA"O@"O@"P@"P@"P@"P@"QA#UF%TE$UF%XI&YJ'YJ'YJ'XI&XI'WH&WH&WI&TE$TE$SD$RC#RC#RC#SD#SD$SD$TD$TD$TF%WI'YK(YL(YL(XJ'YK(YK(YL([N)ZL(YL(ZL(YL(XI'WH&WI'WH&WI'XI'XI'WH&WH&XI'WH&SD$P@"O?"O?"QA#RB$TE$VG&VG&VG&TF%TE%WH&VG&UF%YJ'VF%UF%VG&VG&WH&VG%XJ&XI&TF$VG&WH&UF%QA#QA#QA#P@"PA"RB#RC#PA#O@"P@"RC#UF%XI&XJ'YK'XI'WH&WH&WH&XJ'ZK'WH&VG%VG%VG%WH%VG%VG%VG%VH&VH%VG$VG%UE$UF$TE$TE$TE$TE$SC#RC#SE#SD#SD$TE$TE$TE$TD$TE%VG%TE$TE$UF%VH&VH&UG%UG%VG%UG%UF%TF%TF&TF%TF%TE$UG&VH%WH&VH&VH&VH&VH&VH&VH&VG&UF%TE$SE$TD#TE$TE$VG%VG&UG'UF&SD$SE$TF%UF%UG&VG&VH&WI(WI(VH'WI'WI(VH'VH&VH&WH&VH&VG&UH'TG'UH'UH'UH'UH'VH&VG&VG&UF&WI'VG&VH'XI'YJ'XJ'VG&WH&UG&UF&TF&UG&WI(UG&TF&UG&UF&TF&RD$SD$SD%SD%SE%SE%SD$RB$TD$SC$SD%SD$RC$SD$RC#SD$SD$RC$RB#RC$SD$SD$RD#SE%VG'UG&UF%TE%TF%SD$SD$RC$RC$RD$SD$RD$SD$QB$QB#RC$QB#P@#PA#QA#SD$VG%VG%VH&VG&WH&VH&VG%VG%VG%VH&UF$XJ'XI'TE$QB#TF$VG%QA#VG%M=!M"QA#QB#QA#P@"QB#RC$N>"P@#RC$QA#P@"TE%SE$RC#O>"O@"RC#UF%VH&UF%RC#RB#P@"UF%SD$TD$PA#O@"VG%RD$QB#QB#RC#UG%TE$UE$SC#RB#SD$VG&UF%TE$TE%UF%SD$RC#PA#PA#PA"O@"P@#QB#TE%TE$TE$TE%WH&WH&YJ(WH'WH&XI'ZK(XJ'XJ'WI&VG%UF%SD$TE%WH&TF%VG&VG&UG&VG&TF%UF%UF&RC$PA#QB#SD$P@#P@"P@"RC#SD$SD$RD$P@"SD$TE%RC$SD%UG&VG%VH&UG&TF%TE%SD$RB#RB#SE$TE$UF%VG&VF%VG&WH&XI&TE$TD$RC#RC#TE$TE$UF%UF%WH&YK(YK(ZL(`S,RL8khV~~nyt^vr]]_QLK4t~O]a7EH8HR[M-\N/j]A^P3sgNshKZL*ZL)[M(\N(ZL(ZK(ZK*vjO}gthNfX:VH&WH&UG%VG&UG&^P2UG&cU:ͬl}ig[?[M.[M-gZ=maC]N/YK)YK+WH(WI)aS6YJ+TE%VH(]O0TE%SD%TE%UG&VH'UG'RD$RD$RC#WH&YK(XI'XJ'VG&UF%XI&TF%TF%TF$UF%VH&VG&VG&UG$UG%UG%WH%SD$SD#TF#RC#RC#QB"RC#TE$RC#RD$SD$QC$RC$RC%RC$QB#QB$TE(TF&QB"O@"QB$QB#ZL/UF(j^FZK2UF*O>"QB%P@#O@"O?"P@"QC#RC$P@"RC#RC$RC$SE$TE$XJ,QB#RD$VG)RB#QA#SC#TD#UF$SE$PA"QB#TD#TD$P@#QA#SD$SC$QB#RC$RC$RA#RC$SD$SC#SD#SC#UF$RB#QA"Q@"PA#QA"O>"QA"P?"O>"O>!N=!N"N>!N="O>!N>"RC$RC#RC#PA"O?"QA&XJ.TD(VG,`R:ZL2P@"QB$RC&N> ^P5WH,P@"O@"P@"P@#RC&O@"UE*O@#PA$O?"QA#TE$SE$SD$SD#QA#QA#P@"TE(PA#SD%O@"PA#SD$XI'YJ(YK)[M*[M*[L*[M*[M+WH'WH'SD$QA$RC%VG'VG'XI)VG'XI'WH&VG&RC$VH&YK'XJ'YJ(WH'QB#PA"P@"RC$PA"RB#QB$RB#O@"N?"O@"M>!P@"QB#TE$VG&VG%P@"M>!O?"N>"N>"QB%O?"QA#UF'SD$SD$SD$TF%SD$TE$TE$WH&XI&YJ'YJ'XI&WH&UF%RC#TE$UF%SD$RC$QB%P@"RB#RC#RC#SD$RB#RC#RC#RC#SD$RD#UF&WH&UF%VG%SD$SD$TE$TF$SD$RC#RC#RB#QB#SD$RC#PA#PA#PA#PB#RC#SD$SD$QB#TE$RD#PA"O@"P@"M>!M>!K< L< L=!M>!N?"N?"P@"P@"QA#QA#QA#O@"M=!L=!M>!M>!L=!N?"N?"N?"M>!N?"O?"M>!M>"L=!I: J; N?"N?"L=!K<P@$hZCocKnbL[L2eYAVG,I:xmZ`S>]O6]O5VH*RC#RC$RB$QB#QB#QB#P@"L< N>!QA#QB#J: J< O@"RC$RD#QA#P@"PA"P@"O@"O@"N@"O?"QB#RC#SD$RB#SC#SD$SC#SD$SC$UF%QB#QB#QB#RB#N>"P@"UF%RB#PA#TD$WH&UF%N>!N>"N?"TD%SD%QA#QB#RC#UF%UF%WH&RC$O?"VG&XI&XI'ZK(XI'YK(ZL(YJ(XJ'VG&VG&WH'UF%TE$RB#QA#SD$RB#QB#TE$SC%RB$QA#RB#PA"PA"QA#QA#RB#TD$VG&YJ'VG%VG&WH&XI&XI&ZL(WH&ZL'YJ'VH&XI&YJ'XI'YJ'YK'XJ'XI&WH&WI&WH&VG&UF%WH&\N(WH&TF%RC#TE$TE$SD$SC$RB#VH'QB#RB#TD$RC$P@#P@#VG%TF%SD$QA#TE$RC#TE$TD$VG&TE$SD$QB#P@"QA#O@"O@"P@"QA#RC#QA#QA#QB#P@"QA#QB#VG&SD$P@#TE$SD#RB#SE$SD$O@"P@"P@"O@"O@"PA"QA"PA"PA"O@"PA"P@#QA#QA#Q@#P@#RB#SE$UF%WI&XJ'XI&YJ'XI&XJ'XJ'XI&WH&UF%SD$RC#RC#TE$UF%UF%XI'WH'VG%TF%VH&XK(YK(YL(YL(YL(ZN)YM(ZM)\P)YL(YL(YK(UF%VG&ZM)VG&YJ(XI'YK'XJ'YJ(YJ(WH&TE$P@#P@#P@#QB$SD$RC$RC$SC$VG&WH&XI'WH&VG&UF%VH&VG%RB#TE$UF%WH&WH&ZK&XJ&VG%TE$SD$RC#P@#O?"O?"P@"QA#QA#QB#RC#QA#QA#RC#UG%XI'YJ'XI'YK'VH&VG%WH&XJ&[M(XI'VG%WI&VF%WH%VG%VG%VH%VH%WH%VH%WH%UG$UF$UE$UF$TF$UF%SD#TE$UE$TD$TF$TE$TD$SD$SD$UF%TF%TE$TF$UG%VG&UG%VH&VH%VH%VH%UG&TF%TE%UG&UG&VH&VH&VH&VH%VH%VH&VH&VG&VH&VH&WH&XJ'WH%TF$TD$TE#TE$WH%XJ(WI'VG&TF%UG&VH'VH'VH&VH'WI'WJ(WJ(VI'WJ(WJ(XK(XK(XJ'XJ'XJ'WI'WI'WJ'XJ'XK'YK(XK(WI(XJ'XJ'XJ'VH&XI'YK'XI'VH&VH&UF&VG&VH&UF&UG'VH'WJ(XJ(VH'VG&TE&TE&TF&TE%TE$TE%SE%RC$SE%RC$RD$SC#TE$SD$RD$SC$SD$RC$TF%SD$SD$TE%SD$TE%VG&VH&UF&UF%SD$SD$TE%SD%SC%SD%QB$RC%TE&RC$RC$RC$QB#RD$SD$TF%TF$RD$SD$VG%XI&XI&XJ&YJ'XI&WH%WH%VG%XI&WI&XJ'WH&VG&VG&VF%VG&SC#SD$P@"O?"O@"P@"QB"RD$SE%SD$SD%RB$O?"N?"QA#QB#RC#RC$RC$RC$PA#QA#RC$PA#O@"O?"RB#RC$QA#RC$UF%PA#PA#VH&UF%SD$SD$SD$TF%TF$WG&WH&UG%VG$VG%TF$TE$VG&UG%XI'VH&SD$TE%SD$RB#O?"O@"TF%TF%WH&UF%SD$SD$VG&VG&XI'XJ'XI'WI&WH&WH&WI&UF%QB#QB#TE%TF%VH&VH&WH'WH'VH&UF%TE%RC$PA#QB#QB#RC#QB#PA"QA#SD$UF&RC$QB#RC$RC$TE$VH&VH&VH&WH&VH&UF&UG%SD$TE$SD$QC$TE%TE%UF%UG%SD$SD$SC#QB"P@"RB#SD$VG%UF%UF%VG&UF%VF%WH&YJ']O)^R,ZQ1YT8b`Mxuc}l|ywcnsg^e^[ghZhnBVc6EM:IS?JLVZGd]8^Q*[M(YJ'YJ'YK'XI'WH&YJ'YK'YK'YJ'WH&TE$RD#TF%VG&XI&YJ'ZK(XJ'YJ'XI'UG%WH&XJ'XI'WI&WH&XI&XI'XI'VG&VH&VG%TE%RC#P@"P@"P@"P@"P@"QB#RC$VG&WH&WH&VG&VH&WH&UF%RC#TE$VG%]P.VH&UF%VH&YK'ZK(ZL'YJ'VG&WI)aT6SD%wkT}s]_Q2YJ)VG%^O0u[nbD]O/hZ=_Q1YK(ZL(ZM)ZL(ZK*l^AdX:XJ)ZK)[M,YJ)ZL,TE%RB#eX>dW"O?#P@#P@"PA"O@"P@"P?"RC#TE$SE%QB#SD$TE$TE$RB#RC#VG&TE$SC#RB#TD#TE$UG&O?#O?"VG$WH&QA#[M0SD$SD#TD$SC$RB$RB#SC$RC#P@#Q@#RC$TF$SD#QB#PA#RC#RC#O>"QA#RB#P?"O>"O>"O>"P?"O>"O>"O>"P@"RC$QB$VG)ocK[M1ZK/maKPA%ZL2YJ0nbL[L0RB$RC%[M2`R6RC%UF'SC&P@"P@$RB&RB&O?"P@#QA$O?"QA#UF%SD$QB#P@"TE%VG&SC$SD%UF&VG&VH'TE%WH'WH&XI'ZL*\M+\N,[M*[M*XI'WH'XI'TD%TE%RC$UF%UF&TD%QA$SD$QB#SD$SD$SD$SD$SD$VG&VG)RC$PA#O@"M>!QB#OA"O@"O?"PA#PA#K< O@"VG&O@#O@"SD$QB#QB#SD%O?"QA&RC'O?"QB%QB$TE%TE$SD$TE$SD$VG&VG&VG&ZK)XI'XI'XI&XI&XJ'VG%UF%SD$SD$VG%SD$PA#N@"RC$SD$RC#RB#RB#QB#QB#QA#TE$RC#TE$XI(VG&TE$TE$UG%VF%VG%SD$RB#SD$RC#SD$UF%UF%UF%TE$TE$TE$TE$TE$RC#RC#RC#RC$RC$O@"PA#N>!O?"P@"M>!N>"O@"O@"PA"QB#PA"SD$RC#RC#O@"L=!M>!O@"P@"M>!N?"O@$PA$N?"P@#QA#O?"P@"N>"H9J: N?"PA#O@"M>!O?"P@"SD(O?"RC&SD(QA$O@"N>!TD(ZL0UF)TF%TE$TE$UF%UG%TE$RC#N>!L< N>!O>"QA#N>"I:K< QA#QA#N?"O@"QB#RB#SE$RC#O@"P@"QA"SC#SD#RC#TD$SD$SC$SD#TE$RB#QA#SD$P@"N>!O?"N>"M=!N=!O?"M"O?"P@#SC%TE$RC$P@"RC$UF%SC$TE%YJ(YJ(XJ'XJ'ZL([M)ZK(YJ(WH'VG&UF%VG&WH'TE&SC$RC$UF%RC$PA#UE&TD$SD$UF%TE$QA#SC$SD$TE$WH&XI&YJ'WH&WH&UG%ZL(ZL(WH&VH&ZK(\O([M(XJ'WH&VG%UF%VG%ZL(ZK'XI&ZK(YK'VG&UF%UF%UF%ZL(XI&WH&VH&WH&UF%TE$SE$N?"P@"O@"PA#SC#UF%RC#SD$UF%WH&UF%RB#SC$SD$UF%VG%VG&VF%TD$VG%RB$RC$RB#RC#RC$QA#P@"QA"UF%VG%QB#P@#SC#SD#RB#P@"QB#QA"PA"QA#P@"O@"P@"O@"O@"O@"O@"RB#RC#PA"PA"P@#RC#RB#QA#SD$SD$UF%UG%VG&XI'VG&WH&YK'YJ'YJ'YJ'WH&WH&VG%UF%RC#SD$TF%TE$UE%WH&YJ(XJ'VG&XJ'YL(YK(YJ(YL(YK(YL(YL(XJ(WH&XJ'VG&UG%UF%XI'VG&WH&VG&VH&YJ'YJ'YK(XI'XI'VG%RC$QB#PA#UF%WH&UF%WH&XJ'XI'YJ(ZK(ZK'YJ'VG&WH&VG&UF%WH&WH%XI&WH%YJ&XJ&VG%WH&VG&TF$RB#P@"P@"P@"PA"SD$RC#TE$RB#WH&XI&XJ'ZL(ZK'WH&XI'UE%VG%XI&WH&YK&YJ'XI&WI&WH&WH&WH&XI%XI&WI%VG%VG%WH%WH%VF%VF%UF$UF%UG%UF%VH%VF%SD$UF$UF$UF$TF$TE$TE$TF$UF%UG%UG%WH&VH%VH%WH&WI&XI&VH'VH&VH%UG%VH&VH&VH%VH&WI'WI&VH&WI&VH&WI'VH&XJ([L(YK'UF%UF$VH&WI&XJ'YK'YJ'XI'VH&VH&VH&WI(XJ)WI'YK*XJ(YL*YL)YL)YL(YL(ZL([M(ZM(ZL(YK(XJ'YK([M(ZM)[N*[O*[M(YK'XJ'YL(ZL(ZL(ZL(XJ(VH'WI'XI'WI'VG&XI'WH'WI'WI'VH'WI'XI'VH&UF&UF&SD%SD$TE%TE%TE%TE%SD$SD%SD$TD#SD#TE$TE$RC#RC#SD$SD$SC$TE%TE%UG&VG&UF&TF%TE$TE$TE$SE%TE&TE%TE%RC$QB$QB$QB#QB$RD$UF%UG%VG%UF%VH%VH&UG%VG%WI&YK'YK&ZL'YJ&YJ&WI&WH&WH&XJ'XJ'XI'WH&VG%VH&VG&SD$SD$RB$QA#PA"QA"QA#SD$TD$RC#PA#RB$RB$P@"RC$TE%TF&SD%SD$TE%RC$RC$QB#QB#SC$QB#RC#VG&YK(WI'WH&SC$P@"WI'XJ'SD$TE%UF%UF%UG%WH&VG%VG%WH&XI&YJ'XI&XI'XJ'WH&UF%RC$RC$PA#O?"O?"QA#WH'WH'TF%UF%SD$PA#UF%XI'VG&YJ'XJ'XI'XI'XJ'XI&XI&VG&UF%WH&VG%UF%WI&XI&WH&VG&UF%TE%SD$RC$RC$RC#RD$QB#QB#TE%QB$RD$SD$SE$TF%SE$UF%WH%XI%XJ'VG%VG%UF%WI&RC$QB#SD$TF%VG%TF%UG%UF%SD$SC#RC#QB#QA#SD$UF$WH&VG&WH&WH&VG%UF%UF%WH&XI'[M(]P+]R-]R.}wd}~{{rwqYa^HTR?PT(9@&46?G>BF8GE-XJ(RJ.PF,SF'XI&ZK(YK(XI'VG%YJ'TE$WH&WH&WI&WH&VG&SD$VH&XI'YJ'ZK(YJ'XI&XI&WG&VG&XJ'VG&WH&VG%UF%YK+UF%RC#PA"PA#RB#SD$QB#QA"RC#QB#SD$TF$UF%TE$SD#TE$VG&UF$TE%UF%YK(YJ'WH&TE$TF%VG&XI(VH'VG&SD%WI+XI+[L,XI'XI'YI+ythMj^AYK+cU7\M-ZL*ZK([L)YK(YK(YK(XH'oYK+YK)YJ)ZL+`S6UF(VG+SD&UF&XJ'WI'YJ(]P)]O)[M(ZL)\O,`R1ZL)^Q.ZL*WH(gZ?疎{YJ+UF'TE&SD%VG'SE%UG(RC#SD$VG%VG%VG&VF%WH&WH&UF%XI'XJ'XJ'XJ&XK'WI&WI'WH&WI&WH%VG%WH%VG$UH$UG%UF$RD#SD$SD$UF$WI%RB#UF&TE%SD%SD$TE#TE$SD$SD$SD$QA"UF(TE%SD&TF'P@#N>"QA"P@"O?"QB#QB#RB#QB"RC#YK,VH(RC$SC$TE%RC#QA"QA#UF$UG%UE&RC$UF&TE%RB#SC$\N/VG%VH&TE$RB$UF$VG$VH%SD#SC$RB#SC$RC#QA#QA#RB#SD$SD%SD%RB#QB#QA#QA#SD$RB#P@"P?"O?"RB$P@#P?#P@#P@#QA#VF*P@$P?"TE)SE%]P2XJ,ZL1WG*TE'[L1j]DbU8TE%\N1UF(QB$VG*VG*RC%P@"RB$QA"RB#SC$P@"P@"P@"QB#TE%TE$SC$TE%TF%UF%XI(YJ)\N-[M,XI(XJ'VG&VG&[L*[M*`R2ZL+ZK*VH&]O-\M*YK)VH'UF%VG&SD$UF&SD%UF&PA#RC%WI&XI'UF%SD$RC$TE%VH&WH&RC#RC$QB#O@"O@"PA#QA#N?"K< SD$WH&RC$UF&UG(QA$TE&RC'PA%RB&P@$QA#QA$O?#PA#UE%RC#UF&VG&XI'ZK(YK(YJ'YK(ZL)VH&YJ'YJ'XI'WH&WH&UF%TE$TE%SD$RC#SD$RC#QB#RC#RC#RC#RC#UF%TE%SD$UF&SD$SD$SD$UF%SD$RC$TE%TE%TE%SC$TD$VG%VG&TF%TD$SC$RB#SD$QB#P@"QA#RB#RB#QB#M>!J; L!J; M>!QB#RB#RB#RC$SD$SD$RB#RB#QB#O@"PA"QB#P@"N?"M>!N?"P@"N?"PA$SD'N?"N?"PA#L=!L"QB#N?"L=!PA$RC'O@$J; M>"PA#TE$RC$PA"SD#TF&UF%RC#TF%UF%UF%TD$SD#N>"K; L!RB#O@"PA#RC#RB#RC$UF%TF%TE%TF%TE$SD$VG'UF%UF%TF%UF&TE$TE$VG&TE$UG%TE$PA#N>"N>"QA#N?"RB#QA#O?"P@"QA"TE$P@"QA#O?"P@#UE%UF%TE$TE%RC$SC$VG&VG&VG&VG'VG&YJ([N)\N)XJ'XJ'YJ'XJ'VH&TE$TE$SD$TE%TF%[M-XI(SD$SD$VG%XJ'XI'UF%VH&WI&YJ'WH&UF%ZK'[M(XI&XI'\N([N([L(]P)\O)\O)[M)WH&VH&WH&VG&XI'ZL([M(\N(YK'YK'VG&XI&WI&WH&YJ'XI&WH&XI&VG%UF%WH&TE$SD$SD$SD$SD$SC$SC#QA#UF%WH&YK'VG&UF%SD#TE$VG%WI&WH&YJ'UF%RB#UF%TD$TD$TD$TE$VG%PA"QB#UG%XI'VG%SD$RC#SD$QA#RC$P@"QB"P@"P@"P@"O@"O@"O@"O@"P@"SD$WH&SC$P@"P@"QA#RC#RC#RB#SD$TE$VG%UF%RB#UF%VG&WH&WH&XI&YJ'YJ'XI'WH&VH&WH&TE$WH&VH&XH&XI'XI'YJ([N)XI'ZK(YK(YK(ZK(YJ(YJ(XI'YJ(XJ'XI'YJ(^R6WI(WH'VG&UG&TE$UF%UG&VG%WH&XJ'YK(ZL'ZK'ZL(XJ'TF%SD$VG&ZL(YK'YK'YJ(YK'YJ'ZL(YJ'WH&XI&VG&TE$UF%WH&YJ'XI&XI%ZL'WH%VG%XJ&WH&VG%WH&TE$TE$TD$TF%VG%WH&XJ'\N(ZL(XJ&WI&ZL'YK&YK'XI&VH%XI&ZL'YK'YK'YK'XJ&XJ&XJ&XJ&XI&XI&XI&WH%WH%WH%WH%VG%VF$UF$VG%VG%UF%UG%VG%VG$UF$UG%VH%VH%VH%VH%TE$TF$VH%UG%VH%XI&WI&WI&XJ'WI&WI'VH&TF$TF%VH%VH&WI&WI&WI&WI&WI'XJ(XJ'XJ(XJ(XJ(WI&WI'YJ'YK'XK(XJ(YK'XJ'ZK'YK'YK(XJ'XJ(WJ(VH'XK)ZL*XK(YL)XK'ZM)[N*[N*\P*^Q*^Q*\O)ZN)ZL([N)\O*ZN)ZN)]P*]P*]P)\O)\N(\O)]O)ZL(XJ'XJ'WI'WH'WI&VG&WH&YK'YJ'WI&WI'VH'UG'VG&UG&UF&UF&UG&VG'VG&UF&SD$UF%VG%UF&VG&UF&VH&TE%RD$RC$TE%TF%TE$UF%UF&UF&UG&VG'UF&SE$TE$UF%UF%TE%TE%SD%RC%RD%SD%RD$RC$SD%TF%UF%UF%UG%VH&XI'YK'ZK'ZL'YK'YK&ZK'ZL'[M'YK'YK'XJ&WI&XJ'YJ'XJ&VH&XI&XI&UF&SD$RC#RB#SC$SD$PA#RC#TE$TE%RC#P@"SD$TD#UF%VG'TF&TE%TE%UF&QB$TF&SD$RC$TE$SD$PA#RC#XJ'WI'UF%WI'VG&XJ'XK(XJ'WH&WG&WH&WH&WH%WH&VG%WH&WH&WI&VG%UF%TF$SE$RC#RC$RC$RD$QB#P@"TF%WI'WH&VG&UG&VG&QB#RC$SE$VG&UF&SD$TF%VG&WH&YJ'XI'TF$TE$VG%WH'UG%WH&XI&VG&TF%UF%UF%TE%UF%SE$TE%QB#QB#SD$TE%RC$RC$SD$TF%UF%SE$TE$TF$UF$WH%YJ&XI&VH&VG&UF$TF%UF&WI'WI&UG%XJ&VG%TE$SC#RB#QB#QB#UF$XI&XI&XI'YJ'WH&TE$TF%SE$TF%WH&WI&XI&YJ'ZK'\N)bU0rgKup`cg^ZX@ydkaWXF4D?HTR9FDNN=DE5IH4TN0PJ/VJ)ZL(VJ*XI&VG%VG&WH&UG%TF%XI&\N(ZL(YJ'XI'XI&VG%SD$TF$UF%YK(ZL(YK(YJ'WH&YJ'XH&VG&VH&XI'XI'`R3`R5RC$PB#P@"PA"PA#TE$WH&SD#RC#RC#RC#SE$WI&WI&SD#TE$VG%\N)ZK'XJ'XI'XI&WH&ZK)XI&YJ'XI'XI'XI&XI'XI'[M-[M.VG&TF%VG'WH'ZK*[N/gZ=]O0sgKl_C_Q1wkR}frfJ\N.^P/YJ(WH&ZK*SE$UG%SD$`S4j]@YJ*ZL,YK(YK(YK'XJ']Q+_S+]R*^Q*\O)ZK(YJ(\O,`S.i]"M="O>"O?"QA#QB"QA"SC$SC#P@"QA#QA#RB#RC%SD%i\D\M3_Q6WI+VH(aS6WH*RC$SD$UE$UF%VH&WH%VG&YJ*RB$SD&SD%QA#RC#RD$RC#TE$SC$SC$RC$N?"P@"UF%VH&]O0VG&UF%YJ*YJ)XI'XI'VG&TE$RC$SD$TE$UF&ZL+XI'XI'[L)bV2_R.\M+XI'XI'WI'UF%UF%SD$TE%VH&SD$SC%XI'XI&WH&QB#TE%QA#RC#TE%O?"TE$QB#RD$QB#QB#TE$VH'PB#TE&QB$QB$TE%SD$SD)]N1]O0O?#O?!QB$RB$TD&O?"SC$SD%RB$TE%TF&VG&UF'VG'VG&WH&UF%SC$UF%UF&RC#QB#VG%TE$TE$TE$WH'VH(TF%SD$RC$RC#TE%TE$TE$UF%UF%RC$RC#QB#QA#RC$SD$PA#RC#TE$VG%UF%WH'UF%UF%SD$PA"RB#RC#RB#RC#SD$TD$TD$RC$RB#RC#N>!M>"N?"O@"PA"L=!L!N?!RC&UF)RC%QB#O?"RC&RC$P@"O@"P@"PA"O@"P@"[L0_R9UG,O@'I9 I9L=!RC$TF%SD$SD$TE$UG%TF%TF%SD#TE$SD$SC$RB#N>"N=!N>!P@"PA"P@"P@#QA#RB#QB#RC#RC#SC$UE&SD%SD$SD$TD$VH'WH'VG([M-VG&VG&VG%UF%UF%TE$VG%TE$P@"RB#RC#RC$RB#N>!P@"QA#QA#RB$VG&UF%QA#P@#SD$VG%RB$N>"P@#RC#UF%WH&XI'VG&VG&ZL)ZK(XJ([M(YJ'[L(YK'XJ'VH&VH&UF%VG&XH'TE%WI*WG'SD$UF%YJ'ZK'YK'XJ'YK'ZL(ZK(XI'XI'ZK'\P)YK'YK'YJ'ZL(ZK'ZK'[M(ZL)ZK(ZK(VG&UF%VG&VG&XJ'ZK(YL([M(ZK(XJ'XI&ZK'ZL(YJ'TE$TF%UG%TF%TE$VF%UF%TE$VG%TE$P@"QA#SC#TE$TE%VG&YJ'YK'ZK(XJ'YJ'XJ'XI&UF%UF%WH&XJ'XJ'YJ'WH&WH&WH&VH&RC#QB#QB#SC$TE$UF%VG&TE$QA#QA#P@"PA"PA"RC$TE%SD$O@"PA"TE%XJ'[M(XJ&RB#P@"P@"P@"QB#RB#TE$UF%RB#P@#P@#QA#PA"TE$VG%TE$UG%WI&WH&XI'WH&VG&VG&XI&WH&YJ(VG&WH&YJ(ZK([N)\O)[M)ZK(YJ'YJ(XI'XI&WH&XH'XI'XJ'YJ(ZK(XI'XJ'YJ(WH&VG&TF%TE$TE$UF%VG&XI&XI'XJ&ZL([L(ZL(YJ'WH&TE$XJ&ZK'\N(ZK'YK'[M(^P)YK(XJ'YJ'XI&XJ'ZL(ZL&YK&XI%YK&YJ&WG%WH%WI%YK'VG%QC#RC#RB#SD$XI&YK'[M'\O([N(\N(WI&YK']P(^Q)\N(\O'\O([N'[M'YJ&YK'XJ&XJ&XJ&XJ&XJ%XJ&XI%VH%WH%WH%XI%WH%VG$WH%VH%UF$TE$UG%VG%WH%VG$VG$XI%WI&VH&WH&VG%VH%VH&VH&VH%WI%XJ'WI&WI&XJ'WI&UG%UG%UG$VH%WI&WI'WI&XJ&XJ(XJ'YK(YJ(YK'YK(XI'XJ'ZK'ZL'YK(YK(XJ'YK(YK'YK'ZK(ZL(ZL(YL)XK(XK)XK(YL)YL)ZM*ZM)YL([N)\O)\O)]P*]P*]P*\O)\O)[N(\O([N(ZM([N)]P)\P*\O)]P*]P*\N)[L(YJ(ZK'ZL'ZK(ZL(XI&WI&WH&VH&YJ'XI&WH&VH&UG'UG'VG'VH(WH'WI'UG&UF&TE%TE%UF%TF%UG&VH&UG&UG&UG&SD$SD$SD$SD#UF$VH&WI'UF%WI'UF%SD$TE$UF%TF%SC#RC#SD$SD$TE$SE%TE%UF&RD$UF&VH&SE%VF%VG%XJ&ZL'YJ'YJ'YJ'ZK'XI&YK&ZK'XJ'YK'ZK(XI&WH&VG&YJ&YJ'XJ'WI&WH&UF$SC#TE$TE%TE$RC$SD$TF%UF&TF%SD%TF%TD$VG&VH'WH'WH'TE%UF%RB$RC$RD$VG&VH&TE%VG%UF%TE$UF%YK(WI'TF%TE$SD$VG&XI'UF%VG%VG%WH%VF%WH&VG%VG%VG%SD#RC#RC#RC#SD$SE$TE$PA#QB#QB#WI'VG%UG%ZN(UF%TE$UF%TF%UF%VG&TE%RC$UF%VG&WH&YK'YK'WH&XJ'TF%XJ'VG&YJ(XI'UG&UG%RD$SD%UF%TF%UF%TE%QC#QB$RD%SD%TF%UG&TF&SE$UG%UG%VG%VH&VH&WH&WI'WI'XI&VG%VG$XJ&ZL(WI'UG%UF%WI%VG%SD$RB#QA#RB#RB#TE$VH&[M(YJ'XI'XI'SD$SD#SE$SE$VG%XI'YJ'XI'WH&WH&XI'ZL(\N*_S.`W5g_Fff\YXELSLJOFTO2WQ0UQ5VM.XM*[M(XI'VG&UF%VG%WH&VH&TF%TE$TF%UF%UF%WI&WI&YJ'WI&UF%SD$RC#TF%VG&XJ'WH&WH&ZL(ZK'YJ'YJ'ZL(UF%SD$VG%[M,WI(SD&PA"PB#P@"SD$TF%VH'VG'SD%h[AocJcU:SD$UF%VG&SC#RB#QB#TE$[N(ZL(ZL(\N,x`pdGWH'YK(YJ(XI'YK(XJ(UF%TF$WH(VG&TF%TF%WI(XI(UF%UG%YJ(fY]O.\N.eX9^P.\N*\O+aT4}rX_R._R+`U,]P*bU1ZL(\O+YK'\O)\O)]P,^Q-ZL*]O*^Q.[L/h[?TE$TE$TF%TE$SE$XJ+ZL,VH'^Q2VH'TF%TF%TF%VG&WH&WI&YJ'ZL)\O+[M*ZL(ZL(YK([M*ZK)WH&UE$N=TE$TF$TF$RB#SD$TE$TE$TE$TE%VH'VG&UF%UE$RB#SD#SD$TD$TD$TD$TE$ZL,RC#TE$SD$QA#QB#RC"SD#SD#RD$QB#RB#TD$SC#RC#SD$SD$UF%TD$UG%TE%WI'UF%VG&TE%WH)WI(SD&[M.\O.XJ'TE$TE$UF%UF%TE$SC#TD$SD#RB#RC$SC$RB#SD$XI'UF%P@#N="N>"P@#N>"O?"P@"QA#RB#P?"RC$SD%QA$RC$RC$ZL/WH+YJ.RC$VG&UF%UF&ZK+XJ)VG&VG&XI'UF%VG%VH&VG%VG&VG&SD$UF&YJ(WH'VG%UF%UF%TE$TE$SD$RB#RB#P@"SD$VG%VF&YJ([L-VH(VH&ZK*YJ)UF%WH&VG'XJ'\N)ZK(YK(WH'XJ)XJ)h\;g[=bT4[M*]P)`S-^R,_S,ZM(VG&RC#UF%UF%TD$TE$WH&RC$P@#PA#PA#RC$M=!O@"VG&WH&RC$N?"RC$SD$VG&SD%YK*PA$QB$WH)SD(SC'XI(RC$N="QA%P@#VG&YK(XJ'RB#UF%SD$SC$SC$RB$SD%XJ(YJ'WH&SD$QB#RC%TE%SD$ZL+XI'UF&TE%XI'VG%UF%TE$TE$TE$VH&VH&XI'VH&UF&TE$RC$TE%PA"UF%VG&SD$UF(VG'SD'RD&TF&TE%RB#P@"PA#RC#QA#QB#TE%VG%VG&VF%UF&RC$SD$PA#M>!N?!Q@"O@"N?"O@"O@"TE%UF%UF%QA#TE%VG%QB#QB#RB#P@"O@"M>!N?!O@"PA#P@"TE&RC$QB#QA#RB#QA#RB#RC$QB#RC#UF'SE%P@#YK1QB%TD'UF*TE*M>"SE'TE%SD#SC#SD$SD#UG%XI'VG&TE%UF%UF%SD$RC#P@#QA#QB#SD$SD$SD$QA#QB#QB#PA"RB#SD$RC#PA#SD$RB$UF%TE%VG&ZL-WH)ZL-WI(VG&UG%UF%VG&SD%VG%RC$N>"RB#UF%SD$RC#P@"PA"TE%UF'SC$\M+XI'VG'QA#TE%UF%P@#M=!O?"UE%WH&[L+[M*ZL)ZL)\N*\O)\N)\O)^P*\O)ZK)YJ(YJ'XI'XH'WH'WI(YJ(YJ(ZK*VG'UF%YJ'ZL([N(ZK'XI'XI'VH&VG%WH&XJ'\O(\P)\N(YK'XI'YJ'XI'XI&[N)ZL(ZL(XI'UF%UG&VH&WG&XI'XI&ZK'ZK(ZK(XJ'[M(YJ'YJ'WH&VG&UF%VH&WH&WH&WH&WH&WH&RC$N?"QA#UG%VG&VG%XI'XJ'ZL(XJ'XI&XI'YJ'YJ'XI&WH&XI'VG%VG%WH&WH&VG%VG%UF%QB#QA#QA"P@"P@"PA"SC$VG%SD$P@"P@"P@"QB#UF%XJ&VG%PA#SD$XI'ZK(YK'XI&VG&UF%RC$QB#QB#QA#QA#UF%SD$QB#QA$P@"P@"O@"QB#RC#TE$TE$UF%ZL(XJ'WH&WH&WH&WH&WH&VG&XI'YK(ZL(ZL)\N)\O)[M)WH'WH'YJ(XI'XH'XI'XI'XI'YJ(XJ'YJ(YJ(XI'UF%TD$UF%TE$SD$SD$SD$VG&XI'XJ(YJ'YJ(YJ(YJ(YK(XI&XJ'XJ'XI'XI'YJ'XI'[M(\N(YK'XJ&YK'ZK(ZL(XJ&YK'YJ&\O)ZL'YK'XI%XI%VH&VG&QB#QB#QB#WH%ZL'\N(_R)^R)\N(\O'[N'ZL'\O']P)^Q(^Q)`T)^R)[M(YK&YJ&XJ&XJ&XJ&XJ&ZL&YJ&XJ&YJ&WH%WI%XJ&WH%VH%WI%VG%VG$WH%WI%VG%XJ&VG%XI&UG%WI'WI&VH&WH&WI&WI'VH&WI&XJ&WI&XJ'XJ'XJ&XJ&XJ'XJ'XJ'XJ'XJ'WJ&WJ'XJ'XJ'XJ'YK(YK(YK'XJ'XJ'ZL([M(ZL'YK'YK'YK(XI&YK'YL([M(ZM([N)ZM*ZM)YM)YL(YM)YL)ZM)ZM)ZN)[O)]P*]Q*^P)^Q*\O)\P*^P)]P)\P)\O)YL(\O)\O)ZM)_R,]P*^Q+]P)[M)ZL([L(ZK(YJ'ZK'WI&XJ&XJ'XI&XJ&XJ'XJ'WI'VH&WH'VH'VH&WH'WH'VH'VH'UG&UG%UF%UF%VG&XI&VG%TF%UG%VG%UG&SD$SD$TE$UG&XI'WH&YJ(UF%VG$UF%VH%UF$TF%UF%VH'SE$QC$RD%VG'XI'VH&XI'WH&WH&UG$WH&WI%VH&UF%YJ&[M(YJ'UF%UF%TF%TF$SE%XJ'ZL([M'WH&ZL(ZL'ZK'YK'XJ'VG&TD$TD%UF&UG&UF&TF&TF&VG&VG&UG&TE%SD$TE$UH&XJ'VH&VG&UF$VH%VG&UF%VG&TF&VG&YJ'YJ'WH&XI'RD$UF%TE$VG%SD$TE%UG&UF%WH&WH%WH&VG%UF$UE$UF%WH%TF$VG%SD$UF$TE$VH&XJ'PA#PA#RC#WH&VH&WH&XJ(UF%WH&XJ'WH&YK(WH&TE%SD$UF%WH&TE%XJ'VH&XI&XI&ZK(YJ'WH&XI'XI'VH'TE$SD$RD$TE$TE$SD$SE$SD$TF$SE$VH%XK'XJ&VH%WI&UF%VH%WH%WI%ZK'YJ'WI'WH&TE$SD$UG%VI'XJ'WI&WH%VG%UG$TF$SD$RC#RB#QB#RB#RC#XJ']P)[M(YJ'XI'UF%TE$SE$TF$UF%VG&VG%UF%UF%WH&VG&VG%VG&XI']P*f\0g]2cY1bY1h`5XP1ME,ME.\P*^Q*ZL(YK(VG&WH&WH&XI&VH&VG&VG&VH&WH&VG%UF%VG&WH&WH&WH&UF%SD$VH&ZL([N(ZM(\N)YK'ZL(YK(ZK'ZL(ZL(XJ&TE$VG'WG&TE$P@"QA"RC$TF%VG&VG&VG&SD#^P4k^D\N0TE$TF$TF%VG%WH&RC$RB$VG%XI'cV6{pVXI'WH'ZL*ZL*dW9bU8ocGdW;~t^ynbFXI(YJ(YJ)ZK(\N(\N,`R1cU6dV8znVt}rYZL*]O._R1h\;_R.\N+ZL)ZL)YJ([M*[M)]P+^Q-aU.]O.ZL-XI'XI(_Q0`S1[L+]P,j_=cV6`R5縲h\?ZL.[N/VH'VG&UG&UF%VH&XH'VG&UF%UG&VH&XI'YJ'YJ'[N(ZL)[L*[L)XI'XJ(ZL([L+^P.\M+VF(|qXTE#SD#RB#RB#SC$RA#RA#RC$RB$TE%VG&UE$TD$UF$UF$UG%UF$TE%SD$UF'RB#UF&TE%RC$RB#RB#TE#TE$QA"SD$RB#UF$RC#RC$SE%UF%TD$SD$SD#TF%UF$WH(YJ*UF&VH'UF&TF&YK)[N*ZL(TE$WI'VH&VH%UF$TE$UF%VG%UE%RC#SC$SC$SD$RC#SD%RB$O?"P@"PA#QA#P@#P@#O?"QA#RB$QB$RB$QA#SD$TD&_Q6gY@sgOUF'WI&TE%TE&_Q3^P/aS5uiOjthLbT5XJ+SD&RB$SD$RC&SD&VG'WH&WH&TF%VG&UF%QA#RB$WH(SD$TD$SD$RC$SC$^P2TF(QA#VG&YJ(YJ+WH(WH)SD%[L,]P,XI'TE$VG'XJ(YK'eZ1j_9bU3\N+[M(]O)[N)\O+XJ(TE$TE$UF%WH'RC$WH'YJ([M)WH&UF&QB$PA#QB#O?"WH'WH'TE$SD$UG&TE%PA"YK.VG(PA#UF(WH+VF&QA$QA#UF%QA#SC$UF%RC#RC#RB#SD$RB#SC$QB#SD$RC#UF%XI'XI'VG&WH&XI'XI(ZK*\N,ZK(ZL)UF'WH([M+YJ'YJ(VG&WH&WH&VG&XI'VG&TE$XI'VH&PA"UF&SD$VG&VG&VG(SD%WH)VH)RC%RC$TD$QB#RC#VG%VG%VG%VG%SD$UF%WH&XI'VG&TE%RC#L=!I:L=!N?"N@"RB#M>!J; M>!TF%VG%WH&RC#SD$UF%WH&VG&SD$M>"N?"M>!O?"QA#SC%WI)UG'UF%VG(SD$RB#RC#RC#RC#QB#SD$RC#QB#RC$P@"QB$fYA`S8VG(VH(QA#P@"RC$RC#TE$SE$VG&TF%TE$UF%UG%TE$SD$SD%O?"QA#SD$SD$RC#RB#QA#RC#RC$RB#SD$SD$P@"QB#P@#QA"SC#UF%QA#P@#VF&WH&WH&XI(UF%WH'UF%WH'UF(PA$RC#QB#RB#PA"UE&ZK*_Q/\N-YK)WH'XI(\N-YJ)QB$O?"O@#O@#PA$TE&VG&YJ*\N+ZK)[M)^R*]Q*]Q*^Q*\N)[N)[M)WH'YK(XI'YJ'WI'YJ'YJ'XJ'ZK(XI'ZK(WH&YK([M(WH&TF%UF%VG&WH&XJ'WH&]P)^R*\O)ZM(ZL(\N(ZL(ZL([M(]P)]P)\N(XI'XI'WH&WH&WH&XI'YJ'ZK(\N)^R*ZL(YK'YK'ZK'XI'XJ'YJ'YJ'XI'XI'WI&WH&TE$SC#WH&WI'WH&YK'YJ'WH&XI'ZL(VG&WH&WH&XI'XJ'YJ'XJ'VG&XI'WH&XI'XI'UF%PA#PA#P@"P@"P@"P@"SD$TF%RB#RC#QB#QA#TD$SD$RB#QA#PA"RB#TE$UF%UG%TE$TE$SD$UG%TE$RC#RC#RC#QB#RB#QA#RB#RC%TD'RB#UF%TE$UF%WH&TF$SD$YK'[N)XI&XI&WH&XI&XI'UF%VG&WH&YK(ZK(ZL([M)[M)YJ'XI'XH'WH&XI&XI'XI'XI'[L)ZK(YJ(YJ(WH'UF%TE$XI'VG%TE%TE$TE$TF%UF&WH&YJ'WH&UG%VG&XJ'YK'ZL([M(ZL([M([M(\O(_S*]O)ZM(YK'ZL([M+[N+ZL(ZL(YJ&[M([L([N*ZM'ZL'YJ)WH(XJ)WI'UF&WH&ZL'\N(\N(]P(\O(]P)[N(\O(]P(\N(\O(]P(^Q(]Q(ZM'ZL'YK&ZL'YK'ZL'[M'ZL'YK&YK&YK&XJ&XJ&XJ&XJ&XJ&XJ&WI%VG%VH%XI&WI&WI&XI&XJ'XJ'XJ'WI'XJ'XI'XJ'YJ'XJ&XJ'YJ'ZL(XJ'YK(YK'YK'YK'YK(YK(XJ'WI'XJ'XJ'XJ(YL)YK'ZL(YK(YK'XK'YK(YK'ZL([M(ZL'ZL'YK'YK'ZL(ZL([N)\O*^Q,]P,ZN)ZM)ZM)ZM)ZN)ZM(ZM)[O)\O)]O)]P)]P)]Q*^R*]P)]Q*[O)\P*_S*_R*_S*\O)^P)[N(]P*\N)ZL([M([L([M(ZL)YJ(XI'WI&ZL'XJ'YK(YJ'VH&XI'WI'WI'XI'WI(WI(WI'XI(XJ'XI'WI'WH'VH&WH&XJ'XJ'YK'WH&UF$WH%WH&VG%UF$UF$WH%XJ&YJ'YJ&XI&VH%WI&VG%WH&VG&UF%WI&XJ(SD%TF&WH'XJ'ZL'YL'VH&VH%VG%VH%UG%UG%XI&YK&[L'ZL'ZL'YK'YK'ZK'ZL'XJ'ZL'[M(YK(XJ'XJ'ZL(YK(WH&WH&VG&VG&UF&WH&WH&UG%WH&VH&VG%WH&VH&WH&VG%TE%VG&UF%VG%TF%TE$UF%WI&VH&UG&VG&XI'UG%VG&ZN)YK(YK(TE%SE$VG%YJ'WI&WH&WH%WH&VG%VG%VF$VG%WH&YJ'UF$UF$VH&XI&XI'YL(SD$QB#RC#VG%YK(VG&WI'XJ'VG&XJ'VG&WH'YK(ZL(ZL(UF&UF&VG&TE$SD$UF%XI'VG&VG%XI'WH&VG&TE%TF%TE$UF%UF$UF%UF%UF%TF%TF$TF$VG%VI&ZM)[M)YK(YL'WI&TF$UG$WI$WH$WH%WI%VH%VG$UG%WI&VG&WH&VH%XJ&WI&WI%VG%VH%RC#RB#QB#RB#SD$XJ&[M([M'\N(WH&VG%VG&VG&VG&VF%WH&WH&VG%UG%UG%TF%TF%TF%UF%WH&XI'\O)_S+^Q*`S+`T+]P*\P*]O)\O(YK'ZL(XJ'XI&XI&YK'XI&XI&WH&XI'WH&VG&VG&WH&XI'WH&VG&WH&WH&XI'XI'ZM(YK'\N)YK'ZL(YK(YJ'YK'ZM([N([M(UF%VG'VG&TE$QB#TF%VH'VG&WG&YJ)VH'TF%SE$TE$TF%UF%TF%VG%]O-VG&WH(wlT{bxmPeY6]O*[M-wnaFxbtŽ헎wbU2ZK)\N*cX.g[:ynSgZ;i\=\N,XI)k^Bl_Bh[=h\>xmQdW7ynUzoTg[9g[9cV5maBfZ7_R,\O)`S-k`<_S,[M*gZ>`R6VH&UG&^P1]P+bU1i\j]AuiNbT5WH&YK)YK)WH&YJ(XJ'WH&WH'UF%YJ(XI'XI'YK'YK'[M(XJ'`S2tiMYJ(ZL)]O.\N-ZK)VF%QA"VG(\N.SD$SC#SC#RA#Q@#SC$SD$RB#SC#TE$TE$YK*[N._R2shMf[M,VG&TD$YJ*aS7WH)cU:reMbT9i]A[M0ZL-SD&SC%RB#SC#RC#RC#SC#WH&SD$RC$RA"\N0WI(ZL/TE(YJ+]N0VH'UG%\N+ZM)TE#[L-_Q2YK(ZL'VH%TD$VG%ZL(YJ*^P3ZK-WH(VH&UF%UF%SC%QA#QA#QB#P@"P@"P?"P?"P@"QA#P@#P@#P?"RB$naJi\CzoXk^CWH)\M.XI*YJ*XI*xmU}hn^P1XI(UF'XI(QA#VG,QA#TE$WH&XI'VG%TE%VG%TE$RC#QB#P@"O?"P@"QA#VF*maIWH)WH'SD$WH'XI'XJ*]O/ZL/ZL-YK+XJ)YJ(WH&XI'ZK([M*]O*f[6h\9rhEdY1bW.bV.`S-ZK(SD$QB#SC#TE%YK(]O,VG'UG&TD%YJ*QB$RC&TF&RB$RC#RC$RC$XJ)UF'VG&UF(UF)YJ-]O0`R7\N5VG&cU;^P8YK/YJ,P@#QB#P@"QA#QA#P@"TE$TE%RC#RB#SD$SD$SD$WH&UF%RC#WH&XI'WH&XJ(YJ)YJ)ZK*SC$YJ*^P/XI'VH'UF%WH&WH&ZK)XI'WH&UF%VG%VG%UF%VG&XJ'WH'YJ+VG'^P/]O/WH'RC#UE%UF%VG&WH'WG&XI'VG%VG&XI'WH&WH&WH'UF%UF%RC$PA#QB#SD$RC$P@"J; K< J; N?"RC#UF%WH&YK'ZL(WH&XI(QB#PB#UF,M>"PA$RC'WH*UF'[M0ZL-TE$RC#SD$TF%TE%VH'UG&VG%UF%RC$RD$SD$UE)UF'TF%TF%TE&P@#QA#SD%RC#SD$RB#SE$TF%VG%UF%VH(VH&UF%RC#QA#RB#RC#SC#SD$SC#QB#SD$SD$VG&UF%RC$RB#YJ,VG&UF&VG&SC$P@"RC$UF%WH&YK(ZK(ZK(ZK(YK(YJ(XI'UF%SD$QB#RC$WI'_Q1_R0^P.\M-XI(UF&WI)XI(ZK*VG&QB#QB&N?"N?"O@"UF%WH&[L+^Q.`T.dX3^Q,^R+_R+_R+^Q*ZL(XJ(XI'ZK(XI'XI(XI'YJ'[M(XI'[L)[M(WI&UF%TE$UF%WH&XI&YJ'YK'[N(^Q*\N(\O)]P)]P)\N(\P([L(ZK(ZK'XJ'ZL'\N(\N([N(ZL(ZM(YK'YK'YK'YJ'YJ'ZL(ZK'[M(ZL(ZL(YJ'YJ'VG&YJ'ZK(XJ'WH&WH&VG%XI&XI'YJ'XJ'XJ'XJ'VG&WI&WH&WH&XI'VG&VH&UF%XJ'ZL(XI'WH&WH&XJ'VG&RC#PA#QB#QB#QA#PA#RB#QB#RB#SD$TE$UF$SC$SD$UF%RC$QB#RB#QB#RB#RC#RC#RC#SD#RC#SD$SD$SD$TF%SD$RB#QA#TE&[M/ZK-XJ,YK*TE$XI&ZL(UF%TE$UF%UF%[N(ZL(VH&VG%XI'YJ'UF%SD$QA#QA"TE%ZK(ZK(ZK(YJ'YJ(ZK(XI'WH&XI'XI'XI'ZL(YJ(YJ(YJ(XI'WH'XH'XI'YK([M)YJ(XI'XI'WI'XI'YJ(YK'VG&WH&XJ'[M'ZL([N'[M'\O(\O(\O(^Q)^Q*]P)[M(ZL(ZL)XI'YJ(YK'ZL'ZL'\O)]O+\N)ZL)[L*YK)YJ)XJ'VH&WI'WI&YK'ZL'[M(ZM'[M(ZM'\O(]O(\N'\N'\O'^Q(]Q([M'ZL'YK&ZM'YL'YK&\N'ZL&ZL'ZL'YK&YK&YK&ZL'ZL&YK&XJ&XI&WH%XJ&XJ&WI%YK'ZL'YK&XJ'YK'ZL'YK(YK'WI&XJ&XK'YK'ZL([M(ZM(ZL(YL([M(ZL'YK'YK'YK'ZL(XJ'WI'WI'XJ'YK'YK'YK(ZL(YK'XK'YK'YK'YL'ZM([N)ZL(ZM([N)\O*]Q,]Q,]Q+\P*\P+\O*\O*[O*\O*[O*\O*\P*\O*ZM)]P*]P)]P*`S*_S+^R*]P)^R*]Q*^R*]Q*\O)\N)[N)ZL(ZM(ZL(]O)]N(\M([M(ZK(XJ(ZK(^Q,\N*fZ8fZ;WI'XI'ZL(XJ'XI'XI'XI'XI'ZK(ZL)YK'ZL([M(\M([M(\N(]O)\O(WI'UG&VG%XJ&XI&WH%XJ&YK&WI%YL&ZK&XI&WI&YK'UG%WH&YJ'VH&SE%VH&YJ'WI'YK(WI'UG&VG&WI&VH%VH&VH&WI&WH%WH%XJ&ZL&[M(ZL([L(\M)\N)\N)[M(\N([M(ZL)YK(XJ'XJ'ZL(XJ'WI'WI'XI'WI'YK'YK'YK'YK'XJ'UG%VG%VG%WH%WH%VG%VH&UG%UF%TE$TF$SD#VG%VG%VG%UF$WG$VG%WG%SD$TE$TE$SE$UF&VG&TF%XI&XJ'ZL'WI&XI&VH%WH%VF%XI&XI%TE$UF%VG%TE$YK&XJ'VH&VG&UF%YK(WI'WI'ZM)YL(TE%WI'XI'WH'XI'[L(XK'[M(XI'TE%WI&TF%UF%YL(XI&VF%WH&TE$UF%UF%VG&WI&UF&UF%VH%UF%VH%VH%VG%VG&WH&WJ(XK([N)YJ'YK'YL'VH&TF%UG%UG$WI%XJ%WH$WH$XJ&ZL'XJ&XJ'XJ&ZL([L(YJ&XJ'YJ'TF%SD$RC#RC#SD#TE$YJ'[N(ZL(VG%WH&WH&WH&WH&WH&XI&WH&VG&TF%UF%TF$TE$TF%TF$VG%VG&WI&YK'[N(]O)]P)[N(\N(\N(YK'ZL(ZK'VG&XI'YJ'XI'XI'YJ'XJ'XI'XI'XI&WH&WH&XI'XI&VG&WH&XI&XI'ZL([N)\N)ZK(YK(ZL(XI'YK(XJ'ZL(YJ'XI'dV9h[@\N.WH&UF%VG&XI(WH&WH&YJ'ZK)XI'XJ'XI'WH&VG&VG%YJ*`R3ZK+VH(ZL.l`Fyd}gmaD`S0eY6h\9e㙒}maC|emԤeY3[L)ZL([N)[M(\N+^P.ZK)YK)ZK)YJ(YK(ZK(]O,`S2bV4[M(\P(j_;l`?ncDodBncBla>g[9ZL)\N,vlMhrgI[M-YJ(YJ(ZL(cV1_R,aS/cV5cV2\N)]P)`T/ujLh[<\M,YJ(YJ'YJ'XI'WH&eX8]O.|qTi\?ylUj^=YK'XI'[M*\M,\M+ZL+shK]O-YK)XJ(YJ'VG&YJ*VG%bT5]N0WH(VG%SC$UE%TE%TE%TF%UG%TF%RC#WG+rpdLk_DdW8UG$VG&^P2peJl`CfY?taųzynWZK-RB"RB#SD#SC#VH'TE$UF(RC$SD$UE'VG'y|qYYJ,\N1cV8XJ)[M*\N)XJ&WI'^P0[N*WI&VG&VG&[M+aU2h\@qeK]O.XJ'WH&WI&UF&RB#QA#RC$QB#RB$QA#P@#QA"P@"P?"PA#QA#O> m`G|r]nbJgY@naHfY=`R4ZL.aR8obLzoV}gxaqeIbU5cV7^P4`R3WH)P@"TD$UF%UF%WH&VG%UF%UF%RC#RC#SD$P@"QA#UF&WH&]O/YJ*YJ*WH&VH'ZK*XI)YK)_R1^Q0\N0[M.XI)YK(\N)ZL(\N([M(\N*]O,bU4dW5dX1_S,^P*^Q*_R+_R+[M([M(YJ'UF&SD&WH'ZM+YJ,QB$\N+ZL(XJ(WH(PA#WI+[L0YK-YI-k^@gZ=UF&TE%VH+VG,`R9\N2maGj]AZK+TE&TE&XI)VF'XJ*TF&SC%SD$^P/WH&WH&UF%SD$VG&XJ'WH&UF%WH&YJ(YJ'XI'ZL)XI'[L*UF%WH(XI(VG&XI'XI'XI&UG%TE%RC#WH'SC$WH&VG&]O*^Q-YJ'XJ'^P0[M-ZL+ZK*ZK(UF&RC#UF&SD$QB#UF%UF%WH&WH&XI'VG%VG&UF%VG&UF%UF%TE$VG&UF%TE$PA#K< O@"PA#RC$UF%WH'WH'WH&TE$WI(TE$P@#UF%SD%N?"K;UF*zpdK`R8WH(VG%RC#sgN}r[bU7UF%RD#UF%WH'VG(WI)\N1j^DuiPTE%SD$RB#SC$SD$TF$TE$TE$UG%VG&VG&VG%TE$SC#QB#QB#TE$VG%UF%TE$SD$SD$TE%TE%SD$UF%WH']O0WH'UF'XI)ZK)UF%QB#WH&SD$XJ(YK)YJ(^P0]O.eW7ZK)YJ(VH&UF%UF%WH&[M*[L*]O-XJ(XI'VG&XI'WH&YJ)WH&XK(WJ'UG&SD$PA#O@"N?"WH'[M*\N*[N)aT.^Q+^R+\O)]P)\P)VG&[M)[M)ZL(XI'ZK(YJ(YJ([M)[M(ZL)YK(XI'YK'WI&XI'TD$ZK'XI&ZL(]P*^Q,\O)]Q*ZK'[N(^Q*^S+[N([M([M([M(\N(XJ'ZK']Q*[M([L(ZL(XJ'[M(ZL'[N([M(YJ'ZK'XI&YK'YK'YJ'WH&ZL(YJ'UF%RC#WH&VG&XI'YJ'YK'YJ'YK'ZL(YK)UF%XJ'YK(YK'WH&WH&VG%XI'WH&XI&XI&VG&VF%VG%UE$UF%SD$RC#RB#RC$UF%VG&TE$TE$TE%TE$TE$VG%WH&TE$RB#RB#QB#RC#RC#RC#RB#RC#RD#RC#SD$RC#SD$WH&SD$QB#RB#SC$VG(^Q2ZL*RC#RC$TE$SD$VG&WH&WH&WH&YJ'WI&WI&XJ'WH&WH&QB#QA#RB#TE%YK(YJ(YJ'ZK(YJ(ZK(ZK(YJ'XJ'YJ(ZL([M)ZK(ZK(ZK(YJ'YJ(YJ(ZK(]O*aV-[M)[L)YK(YJ'YK'YK(]P)ZL'ZL'[N([N'\N(\O(_R+^P*^Q)^Q)_S*`U,^R*^R*]P*\O)[N)ZM)]P)]O)\O)^Q+^Q*[M([M)\N)\N*ZK(XI'XK'XI'WH'WH'ZM([N([M'\O(]P(]P(\O(\O(\O(]P([M(]P(ZM'YK&XK&YK'\O)\N(\N([N)\N)[N([M([N(ZL'\O'\N(ZM'ZL&YK&YK&ZL'YK'XJ&YL'[M(\P)[N)ZL(\N)\N)ZL(ZL'[M(\O)]O)\N)\N(\O)\N)[N)\N(\N(ZM(ZM(\N(ZM(YK(XI'WI'XJ'YK'YK'YK'YK'XJ&YK&YL(ZM)[N)[N)\P+\P,\O+\P,\O*\O*]Q-^R-_R._S.]P+]Q,\P*]Q+]Q+^R-]Q+\P*^Q+_S,\P)]P)^Q*_S+^R+\P*]Q*[O)[N)ZN)[N)\O*[N)[N)^Q-^Q,[N)[M(]O*]P*^P+vkLeeX6ļbV3ZL(ZK(XJ'XJ'WI'WI'XJ'ZL(ZL'XJ'[M(\N([M(ZL(ZL(XK'ZL(XJ'WI&YK'YK'YK'XJ&[M(ZL'ZL'ZL'YK'ZL'XJ'WI&WH&VH'YK(VH&VH&VH&VH&XJ(XJ)XK(XJ'VH&VI&ZL'YL'YK'XK&XJ&ZL'[N'\N*YL)ZL'[M([L'^O)\O)\N(ZM([N)ZL([M([M(YK'YK'WI&WI'XI'YJ&XJ'ZL'YK&WH%XJ&XJ%RD#VH%WH%VG%XJ&XJ&YJ'WI%VH%XI%VH&VH&XJ'YJ'YK(XJ&WH&VG%QB#SD$UF%\O)\P*YK(XH&VG%TF%ZL'WH&VG%XI&XJ'XJ&YK&ZL&WH&VG%SD$VG%VG&UF%XI'WI'WH&ZN)XI'XI'YK(VG&VG&YL(VG&VH&YK(YL(XJ'YK(ZL(YJ'YL(XJ'XJ'WI'YK'XI'SE$XI'XI'YJ'YJ'YJ(XI'YK'YK'XJ'ZL(ZK'WH&VH&ZL(XK'WJ'XJ&XJ'YK'ZL(ZK'ZL(VI&UG%WI&WI%XJ%XJ&YK&ZM(XJ&XJ&YJ&[L(ZL(ZL(XJ(YK(WI'XI'XI'XJ'VG%UF%WH&WH&WH&VG&VG&WH&XJ'XJ'YJ'YJ'YJ'YJ'XJ'WH&UF%SE$TF$TF%TF%VG%VG%VG&WH&YJ'YK'XJ'[N(]P)ZK'YK'ZL(XI&WH&WI&XI&XI&XI&XJ'XI'XJ'YJ'WH&WH&YJ'XI&VH&XI'YJ(YK(]O)^Q*\O)[N([M(ZL(ZL(YJ(ZK(YJ'YJ'ZL,tiRxbgZ=YJ)VG&VH&XH'XH&XI'YJ(ZK)]O.]O-WH&WH&ZL*\M,i\>uiMw_npdGk^C~s[i\@gZ>fY;cU8侹o{pYl`EfY<_Q0ZL(YJ'YK'YK(\N,_Q0ZL*[M+XI'XI'YJ'[M(ZM(ZL(\O)\O(_S+dY0^Q*^P+_S-fZ4[M)rgF^Q,fZ6[M+|`peC_R/\N.fY<_Q4dW7gX4gY4`S-pdC_R,ZL't\raT0^Q,ZL(YK(YK(\M+ZL+vkPznVk[L.wǼfY7XJ'g[[M(XI'WI(WI(WI*VG'[M.YK'dX4x\laE}j^?thKpeDtiJtjJcW3`S0aT3k]Av\dV<ȿl|ÿ|abU3ZL)ZL)YK)\M-\N/VG(l`E~xceX<|rY^P1ebV4YL(VG&TF$TE#YJ*VH&WH)~j½ƿНZL+XI(_P1fY:WH&YJ(UF%XJ*UF&TD&eX:dW;l`Gu^i]AgZ?_Q3YJ)XH(XI(ZL(XI'_P1ZK*]O.h];`S0dX5ZL(WI&YJ'XJ'YK'YJ'VG&TD%UE%VG&UF%TE%TD$SD$TE%TE%TE$RC$RC#SD$P?"L;|oZrgM[L0xaxlV^O2WH+nbJ{pX\N0XI*RB#SD$XI)TE$TE$TE$TF%TE$UF$VG%WH&UG%VH%WH%VG&VF'UF&VG&_Q3YK+\N-ZL.hZ=[M.XJ*]N.ZK/sgP|ej^AdX7cU5`R2XI([M(YK(UF%`S0]P+\M*]O*]P)YK'XI'XJ'YK'ZL(\N+XI'VH&WH'XI'YJ'YK'XJ'ZK(XI'XI'WH'WH'ZL(YK']N-]N/^O/SD&TE$XI&WH&[L+i]AdW;jwdw`yfi\?ZL-YJ(TE%[M.^Q3WH([M*WH)VG&XI'XI'SC$TE%SD$N?"QA#SD$UF%VH&XI'TF%ZK+VG&ZK(YJ(YJ)RB#TE%XI'TD%SD%TD$P@"]N5\M/dW8_Q0WH&VH&WH&bT7wasgMi]AZL-aS3[L+`R3aT3\M,dV7j^A_Q0^O.\M,naD_Q0XI&YJ'WH&UF%VG&VG&WI&UF%WH&VG&WH&WH&UF%VG&XI'YJ+WH&XI'UF&TD%RB#SD$SD$TD(RC&O?"QA#QB#O?"P@"RC"TE%RB$O?"TD$SC$P@ _Q4t^|fXI)^P5}hГyZK,YK)}sYZL+YJ'XI'XI'WH&VG&UF%TE$TE$UG%UG%SD$SD$TE&UF%[M.\M.]O/ZL+_Q1[M+VH)SD&ZK+bT4WH&TE%SD%WH&XI'VH'SD#SD#obJZK0_Q6SC%YK,VG&XJ)VG&XI'YJ(YJ(ZL)YJ(ZK)YJ(YJ(YJ'[M*[M+XJ(WH'XI'XJ'ZL)^Q,\O*[M*[M+ZL)ZL)\N+[N)\N)ZK(ZK(ZL)YK([N*[L)^P*^P*\O)^P*[M)[M)XI'ZL([L)XI&WH&YJ'ZK'ZK(aS2aT1[M(\O)^Q*^Q,ZL)\N(]R*\P)\O)ZL(XI'ZK(\N(ZL'YK'ZL(YK(XI'ZL(ZK(\N([M(ZL(YK'YK'YK'ZK(YK'ZL(ZK(XI'[M(ZL(YK'UG%UF%YJ'WH&XI&XI&YJ'YJ(VG&ZK(ZK([L)YJ(YJ'\N*YJ'[M([M(]P*]Q)[N(ZM(XI&SD$SD$TE$XI&VG%RC#VG%TE$SD$RB#QB#QB#RC#SC$RB#TE$VG%WH&WI&UF%SD$RC#RB#RB#RC#SD$VG%VG%SD$UF%ZL(UF%SD$SD$RC$PA"PA#^P2YK*[L*YJ'ZL(YJ'YJ'ZL([M([M(ZL(ZL(YJ'YJ(YJ(YK(ZL)[L)ZL(ZL(ZL(ZK(ZL(YJ(XI'YK(ZK(YJ(ZK(\P)]O)\P)\N)ZM)[M)\N)\O)^R*]Q*]R*_T,_T+\O(\O(]P)]P)\P(^Q)^R)^Q(]P(\N']P(`T*aU-_T,_S,_S+`S*_S+aV,_T+^Q+^R,^Q,^Q+^Q)_S+_S*\P)\O*\N)\N)[M(\O)\O)\N([M([M([M(\N)\O(\N(\P(]P(]P(\O'[N'[N']P'\N(ZL'[M(\N)\O)[N)\P)^Q*^Q*]P*\P*]Q+^R+\O)^Q+\P)\O)[N([M'\O)\O)\O(]P)]P)]Q*]Q*\P*]Q*[N)\O)^Q)^P*]O*^P*^Q)^Q*^Q)_Q*^Q,`T-^R+^R+]Q*]Q+]Q*_S*_T*^S*]P)]Q*ZM)ZN)[O*ZM(YL'ZM(ZM)ZM(ZN)[N)ZN([N)\O)\P*]Q+^Q,]Q*\P*^Q+`S.`S._S._S.]Q+^R,`T-`T-`T-bV/aU._T-`T-^R,^R-\P+^R,_S,`T-`T,`S+dW3i]:_R,^Q*^Q*eX3x]~eøĤveX9`S2oj]=^P+^Q+\N)\O)]P)[N)\O+i]:aT0\O*YK)]P*]O)[N(\O)]O*dW4\N*\N)\N)\N)]P*[M)ZK([M(]O)[M)YL'YK&WI&ZL'[M(\N)ZL'XK(YK'[M(ZM(YL(XJ'[N(ZL([N([N([M(\O(\O*\N([N'\O(YL'\N(XJ&VI&ZM(]O)^Q+]P+\O)]O*^P)\N'YK&ZL'[M(]P*]P)\N(]O)\O)ZL'ZN)]O)ZL(ZL'ZK'WH&XI%ZL'\N(YK'WH&WI'YK'XK'YL'XJ&WI&XJ&XJ'YK'XJ'YL(YL(YK'VH&WI&WH&WH'XJ'XJ'ZN(ZL(UG&VG&UF%YJ'WH&VG%TE$TD$UF$WH&XJ'WH&\O)^S+]P*\O)YJ'XJ(XJ(XJ(WH&WH&XJ'UG&PB#PA#SD$SD$UF%YL(XJ'ZL(ZK(ZL([L(YJ([M)]O)ZL(ZK(ZK(WH&YJ(XI'YJ'WI&VH&XJ'ZL(\N)ZM)ZL([M)ZL(XK'ZL'ZL'[N(ZL'\P)^P)]Q*]P*^Q,[O)\O+ZN)[O)ZM(YL(YL([N(ZN(ZM(ZL(ZL(XJ'ZL(XJ'ZL([M)[M(ZL(YJ'WH&XJ'VH&XI&WH&XI'VG&VG&VG&YJ'YJ'YK'YK'YK'YJ'YJ'XI'WI&WH&WH&WH&WG&VG&VG&WH&WH&WH&XI'XI&XJ'YJ'ZL(ZK(YJ'XI'XI&XI&XI'WH&WH&YJ'dY.dY/_T+[M(XI&[M(]O,[N*dX1cW0cW2\O)maBxmS~t[fY9shJ_Q1cU5]O0ZL.h[~hel`=h\8eX8zb}rYǼ}sVcW4aS2cV7obHuiO϶ocD]N-\M,eW:ymVm`CgZ<_Q2WH(dWynSshLpeHaU6h\:_R,^Q+^Q,\N)\M([M(]P)]O)]O)[N)\O*]O*^R-cW4_R-WI'XJ'ZM(\N(\N)\N)[N([N)[M(]O)^P)^Q*]P+ZM*_Q+]P*XJ(XJ&YK'VH&YL'\N([N)\N)]O)ZL']O)ZM(\N(XK'[M(YK([N*ZL(ZM(^Q*\O*[M(ZM'^P([M'YK&\O(ZL([N)ZN)[N(]P)_R+^P*]P*^P*ZL(YL'XK'ZM(]Q*]O)[M(]P*\N)[N)\O)]O(\N(ZL(]O*]O)^P)\N'ZL'YK'ZL(YK'YK&XJ&WJ'XJ&ZM(ZM*YL(XJ'WI&XK(YK(XK(XJ'XJ'ZL(ZN)WH&VG&XK(WH&SD$UG%ZK'XI&XI&XI&YJ'[M(XI&WI&]Q*_S+dY/cX._S+[O)[N)ZL(VH&WH&VH&WI&RC$PA#P@"SE$RC$UF%XJ'YJ([M([M)[N)\O)\O)\O)[M)[L(\P)[M)ZK(WH&VG%YK'YK(XI'ZL(\O)[M)ZL([M)\N)\N)[M([M(\O)\P)]P*]Q*^Q*_R,^R+^Q+_R-_R.\P*ZN)YL(ZM([N([O(ZL'ZL'\N)]O)ZL(YK(YK(YK([N)[M(\O)ZK(WH&\N(\O)XI&YJ'XI'XI&WH&WH&XI'XJ'ZK'ZL(ZL(YK'YJ'YJ'ZL(ZL(YJ'YJ'YJ'XI'XJ'YJ'YJ'XJ'XI'XI'XI&YJ'[M(^R*^Q*[M(ZL(YJ'XJ'YJ'YJ'[M)dY/aU,aU,XI'WH'`T-cW0j_;k`>pdEzbm`EjthLvjQmaDcV8dX:pdGvjMk_Bi\?YJ(WH&XJ'^O0shL\O,aT3seWnbGi]@h\@ocKƼreJ]O0VF&UF%VG&UF%VG%VG%UF%TE$ZK(^O/[L+\N-XJ(]O0WH'VG&YJ(ZL)VG&TE$WH(^P2eX;^P1ZK+TD%YK,VH)SD$UF%TF$SD$P@!_P3nbGcV7XI'\N.UE&zoVthObS8nbEZL(YK'ZK'WH&WI&WH&XI'YJ'WH&WH&UF%YJ(fX9ZL*YJ(VG%VG&WI)YJ)[L+\N,YK(YJ([M)[M(\N)ZL(WH&VG&XI'WI(YK*VG%_Q0[M*[M+YK(YJ)\N*^P*ZL(\O)[N)[N)^Q,[M)]O,]N-gZ>Ĺø^P.[M)\O+]O*[L)ZL*\N*\N+]O-[M*[L)[L)\N)]O*XI'\N)\N)XI'\O)]P)\O)YJ([N)[N)\O)\N*\N)]O)WH&TF%VG%ZL'h[:j^>la?aT0nbAcW1bV1]O+_Q/ZL(\O)\N(\O(\N([M([M(ZK'YK'[L)ZL(]O)^Q*ZK'ZK(XI'XJ'YJ'YJ'ZL(ZK([M(ZL([M([N([M([N([L(\N([N([M(YJ'ZL(XJ'YJ'[M(ZM([N(ZL'ZL(]O-YJ(ZK([M(\N(ZL(ZL'[N(ZL(ZL(\N(^R*\N(YK'XJ'ZL(YK'XI&XI'UF%UG%UF%VG%UF%TE$TE$SD$SD$TF%TE%UF%UF%TE%UF%TF%SD$TE$VG&YJ'ZL(XI'[M(ZK'YJ'YK'YK'VH&SD$RC#P@ wlVĺ{pU]O,[N(XJ'XJ'XJ&ZK([M)ZL(YK'YJ'YJ'ZL(ZL(YJ(ZK(ZL(ZL(ZL([N)[M([M(\O)\P)]O)^Q*^Q*`S+^R*^R+^Q*^P*_T,_S+]Q)]P)]Q)]P(\O(\O(]P)^Q)_S*_R*_S*^R+_S+_T,^Q*^R+_S,_T,`T+aV,`V,aV,aU,`T+bW-aV-bV-bV-`U-`T-`T,^R,^R*_S+_R*^Q)]P*^R+\N)]P*]Q*\N)[M)ZL([N(]P)^Q)]Q)^Q)]P)\O([N([N(\O)\O']P)\O(\P)]P)\O(^Q)]P)^P)`S*`S*^Q*\O)\O)\O)\N)]O*]P*]P*^P*^R+`S+_T+^P*^Q*^Q*]O*^P*[N*[M)]O*^Q+^P*^Q*\N)\N*^Q*^R*`S+_S*aU+`T+^R+`T+`T,^Q+\P*\O)]R*]R*`U,]Q*[O)ZM([O*ZN)[N)[N([N([N(\O)\P)\O)]P)]Q*]Q*]Q*^R*_S,`U-_S,`T.`U/`U.dY0bW/bV/aU/bV.bV0bV/`T-`T-_S,^R+^R+`T,`T._S-aU/`S.`S.dX3fZ6_R/aU2w\j^@v\`R/bU2^Q-^R-^P+^Q+]O*^P)^P)^P*]O*]O*^P*^Q*\N(]O*[M(ZM)[N*[N)\N)\O*[N)[M)\N)\O*_R,aT-aU-^Q*`S,`R+_Q+]O)\N(ZM(ZL([N)\N(]O)]O)\N)[N)\O)]P*\N([N([M(\O)[N)]P)^P)^Q)\O(]P)^Q)[N([N)^Q*aU-`T,_R+^Q+]O*]O)\N)^Q+_R+[N*YK(ZL(\N(\N)ZL([N(]Q+[N*[N)[N'[N']P)]P*_Q*^Q*^P)\N'[M'ZL'ZL([M)YK&YL'YL(ZN(\O*ZM(\N*YK'ZM(XK(YL(XJ'XJ(YK(ZM)ZM(XJ'VG%TE%TE$TE$UF%XJ'UF%YK'XJ'\P)]P)\O)ZM(cX.dY/_S+^R+ZM(]Q*_S+^Q*YL(YK(YL(YK(WH&RD$RC#UG%XJ'SD$VH&ZK(]P*\N)]O*\O)^R*]O*WI&VH&ZK(\O)[L)YJ'XJ'YK(ZL)ZL(ZL(\N)[M)[M)]P*]O)\O)]P*\P)\O)]P*^R,_R,^Q*\O*[O)ZM)ZN)[O*\P*\O*\O)ZN([N'[M(ZM(\N(^Q*^P)]O)ZM)YK(\N)[N)\O(\O)[N(]Q*`T,aU-_R*`T,\O)ZL(ZK'ZL(_S+[L(ZL(]O)[N(ZL(ZK'ZL([N(ZM(ZL(ZM(ZL(ZM(ZK(YK(ZK(ZK(YK'YJ'YJ'\N)]O)_S,`S,aU-_R+[M*[M)[N(^Q*\O)\O)[M([N)XI&YJ(ZL(^Q-`S2k_@ocIj]A~t^dV8dV7cV8fX<t]k^A^P0WH(_Q2yd{gzoWgZ<`R4ynV|rVsgLhh[>xbv_tiMg[:eY:ujL\O+YK']O)`S,ZL([N)WI%rgJdX6ujL㭧ۤdY1bV0k_>k`>dX4eY5dW2^Q,bU3]O-[M*YJ)ٴthLeY6eW<ź䰩|qY|oVG&h[AƷwlOdV7\M,|i꼷rujO{pW|wwlQshJ_R1k_A`S2ZL)XI'aR2aS3YJ(`R1ZK*bT3bU5ZL)XI'YK)VH&YJ'XJ'XI&VH&rx`S2_R3|r\ȿûĹt}rZuiR{bYK)dW;\N.WH&VH%UG$^P/fY;\N.YK-h[AvjP`Q3ZJ,ZL,dV;thMcU9fY>ZL,XI(XI(XH(\N*ZL'YJ(^P/ZL)]O)YJ'YJ(ZK)[M)XJ'VG%_R2eY8\N+YJ'WH&XI&WI&UF%VG&YK'YL'VF%UE%TD$UF$VG%UE%TE$TF$TF$XJ)VG'TF%TE$WH&TE$TE$RB#QA#RC#VG%XI&XI'XJ'XJ'YJ'XI&YJ'YJ'XJ&XJ%ZM&[M'YK&YJ'XI&VG%VG$XI%XI&VG%WH%WI%XI&XI'TE$RB#UF%UF$WI&YJ'XI'XI'XI'XI'XI'YJ'XJ'YK(YJ'YJ'ZK(ZL(XJ'ZL(WI&UF%XJ'XI&VF%WH&WG&VG%VG&UF%XI&ZL(ZL)_Q.eX7XI'XI&YJ(YK([M(\N)XI'WH&WH&WH%`S4wkpdKynXl`E[M+ZL*]O-ZK*[M,XI'WH'UF%cU6]O.ZL*WH&TE$ZK(ZK(ZL(ZL(XI'[L+\N*YK(\M-YJ(ZK(ZL)ZK)[M([L*ocGh[ArfLxmTbU8\N2UG'\N/WI(VF&XI'VG%[L*\O*_S,fY:bT2}bvjP{pYithM^P0\M-^P0WH'VG%cV6YK*TE%RB#SC$eX<[M.TD$UF%VG%XJ'WH&XI(^O/[L)VH&VG&UF%UG&VH&WH'ZL+XI([M/aS6gZ>YK-YJ,UF%WH(N>naGZL-[L.~h{ezcvkQbT7sgP㿺¸½wú쨡dX4^Q.\N)[M(ZL'YJ'XI'XJ'YJ'YJ'XI'ZK)\N-_Q0dW7YK(ZK'YJ'XI(TE$WH'[M+\N+ZL)\N,[L*\M,[L(ZL(YK(YK(WH'WH'YJ(VG&YJ(ZL(ZL([M+ZK(aT0bV/aU.\O*aT0`S/]O-qeFyoRwlS~lєs^Q+]P*ZK(\M,`S1cV4eY5^R+_R+[N)ZK(]O)]P*\N)]P+YJ(\N*\M)]P*[L)[M)^Q*\O*]P*]P)ZL(YJ(XJ'ZL([L(^R+aU.bW/`S._R-aU0g\7bU1[N)[M(YJ'[M(\N(]P)]P)\O)\O)]O(^Q*^Q*]P)]P)ZL(YJ'YK(XJ'YK'YK'XI'ZL([N(\O([M(]Q*^R*\N(XJ'\O)^Q*^Q*^R*]P)[M(ZK(WI&ZK(YJ'[M([M(YK(ZK(YK'ZL'ZM(YK'YK'ZL(ZL([L(ZL(]P)\N([M(YK'YK'YK'YJ'YJ'XJ'XJ'XI'YJ(YJ'YJ'XI'WI'XH&VG&VH&UF%UF%VG&WH&VG&UF%WH&XI'WH&WH&VH&WI'XI&YJ'YK'XI'XI'WH&TE$VG(xmWƽɚz[N)ZL([N([M(]P*[M(YK'ZL(WH&ZK([M(ZL([N([M(ZL(ZL([M(ZL'ZL'[M'^Q)^Q)]P)]P)^R*aU+_R*^R*^Q*^R*_T,^S+_S*^R*]R*]R*^R*^R*]R)^R*_S*_S+`T,_T,_S,_S-`T,^R,_S+`T+aU,aV,cX,bX.aV.bV.bX.aV.`T,`U+`U+`T,]P*]Q)^R)^Q)^Q*^Q+]Q+]P*\O)[N(ZL(\O)[M)[N(]P(_R*_T+`T*^Q)\N(\O([M(YK']Q*]Q*]P)\P(]P)]Q)]Q)]P)]P)]P)^Q)_Q)\N([N(\N(\O)^Q+^R+]Q+^P*^Q*_R+^R+]P)^Q*_Q*_R+^P*YL)VI(\O*]O*YK)ZM)[N)ZM*_R+`S+`T,`T+`U,aU,aT,_R*`T,]Q*\P*[O)]Q*]Q*]Q*[N)[N(YL(ZN)ZN)[N)\O)[O)\O(\O)]P)]P)]Q*]Q*^Q)^Q*^Q*_R+_S+`T+aU,`U/aU/bW0aV0_T-cV0cW/aV.cW0f[3bV-_S+_R+^R+bV/`T-^R,_S-`S-`T-_S+_S,^R-[N(zpRj_cV8SD$QB"ujRWH)VG(lžǿw]aS2[M+YJ(bU4_Q/\N,aR2^P0YJ'YJ(\N+bU0`T-aT1źz{qTdW8|eyoM\N(rgFl`?tjIk_=bV0]P+aT2^P.ZL)vjRö|do¸jaS3_P3w__Q1^O/}rUeaT1_Q1{pUv[rfGtjL{qQ\N)\N)ZL(WH&}r[Ơ{^_R/ZL(WH&XI']O-_Q/]O-eW8naEXI&^Q.aT2[M(XI&[M)\N)ZK(YK&ZK.º݃y^dW6j]D͏qZL,`Q4}eh\>bU6thM_R2`S3h[>VG&XI&XJ&XJ&XI&aU3`S1k_Ak^Bye]O2VF)^P4cU;}r[dW:_P4VG(XI([L*dV8]O,fZ;eX:VH'XI'ZK(YJ'[M*ZK)XI(WH'ZL*\O/gZfX9_R0fY=v^wathNw_^P/ZL*aT3YJ'XJ'YJ'ZK(XI&YJ(UE$|qXpdHdV8VG&SD#UF%XI'WH&WH&YJ)\M*\N)XJ'YJ'ZK)XH'aR2]N-]O0mdW>gZ>kaS7_P4l_F뿺ɚxa{pXh[?thMqeKj\?]N0]N1ĽͧuZcV5\N)_S+ZL([M(\O([M(ZL(\P)^Q+`T/\N*[M)ZL(ZK(ZK(UF%TE$VH&[M*[M*ZM)ZL)\N)[M)ZL)ZK(ZK(ZK([M(XI'YJ([L)\N)`S/[N(la>dX6^Q-]P+`T-\P*ZM*qeL黶`S/\O-l`AuZcV3_Q-aT/^Q+\P)^Q*`S,`T,^Q+aT/^R,\N*ZL)_R.^P/\N,_R-dW6aT1ZL(YK)UG%XI&XJ'WH&ZL'`S-`T,bV-aV-aV,`U+^Q*_S+_T+]P)^P)]P)_T+_S+_R*^Q*^P)_R*_S+]P)^Q*_R*]P)\O)ZL(ZK([M(YK(]P)\N([L(YJ'ZL(^Q*[M(\N(^Q*_T+^Q*]Q)\P(\O)]O)^Q*^Q*[L([M(\O)[M(ZL(ZK(XI'ZL(ZL(YK'\N)ZL(YK(ZK'ZK(ZK(YK'YK'YK'YJ'XJ'ZK(ZK(XJ'XJ'ZL([M(ZL'ZL(ZL(ZK'ZK(WI&XJ'YK'VG&ZL)[L(YK'YK'YK(XI'WH&XI'TF%TE$WH&WH&XI'YJ'XJ'VG%VG%`Q6zoYǾ}^P.\P)^R*_S,dY2^Q*\N)XI'YK'\N(\O)^R*]P*]O*\N)\O)\N([M(\O(]Q(^Q)[N)\O)\P)^R*^R*_R*_S+_S*`T*aV,_S*]R*]R*^R*_S+^R+_T+`U*aV*_S+aV-aV/bX/aV-aV-`U,aU,aT,_T+aV-aV-dY/cX/cX/bW.`U-_S+aV,cX/bV-aU,`T*^R*`T,`U,`U,^Q*^Q*]P)]P)\O)]P)\O)[N(\O(^Q+_T,_S+_S*]P*_R*]P*`T+^R*^R+^S*^R*^Q*^Q*^R*^Q)^P)^P)^P)]P)\O(\N(\N(\O(^Q*]P)]P*]P*\O)]O)]P*\P*^Q*_R+`S+_R+^Q+\O+_R,_S+_R,`R-^Q,\P+^Q+_S,^R+`U+`T+`T+`T,aU.aU-]R,^R+XK([O)[O)\Q*\P*[O)ZN)YL(ZM)[O*[O)]P*]Q*]Q*_R+]Q*]P*]Q*^R+_R+^R,_R+^R+_S,`S+^R,^R,aV/_T.^S-bV/dX0cX/dY2dX0dY0bV.bV.aU,_T+^R+^R+^R+^Q+^R+`S-dX4rgH|kujJaT0`S/j];^Q+^Q*`S-bU.bV.^P*\N(]O*[M)ZL'[N(^Q*]P*[N(\O)]O*\O(\N)[M)\O)\N(]P)_R+^P*_R+_S+`S,`T.^Q+]P*^Q)^Q)^Q)^Q*]Q*^R+^R*^R*^R*_R)_R*[N(\P*]Q*`U+_S+^R*`S*aU+`T*_R*`S)_R)`T*`T,bV.cW.eY/cW/bW-bW.bV.^Q*^R,^P+]P*\N)ZL)[M)\N)[N)\O)^P)]P)^Q)_S+_R+^Q*]O)_R*_R,^Q*[N)[M'YK'WI%YK&ZL(YK&]Q*[M([N)^P,[N)[N(\O*]P*\O*\O,[N*ZN*ZM)ZL(UF%RC$VG&XJ'[N)\P)ZM(XI'XI'ZL(YK(YK(XI'_S+`T,^R*^S+]Q*aU,`T,`T,_S+^S+]Q*_S+[O)ZM)WH&SD$RC#RC#TE%YL(WI&WI'[O)]P*]P)`S+_T+`T+\N)]P)]O)\O)^P*_R*_R*_R*\O)\O*^P*\N)]P*_R+_R+^R+^R*^Q*\P*]Q*^R,^R,_R,[O*[M)[N)ZN)ZM)]P-]P+ZN*^Q+\P)[N([O)]P*^P*^Q*^Q*]O)\O)^P*]Q)^R*_R*^R*]Q)\P)]Q)_S+]Q*[M(^Q*[M(`T+aU,`T,bV-\O)[M([M'^Q)]Q)cX.aU+\O(_R+]O(]P(]P)\O)^R*^Q)]O)]O(\N)[M)[N(]P*_R,rgIuX_R,`T-aT-\P)^R*_R,_Q.ZL(]O-h[;zoOy^o{fpzoX|bT5]O0ocJcU8gYdW;|fUF'k^AWH&XI){fµxmO\O*ZL(ZL'[M']O+i\?ynPeY3eX6ma@nbDmaC}sZnfujMvjPr{vX]P)]P)^Q+qfEujJrgIz_yf^Q,g[:l_D鯩מph[>|rV\O,vkSyav^mtiKwlPfY9dW3aU0_R-ZL(g[9]P+[M(YJ+wlOeX5bU1[M(YK(VG%YK*^P/cU5j]C[N)_R,^P+ZL(ZL([N(ZL([N(YJ&fX>߆}e]P.eX9rgMωjthNSD"]P/]O-UF'VG'[M*ZL)XJ+~fYK(YJ&YJ&ZL(`T1\N+VG(l`C]O.dW7`R2]N/bS7[M.^P1bU6[M,WH(bT6XI(_Q4}fpcF^P/eX9[M+\O+\N(]Q)aV,\N)^P0ZK)vkPbT5wlQrgHbT2^P,i]=[M)\N([M(XJ&XJ%YJ%XI%VF$SC"j\@UF%WI%VH%UF$UF$UF%UF%TE$WH&TE$VG&UF%SD#SD$SC#RC#YJ'[N(YK'WH%XI'YK)YK(YK(\O)ZL'ZL(ZM(ZL(ZK'[M'ZL'XJ&YI'XJ'ZK'YK&XI'VG%UF%TE$WI&XI'WH&VG%XJ'ZM(ZK(XJ'XI'YK([M(]P)\N([N([M(XJ'XI'XI'[M(_S+ZL(XJ'YJ'[M(]P,\N+\M)XJ(XI([L+ZK*XJ)XJ)\N,^P+[M(ZK'YJ']O)ZK'YJ'WH%aS5i[?peJ|pWshLl_B]N.}r[j`S3TE$j]@t[{pS`T.bW-bV-[N)TE$XI'XI'YJ'XI'WH&[L(YJ(YJ(XI'[M)YK(XI'i\=\N,WI'ZK)[M+[M*`S.[M)YJ(XH'YJ(XJ'ZL)]O,ZL)YJ*VG&VF%UF%XI&^P.`R.[M*^Q,_R-\N*WH%aS4}guhNi\>YJ'\O)^R*[M([L*\N,[L*ZL)]O-VG&VG&[L,]N.WI'[L+ZL)[M(YJ'YJ(\O,^Q/]N-_Q2qdL״~n|rZtqeHUF'_Q2uiO[L-ĺr鿺vt\O+[M*ZL(\N([M(\N(^Q*^R*[N(ZL(]P+]P)]Q*\N(\N(\O([M(VG%TF%TF%VH&[M)ZL)ZK(ZK(ZK(ZL)[M)\N)[M)XI'[M)ZK(ZK([L(\N)]P)\P)\O([M'k_{oWk|d}sY^P1YK*YK'ZL(^Q-]Q*\P)^R*]Q*^Q*aV,aV-`U,aV-aV,bW-aV-_S+_R*^Q*]P)^R*^R*^R*_S+_R*^Q*^Q*]P)]P)]P)ZL'YJ'YJ'ZL(ZL'\N(\O)]P)^S*^Q*\O)[M)ZK'^Q)ZK(\N)_R+]Q*_S+\O)`S+_S-^R*]P*\P*\N)ZL(ZL(ZK'YJ'YK'YJ'YK(ZL([M(ZK(ZL(ZL([M(YK(\O)ZL([M(]O)[M(\N([M'[M'[M'ZK([L(XJ&YJ&YJ&ZL'XJ'XJ'YK'[M(\O(\N(XI'VG%UF%WH&YK*WH&WH&XI'YK'ZL(ZL([L(ZL)SD#TC%ܶpdD\O)ZM&rhDfg\6^R+^Q.\O*\O)\O)^Q*\O)]P)]P)_R*_T*^R)^R)aU*^R*]Q)^R*`T*_S*_S*bV+_R*`U,^S*`T+_S)`T,_S+]Q*]R*`U+cX,bW,bW,aV+aV+aU-bW-`T,aV,`U,bW.cW,aV,bV-cW.cW.cX.bV/dY0aV.`U-aU.bX-cW,`U,_T,`U,cY/bW,aV,_R+^R*^Q*^Q)\O)\O([N'^R)_R*^Q*_R,_S,_S+bV.`T-`U,`S+_T+`T-_S+_S+_R*^R*]R*^Q)^R*^Q*^Q*^Q)^Q*^P*]P)]P)]Q)_R)^Q)^Q*^P*^Q)_S*`S+`S+_R+^Q*]P*[O+^Q+_S,_S,^Q+^R,^Q,^R,`U-^S,^R+`T+aV,aV-`U-_T,^R+]R*\Q*ZM*YL)^Q,]P+\P+ZN)ZN)YL(XK(ZN*\P*\P*^R,_R+^R+_S+^S,_T-aU._S,^S,_S,_S,_S+`T,^S,ZN*\Q+^R-aU.bV0bW0cX/eY0dX0cX0cX0bV.aU-_T,`T-`T-_S+^R+aU/shFfdW2aT.^P*bV1^R,_Q+_R,_R,aT0_Q+^Q*]P*[N([M(]O(]O)]O(]P)]P*\N)^Q+aT0]P,]P*]P,ZM)]P)^P)]P*^Q*_R*`T,_R+`S+^Q*^Q*^Q)^Q*\O)]P)^Q*]R*^R+^Q)^Q)aU+`S+\O)\O)^R+_S+_S+^R*_S*aV*aT+`T+`T+bV-aT,`T,`S,aU-cX.cW-bU.bV.`T.aT-aU-_R,^Q,]O,]P+]P+^Q*^Q*]P)^Q)^Q)^Q)^R*]P)_R*]P)`T._S-^Q,[N)[N)ZM)XK'YK&ZL(XL(]O(]Q)]P+\P*\O)\O)]Q*\P*\O*]P-]P-\O,^Q+\O)ZM([N)YJ'WH&XI'YL(YL(\P*[N)YK([M(\O)XJ(ZM(\O)ZN)]Q*bV-aU,]P)^Q*aV-^R*\O)ZN)YK(XJ'TE$UG%SD$SD$SD$TE$VG&WI&WH&ZM(\P)^Q*]P)]P*_R*_R*]O)[M)\N)_R+aU-`T-`S,^Q*_R*^Q*]P*^P*_R*_S+_S+`T+_R+^R+]Q+[O*]Q,^Q+\P+\O+ZM*YM)\P,^R-_S/_S.\O*[O)[O)\N)]P)]P)^Q*aT,`S+`S*^Q*_R+aU,bV-]P*]P)]Q*]Q)^R*\N([N(\O(^Q)\O)`S+_S+]P)[M(\N(]O)]P)^R*`T*_R)`T*_S)]Q(^R*_S,`T,^Q*^P)]P*]P*]P+\N)\N(_Q0k~tWeX6|rUukJma>h[:fY:~iymS~gnujOdV8l_DeX:]O0xmVi\@\N.VG&VG&VF'kxlRaR3eX9vkRļŻk[M+XJ*wmM_R,_R+^R*^Q*]P)^Q*_R*_R*rfIfY<~s^΀vX^P,^Q+\O(]P)^P)]P)i^:l`<_R*\O(cV6nj|rUgzh\:[L+kzoRh\?ˮ᧠`R0eX9dW:wkT{pUshJj^?tiKcV2\O)fZ5dX4^Q0ȺbV/j^CyoQ_R.[M(\N(WH%vjN~tYujJ`T0^P/q׽鼅|qYmaGsgKXI(XJ&`S0]O/ZJ*fY9YK'XJ'UF$]N0peGla<\O([M'ZK+ZL)YJ*ZK-WH)[L,aT2^P.thM_Q1ZL*`S3]O-cV6bU7fY;rfKxmTynTYJ)ocE_Q/[N+_Q/ZL'\N)\O(^O.mZL,l`BbT4rhM¾vk_=dX2]P(bU0dW4qeDZK(TE#VG%XI(WH%WI&VG%WH&UF%VG&VG&UF%RC#RC#XI'XJ'WH&ZL(XI&YK'XJ'[M(ZL([M(^Q+[M([M)[M([M(\N(]P)[M([M(\N(\O(\N(ZK(YJ(ZL'ZK'YJ'VG%XJ'YK'YJ'XI'YJ'ZJ(YK'YJ([M(YJ(WH&YK'ZL(YJ'WH&YJ'YJ'ZL(ZK(\O)[M(^Q*aV-`T,aU/bU/\M)\N*[N)\O)YK'YJ)WH&XJ'ZK'\N(ZL(XJ'ZL(\P)YK'ZL'WH&YJ'YK'[N(`T,\O(ZK']Q)`T/aT3g[8dX5XJ&^P/peE_R-]P*\O)bV-cX.^R+[L(YK([M)ZK(YJ'[M(]O*\M)YJ(ZK(YJ(\N,ZK([M+VG&WH'WH'XJ'ZK(\O([N)YK(\P*]P+^R+`T,_R+WH&YJ'ZK(YJ(ZL'[M(\O)\O)bU.`T-_R,[M(XJ&]O,]P-WI&XJ'YJ'ZL)]O.\N.ZK*WH&ZL*`S1ZL)[M,_P1[L+[L*YJ(`R3\N+[M)_Q/]N.`R2\N,ZJ(YJ'VF%zoUٹ}r\vYJ(VG&^P0aS6VG&ZK-fYvkMk`:bV.]P)^Q+eZ2eY3g\7qgD~uUla>oeAeZ5[M)bU3h\9`U.\O*~t[vshHXJ(r¶sȾk_AocFsgLfYu_|qYj^CTE$WH(k^C{b^P0\M+]O,[N)XJ(YK'[L(]P([M(YK'^Q*_S+^P-ZL*peFnc?cV2]O+^R*_S+]Q)\O)VG&XJ)UE%`R1}c[M*[M*\N+\N)_Q,]O+^R,^R,]P)]P)^P*\O)\P)^Q*`T+bW-^S*aV-_S+`T+[O'bV2uZzpVthIYJ)k^BsaU/`T-aT/bV1nc?aU0`S0bV1cW3_S.^R,aT.bV/]P,cV5rhGsiGaV.eZ4bW0^S+bW.]O+ZK(_R+`U,`T,_S,bV._S+`T,bW-`T,_R+_S+_R+_R+^Q*`T,`U+aX+^Q)[N([M([M([N(^Q*`T,[N([M([M(\N(\O)ZK'ZL(^R+`U,[N(\P*\O*]P+]P)ZL(_S.j_eY6[N)YK'WH&XJ'`R3l`E`R2\M+ZK)maF¿ڬbU3[M)ZL(YK'YL(\O(\N(ZM(ZL(XI'XI'XI'[M(]P)^Q*]O)cU2\O,l_AobG~sY{rSmb?]Q)h\9ncAndAeZ3f[5dX1`T+_R+^P+bV0`T-aV._T+aU.odAodAdX4aU0ZM*j^?shJpeFpdJƾźk^@[M+aS3qeJthOz|rXh\>maF̟tynRvǾ~ƭþºɿmaEh绶o{eynSaS4eX9XI(_Q/[M*YJ'VG&VH&XI'YJ'YJ'YJ'YJ'[M(ZL(]O*XI'XJ(XH'UF&XH&XH&YJ'fY9shLmaDcV5^Q,ZK(XJ(ZK)WH%thPżqfHrgInbA\O,nϭxlTrfF\N)[L*ZL*odE|rY{pXvkOrgH}sWeY6YK'XJ'YJ(XI&VH%aS4~s\lgZ=^P0^P1XI(YK)XJ(XI&WH&WH&[M)\N(\N(]O)YJ'[N(]P)^Q)^Q*]P)^P*]P)[M(ZL([M(\M(\M)[M([N(\O)^R*^P)\M)\N)[N)[M([M(ZL(ZK'YK'YK'[M([L(ZL(ZL(ZL(ZL(^P+ZL)ZL(]O*[M([M(\N)_R+]P)XJ'VH&WH&XJ&[M(YJ'YK'WI&SD#UF%YK']P*[N(ZK'YK'[M([M(ZL(_S+e[0ZK'XJ'XI'XJ'ZM(\N,pdH|qVpdDqvUdX3]Q*]P*[M)\O)^P*^Q+_S+^R+aU/`T-^Q+]O,]O+]O*^Q+]Q*[N*\O,_R0_R/]O,\O+\N,]N-[L,ZK+YJ'[M)_R*_R*^Q*\P)\N)^P*\N*]P*_S+^Q*_R+^P+odCbT4thJg[7^Q,aS/^P,]P,ynVza|rVgZ:eY8k_?[M+bS4ZL,eY9{baT4\M,\N,\M+]O.fZ;hZ=[L+ZL)ZK'\N+ZL*[L,\M.naHmƽ~enaT3YK'^Q)\O)\O(\N([M)^P-XI'XJ'WI'TE$TE$shL\N-VG&XK)VG%WI&XJ'VG%WI%\N)YK'WH&XJ'ZL(ZL)dW7pdJu]O.XI&[M(qfEzpR^R,^Q*_R+]R*ZL(VG&VG&YJ-zcV6aS2{qVdX8j^?|c}sWtiKx\wYg[7dX2aU-bV/`U,aV-_S,_S.XK'{dçvlKh]:h]:j_h\;zؙzaT.]O)^Q)]P*\N(\N(\O)ZM(ZL)[M)dW6fZ9dW4tjH]O*j^aT1XI'WH'WH&`Q1\N)^P.^P-]P+^P-cV7naFzfynS^Q.ZL(ZL(ZL(YK(ZM(\O)[M(ZM(XI'XI'[N(YK'[N([N(bU0bU3w[sgLsl`@[N+sgH^Q-vkOsiHfZ7eY4cV2aU/`T._R+]P)\P(]P)cX1eZ2i^9i^9cX3_S1ZL)ZK+WH'i^@dX8tiPwĽ}}f~~t]vjPmaCcU7k겭ͯƽvkN]O,^Q+]P*\N)aT1h[;ocEbU4]P*\N)ZL(\N)\N(YK(ZK(YJ'ZM'YK'[L*YJ(WH'^P.\N+\N+laBl`B]O,^P-\N*ZL(YJ(incFxlUʶshKqdKk_?ZL'ZL(_Q/ZL+hwlPzoSgnc@]P*aS1\M+WH&WH%fY;dX3dW5zoUZK*bT2bT1]N,ZK)UF%WH&\N*_R+_R*]Q(]Q(]P(]P)^Q)^P)\N)\O([N'bU1eY6^P+\N)\O*\N)^Q)]P)]P(\O)\N)[M(ZL([M(YK'YJ'ZL'ZL'[M(ZL(ZL(ZL([M(\N*^R+^Q+[M([N([N([M([M(YJ'WH&VG&WH&WH&VG'UF%WH&WI&XH'XI'XI'ZK'[N)^Q+^R*[M([L(WI'YJ(]O*_R+bV-_R*ZL'XI&YJ'YK'XI'wmRocEthKncCg[9f[7mb>f[4_S+^Q*]Q*^R+`S,_R+_S,`T,`S.^Q,^Q+]Q*^R*^R,^R/eY8rgJynPl`>`S/]O-[M*ZL)ZL)ZL)\O)^R*]O*^Q*]P)]P*]O*]P*_R+aU,`T,`T,`T,^Q+cV1[N,tўwlOshJ~tZbV3i^<]O,k_>i_R-\O*\N*[L(eY9^P.ZK(ZL)YJ(ZK(YK'YK(XJ&[M)]O-ZL(YJ'_Q1]O.t\O.\M,]N2u٤t|qT]P)^P*]P)\O)[M*ZK(YJ'YK'ZL(YJ(ZK)XJ&\N,\N,UG$bT5l_CWH&XI&WI%XI%WH&WH%XJ&VG#tgLznV~sYs[M,WH&VG%j^>mb>pfA^P)]P)\P*]P)XJ'j]@оĻ{`{pUz}tWi^9|rTi_:~uSnd=h_2cX.bW-aV-`T,_T+aU/^Q,]P*]Q*_S+`U,`T,_T,aU-]P*^Q)[N(]O)^Q)^Q)`T*aU+_R*`S+`T*`U+_S*_R+^R*[N(]P)`U+[M(ZM(ZL(YK(ZL(\N)^Q+^Q*[M*[M(ZL(]O)[M([M(^P+_S+[M([M([M(\O)^Q*\O)^Q,_R+]P*^Q*_R+aT,bV.i^9`T-aU-`S,cW0`T-^Q+_R*`T,aV.aV.`T-aU,aU,aV,bW,bW,bV,bU+dY,`T+_R+_R*`S*_R*]O)\N(\M(^P*_Q-[N(]P)\O)]Q)]P(]P(^Q*^Q)^Q*\P)^Q)[M([M(\N)]P*\N)[L([L([N(]O)^P+cV3\N-\M.|rXu~s\ίmyvjPvYvVi^8g]5eZ3bW0aU/`T-`T+cX+aU*bW+bW+bX,cY-aW,dZ.cZ.bX,cZ-d[-cY,bV,cY-cX,cY,cY-aV+`T+aU-_S,cV.bW.aV-bW-dY.e[.e\.dY,dX-cW,bW,bX-bW-dZ.dY.e[.f\.dZ.eZ/dY/dZ.cY.aV,`T+`T,_S,]Q+aV.bV.`T.`T.aU-cW-dZ/dY1eZ1dY1`T.`T,_S,`T+_R*aU,bV,bW,bW-aV-bW-aV-bV-`T,`T,`S+`S+aT+`R*_R*`S+`T,_S+`T,aU-_S,_S+`S+`T,`T,`T,`T,`T-`U-`T-`T,`S+`S+^R+^R,^R+_R*]R+^R+_S+`T,`T,]Q+^R,^R,^R+]Q+^R,\Q*\P)\P*^R+^R,\O+_R-^R,]Q+]R,\P*\Q*^R+]Q)_S+]R+^S+^S+`T,_T,`U,aV-aV-_S+^S+_T,_T,_T,`T,_R+`T,aT*`T,_T,^S,`T+^R*_R*_S*^R*]Q*_R+aT+dW,bU+`T+aT.cW.aU-dY0aU-`T.aU0i^;dX2_S-`S.aT.^P*_S+^R+_R*`T+`T+bU,fZ5`S-`T,`S,aT,`T,_R,\O)\N([M([N(_R,\O)`S-bV0cW2bU/_R+^Q*]O)]P*\O)`R*aT+cV,`T-^R.]Q+\Q+\O*_S-_S-`U.`T-`T-aU,cW,bX,dZ-aV,bW,f].bW-aV,bW.aU-`T+`T,`S,^Q)_R+aT*bV+cX-dY/cX-aU+aU,aU,`T,`T*_R)_R*aU+`U+_S+_S+`T,`T,`S,^S+`T*`R*^Q*`S,bV/_S-^R,`S.`T/_R.^R+^R-^R._R/_S._R.]Q*\P*\P)\O)[N([M(ZM(ZN)[O)XK(ZM([N)[N(_S+]Q*_S+^R*_T*^R*^R*_S*^Q*[N)ZM)ZM)ZN)[N)ZL(ZL(YK'ZL(YL([N)ZN)ZL(\O)\N)ZL'\P)\N)ZL)XK(ZM)[O(]P)\O)[N)ZL(ZM(ZM)[M)\O+\O*]P*\O)^P*^Q*\O)[M)ZK(\N)\N)]P)\P*[N)\O)_S,aT-`T-^R,[N+YM([N)\P+]Q*^R*\P*\P*`S-^R+^Q+^Q+^R+^R,^R*_S*`S*_T+^R*^R*\Q)_R+]R+`T+bV,aV,_R+_R*_T+`U,bW.bW-^S*^Q*[M)^Q*\O*[N)[N([N)]Q+_S+]Q+\N)^R*^Q)^R)aV+cW,aU+`T+_S+`T+bW,aV-cX/dY1eY3h]7uY}g|ax{qP^P)]P)]O)]O)]P)]O)[N(ZK'ZK'_R.aU3]O-]P*aT._Q+_R0shHlaArgK`S3\M-ZK)YK'gZ9]O+[M*[M)[M*^P.pdE\N,dV;y^P-ZL)YK(ZM(ZL(YK([M(^R*]R)\P)YK'ZL'ZL([M(fY7maGxnWpeLu^j\O+]P-nbBtiIl`>xnMtiHj^:ZM'fvgøٺvZcV7gZ;j^@z^gZ<긲wmPl`E{e_Q0^P5Ƽy_aT0]P,[M(bU1k`?peCdX6x[peAaU/_S+_S*`T*]O*[N)\N+ZL)XI'YJ)XI'[K+YJ(eX9i]_R-_R-_S/_R.^Q-]P+]P,^P-^Q-aV/aU1_S-zpNj_;cW1^Q,`S+aU,aU-bV._S,`T/j^?pcKݢz]siIbU1gZ9^Q.^P+]P+^Q+]P)^Q+]Q+\P*\O)[M*^P-^P-[N*XI'WH%gZ=ǾÑqtiLfZ:]P/gZ9\N,[N*\M/was{cuqfHg[9cW3g[8aT0ZL'ZL(l`B]N-ZL)\N(XI&_R0}h\>cV7mcV7XI'pdHeX7YK']P,[M+ZK)ZL']O.rfF}c]O.k^?m`A`S1YK'`S/`S,]O)^R*^P)ZN(XJ)ymXص݊daT0bT9¶wdY/dY/aV-aU,`S+^R*_R*_R+_T+bW-aU-`T,`U,_R*^R*^Q)]P)^P)^Q)`S*_R*`T+bW,`T*_R,]P*[M(\N)]Q*^Q*]P*dY2_S*\O)\N(\O(\O)^Q*_R,]P*[M'[M([N)]O)\O(ZK&\O*la<^R+\N*[M)[M(\N(^Q+ZL(]O*^Q)]P)^R*`S+dX/cW/`T,^R+aT-aT+bU,_R+\P*aU+`T*^Q*`T+_S+`U-aU-cW.aV-bV-bV,bV-eZ0aU,`S+_S*aT-\N)_R,]O*]O*bU1\N*[M(\N)fZ6`T,^Q*^Q*`S+_S+`S+_R*_R*]P)^Q*^P*]P)\N)]O*]O)[M(`R.aS/_Q.dV6pdEodDujPnbCrfY8]O+aT1^Q,^Q+_R+dX3k`:bX-aU,aV-`T,bW-bX,bW+cX,bX,aW.cY/cY.d[0d\/cZ.d[/e]/e\0cY.bW-bX-cY-cX-aV,_S,`T-`S-`T-aV-bW,bX,cX,cX-dY.dY.cX.cX-cX-aV-aV,bX-cX-dY-e\.dZ.cY.dY.cX-bW0bX0_T,^R*^R*_S,`U.cW1dZ3cY1eZ2f\2f\4f[4dZ2cX1`T,^Q+]P*_S*`S+bV+dY-bW,aV+aV,cW-bW.`T,_S,`S,_R+_R*`S+`S+`S+`S*`S+`T+`T+`S+`T-`T,_S,`T,`T+_R+^R*`T+aV.`U-aV.aU-`T-_S+^R,`T,`T,bV.`T,aT,_S+_S+_S+^R,^R,`T/`S.aU1_S,]R+]Q+^S,_S-^R-^R*_S*`T+\P*]R+]R*]Q*\P)]P)\Q*]R*^R+^R*^R*^R*_T+aV,aV-`U,_T,_T,^S+^R*^R*_T+aU+^R*\P*^R+]Q)]Q)]Q)_S+^R*^R*`T+`T*`T*aU,`S,`T+bV,`T+`T-`U/cV/eY4fZ4h\8aT-cW1aT/siIdX2ma=j_:ma^R+^Q0zh[8`S.[N+]O)]P*]O*^R,]P+]P*\P*]P,ZM*\N,ZL*fZ9`S1`R4xlSuk`A`T0fY6^Q,_R.[N)`R0\N+]O*]P+]P+eY3`S.cX2_R,\N*fZ8rgHqfGeY5bW.]P*\O)]P)^Q*dW5i]<{_xnRw\fZ;i\=`S3]N-^O0xnRtiLfY8XJ%YK){arfKxbbU2v[ocCh\9aU.`S/dX1[O(peC~sZsgN񸳢}tU\O0m`G鱪~pgAfZ1bW.cX.cW.aU,^Q)`U,aV,cX-cX.dY.aV-cX/bV/cX.`S)bW,bW.cX,cX-bV,`U,aU,`U,`T,]P)\N)]P)^Q*\N([N(\O(^Q)]P)\N(aT-i^9`T-cW1_Q-_S-]P)[M([M)\O)\O(\O)]P)\N)[N)\O(\O)\N(^P)\N(_Q*\N)\O(\O(^Q*bW,oe>`T+^R*_S+`T+^Q*`S+aV,aU+aU*^Q)^Q*]O)]P)^Q*^R+`T-i]8od?dX3h]5cl`=dW2pdDwxZzoPbU0bU2bV2^P.bU2wmLbV1`R+^R*`T,bU-_S+`T+_R*_R+`S+bV/j^9`S-^P*`S,^P,\N)dX3dX3aT/ZL(ZL)vkMzpRfY6_R/h\:[M*[L(^Q*_R*_S+aV,bV,aV,bW.`T-cX/nd=f\3aV-aW-bX.bX.bY/d\/e^/f^/e].e\.dZ/cX.cX/bV.bW-aW-bX-_S,_S,_S,_R+`T+bV.bX-bW,dX.f[0dY.eZ/h^4cY.bV,bV,`T+`U+`V,aW,cY,bW,cX,aU+`U.`U.bW/_R-]Q+]P*^R,aV.bW0cY1bW/bV/dY1dY1cX1bW/`U-^R+^R+^Q*_R*_R*`T+bU,`T+bV,aU,`U.`T,`T-aU-aT+`T*aT+`T+_R*`S*`T+`T+aT+_S,_S+`T,aU.bU-`S+_R*`S+_T+_S+`T,bU.bV/_S,_S,_S,`T-dW1g[4dX.cW.`U.`T,^R+aV._S-^S-aU0_S-bV.cW._T-`T,`T-`T-aU-bV.bV.^R+^R+cW.bV+^R)^Q)^R*^R+^S+`T+`T*`T+`T*^S*_T+`T,f[5`U-_S+_S*_S+aT,`T,^R*\P)_R*_S+`T*`T*_S+^Q*^R*_R*_S*]Q)^P*^R*`S+aT+aU,eZ2dX0i]8wnc@i]7_S,`T,g\8_S,^Q*i]:i]:`T,cV._R+`S*`T+]P,[N)\N(]O)_S+aT-_R*i]:nb?aU,^Q*]P)`S+_R)`S*_R*`S*`S+`R*bV,aT,aU,aU.`T-bV2aU1eZ7h^;dX3dX2bW2^R,`U,bX-cY-aW,bX-cX,bW+dY,dY,cY-bW,aT+_R*^Q)\N)]O*]P*_S+_R)_S)_S*aU+cW+bV+bV+aU+`S*aT*aT*`S*`T+`T+bW+bW,bV,`T,`T,`T,]Q)`S*aT*bW,bV-\P*^Q+aT,`S+_S,_S,^R+_S+aT.bU.`T,^R+]Q*\Q+YL(]O)ZL([O*[N*[N)[O)\P*]P*^Q*_S*_T*`T*`T*_T+`U,`T,]Q*]P)^R*_S*^S*[O*[O)\P*_T*^S*_S)bV+bX-aU,]Q*^R*`S+aV,_T+\P*[O*]Q*\P*]R*\P*[O)[O)[N(\O)\O)^R+]Q*]P(]Q(^Q)]P([N'\N([N([M'[N(ZM(ZN)]P+\P+\P*^R*^R*[O*]P*^R+]Q+]P*\O)\O)]Q*ZN)\O)^Q*^Q*]P)]O)_Q*_R*`S*`S+`T+^S*_S+`S*_S*_S+`U+cY-bX,cY-aV+aU+`U+bX,cX,bW.aU.]R*^R+`T,^S*^S+_R*_S*_T,_S*^Q*_S*_R+`T*aV,`T*aU+aU,`S*`T.qgEfZ5bU1yukKg\9tjHvlKrgG{qQ|sQf[3_R*`S+bU.aU-bU1^Q)^Q*]O)\N)]P*^Q+\P+\O*[N*[N)]P)]P*aU-_R*cW0dX3VG&fZ:^Q/[M+mbG^R0h\<`R5x}fsodEZL)YK)ZM*ZL(XJ'YK(WI'YK(\O(^Q)^R,]P*[N)ZM(eY8ncCaT2ocEwmNcX2^R+YL'laC|rXk_BukL^R+bV3aT4𧠐ZL+SC$_R.cV:ȿhwmLla<\O)WH$fZ8`S.[L)bU4|qSbV/g\8bV2cW3^P-^Q*^Q*]P*gZ9fZ:}aj_~ezpUl_Dt{pUbU5gZ;yoQxnPwmO|`nd@siBdY2bW/aT,bV0dX2h]8^R+cW3yoPtjH}sTpfDj_:aU-`U,_S+`T-_R,aT/^Q+^Q+`R,cW0_R+]P.wnM~uYodBoeCdX5peK؝|yoQtjIcrhGpqfF]P-^Q.`S/^Q-[N*ZL)[M)ZM*ZN,ZN*ZM*cV5_R0YK)ZL*cV5^P/h\;dX5]P+^R,^Q*\P)^Q,^P*]O*_R.]O,_Q,bV0bV1]P,`S.^Q+_R-[O*^R-_R.cW2bV0aV/h\9eY8`T1qgIzoVlvy\g[9j]>u[o`S/fY9xmV¹˅{flsw[i];j_:h\9}sZrfNƿĹo¾pzqNcW5dW<ƭµoe?h]6cX0cX0bV.aU-_S,`S,bW.f\2cY.e[0e[/^R*WI'{qU|sMcW.dY0aV-bV.`T,`T-^Q*_T+^R*_R+_R*aT-]P)\O(]P)_S*^R)_S+^R+]O*^Q+]O*cW4\O(]P)\N)\M(^Q,^Q*\O(\O)g[9cV3\N)]P*dW2^Q*\N)\N)\O)\N)\O)ZM'bV,xnK`U*`U+_R+^Q*`S,bV,bW+aT*aU*`T*`T+_S*]P)\O*aT1y`xnNf}sWgsiF`T,bU4h[=vwlRocDxg[9dX4`T/`T-aU-aU,_S+cX.cV.aT,_S*\N)XI%UF"{pRtocA[M'^Q*_R*]O)]O)]O)]P)]O)\O)`S/^Q,\N)]P*h[8ZL'[M(\N(]P)_S*`T+aU+aU,aU+bW-j`8cY/bX.aV.cY.e]0e^/d]/d\/d\.f^1rl@unCia3ja8bV,`U,_S+`T+aU,aV,`T,^R+bV/i^8mb>cX.g\4ka8dY0`T+qh?|rOaU,cW.`S+_S,bV/bX.dY0cY.bV,`V+bW-`U-aV0aV/^S+]Q+]Q,_S-_S-_S-aV.aU.aU-`U-bW.bW/`T._S,_S,_R,\P+]Q,^R+_R+aU,bV-aU.aV.`T/_S,`S,`T-aT,`S*aT+aT+aT+aT+aT+bU+bU,`T+`S+`T+bV-aU,aU-`S+`T+`T,_T,aU.bV.aU-`T,_T,`T,`U,aV-eZ3dX0cW0cX2f[8_S-aU/`U,`U-`T-aT.cW0aU/bV/bV._S+`T+`U,aV-aV-bW/eZ0cX-`T*`S*`T*`T+`U+`T+bV+cW+bW+cW+`T*_S+aV/`U.bX0cW/dX0bV-aU+`S+_S+^R*`S*`T+aU+cX0_S*`S+_S*dX2`S,dX3dY4dX4vlLbU-eZ1tkHj}cshFcW.dX0aU-dX.`T+_S+`S,bU,dX3bV/bW0^Q*bU.aT+bT,^Q*[N)\O*_Q+aT.aT._R+_R*_R*_R*_R)`S+^Q)_R*_R*^Q*`T+_R*`S+bV-bW.`T-_S-g\4g\8k`?aV1dX3aU.^R,`T.`T,cY.aV-bW-dZ/d[.cY-cY-dY-dY-dX-bW,bV,_R)^Q)]O)`S*aT+`S*_S*aU+dX,dY,cW,dX,cV,_S*_S*`S*aU+`T*aV,aU*bV+aV+`S*aV+aU,`R*^Q(_R)^R*_S)^Q)]Q*aT,`T+`S*_Q+`S,_R*`S+bU-_R+_Q+^R+]P*\P*\O*ZM)ZN)ZM)[N)\O)\O)\P*\O*]Q*^R*_T+aV+_T+`V+`U+_S+_T,_S*^R*]R*\P)\P)]R*aX,bX,aW,aW,`U,`T,\P)^Q(`U*cX,`U+^R+^R*^S+]R*_T+]Q*^S*^R*]Q*]Q*^R*_R*]Q)ZL&[N'\O(_S)_S)]Q)ZM'ZM']P(\O)^R+]Q+\O*]P*_R+_R+\O)]P*]P)^R+^R+^R+]Q*]Q*\P*]P+_R,^Q*_R+`S+`S+_R*]P*\O*_S+]Q*`T+_S+dX,cX,aU+cY-bW,cX.bW,aV+bV,cX-cY,aW,`T,_S+_T+`U,_T+^R*^Q)`T*dY0aU+aU-aU-aU.cW/bW.aT+dX-cX.bU+^R*zqOdX0dY3rhFh]8ndBpeBi^8shGaqgAfZ3bU,bW-dX3{qR^P+^Q*\N)]Q*]P*]P)^Q+]P,\O*\N)^Q*`T/`T-_T-rgJh\7bV0bV0\O*dX4_R,\N+_R/YK)XJ(j^?v]odH`R3ZL)ZL(\N*XI(YJ(ZM(YK(XJ(XJ([O)^R*^R)^Q*]P*[N(_S.bV4fZ9ncDbV2\O(]Q)^R-fZsiHbV.WI&pdGjk|rWtf{_l]P+pdFl`B|rW{gܶxʷqvkQnbGx^·¾xnSyoY{`~j`;f[4cX2cX2eY4t㕎tpeAj_:dY0cX/cX0eZ2i^9_R.dY3g[4eZ1bW-bV.^R,eX<mՕtdX2`S.cW0cW/_S+f[4ukHrhD`U+_R*`T+]P)\O)]P*]P)^R*^Q*`T,]Q+\O)_R-^Q+dX3`S-\N(]N)\N)]O)`R.dX4bU/eY5]P*^Q*`S,^Q*]P)^Q*]P)]P)]Q*]P)^R*bV-dX3cX-bW,`T+`S+`T,cX.cX.bV,aV,`T,_S+^Q*]P*f[6fZ5_R,aV-\N)^R*{\k_yZyoNdX3`T,aV,dZ-bW,aT+aV,`U+`T+`T,`U.`T-_T-^R,_S-bV/_S-`T-`U.aV.`U,aV-aV.bW._T,]P+]P*]P+\P,]R+`U+`U,`S,aT,`T-`T-`S._R+_R+`T-aU-_S*`S*`S*aU,bU+aT+bV-bU,aU,aU,bV,dX/bU+aT+aU+aU,`T,`T,_R*`T,`U-`T,_T+`T,aU,dX0j`:nc@|rhFaV/^S-aT.`T-dY2bV/bV0g\3la:cW/cW.bV-cW-`U+bV,bW,cX,cX,bV,bW,bW,cX-dX-cW,bV+cW+bW,bW,cX-`V,`U+dY-dX-cW-cW-bV,aU+aU+bV-aU,_S*`T*aU+`T+^R*_S+`T,g\5dX1aU-`T/^Q*aT-j_:rhFh]5dX1aU/eY3cX2cW0aU,`S*bV0vkJhu{^mlz`shGeY2cV,cV,aT+^Q*_R+^Q+`T-bV2qfEj^;_Q+^Q*^Q)]P)^Q*^Q*_R)^Q*^Q*]P)]P*\P*aV.bW0_S/bW0dY1eY7g\;cW3bV/dY.eZ0g\3cY-dZ/bX.dZ/f]0f\0dY0cX.dY.eZ.dX-bV,`T+_R*^Q)_R)`S*`T*aU*cX,dY,cX,cW+bV+aT*`T)`S*`R*aU*bV+cW,dY+bW+aV+`T)bV+aU+`T+`T+`T*aU+`T+aU,[O)]P*`S+^Q*^Q)^Q)aT,aT-aT,`S-_S,[O)]P*]P*`T-`S,^S+]R*_S,]Q*_R*_T*^S*^S*^R*^R+`U+`T+aV,`U+^R*`U+_U+`V+^S*]P)]Q)^R*`T,`U+aV,_T+^S*`T-^R.`T+`T*`V,^R)]R)\P*^Q*_T,^R*\P)\P)^R*`T+_T+_S*_S*_S*\O)\O)[N']P)\P)]Q*ZM(\O']Q*ZM(\P*]Q*^P)[M(YM(]Q*_S,_S,_R-]Q+\P*\P*]P*]P*]Q*_S.YL+XK)^Q+^Q*ZM)]P*[N)]Q*`T+`U,aU+aU+aV+aV+_T+aV+`U+`T,`T,`S+dY-cX-d[.aU,`T,`T-^S*`T.^R*^S+h\8ukJcW0aV.`T*aU,aU-bW-f[1dX/cW,bV,aU,`T+nd@f[3rhCh]5bV.eZ4la:dY0fY9y[{]j^<~ødbV._S+_R*`S*`T+`T*`T,^Q+\N)ZL([M(k`D~rqhQaT-aU,bV/]P)`S,^P*^Q/`R2xmS`S0aT2^P/{qVncC[M*ZL([M(XJ([M*ZK([N([N(\O(\O)\P)]P)]Q)\P)`T.]Q*_S*_S+_S+]P)]P)[O(ZM+j^Bvڻ⡚rfN쵯wlUٗxrgImaDj^>~s]ڷk_?_Q1eW;\M.ZK-穣^Q,_Q-XI,Սk_R.\O,bU0^R+\O*_R)]Q)\O)\M(\N)^Q)^R*_S*^R*^Q+\N)\N(\O)g[6^P)\N)j]=irfEbV1bV0eZ3_R+_S,\O*ZL)cV5`R1ZL([M(]P)[N(fY:x_lv^}x½qfY:l}cV3^P-\M0滶^R*]Q*]P*\O)]P)]P*]P)]O*\N)\N)]P,^Q,]P*]Q)^Q)^Q)]Q(^Q)[N(\O(aU+aU-`T.k_>[M)\N(_S,]P+[M)]P*[N*\O+\N*\O+]O*\N+^P/vfZ7_R,aT0\O*ZL'YK'ZL([M(aS/_Q.ZL'[N(`R1q~f}s[|rV|rU|rUodCbU4ZK,}sW~tXxmNcW3dW1`S.`S-cV2}sU]P*[M(^Q,]O+^R+\N(ZL'ZK'\M(\N([M)ZK(^P,^O,^Q,ZL(fY7bU2eX6\O*g[9_S.[N*ZL)\N-p|by^{a}ma@dZ0~uTg\6rhFzpOeY2ZM)rhD^Q*bV-bV.dX2i^8eX7thMl`Cv^lzpQf[4`S.odBtjHf[5^P,wmM}sW~dczqPh\8dX5cW3aU0`T.^R+_R.]Q+]P+ZL)WJ(YK*ZM+[N*]R,\P-\O-cV6^R.`S1`R0l`?f[7h\;ncAg\8aT0]Q+\O*[M*_R+[N)]P*`T-aT/^Q,\N+jynTsu_|laBl`AeY7pfFmhĬǽ½ξļՊiaS5zbkh]6g\6j`bV.bV.cX0bV0ncC|gztjJg[:tjM|rT}{rYpf@cW/k`vXujGrfCg[5h\7k_laB^Q-]O)]O)`S+aU.yoO_R,_S,bU/aT0^Q/\O+\N)_R.fY9oeDmb?[M(^Q)ZL(ZL(\O([N)\N([N)]O*[N*]P*\P)_S.\P+cW1]Q-^S*_S*^Q)]Q*bV0^Q-xmRtޞwkSrļ޳v¾vy`sǾ÷~sYcV5^Q-k^B{_^P)]O*aT,]P)_R+\O)]O)^Q)^Q*\O(\N(]P(\N(\N(XI%ibV._R)_R)^P)^P*^P*_R*]O)^Q*^Q)\O)ZL(ZM*ZL([M)ZL(^P*aT/\O*]P+ZL(uiNz{ɚ~|i┋uj]?dU8u[{e~qocB[M(^P2ĶxY]P(\N(]P*`T-^Q*]P*^Q)^R*\N)bW.dZ.dZ-bV-]P)]P)]P)^Q)[M'[N'ZL(^Q+^Q,[N+[L)]P*]P)`T-aU.\P*\N)\N*]P*]P*[N(ZL([N(cW1bU0]O*_S-\O+[N(YK'ZM'[M)[L(_R,cT4nbC|rS{aɟel_@^P1ړwi|ah[8dW4{pUiuwlL[M)[M)]P*]Q+[M)[M([L(YK(]O,rfHaS1ZL)aS1eY5`T0\N)\N)_R,^P)\N(]P*ZL(h[8i]:_R+]O(g[5eY8w\~tScX0bV1wmN~uT{rN\N*nbBf[1_T,^R*rhFnc@nc>`S/mb@^Q-~tX{`}f}s^fZ6`T/_R.\O*i]:tiJukLeyZod@dX4g[5tiHaT.bW0aU-eY3_S,^R,]P+\N*\N*ZL)\N,ZM*XL)\O+ZM)\P.^R0\O+]P.xmPaU2ZJ+tiL`U/]P,]P,\P*]P+^Q+_S-^Q,cW2^P.fY;z̺úzcV;kpeD\N-”vt\ǿi];ktrgIv`|ll`GÿrgF`T-ncDmXJ){^hdY1bV/bV/cX/cW.bU.aT/aS2mbDh\eZ2oe@_S+_S,g\7fZ5`T+^P*_R*\O)]P)^P)\O)]P)^P*]O*\N([M(YJ(ZL(\N(]O)]P)^R)^R)_R)aU*aU*aU+bW.dZ2f\2h^4e[1e[2bY-bY-aX-aV.kb9lbW.cW1eY3peBmaA}rWk}ch[;i]:|rSk`:g\4g\6\O(eZ3{tL~vQh^6cX.bW.dY/cX-cX,bV,bV,aU+`T+`T+`T,aV,^R+`U.aU0_S/_R/_S1aU2bW0`T.^S,`U-bW1f]4bV1^R-_S-_S-_S,aU-bV-aV-`U-`U-`U-`S-`S.`R/]P)`T,aU,bV/aU-`T,`T,aU,aU,`T+aU,cV-bU,aT+`S+`T+`T+bU+`T+aT+bU,ma;k`:_T+_T+`T,aU-bW0aV.`U,bV,_S+_S-bW/`T.aU0aU/aU/`T.`U-aU-`U-_T+^R*eZ2bV,bW,cV+bW.bX.aV,bW-aV,bW-dX-dY.dY/dZ.cX.bW,aV-bW.]R+^S+_S+bV,cW-cW-aU,aU+cW,cW-bV.h\5k`:vlIpxtjHwZx[d_S,_S,_S+g\7y[fqùƼÍkrxnLqfAdW.dW/j^8vkImb=z`tjKi]:ndAbV/`S,_R,`R,`S*`S*]P)\O)]P+]P*_S,aV.bV-bW3bV/aV.\O*cW4h\8h]9h]:f[7k`?h^8f\2e[1f]0h_1g_1g]0f\/cX.bV,aU-`T,`U,aV,`T,_S,`S-`S-_S+_S+bW-aV,aU+bV+cW,bW,aU+`S*`S*`T,]Q*`T-_S*_R*aU*bV,aU+bW-`T+`T*aU+^R*`T+_T*bV,`T*]Q*WK(ZM)_R+[N*YL)\O)ZM)_S-`T-_S,]Q*\O*]P)_R*^S+[O)]Q*`U+_T,`U,aV,cY-aV,`U+`U+bV,cX,cX,`U,_T,bY-aV,_T+`V+_U+aW,aV,cY,cY-eZ/dZ/eZ/dZ.dZ.bW-aW,aV,_S+_T,^R+]P*_R*^Q*]P*]Q*^R+_T+_T+`U+^T*`U+`U*_T*aV+^R*_S+]P)[N)^Q*ZL(YL'[M(\O(`T*\P*[O)\O)^R/_S1]P,[O*^R-_R.^Q,^R,^P*[N(\O(^Q)^Q)]P(]P)[M(^Q)^R)^Q*^S*`T*aT*aV+_T+`T+aV,dX0`U/^Q._S.bV/`T,aU-cW0aU.aT/j_:aU/~uVeY4k_h^9nd>`T+]P(ZL&eY7dgpeEdW5bV4xnSyoUjtrgHbV1aU0`T/cW2eY3cW2siFzpQnbAvZk`>dW2aU.dX2bV2`T.dX2`S.[N*[M*\O*[N)ZM)mbDpdG^R.i^>gZ:YK)sh[;[N+[M,]O.j^>mb@^Q-\O+\P,`T._R,^Q,_R,ZM*gZ=u~ʿ¾ĺÿh]8fZ4cV/cW/bW.aU-_S-\N-gZAŷʫþ𮨕eg[7]P)[N)_R,_R,_S-fZ6i];i]<~tVsiH`T0^Q,eY7h]9g[8^Q.`S0maBaU/f[5dY3fZ6g\7eZ3nd>f[4eZ2bW0cW0bV0bU.cW0gZ4dX1fZ4i^7cW0`T.h\9pfBqhDbW/eZ0_R+dX3y\grhCwmJvlHi]7^Q+cX.qfBcW/cW/aU.aV0`T/dX4h]9cV3qeEtiHxnNh]8eY3eZ3dX1aV.aU-_S,`U-dX1fZ3_S+\P+cW6w[}atjEdX/_R*]P*^R*`T+aT+`T*^R*]P)[M([M(ZL([M(\N(\N(\O)^Q*^Q)aU,`U+_S+_T+`V,cX/dY0cY0cY0cY0kb:h^6cX2f[6{rUyoPl{ay`wfuXodBujJ}cmaFpeGtkEcZ-aW,bV,bW.cX/bW-dY.dY.cY.bW-`U,`T,`T,`U-aV._S,aU/f[8_R-_S-`S/_S0`T/_R-_S._S-aV.cY0aV0_S-^R-_S-_T,`U,aU-`V,`U-`T-`T.`S-_S-^Q-`S,`S+bV,_T+`U,`T,`U,bV,aV-aU,bV-bV.bV-bV,aT+`S*`S*bV-aU+bV-cW-`S)cW.aU+_T+`T,`T+aU,aU,aV-bV-]Q*_S+aT,`T-_T,_S-_S,_T.dX3`T,^S+^R+_S-g[7dZ5aU+bV,aV+bW-`U+_T+]R+aV,cX,bW-eZ/cX-dY-aU,aW-cX.^S,_T,aU,`U+bW,bV,aV,aU,bV-f\4f[4hgwZqp{_x[h]9xZѱǵƺƼ帳qhpeDbW2g[8vkN}cz^g~|rTpdCg[7peAwbvX`T,`T-aU-^R,[O*]P+cW0cW0g\7cW2k`=}sWg\6lb?kb9g^4d[1e\0f^0h_1f^0h`0eZ.cX.aV-^R+^R+`T,aU,`S,_S,bV.aU.aU.bV-aV,aU+bV+cW,cW+aT+`S,_R+_S-bU1^Q+aV,aU+`S)`T*aT*`T*^R*^Q)_S*^R*_T+`V+bW-aU,`T+^R+_S+`S+^Q+^Q*`T,_S,_S-`T,^R,]R+^Q*^Q*^Q*_R*]Q)_S+]R*^S*_S*bW-dZ.cY-`V,`U+bX-bX,aU,aV,bW,d[.bX,_T+_T*]R*`U+aV-bV-bV-bW.cX.dZ1g\2cX-aW,bX.aU,_T,^S*^R+_R+^P*]P*\O*^R+_S,^R*_T+bW.aV.bW-eZ/aV,`U+^R*^Q)^Q)\N(]O)[N)[N)ZM)]Q*]P*[N)\O)\P*]Q-^Q/]Q,\O*]P,_S.^Q+^R,[N*ZM)]P*`T,]P([N&]P(]P*\O(\O(]P)_R*bW-_T+^R+`T+`T,cW0bV.cW0aU/`T,cX1j^;mbB{qSdX3]Q*bV.dY2`T-ujMwmOnc?cX1bV2h];eZ4`T-aU+`S+j_<~vVbV.`T.eX6ocBeX4^R+aT-h[8ndAxmNmuĭmd^P+\N)]N*[N(]P*]O*\N)\O)\P)]P)_S*^Q)]P)_R*`T*_S*_R)^Q*^P)^Q*_R*^Q)_R*\N(gZ9tiKshJfZ7^Q,[M(\N(\N)ZL(^O0i}cxavlP{h昐{vϚ|cV4_S-^P*XI&ynR}d|bbV6kvp}cZK(YK'\N,\O)\N(\N(]Q*^Q)\N'aT3la>_R-\N*XJ'_R-k_:]P*]O)_R,_Q-]O*ZM'`T+`T+dY0cX/^Q-[N+cU7z]O0z͘|pdIZK,obKז{k^P1wkT榟k_CneX7]O-`S-aT._R,_R*_R,ZM'k_@o~cuWg[7`S-bV0la>aV2ftøݠrhCi^:eY4vlP|d֟`S1}cy]vlM^R._S.\P+^Q+^Q+^R-bU1bV/bV/bU._S-nc@yoMrhCaV-`S-qgDj^:cW1cW2`T1w[l`AeY7`T1`S3hmbEeX8zqTshJbV3rhI^Q/]P-_R1fY:nbCz^`S1\N*]P+^R,^Q+^R-_S._R.^P-cW6j^@{pWtr߻ƾҭ}zoWޟsiFaT.aU.aU.bV-aU._Q,g[9peGthLq܍kcV1^Q*\O)cV0_R-^R+bV0bU3eY6j_<^P+]P)_R*`S-aU/`S0`S/l`?aT1g[8h\7nb@h^:pfAcW3dY2|\`T-e[4dY4fZ5cW1cV1g\4eY2_S,bV/dY1dY2bV0^R+`T,h]9`S0mbCny]vlO{aji^8cW/bV/bU.cW/aU.`T.bV0fZ6fZ8_S.`S.^R,`T-j_<\P,bV/bj`:_S-cX3xoNtkIf[5cX0_S-YL(dX4uY`T1lb?f{rNh]5cX0^R+_T+`S+^Q*^Q)^Q)\N(ZL([L(\N)[M(\O)]O)]P*\N)^R*h\6dY2f\5f[4eZ2cX0g]6mc=cY0cY1dY3nd>rhDqhDypNvmKi_9eZ2g[6aU/i^=h\[L,ZK*bT5fY>q񮨘k_A_Q2^P2u{pUj\CᥞszoT|t]r~jnbEcU5ZL*}rVnbBcX2`T/_R,`T,]O+\N.|{qTpdDbU0aT0ZK(j_=tjKsiLuvtY~xnPx^[M/~c_R,]P0thN{}tWfZ8ocB~uTmb=g\2g\5aU,eZ1dY4zpVtpdC\O,tiLtiHeZ8^P0zpTg[:maBeX8}tWmbBj^=j_=bW3^S._S.^Q.\N,cV4ndA`S0_R+_S,^Q-^R.`S/`T0eX6bU3i^=i]<\N-_Q0h]=qfIy¹ļʺפrúߥkv`uiQmqgCaT.eY3|sRaU/aT.aU.bU.aU.bV/bU.bW.bV/[N+l`Cqﷲ_S,]P*[M(eY6xoOj^:bV/^Q,eY5dX4gZ7dX6cV3wmOz^uXodDfY7ncCvlL~_riDeZ4qhAxmPdX4mw[g[8mb>qgEpfAf\7eY4aU/bU/dX2f[5bW5dX5{qSdW4cV3g[8`T0_Q,ukHeZ2eY3cW/dY/cW/cW/bV.aU.`T.`S-_R-bV3h\:wlMj^;aT.aU._T-aU0aT.`U,bW-cY0e[0`U.aU.i_:aV/eZ4dY4bV0]Q*_S-vlMdX6zpR}tTka;i`7eZ1bV._S,^Q+\N)fZ6^P,eX6bU1]O)_R-_Q,]P)bV2eY5ma@j^;eY5lb9vmIf[7z[|\tkGf\5eZ3tkGzrPoeAriFi_9lb;tjFeZ3bV0cW2f[6h]eZ3mc=`U-cW0oe>}uPg^.g^/dY-h^1md5g\2bW-cX.cX/bW/_R+_R+^Q+^R,]Q+_R+aV.aU0\O+\O,bV4g\;pfFma@|sScX2bW/e[1f]3aV-aV-dZ._T-`U-`T.`U-`U-`T-`T-^R,`T,aU-`T,aU-_T,`U,`T,aU,`U,h]7peC`U,vlLxmLaT,_R*aU,bU,aT+`S+`T+`T+aU,aT+`U,aU,aU,aV,bV-bV-bV-bV,`T+aT+`T+aU,`T,bV._S-_S,bV.fZ2dX2fZ5eZ2bV-`T-_S,`T,_T+_S*aU+bU+aU+_S*_T+aV,aV,aU,_T,_S+`U,aV,aU,aV-bW.`T,aV,aV,oe>hĹ|`՗z|ržshGj`:`T,_S,^Q+cW/ncBf[7i^:eY4vZoeZ4aV-aV,aV-bX.dY/bW/cW/bV/`S-cV0aT-fZ6cV1bU0_R.cV3fY6bU,`S*`S*bV,aV,dX-`T+^R*_R*_R*aT-bV-bW,bV-aU,aT*`T*_T+_S*_R+`T,`U+`T+aU+^P)^Q*]R)^S*_S*`S*_R*_R*_R*`T,`S+`U,`U,aT.aT/aU.`U-`T+_R*^S+_S,^S+^S+_T,bW-cX-`U+cY,cX.bW-aV-aV-dY.f[0dZ/cX-aV-bV.aU,`T,`U,`T,_S,bW-bV,bV-aU-aU,bX,aV+aU+_R*^R*_S-^P+]O*\P)\O)\O)^R*^Q)]P*^Q*_S+`T+bV.aU-aV,]Q*_S+`T-_R,]P*]Q*]Q*^R*^S+\P*ZM)\P*^R+\O*[N,\O-\O*ZM)YL(_Q._R-]P+_R,_R+fZ4bV1f[5`T+bV2dX3_R/dX4^P,nbCom|bvkMdW5_R.cW3aT/bV2_R,aU/qgDeZ1bV/cX0_S._S-g[:}^j`^Q*]P*_R*_R*`T+f\1od?dY0zpOtjx`{pTncBaU0aT2bU/_R+^Q,^Q+ZK(ynQ]O*[M([M)[N*_R1ZL+_R0WI'i\?u^ĿⓋw{rl_Bs^žþzoS[L-yc|rY{}sVfY:^P/bU5[M,~hvżĻla@`S.yywqfGujJeY8ujLvlMj^?zoRv[la@gxoK]P+k_@ãqfH{bj_>rgJu]ȼt¾䲬|hƾɼcW2i]>~{nc@mb>mb@^Q-aT.k_>]P-pdDaT1k`>shJg\9oeC`S.^R,YL'g\:ynRhk_?j_=k_?bV0\N)bU1j^cV8txvkMfY8h\9i]9\O)^R-i]:rgFqeFzpR|]deX:y\{qR{\dvlKsjEg\8lbsiDi^8aV/dX2aU0cV3ujJxoNfZ7mc@i_8f\2g]1g]0f\/e[/h_3ja3phdW0^P*^Q*la?amc>k`;bW.aU-\N*ZL(WH&eW8uiSƼVG'ZK+ZL.zŸqeH}hѦgZ>qńy_UF$aS3h[k_Dƾzbksp^P+]P-wYujKfZ9_R.]O*\O*]P*]Q+fY8i]=x[x[|rTpeH|sS|qXvkTү}zoYþ|½w[xYwmOj_>peDeY6_R-h\8g\5dW3`S.`T.bU/eZ4vlL~uS|rSpeDvYbU2tiKxv^|rWznXk¶v[ncDpdJxnRʚг¾}s\ncC`S.dX2bV/aU/aU/aT.aT0bV1dX4dX4dY4bV0bV/aU0`T/bV/aU.cW0bW.cW.bV.bU/bV/bV.bU.`S.`S.`S-aS.`S/_R-_S._R/bV2mb?`T.aT.bV/`T.`T.h]7rhFh]8fZ3dX1bV/cW.aT-`T-dX3aU6j]Dĸlb>bV3ZM*{qU}rVj^=j^?thMzȾĻȺg\7f[4cW/f[4eZ3g\5dZ1cY/dY/cX0aU.`T/pfCz[rhDpfDg\7ulHqgAg]6lc:{rMpfApfDxnPamd8mb;j_6zpLg]4bV-h\6cW2]Q*k_=_S._S.dZ4_S-ZM*ZM(k`?peFndB{Z|sRcX0cX/dY0cX/cX.dY.dY/cX/aV-aU-bV-bV-bV.`T-_S,`U,_R+`S+`S+aU.odAoeBeY1cX.aU,bU,dX-`S,bV/cW0bV.cW/bV.aU,cX0aV,bV,`T+`T+_S*`U,`U,`T+`T+aU,aU,`U,aU-`U-aU-`T,`T,bT,eY2gZ2dX.cX.cW.cW,dX.`T,aV-^S+qgDf[2dY/f[2dX/eY0dY/`U-`T+i_4cX.bW-eZ0eZ/mc=`T,odA~c~ɾÿ¾tjI~uWxnQwmMcX2cW0aU._S,bV.`S,]Q+_S+_S+`T+`U*aU+^R*`T*_R*_S,aT-aT.aT/`S0_R.`S-_S,^Q+_R-dW5l`>aU,aU-_S+`T,_S*`T,_S+_T,`S+aU+bW-dY/aU,`S+_S*^Q)^Q)^Q)\O(^P*^Q)_S+`U,_S,_T,`U,aV-aU+_R*_S,_S+aU,`T,`S+`T+aU-aV,aT+aU,aU,aU,bW.bW/cY0aV0bW/cY0dX/cX/fZ/dY/dY/cX-bV,dY/bX.bV.`U,eZ.bW.`U-bV.cX/bW.cX-cW-cW0cW.i^6h^6`T-aV-`T+_S*^R*]Q+]Q+`T.]P+^R+^R+^Q*^Q*^R)`V-`U-bV0dX3_R*^Q*]P)]P+aU/aV-_R*]P*]O)^Q*]Q-\O+\P+`S-_S-^Q+ZM(]P*_S,_T,]Q)\O)\N*_R-^Q,\P+\N*\P,^R-^R,^R,aU1aU1j_=dW5aU1eY5wlncCfY8h[;|rYn{qSiwlMma@k`>tjLx[y`mncBynPwlNmb?|`peGpeC`S/s}sTl`=bV0yZh{[f[1dY.dY0bV/yqNwU񿼵~u[ƽ~sWu[u`R/`R0bV2cU6||cu{bvƽ¸֩¶y^tjNxdy׷ynTaT5fX:ZL+naCj]?xlP|pWul_C^P1vazpTh[>·xXbV.~tV[M(cV5xc`T*`S*_R*^P)]P)_S*`S*_R*_S+aV-cX1i\8h]9g]6dY5i\:bT4m`Dm`Ev|qfG\L1vú˿vkKshHj^?swmLWH%s]汫j~~tVla@h]9\O+eY5odEd[L.ܞ~]P*fZ6h\8\O)`R,l`@xnPf|sR`T+aU,`S,]P)ZL(\N)ZL'aT3pi]>YK)YK)XJ(ZL(rfNؿ{o[thLnaFnpdIh\?dV7`R2YK*k^D㰪maBx]peDl`Bx^뺶zcV3\M/rŻķ}g|qZ͟cW4~uZcV6w`ƓxՁw`ujMx__R.eZ6]P*_R,^P*_Q/cV5`S2nbDd{qW}iɽbU1_S2v`û̏s\M1xlWޯocIy~tXvkQwȜlph\;l`?_R.`S/cV2dX2dX5bV1eY5j_;lb=\nd>dY2h]9qfHulGhmc?i^8fZ5bU8|q[üݭyoW禠siFcW2g[5k_=bV1bU0i]:i`ma>cW/bU.bV.dX/bU.bV/bU/bT1i]k`=xnPhefZ5aU1`S3fZ8wWnxoLtiHdW6cW2xZ~uTbV.bW.dX0aV.bV.cX.dY.f\2eZ1eZ3dX1aU-aU-bV-`T,`T,bV/dX1_S*i]8ukJj_:dX/cW.fZ3aT+`S*bU.`T,bV.bU.bV.bV.aV,aU,`U,`T+_S*`T*`S*aU+`U,_T+_S*`U,`U,_S+`T,`T.^R+_S,`T-aU-g[6fZ4aU,aU,cW0cX1dX/bV-aV-k`÷p`S/_Q.]O,cW3j^:qgCe[0g]3g^2dZ2i^9vXnb@wmMzqP}tSsiFbV/ZK*k_Dƺ_R0i]?}gy½Ǽ}sT~uTi^6aT.dX4ncAg\3cW0cY/lblvXbV/_S*_S+`U+`U,`U,`U,`V,cX-eZ/eZ0cY.dY/jǼ槡½f\2dY.ۿą|bncAdY1bV-`S*^Q)`T+bV.f[3f[4dX1mb>bW/k`;eY4]P(_R,_R,]P(\N)\N)\M(^Q,aT.dX0cW/cV-aU,dX/dY,dZ,dZ.eZ.g]0dZ.aU-`T,_S,`S-]P)^Q+]P)^Q*^Q)\O(]P(^Q)`S*_S*_S,^R+_S*^Q*_R*_R*_R*_R*_Q+^R+^R,_R+`T+`T+aU,`U,cX/dZ1aV-bX-_U+aV,_T+bV.aT-dX0eY/cW0bV/bV.cX-aU,_R+_R*`T*`S+`S+aT+aU,bV-dX/nb@odBfZ9qyoMeY1f[4dX.bV._U,`T,]Q)`T/^R*bU/cX1^R*\P*]Q+aU/bU/`T-`T-h\9j_=qfF|sUqfFpeD~tXk[N']P+^Q.cV1aU/_R-aT0bU2j^<\O)\O*^P-^Q.eX8k_@k_@`T2[N+`T0aU.aT4]P0vkSv`k_BeX9~tZh\=u{pUeY8|rZ{kxtjIg[8`S.dV3rgH_R.h\8aU.aU-_R+]Q+tjJfZ3qgB]O.ĽŸz]qȼܯbU2[L([M)]P*eX6\N*ZK'XI&XJ'XI(ZK'l`AxlQnǿ¾ƾſujPu]tzoT`S3XJ&hZ>ƽäλbU6hZ;fZrfDbV/bV,bW-aU+aV-aV.bV0`T,^P*]O)ZM)wmNg[8eY4aT.]O(^P)]P*]P)]P*\N)ZM(eX5[N)rgEsx^jcW2`T.]P*aT0cV4\N+[M(aU/bX0^Q-h\?~iþȚ{k^?xmP\O+[M(\N(]P(]O*eX9|pYwZh[h\:ncB^Q.bU4j^>^Q+\O)\O*\O*]O*^R,^Q/_S2oƼx^x湳ؚتnbBk`>nbC`T3vlNntiJqWH*~mqdL{ûƿr~sgRżyj^?dW;~kwmNbV3_S-la>_R.^R-g[7i]<^Q-_Q2ocIɾȾkj`:pe@f[5cX0_S.bU2{^qfDshGnbDfZ8]O+cW5zpV}jո¾ƾж䜕~k`cW4siHz_~tWseY3aU.bV/cW.aU.aT.`S-g[7dX2aU-ZM+^Q-}rYpdHuklǾözpVyoSdƹ|rWgZ?zcĵqfEaU1aU/aU.^R,bV.mb>[L+ncArx\j^Bu^ÿƻyYcX.`U,aU-bV,bV,cW.cW.aU-aU-`T,dX1tjHh]6cW.aU,_S+aU,`U+cX/k`9bV.f[3qgBbW-aU,^R+`T,_T,`T/d]Q*g[8ƾƼsiJ^R+_S*`T-`T+`T*`U+siE{rNypLڥv¾¸oukLi^9aV,]P)^R)aU+bU,eY0eZ1eZ3cW/eZ4mb?f[6k_;nc@fZ6]O*dW4cV2eX6dX4eY4j^:mb=qgBj`7bV-cX-i`6cY.dY.dZ.eY.bV,g[5_R*_R*fZ4_S,bV0`T-`T,_Q+cW1`S,_S)_S*`T.^Q*_Q*_S,_R*bW-_S*_R*]P)^P)_Q*^Q*_S*bV,dY.cX.e[1eZ2bW/cX0`T.bW.aV.`T,bW-`S,dX/bU/cW0dZ2dY0bW0aV0`T-_R+^Q*_R,^Q)^P*aU+aV,eZ3fZ2tjGrhFxnMwlMmc?`T-_S,_R+`T,bV0]P*_R,h\7bW0^R,`T/j_=rhEbV0\P*_S-i]:bV/_S-tjL{qTk۷ƺ~u[zijsgKaT5qfIh\=snbEh\>i]@^Q2|dncEh\=aT3ocFodF`S2pdHbU6Ȩ{d|{qTncC^Q-dY4cW1_R+cW1g[8cW2]Q,^P.~tX¸鼷}sW򺵫_Q.fX8XI'[M([N'\O*[M(YI'_Q-[L)\M)aT0`R.j^?w}duʾտʍmodGi]>ncG~t\qeI_R3xlRsgJlǿpweX9_R3_R1zoUpﴮmaF|ukKcW0^Q+`S/^P+gZ8cV6qeE{qY¾}bwmIaU.`S._Q*^Q*aT,cV0k`;]P*`S-]P)_R,]O*pdErfG_R.cU4z}qfCmb@~tYjxnPnbCcT:՞i^4bV-dX1k`<`T,bV,aV,_S*^Q*`T-_R,^P,]O*_R,`T,`S+aU+aT*`T*_R*_R)]P)_R)]Q)^Q-|^ocBfY7eY6vmMzaurvkOjnbBh[;ntiJcW2`U._R,dW4h[:fY<{tiJg[:thHaT2YK)m`ApdFvjQ޸tiH\N'j^A㎄ow^ʾ|rVthM~t[túǿݧqdrgIdW6}sVjƽ|oȼqgZ=½㭧bV3shHdy`gn|sXbU5Žx|j[M2fZAsgRuczgzźcW4h]8aU/`T.^R,bV.bV/aU0[N,YK.ޮh]4j_7cX.h]6h\7mb@l`?odDgZ@aR7dU;j]>dV8{pZûмַúƙxmXvbthR¹xb}rWujKi\?aR7cV;[L0SD&`T;OD2RG3dY7_R-_S-`S-_R-`T.bV1bU/aT._R-`S0shIuXdW6|qUmsǼ†}awlOzpPzfukFaU-aU/cW2k_Dmεȼʾ~]P+XK*aT9·¾޺}txmTvV^R+]P*_S,g[7\P,WI&xmW҈adX0aU-~tSj_9f[3~tTcV/fZ4欦dY1bV/j_8nc?µvlH}tTxulHzpNzqO}axeZ3ķ}wYnd?aV-pfCy͎h䚓|h໶xmOzqSeY4la>dX1g[3aU/i]8o}sTtjFla;fŻ亵gw[ndByoPzyXukH|sSabW.h]5i_6j_8wmMzoR{pRvlMz]ff}abV0j^=|rTulJyoPvlKh]6gZ6^Q+eX4_S,lb=~tUfZ4cV0]Q*aU0f[4lb:j`6e[0g]1rhEsiHk`;cW2aU/cX0aT.aU,aU.`T.`T.h]8riFzpS}`jmbAk_>j^;k`@shGcX1bW/aU,cW/bW-j_8nd=g\4`U,aU.aT-`T+aU.`T-_R-_Q,peGwmL`T/tiM{eZ5_S-]P*siH|úø̥rv_vi]Ak_@dX8[N,_S1xbukL]P,u{qU{_fZ5`T.eY5dW3k_=^Q,ma<`S,`T,y^g˾ynPzoTr\M,rfHh[:[M)znR~sWfY7`R.YJ(ku\ú»ֿfY:h\^Q-^Q+_T,ZM(YL*iÿÿõ~^dZ/bV-d䴮ļtgzpQdƼļմ|½}qvżװyjh\7k_dY2bW/`T-bV1cW1j_;bV/h]7z]sŻȿʴ~tVi];{qTk_<ej_:fZ4_R,_S,i^:mb?eZ2dX0bW-aV.`U.bX/eY3rhGg[7_R+cW1rfIoŻƽûtiNfY]P+_Q0qzagbU0`S,^Q*j_=dW4aT/]P+_R-ynPxmM{qTx^hxaxgizoSeX9yv^gqfCthMsgOqeIwv^ɩtiJdW6bT4aS6|ػu¸˖}Ƽw̐vw[l`Ag[8`S-\O'h[@˝zpdIocCh[<º䠘}eisǶvX\N+t]¸}r^دq~sYymV|rhDaT.`T,]Q)^R*`S,dX.dX,_R,fZ5ZK.׹~bdX2j_xɿ칵z\aU-qeElz^γxzqO}tSt{~b{_Ĺļȿ˴ÿm|ۃy`|qYmpeGh\?þqfK{pVmaDvРqeGvX\O*\O)^Q)bU/i^;pfCdW4^Q-_S/`T/cW/k_Bri]9`S*]Q/讨kϯfpdHrgDcW/]P([M)thKvkLqeH{pWhuŽvlP~t\|dow|dݭwlTzùrww]fX<|qeGqfF]P*\N*rfJڿitvpdFm`G̢i]:dX2aT.l_Cx\peDg[:tiL}rYŽujQ˰aT0k^A͝fqgDcV2]P*bV/`S,`S,cW0bV0XJ,ηʾn|efqfKǿĽ赯ĿǟҙzexlVssħ٧nǾ޸Ǽtoէҽ櫦~z\wVzpPeZ4i^7|sOi^7i^بsĿͨѶݻ~]O+_S,_S,^Q*^Q)_R,i]aU-h\=½ƹhum~t]Ăx`tż平¸ҹynSYJ.ުu\eWbT:ȼtz]exnMncHrgMµʾ¸ŹnbHĿȿ׷úŹdg[8eY3fZ5j`9eZ4g\7kˢg[9ncDnbCvƿǼŹi׫|û¾wlPh[={fπv`v柗gj^BsҞyv]pº~sXwlO^Q.ZL)\N+ZL'[N(ZL'XJ%YK%ZM%[N(ZM(m`F¾z\^R,h\aU.^Q+QA"㡛l¾þӸľ¢¦}wbreMqeLnbJmaHwa϶ЙzwnKbV0y^jxoM|_ʽﬧuYoٱǿº|`i]>u½`S0yĸ\O+cV5pdIЧ[N*_R2nkmफ़y`kzj]dV5ma@ncAj];dX4_R,]P*bU2qeFshIncCmaD|eh}sWĿ蹵~_bV0`T-_R+_R-\O)^Q+[N(ǿ׶x|arfJyû´rvlPɾź¶¶Ŀ½~XI(}ӎl}`eY3aU.mbB~eqݽqrÿϽݺļŸµȾmynRpdFxmSmϾżƿõͯpv{־ûϴ¾m`Dyc缷visual-5.12_release/site-packages/visual/wood.tga0000644000175000017500000300005411104432560017053 00000000000000gzKeYmLaRf`vVjZkN^{Nc~J]zEVsVfYnWoPdXmPeQd\oVlRf[pTkZpUiJ\yYgrc{Rk[nOcNcax_vczOgMebwZp^u\s[s\rRhOd\o^pRjXpex]pXpUmWm^tdz\uaxdyf|g~\tZpd{ayWkbwczWk\p[qZp`tOdVjThQebt_uWjQgJ`}WmWnSiXoaz^vYpZm[obvYn_vVj`wWocy_tbw]rLcYo\qcze|[rcx^sTiRe`ripe~]taxi~pbxdzayUnj`y]vid{nmngb|tkvzh}[skjod{`wczb{nme}kljnig\tf}kifc}f{bz]wd|axll_xVl_tf~Vrj`u]uc{^s\sjZr[rgk]tSm^v\td{gazqwavSk_uXrXojXrRj`vg~`z\vggYslghmc{a|e~od|^ug|lg}e{f|bzh~XpYojVmdzaz[p]pNgd{vNfYmZjJ]yMbXlVl^u_teykg|^uibzl[sPeju^pXkh{qjXn`wUmnń}|lfh~`unhe{tuay`}dd}d}c~ibzbz`uXlWq^z]x]w[q`vTlczg~_xb|Yoe|_tShVnWlYncy_tUmWm`rXnNaOdWlPcOcMhjoznZnRfNa~K[zTl\t_zZt^sWqWmWoezywiz]r[qp_sL[yVcUe]rf~[sd|filde}pbza{rkh~e{]sTlbxw}ugwlvqj~xk|sct`qYhVg`s^syye~iuhjl_uSeP]zS^~Wfmlc|of~id~ghimg}cx[ti]q[q^tdwUkiizYogZrqpksje|nobugxobsaqVfPd}Ɩ~|pĞʒĆ{v~p{Šf~ntgorrugwi~d{ipothqapYojaue{hqqi|`vfzl\tkl]{yBZuOgJ^|Ia~H^y;TlTn]uPcG\wPeIZyJ]zAZxMiIb~OhG^{;QkBZvWqLa}I`{NgF_{WmQeSgcwYsSk[oD\yIcRoRlF\{EXvA^z@XxKdFa~F`|KeMdIcG`|Ld~NcA^yA]xVkeyRnLeLcKgHdWtNhVlKfWsa|\sNhSnZnLfMhUmVnUoPg\rJb~\qLaD\yPeIdLbRjNhG_{d~\wF_|WoKec{`xVpUoUoMhPhTmTnWpPiSkOjTmVnTmTnZsUpXreb}LcMa~LfZv`|^xWqbzu]zf]v]vhkhhe}_xgnSoIhTmUqasuc|UpWth_w^vh_z^ypWsZud|b}So\vc}Yva}b\t_{f`xWu_~UpQmYvb\xMiYrf{PjXxPoNjVsPjPje}\vLgMf\ub^xRlKdXqOlIgPkXthOhMgHdUpUmZu`v\t[tQkUr^yYvSo[vXuZud|_|_~VvZtc~gb~XpUoWtemgVrE^|Wo\w^zOnXqnFb~>VtMhNkg`x>No:Nk:PlA]y`zVnSnQlYpSoRkaz_}PjPh`{nsfzPe_w\xazUkF^}@ZwJdpd|ol`zbf}hfc|^wb{azYvSq]zudNn^|Yu\xgNh?ZuC]zUs]x]v\uJeKfQjEb]zKhYu^vE]}MfRkQh>WtBYxKgSlSkA[yEXyI\|UrCYx=SrKe\ybzgmuseSjHZ}=QnJ]zJcWoXtQj]sJa}RnchldNlkb^~azfcn`s7LgI_|Ulc|JdKgSmitdYtc}]zgf]}RrYtj]q@PnE[w]xy|jrrqY|||vSeLWq]kqjvc{b|Njxo]wOnZvQh:Lg7JcPfYqzr`|]}gdZuec{TjJbUp^|`{RmUoG\|;Sn^{rTbe{liVn]tki[vnic|UnUlqP`OdWjJ_vHawÉikfxĕƈz|}{sl|p~nvsfi{[xnlf~awczZpdkisf{Rh[pZsn_ySpjledho\pRkRnh[n[rXoAWwSnAUqE[{Ohc|LeSlPiPg_{yuUp_whdx]zUploMc;NnXfL_yNcZrXvgsdawjenZw\wkdc|eMdKaJa>Voro~d~]ylrmazhxwcsNZv\mMfWzxs_{Ur^z]wj\yQoReBQp1?[Layd|d~ae[ybb}a}e|`sI_UqOkLk[r\pE\y@Xw@\xqWqGddmYqaygmaim_wZo[sbwPkXmco8G`h}l{tmotNJy|Ńmxe~Éwvpgv}pb}iraxWtionidxayUpnh~Ska|hjcooe|ZpZn`vUjVnShPfI^{F[yIa}PeEYuBUq9LgEZvWoNf^pSj?Wv>XtE^wUl\wEfJe~>VnJayYmUkNeJdE\x`tkkd}\pYnPiB\{JeXpH]|?XuH]zI`}GbOjLcVoE_WlePgLfXt\rUomd}OjYpRjOiMjCYuYnZtPkYq[tIdSl[uRoQgWoMeUkNgKb}J_|K`SkGa}D\zKgVp\sSmMdZsXrB]yJd_xf~Ql]w[t^wc{Sk^wfSnKecz]uYrLgUl\un_|]{g}c}c}`zbxhh_whhdZvbfef{e}ii\wTq^{qc~gf|VqVs\wc}]yTpZxZyYt]wZzm`{kcd\zgd~hnZwb~b}^{c^{\w`y\z^xLhGgWq_ye{_uYqOi_yOiB\{SkSk@YvSkMjJeWr_wVmNeWsc{[x^{TmVoSoVoSmUsc`x\w\zUn\wdjpfYv\va}gm`|\ue]yojPm[ud|\wRo[tohYuYqXn^xo\xc|WsNgMgqi_zOfHZyH`~QkQiZv?[vC\|ofHdPic{hVo[ra}azUiYo]wUmTpRi[qi~SlGcIaNfJ^|_wMhNgMk\tbzb}\sQjJgFdglKdA[yYtd[uUq\zGaB[{JgKfUrRpWrTnXrMeNiVsRpRl^wTmXsC_{NdPdIa~NeQjZrF\|6Gd9MiI]~D[xC\{Lil{ii\vAZy=Vp>TsOdVnNhJg\xTlPhk|yc|]xnie~QkfoYqQi?Op0>Y:RmYp[wa~Wva~veZu^|btkTo^ye~ch=Rr:RlC[tlŎnmzkpxiq{qHYu1?[F^wZ{e_yjb{e~XtTn_t`s8Hh;Nj8Nh_xcNhjlc~\yrmYoKbE_}Rpdz\s\tKa@YtJd~d|H`Kc_zYv\yeh]zdrh`zYr_r_wg}[ntNa}Nc|Nhiwxrs}{w~~{΄}rst‹„nmsnmjve~^y`zcllq^w^{i_xTjie~uojlqo]rezbvPhMa}@Ur\rSh=TnNdOeFXsEUoM]yBYr]th|bxWoD^zH^yPcWqNlLgC[rH\s\o\vYqWpE_}e{kTsMej~uWqMjRlE`~SjLbXsPlhh\x[tTo=Ur9JjThSiMiJfH_}^ybg|qmva{iTnbjb|f}G]{F\x8PiCXtYoToVtcjcjYsc}mjPmfgQr[xQjWnK\I_{hwqgqoiqn^|tns'0I'/HPiTt[{fYzZ{dd~^w^vazWoLd/RmXj]sXp_s[qjeDa|Oe`vd|b|Sq_uEa~E[xSh=TrI^LbD[zPj\rRlSnTlVp]xVrRkiLfMcb{_{[tYpNibxi|PjWtOhWoRlOiMe\vRjYqZsIdIaWp[rMg?YvJ`~SiPjOiLfLfKg[vTokLk[sWnXuLk^t[t^{Uq_wic|czYrMhii_x^x_zTnb^~jxbnb}d~fLh]w_|ef~_zXsa}qgdgd~i_|Usb~fhefa[yif^z]{c`zb|eOmap^|fhhfa~[xc`cb}ZuYvVtWp]w[v[xSmHfFfStd~XrWoVpNiD]}D\{OiRjH\{@YwD^}LcVmNfAZzB\{RjYtZvZwKbDZ{a{Ztf|ogZvc[w\vWwamr^|[yb~iimia}`gl[xZwdzgoWqLfefVoXqSmPjXr_y_wWq]ujfmMe>WtIbYx[wWnOhG`UqUnldKg\w[sna|Ih@Wv?YuIdXmF_~JdUmaUqQiYp[uVq[t[uSkC\{IdRn^wPeRjHbIenf~OgH\zYq\y_{SmRmSlH`I`Ga|RjMdSmf~PkUlB\{JdWoSnNgRo`~\q[sTnJg@ZwVk]sKa~Zs]}uspiUoFaCXy=QrK]}NfRmG[~LgbVsnl~}i_wefjti_u]t=Vr6GdHZwYqVqUsZyolXscYx\|ya~_{SnEbQhe}Xs;On8Niqr{wYuRoa}ZsZpSpVsC^|4CaAQm6Fd5JcQm^}Wy[}ge_z^xe\vWrey:Pl7Lfbwb|d{_x[zg[v]yh]vRkUl]xRoNf_yVo=UrQhI^b{LfWtXpUlVq_|lc`}gf~[sczin^qqqmMg~Zpg|vxs}tzt•Ɯʏ}nqvÊ}~kenzxqply}Wofvg\vTpimYqZse}ofXs`}c}my[pFe>VqQhJc7MfAToF^yTsF\>StC]zhgVoZvRlSl?WuTmMiTrD]|Qke[sTm\vSkTlKbAWr=SmK\|G[{?TsIdhmjlb~UoVoG`8FhDZyYr\sWqJe_xrqj}uc}h]v_zua}`z`wOfM\{@PlFYu@YtPkc_|dZyiXugse]yczVpg~c|UtVoeyMdNm}lfrlZy[qs\vXs]uQg7Ef2=Y2A]=RnF`|SpgdVtdojSqj~[oMaI]vfzl{e}TpUq^wPmnjWnTk\yQoZtQkNgLeC_|`yQfXkC[}jg]sIe^~c]wc|fm`xUl^v[r`plg{]la|xnb|h{}|{ƦϐÅtrpt`p}iuujlPj^x\uYpZvk_yWtdzaya{_yapsk^sA`z:Ql:QkH^|?RmGZuLb6Ie3K`Oazg{cwPd~MdMcK`{SlOkUlZpUoG_}[pF_z;Sk`uf{ifQiE^y_xZwVrRiHb\v[tPgOf[qWmMhSlZuZmLcLgLjTmhXtYs^xop[zYyUrZsc|[uRkQmXoZpRna|PjQgVlOkIaVnE_{QgRiKaPeGaKc~dvYsUt>UsHaK`~=SqAUtC[yKhUpHbI`Sp^zilzTugkb`lc~hb~\yepilidfkPjOjZx_|`xMoPlRmE[xKc}g]we|ZwUtWpQmgfhg~]x_wRjHbLhdd]uKc_{ZvMiZrPe\u^{\wZvUnZq]u@\tLeZsF]xD]x\w[sLfHb]z\|RnfXuXm>RtTt;RnE[zWpUqdZvdZyWrF\zLc?ZuRnF^~PoNlVpPjLfIa[tWwLg6He;PnG\{J]~CYwE^{b~ohtj[wIc=QpRg=TrG`}byH`=Vre~lspvclllq^}c~dzTiKZxCUs6IdG^y`Ih[xRrZv]xb}b~hhe[sw^uRif`{K`:PlXvs{gXqc[|pjXnQkc|^tG_LYw:B^.Sp=Rn?VpNa|TfG]z6KeGZuOeYrVl_vXqD]wF^{I_zVmmRi>Rs^ujJb|Mgo`zoH`yIWvUh]yYx^sdwSkHb{MfOiRkKcWoVo`xYne{XqJePjf}Eb|Uo[sgk\vUqc|ZtLgZu[uVqKcTk[tOjPk\shPlOgE]{SjG_{NcUiIaUrE[{Xp\xH^xE[uRk]r\tSsGeVmWlNiJdGbGa~UlZu\wmYsOiYp\vXvfnZr`ykdncYtZsXt\zr^yd}nd~md_|sgYx[uokZzbdpienfZuYwjgga{bnUrcm\{_|ie^x`|ii^zhqb\za~h^~YvidOjRm]wQkWqWua|]yZuYta|Gf^xa}KhGcWqMkPmZuJ_RgXrUr>Tq=VrJdBY{Ql^|Xw\zm~kvpYwWtb}a}\wgpj]z`|le`g`|`zb~d[v[sbr_xWo>WtQkiUrTpc}QhNfe~lnXvLj[u\vUlH_]x]zl]sYo[vQohXl[qQqLke}bz]u_y>ZsVmLc=To^t[u\xLeIcYsXwOrWwPjYsYrOgH\yF[y?RsDYv8OhNfmtYj[m\x^IjOmQlG]zMcXwOoGeSkQn\wjQiK]{KbJgJdG_}PhVrQkPiTo[tPlF`{F[zLbMdEXuD[|=SrHdmotteKd[qSiM`?QmAUu\sLeIfQnrxalwdfchjkd~asOc?Qn;OiIaSm]z\yd~]v[ui^{nn^{ic~Nhc|lg~I`}9NkYutwoa{rhkWuXsToZs`~`PiCQoHVt>Oi:LhF\yWtndgngqkYuMhKb=Rl:Qlj{fha|]z_y]x\we~VpRjdze|NfQlXqUkI`c~gb}gBXzF\~He]}mb}Vt^xxkUpXtcnOeRfxP^z[mg_{Xt`}citvxŒƇo~rz|~qyrwlixq]rfb~WmWmpiUqRikh^znFYu8LhL^|FZw?Sp?Rn4EaASp]uRjRdJ`}E^uTlh~b{ToE]yShMd~BZvVkLaQjayi]xXtQk?ZuTml|UiG_zLk^vs`vG`yD\xI`{Sl[uQiOgSm]the|WnA[zSjZsKg^wc|^xe~Zu_w]uc}F`|d~^zB]xRjQiD_zMgQiVo[wToOfVnAYwG_~WlKbJgZoKf?[uQeVkWoF\zNgDdIfUlUkOiSkA[yLfUnWpMjj_wMfby[x_}XxZud|^w]w^z]{ie`|bzZwemgfofb}[z`|ia}_|jktfZxdso^zilc|Vqdfkkbafb~fMjjmakmhbc^{ffbYvjf]vg_~MiUp[sZrToHdSpdd}XreWvUqQlIgNl]{]vYnRkOg_wSnHc~WnTjBVv>Rq9MjC[yUlD]{A\yNiUrXx\{w{ca~cdfYvfj]y`|ah]zhelkb~_zZthgor\nVjEa|C^yTo^zWoTjUr^zXucg]zRlNfQhUqMg[ubzVlZr^y[y^ybyFe=Vr]s^yWrMiRo_waxWoWkE]zIfayTlJbF`{Tna|LhTpc~RiLdE[{=Oq7Lg4GaH\w7Jge{͆RcDYwWq[s\wfSmVpUoRqC^|ThB\xWoqQsXnUiPkLgKbH`Uq\uMh[yOmLfPiWoMgBYv9Nj>TtVmE]{Rmr{oem]wZq\qI^z:NlCVtRjRm\th{if_|_{d}jdmYtUnk^vHZx:OlJ^|`uNhb~xb}c~o]zcmlfbdgaxWnb|XnAYyemtk{Us^yi`{]zb{YsUuC_|gG[w3B_F[vE\zD`Nli~n_zi\zd~`yI`{:Ql7Kg]tsTgg~g[u\yebzZrZqbz\vJfYqUnMeTkKdZrZtgg}NbPgFeRojTr_xtmff}`uqpxUlcz^n]mIa{Sl]tjhcdo{΄sy~gnyl^y[tbyuudzobw`|Qlrcwb|a{e~bu6Gb9Ig?SqDYsFUqCSqCVrGa{B^xK_zaxA[uSkf{^v_xTkXoLcSjSgSfRlOhUoYsm`x?WuH]}pf~^tVlVqTrPiObWkL`J`{NhYpVmAYyDaz[wflYtcwha|ZsGaVqn^vd|aye}TkZr[uPmXp[uLbMeKeSkOkFdZtWoNkSlRgWm?ZuYlGb?ZuPd^s_zD^|LdLgF`}LhIbXq[sPiLd[xWqYsB_{Ribxf~_}Yv\tbz_|_{eoTq]yf^yrf[ud|j]{jc`|d_{hdkolqyepj_|ljdec~dZuPmgi]~b~pa{Rm_zaZvioYwZwpYy`~a~Zvb}^|`|ioVva}le}Nj[wUoPlIe]v^yVqay]zVnMiNhb\xZrYv\wRmEc}MfYv]wE[{Ob[n=QqF\|@XtE]~BWyLfStIk[vhrlquZyjxeaceipZxhq_~hcm^x[retlZs\sZsD[yB[uTr_x^uXua}XsMha~p_wCZ{PkNjUmSkSnNhVnRi\oMea}Pj>RtSjPpKgNh^yc_wh]uM`~Gb}ShXoQiE]zG_}jmWtayYsHcQgOgNa?Oo7Kg4Ia:Tl[uzYd`jivLeTrXq[qZqA[zF_~VhQhSkA[uStd}\sMe@[xZp`}UtLdB^{b\{IbE^|JdOkIcMfCVuL`Hb~Kdbgulokh~RlYqTgOc~McMe]unvn{wazHcd~mWqji\r^{arNeBXsF\y>XtOla{`~hWs]{e[wdlne]{g}]w_z]u_v?Us=Vqj}}bmfb~ZvYwa|RnOo^x^yQki}Ng.Z7If6Jd3H_]wƊqZnTg]pg{c|F`Pddw`{QkB[wC^|WrOiUoQf@VtVpYu]uC`}\{_xMePiA^yGa}NePfCYv7JgObE_}@Zxavf`~j[vUsqf|`tEUwEYw@]wZxiyxolMgawa{efxUnSqslH\zL`>XtUsFb_ythvb{Rm]thh`rH\|=RpYqmzwp{XrVle|[umfRjHa_|l_wgK]}8JiKc]yTqQqpzjlca}mgogbzd^z`x]u@Wv:Pm\}up`}ot_ydWrHd`zoa}ToSj\rOf@Vw7Jf=RpEa~Iga~]z`}hh]xmQkEZy]pdu6Cc;Ok_xJkQpg]zpPfWpYrOkOhD]zD_{_tLfA\zNfasew`tZqVpNlRnZs`|Xui]ycz\wb{klkQfYnXjG\y=YrTmun\{pmm}“œ|}Čztggjrxg}ywc}dnlun_vjRc?QmF\x9PkASoH\xDYv>SoH^z?SmOaiOfYof]yUl]shkBXuE^xOfMacxvRk:PmOd[smZtUpRiTif}f{Wl\q_t]v]tWlTlYoSnJgQoXoYnMiTmf~iXuIeiayJe?WsVnUoQiKbQjPiRk]w]y`{VpVpKdYnE`@XwPgQl_zWqXl[tLiKeMgJcPiVnazUoMgTnRpVrWqJfLd[sZsUoOkafh^|_{a|[xYvidg\y[vfimSqOoqa}[w]z\xc}fpnjeddgmcfjfg]y]zb~gb_yba}ZsXrUseea~qb~ra{WsXsa}\x^z`|d\uQodbMkOkga}SnZxijPjPqWvczh`yLfJhTtd`y]vb|eTj\vefd}iQk^ye~ZvXqSmc|ZqUlOfMgXoPiJdI^A[y=VrD^|\xjhyrq[xb{kbWtmeZyoghklhQp\vkayb~bVp`xfaxYr]z`|ij[z[yo^y\yMgHeQmVpG_~Ma=Sn:MlE\xD_zZl_sHhQoTmWq\uRmojn`~`yWoTmeOiLifYwNmOhJgPmLg^xTlXmH]~@UsDUv>Lo/>XAWnVos[pXnQkC^}Tnc~Ng@Pp?NlDVs?WrFdVoJcNgD^{VnWtJgNhNfhPkIbTkSlMgDYu;Nj=UqAZxKh\z|viga^|mwLa;MmJ`i~nu}lb}k[rUmeb~[sUmXo\ob}tGbVlXmHcHdVr`{Xy`}ka_{cfb~jbWsRla{ZvOg?Vs>Ws`zwpljgniQke[zVr^x^y]x`zWq7FdBRs@Wt:QmSj_cZzdd^zcd~Un@Urdt\kYkWrPmjIiYwZwPkUl]wQkRkPgRiHcVpWm=Wpfhe}WkVn[tRlVmOjYxdhiTqfZqIgXvdesGVt?Pi?RqRolkwjv}xz}ŽŒ}zzpc}zxdqrSk{fhlkrhtWjEZy8Nh@Rn:OkQf;OkUtQfZuOlOihTmAZyKcWsLjYp@Tq:PmCVsRiE]|Wr|yoa~o\{hrbvVnK`|E\ya~l_~h`{Jg^yge`{koXsm\xQoNgJbH`QkVrTpRl_~ul]yTqhic~`{jVpYtXqSjH]|Mcsp\wfVsfsa~JgYwqfVsTl[wWoHZ|4Ea>RlCVu@]xOn]~oZvNl]weRnWlZq}CRm.XtUsiJ`PiG_LcNhUs\zazc{Po]yd{]xQoqtsbvJXwOb2@]:Ol`~t~zwwlÈ||ÈbysnQqt{{ytvXrXp|tcz_yooUlF]x:MiDRp8Kg=WoDTqUtAYyF_{fPj8OhPi]uk`ySl[uVs]sn_vAZzKgLiGcRhWpUq[vD`zSl\tOnQm[u\tNcSlYvRiG_}A[wE_zQmD_}OfUj\tXtaxUpIeKdUoWsNjYsXqTpMiVpVpKcSjSoYv^vQjKd^to]{ZuPjLgUma|b|ts_Zva|_Qniijlhb}b|`|\y^yeekdjp[wVsfh_`~b{`|djgejb|b~fa}^zebXr^znkXsgZvQpckb|cb}c~a{\w[vZuk`_\xZtcWuhkZuUqJi^zkjYwYy_zgZxen\tZygYuNmUpcyWtWv_{obSp]vi`~VsZuf~Qj@XwSn^x_yb`yby]uA\yNcYoc~dduqaYvib~el_xgdb\}eoOlUpio[r_~ZxWqPkc~`}KkUrLe\ubZwUn[{Xwi[xTpWu\u[u`{CZy8IiMn5Cc7Jg=TmLlzmdx[ng{NeOlaVqVoDYy:JiEYxRjTqVwI_ARqM`UqFdXo^{JfWlE_|LeTkby\pFZ{:QlIZuWtGc~b|we~Yob~_wXoc}UnRjUoGb[vXrTlIa}UoLiQkJdUpVpOgD_{QkJde|c|LeNhQk]wc~QpFfUuYt`zZsUrC_|Zsg|OjXp\wUpRnSm]wNhPija~ZxYtd{gmliXu]xNkUq^{kmepqcYv_zekcd~qoac]yb|k_}]|li[v^|g`{Zvom\xhcTt`{ba{^vUsb|jeSm]wd]wc}jZuTmor_~]{ikdxe^v`}Zyk\|Zz]zWo\ydb|o\|ZscfbUtiWtc}d}gZvPkmgYs`~^{Ni[wi`}c~lXu`}dggTqWt]xSnQkXsRpZw^yZx]y]vToZt^wd}fga|figib}YxZud{_y]xck\xeld[u]v\vJfWtf`vYqGb>YrMgZt^zOjXrVpWqa{Ws_{UoPigc{>TqTs:OmH]|J`~GZyPcE\|MdE[{JgYyXt]wl_y[t\w`QnSjf}o_wNiOjZpXsc}FdMkSjATtDXw?Pr=Mq:MmF`EgYvYscyZoOiRhF^xSi>Vt?TqBUvC[zWnb}StQkMl]t`{Jf\u`|B^{LeRkKcH^{DXtFXwLbIeppdSnbqffKe7Jf@SklxoykijYpknOhlq_|]xZtTkKeRl@TuGYxLbHa|]z]v]z^ygekd\wmjckc|PgNgQkrrjpkdle`zYu_}v`|TrZx]uWnB\yVp?WrPg\nRhAXq@UsKfUnBZtGbQj[qbxPfZqBXxE_~QnWsn]wYsPkPiG`|UsRrVnAYs_v`|HdD_{]x`zgXrXsUo[ravTqQlKgPgOiXuUpTnZrVqYrTqJeVlSnSkHbOmVrYpdXyVqRmIbVlgMmIh^ve}Zu^z_|]xTlXq[wYs]t]uNiYs\wcrhvo[xe|b~b^zTmae]zpi^~ekxj[{el^a~c~fkbmma~db{ff\ysc}b{njhWs`z_zUuSq`{`{bhLhPr`\u^wijkq`}Yt^{mjf]w\v_rnggkc~qmdWyd[zlldhf}lld\xPpLl\{ra}YwUpZx\tYqOi^yNhFaRoWuMm\x[u^{_}c~eZuNijw`zUr[w[xbdg^zPj`c{RiB^yXt_wa|MgVp_}UtckPoPl\y^~fXw]|d^z]yd}iRmZvb}azOhE]|=To>WsRiC]y=VqPgNhKgQjWsg`Pqle}E[|H`~ZqNcBVvI_QcO_~:OmLaUe@YwFfMjNmQp\wRmNlLiUqag_yRhTnf~SnSpgUpHfTqKgTkC[vBWy=MjEXs=Ur?UvQt`|]uJdKbAWyLd[rRnUne|OjNgKbFcOj_xRqYtLdJ_AXwOif?VtFXyBSqMlnh\wUrirsc~CZyK^wLb{Wopyompb|[we^sl^}aea~`wUmFcRgIY{Sg4Ga@YwnhUqVsoma}f}cSt^{jb|TiFZzMiZ~pf[u]xrmg]z]zYxc}ZwbjZqG`G[|RiJ]{3@_2B]Nh`}HfXumg`xazQiYpCPs]l[lVtIbu]vPlpTqeeyDZ|HbHe>Wt@\xmUoA[yNfMeZs[{PnTmYsUqE_NhVmVoOa8Fc=Sq`mvkqb~Xs^znjcWn6LeOc}`woxd`{YqRkbz~TnWqvio[sPk`yMdLa=SrSkWnDcQr\wkc`~v{\wb~b{\zfb|QiAYwGb{ppqqhkrkXvWwJbkh[w]vOnPh\sOdGUv>Lk8MhHb}Lg[yhXurStKf]uLaXmLc}9JgBOnH\|Rm`Rjb~`}b}\uUpfb|`{J`~WtPjRmTpZqMhNeLcPjVn\sOjOjVoToWuCa|WtUr^{\y`{^xF_{Tqd}ToQlH_}Zs\xHd@ZxZsZsOgTn^|]wOlVoe~Ys=UrZqc|XvWw^uYuQoPjSlRmUrTp^{b{azMjOj_|Tq_z`{_zd_{Yvb~b~`{orfdfgb|\zfb~[x[vgprlimlkk[wXrZw^|ichgZymgZt\x`yh[xblrg[xXra|f[wXu`{opccf[zgib|`{hbXtu}mud`}k~lbk^hpjYu^}g`}j_~c[y\y^xcgnZxNl_ykaXr\v\zOmPkUlVoRjJhZu]zecc}_|YzfXs^{ehlb|b~mfpvqmgne}]qLgSnXo\vTnRiXrWqXskUqQpd|kh^yfSpMgc|gYq]u^zd^wDYwMgUnFZv7MgKcbu_vD]{>VtWq[vUq^z]uZpPgLfj[wOfdz\nH^{7Lf>QnHXyM`I_Qj^|Wq`}_|RmTlVo]wh\ycSoOmb~d~[vrVrF^{Vl\vRlQr;OnC[wMh]|Xv^{dtkm]x^{a~Wr_wVoPgQfqxs^glpcOlPhe}YwYv[tUtOfC^vAZtRd>Rn1C[5GbMcRuOpXyj`|ZtUqHdNfUiFXsSc>NnTs?YuNjh^~bTpD]z_weXsHb|PhRpUoMfMhPkRlGa|C\yXpYvOkVjc{TnUna{_yG_D_|XvZwPjNkYx\z_{WqXnSlXsQnLfG`~KfRm`ySmUp_zOiUoVsYsRlZs]vRnF]{Uoe~VtSs[sd~b`{YqRmOlWxb~bzdi]xMjSoflhpXsRoemfddp~fZxiRnkgglcjqlpsxj\xfa|^yc~d_ng^|qm]w_yb|gkYvZulf_~\w]xTlikgmmlgb{_z_|ropaib}jng{msrkZxjkfcfreXxYxfg]}[z]|a|a{c~mYuSrdjlg`|[v_Zza}UoJdYpOjC\|Jf^|]zb}eaiXs`|Zz[zfpncd|\xeo\yYwdhka{\u[rb{hdzHd~Ic_wveYy]vfpu\xdNia{b~lWtYu_z`{\sRlXqOfD]x=SrCWuUhOfJ^~[rQjWsdsUnWoPiVtRnZtWrVnDZwF^xM_=Kk3C]?RmH\XqMmQsPn]y[rMgaz\vYwkTlc[zWref_|IdUmf~WtTlTi=Pq9Ff2@]6Ke;VnOgbza{Zo?TuiWrIeXmDZ|YtJcRjUl;Pk=WrRlTqFeUo^uf~ykKeVk\u[v\u\tHa~E`zG^zLeE^|KiVqMfJfFd~UpZrYsa{byF_~\td}_{FgVsd]ySmWpYqOjQkNhSmMgHb~Ys\vE`JhOkOgOi]w`xYrMeNmfhIi_zZtTlUs[vZrPkNlZyWpg~cZvqYvYvlppm]xWrbz[v`kgcu[ydZujdmdgfr}n\x`jorsgWtXsZxXwazklib}Wu^{g[y[y_|`|Vrfh]xYua|a|ikWs[vutl^ydoqtgjr\|hjpotha|ak^ykmabobSq]wnkb}[wa|hkNjTri`}`|`yel_y[yeb}Upf}ToSkTnJj^{n_z_~a~c{c]{Ni^xekTtihRpZt\x`|`x|ztm[r[wh_uLdPfF`SokbZvd}ejf]x_|ayvn]ygc}c}\xfb~NhRi[qC]|BXuRiWkKaJeQlXtWv\wVoXqYqRjUmYuSp[qPgNdEVv;Mja8Ohtyvyaq~yqhstʈt|}xsyl]uipfukl^rFbJgQfZoD_{F`\tPkJcIaOiShXpAXy@YwA]yNge|Wti]|ZvYp\xTpYrg~GdF\wLd?YvJhEa{Ga|XuMjOmF^|NhQp_|_{NjMffysZuSnLiZxVu\tbvMjHcXs_wLeE_|bzZvYuHfIc\q[tKi[rUmTkJe_}kWrihZtIeHbZtZt]vQrHdaya~]zg~tja{d~\wgrumbUtia}ZuVqjf]{kxliinoxcgg\wkmrekc}YuXt_zjpoRr^y]to\}Rp]ye\yQl]zdesj]we^}Wv^wqyhl^|xzlfil_{\zalsm{imZwXw^|[xa~deTrXudmdZwr^yVtUr]zl^{`|b}ji_za|^|ejgYwSk[uTsWsWvZwd\yZwk^zPm]yeeSsYx^xXs]wPn^yZtxh^{clg\|Zt^u`|]uA[zNleSmXtZx\{^yfld}e~^yesed}ekcVrZrhoMeC[{QiSjLhQjE]}D^zPmZwXuNhLd\tncWp`wPeNfXj^m>Rp2A]>OmUiSlFdE_[ug`{WqGdWrC]xKiZz`}`yRoa}^{Xx\xQkZsYp@XwFXxBRq2B]-8T3D_Ys]t`xYtLcPcZp_tG_H^?Ur9MjE^|B\y`wXo@YuOiptYoF]xUiShE]}[pbzAUr:MgTtRkZpZqw}cNdKamHaJ`};Nm.:Uf|gLiC_}TntiZoUkdx\sPeUkSgKa|WtSra~`{hXuC`}Nl{|u.5V6Hd\wlthhihqĀsvxƆoiv{e~Uo{iz_p\pOdKb|LcTj[t^yNhG`~Jbaz`zTpRpTlEY|?Wu@\wPiQpRmTlFfVtnLlPkd~RkRkXmSgQgVoH_~KaKgFdNiF]}E[yZrXsTnc{lOk_wjUrTpTnrgI`F^}Ha}PiZu?WuNfLcOgb{]|LfI`|ZsRp^wRpXsJcMfUq_xTpQqg`}C^|Rmb~UoSnMjbzr`ad}jnXta{iomliUsffmcim_|frqdlflgyxqb}^\~bne`v[x]{b~doof]w[rWrb|le]{f}jZwa~gkjyptmRqh{sqdizysisviWuOomtlrbhdWtRp_{h[xZv_{fs_x]zfb}Ztid}\w]xffpnheqnivttccg~^{_~cgjdebjfm`{`yd|SosUqB]{H_Oalkmjb|k_z\yliSoJdXqe~D_OijdlosncikjbaznYxYx]zUp_vegj^w]wb{d}jYv_vcyOkRmHeMlQnSoVrLi?ZvMdPfI^{=Nk:Ji5EcTlLfJd\r\tdb}_{PhKbOgOiZx[xJdTmMjOjHa~YqZwMiKeRjPdETzFXv3D_/?X7Laņ^|kYoj{QiMc?PoHWtXk?XtidRjKghd|r[oF\xI\z]pRkE\zYl`ua}p~ogsmmLa}PhVmmqpaxYpms]vVkm_{`}oqr`z]venbz_u`zs\gQ`}@Uo`wolivmnogf^xc~b~mnholhkXjRlTnC\xSq|H_~QkZlJYy=Kl/:XKYuMa}G^|WtZyee}iZwa|KdXsa{YlN`G[z9OkE[xZlG_|Lh[uLeOjNiNhXrVq_v_wNg;QnB^uhSo~|JaTjawZtB[x[wfYwZxGdPmdÓ{YdRaDXu[y{_|aqcepx{yyxu|wts{gczklyrnIbE_zMgPeSkXt^ySlD^zRmJfTpSmTkVoPkMjNiC^{B[wPh[wIfWoRqXtWpZuVsZuNhJ`NfQjTkMiA\yQkLeG^}LdZtPmXr_yWqYrc|c}ZtD`zWqtRjCWvQkVrKhLf@XwPgLdZtbSnczh_{JcIeUqVnax^zPjLgTnc~[wXu`zXuXrZrOk`zim^yZucggke`dlgc_yd~d~fcjlml]~fmnie[zmttc`|`}`~dZtgh]xg]x^yfhk[v_{jbf`}a}UpVrhfb~kqwugjkkwvjdtxmpigrj\|so`degohOjVqe^xZudlnncd_yoaZxd[vof\{ce`xoeoksbihaaefjchh_{^{iec~jXth`}Yu[qI[~C[yghe}gdXpYs[}]}[x^xazjRlKiSlUrToWtfqlYxdq^|gx^~Wrmi]z`{hd|df]x_}Zu]vc{c|OkXpLdFcJgXqgYtXrNiBY{D\zGZxI^|5Dc8Lh8MhCXvMaB[yTn\vQnQoQlOfD]{Tn[vlSoC_{XuZwOf\yIgVqMhRgJ\@WwD[{8Ih-9T1B[Nhront]wg}H^}GZw=Qn5IcWqc~\wdRl`yyjXmZqWnTiLdWo:Ol;Oi@Tp]xŠrl\zo~rcvM`|K^uqxn[qeyjarp_z\tWuKjfWrSle~XsRko{ig};Pksbx`vœłkome_zmple{moggnnZr`}ToKc^yWqXr_ze}]pQiDWw9Fd?PkK^yUnb{h^{Qn_{NiJfNiTn]vyQj5DcMbOdATqJaPjIda|fYse}Um\q\vTq[uE`{AYsix`xRkXpd{LdWoTob{Xu\ya}A^z^xlsqiy9Kk7Ig:Mmga~[ycb`|sy~~nsÓn{ssyqvr{jp}n~e~a~Ib@YxPeNgUqVpUoWpTpQnKfKeNcRmRqc_{I`;SnF_`t^wKeA]yIeOfGdWuFfJhYqQjC_|]uQmOkJdKeSjUmF`|?YsTn[tb|^y`x_x]wRlE^{Soc|UiH_|QmJfMgKeUn]uUrToHbYrpa{Yo]wOkby[rUpZuPkTlUnRogd]{`|\ufk[xZugqd`}iwuc\|`hdkggQr]xlmmg\{frqlha[|n{td~ib~e[zhnb{dgec~bqma}]x^{qald~d~fiqfp^zinqi_{lplc]~eh{rbiyomq_}ieYs_{djjgYqYskYxRmk~_y_xogYwleff\}\z\z`iZwfmcfxpmdde^efqq`^|iglzh_{Xu`yhax?UuF[}Sn^zc_{^x]uWu_z_|qdfd~VsMiPlXso\x_}ijZxenYvulfeke\y[rlc`xc~VweYq_ynjazPhWr^w]rQmUq`WpIbFbUnSmN_>Qn6Gd9Ii6Ie;RmG^~KeBZxQkLeZsSoSi]vib[t]zUuLeRkTna{QmUlQiHdLgThM].9V1@[8NcrexczXoFZySiAWpLdZtlsYqEa~tc{nWrXoSiHaQk?TrFTrHYuSuyŃwjfaxprbyZmaul|xrZwQounHd]qk`}Ig_{c{h^wEc~Wuue~Xwg^ze}[qRf_uogwufinqx|i~Yrb}urplghm_yXxUoh}[u^vc}[zu^tcvcvOb@Sn.=U7JfWkVnTwKl^yPkYsc|WoQkUr^|tTj?TrOc[qVs:QlTjTke}i}YtbWq:PmG[zKd\viY{RiD]{CZ|TkYqSoMgAZxF]|LaG`KfNh^tVpRmRkRnRsEa}BXwQhHd~NfE[xC]yNjef^wc{[s[sRoD`~NgaylWpOgUlVnQl=WrB]wJbOgPi^y[vax`xQkMgOidzd\{`yMiZs[yTsbfUtiZvTr\vd|jb~dhqliXr\xkhh`\{ia|khfn^wdb_}gdi_|lfkqhigdcYweYv`}_}dk`{`[|]zfd~_~egl\|gqtkXw[y{vkpvejaY}[{k{mklcoorecka~WrXs^zml^z\wjjgnjmodYvkynbdafk_~jc_~rhjifwvgpndgfnulfmgcftgiihlXoIbQl^xjd}faUndgjh`zcg[wflg~ax^z]|hlYyZwSqa~uaMoepskZwZrawZuiiZu`osb{Ur`z_yXqNiGeXr`zb?VuMd[lUlUjPaL`@QmNa|C[vAYvBZuI_~SoSqPh^vXt\vYuYuZxd}ThBWuKdLfa}gUmRk`xTpWhXsOljhbzc|eyRjVoD_Yx[wgilTm[uqmkfzViBVtNg[uQec}^bvk|qvw|z|xztssutYvZssiJ_}BWsNgRojh}]veYuKdMaThd{fNlSn[tMhCZ{LcSpMjIfJa}CWvQb\tWpRmNiWqXq[uOnLgUmOh@WsQhb|ZtE`RjkNhg~hZuRrPmMhSp]te~QkIb~Pi]xG_zD\yKeVnVo_yYsTo_xRlTq_}kci\tGcZs^za{f}ljb|^yYyif`}a|ici`{klelficXukjd\zch[xcb]zUs`\|keYvRqkpe`{gb|Ni[wb~_{ecie~_}]zc~ql_{]yh{_}b|c~gmm]|honvqbtrb^{kdca\{ebqrciozlWu]|hgckhdu^|`okZyjhgnbgjkgkj]|a|jpllotpyplqegq}kmrtp~srrsjl`yRkZsqWrSqhjafhloc~iid^zhjeVq]zd\|_}VtWs\zdb[xeys^{hc}h~hef]{_}ipodj\wYsHb>VsXqaySmHcQiHcZt\sPgUtPjVtLfwuaYxroggrqlmi|bv`ySsgqfe}XrUosa}XxzjPfHe`yP`3A_4VtEYz^rWnCa|XwUoZuToQkXrA\zF^|ZrRhLjs_gvoe{OeLb[qMjSsSqhZt[uOj]vzSpd{`vQgDXv;MjXpGcbm^}m}~psozemsʼnayTpf|bzOgUsZ|ihWqA\zC`zSrVtPgWq[yqq\yYtYqYpUqNmZtZrSjNhKjOkOgUoTm>Xr?XvMiVoXtC_}KcWr\yMhI`ZqNgA^zXsYqWsZvZr^vc}YoNeRog^zTmJdGa~NhYqma|YpYqHeJc[sUoVoVrSnYv[qYx_}ng\xKiYu_zeqnc[xhox]}_|`|e_y]x_}rl]{ih^{_za|e~\wXssf]zb{]vWu]}f`vjd[yhga|a|hVqZvdgda~^{effZzdfmkdg`afbafjn[zSr`bpcesu_]zpxuohd_~mnqnZ{evqf~libke`yiefidkqqchqsjihoolba}musmjcol`uocomf]z]zjojnelsp]|Vse~nVqcgJd^vtf\zjf]zkkeueQr\{jlbxIc]x\|\xUoEgRqbe]zfivtbUnOldhTr^zncdigha_}NdH]D[y=Uq9NkE_{axa|iiSpSlQhNh8Mh7IfVog~^xdfYve|PdTnla|jZnYmizZqOnFZvRjD\zGaJeUqVpYseb|NgPkUoa}d[wBYxg}Ph5D`9Ea,9R->TDWrb}y{Of]nRi?WuczZvB[xKeWqRlNf`{VqJd>VtC\{Xlk[uDTqT]}FWs9Ojbyndvmuvw`wgzNb9MkJ^}ThWoNlOn_{gWuGcgh^tgg`}MkSkYsZsaz^ze|`y_zWoH_~Md>StNh\wu`}Rlimja{YtTqQpɩўw‚Lce~n^zczqQf\wjZuRhsmhyNc5Dc*5N;KeFZvbza_}Yxj[q_yB^xdiRl}DYv2A^TlNbOgWoWoTlKdnXpRm^vOfCYwD[zQuvs{{]tIbKcAWwIeDbZuc}\wc{OiVqfow\rbvK_~L_|ReJaVs`^|^|{{|uyqiupq^tB`{Ef~EcSmWpUoE_}`|q`zWtawGdC_|\wgQoGdSpYwdnrQmPjYtMh;QnUo\va{FeZtUp\tpd}Mh>ZtC\wSkToIiYt^x]xZrLg[yNlLf[uYs^w]w`z`{MgQpOl]yh[sJd@[wOif_zXp]xa{d}a}a}OjTn\sawXta~RoXrTn_zadSs`lnip_yhqnichcc[vYwjnpUthiWsnh\|[w[vehZw`{c]za{]xgn_zghk`}Xu`}hklpefXxXsc}a\|ha|_}fcmrbprm\xjc[|]|qiYwexzfgovwogjikonhps]{eufbohgqi`}[y]ziqd}[zgj\{hhc[ya{YvZ{[yjikjhjqiihlhroeYsa}c}m[yYs]v[tqa|]vXrVtYukPkG_~Nfj_vIdhc|Xubi_}[z`z[rFdKj\zayc|Ys]sPeKfYqZsUtlj`bxto`|RpUqdWuTrrm_ia{TriyoSlShBUtHYx3D`=OlF_|Yu]z_|ToD\}ToGb?VuCRr>Im2>\1?Z:Mj=VpKbE]}Yp[xOj]zsqPj:Nl]y}xXqSg^q[qLi3B\0@Y8QhzuqYoF_~XpTjE]}=SqD[xTkPnUrSmXqLeKaF\yE`|I_|OgK_{1A[Ohp|naykl|qZtc{^wNbOa;MhBRn[u[xMh[ybOhidA]z[xd\rQnd}_zlayMkPp_zWqZuNgQhH_~AXxRl]zWsPo\yhoe~ZvHfA[ztȇrk_vhozplSguu]rSgjyosguHWw3D`+7P)5L9LiWmQmb}a~VqZmZpQmmfh|g{[sO`?OmDVqSpVoRiLfRo^uPeVlYrYmSj]tBRm7JdF_yw}}tkofvqxWq[u{p.8V?IjXp[w@YvVthRmXrXt\xh[sTn[xWuSok[u[rf}\wKfTmZtSoRjXmSkQmOlZvXuQnXviqa~ZoGc^}{Wnob{IeYuyiy_u}i~kYoQc3?[(/IN[tRcJecxLkc}ezJbPkr~bzJadwev6FeKj@UqGa}SkJgYr[lPfpiQfF[yRkfpdktRh@VvVnEbC`}\vgfdXrZtjlj`{WkWh]p:RlRqL^{=Oj/=WVkYkF_^|Wt\vgavcudmgXr[o;NnO^}8Gg6HdK\}\uKhZk`se~GeH`}SfbvKa:OlQjdlfjLfJcSlHfQjYqTsgZsQnKicfkj[m>QtCYwunfYjUjkejēs}ld}OiG^}Jb~^z_yIbTnXtWt_zNnQmd{`}VsHcTn?UtIdXyQm]vKlXo]uKiB_{TrhcSpWpXqTnQnRnUpTpOnQoe}hXsczIc;RnJca}^}TpYr`{`yfMkLiWsWpbzdgcYs\xp`vWpJfVqm{hYs`zYsOma~nc|gf_y\xYtdZwYvmrqhhikecghjboa}b}d}b~TqQn\yUtgye_c\yc{ca`{iocVugt^{_|tfe`knTtigggb}j\z\zUs`}^yZtZyhngkcaopa`sa~[ypsjuvmsskjddunbqsb~ja[vZxb}h]|]xazUs[y_|b~gYsNe]v[vRlRkTnVpRkLfVta}Zt]uWp_vXs^}ZtLg^tRl[sYsb]xNiRnje`yQgYrnfikb{mXtUod}d~\v`xeWs]vg`|WqKcVpPiXq\uG`IcKgLgSkRfXmHcRkRkPfVmLiPl@VtFZ{@Ut=SpH_|BXvPk`~ayH_>TtD^}]ynimwhq{scmkcgZztYsWtvnd}WpIhXq@XuD]zSmWsof\vQjKdLdCXvI_}TtNdVxlia{XuRnTmLg>Mo>NkNm0UtUm^w]xdRne~jiczHbZwQqh~wRjSmdmedvonnng|obufxmZnVtMeLa};Mm?TuVrQm^|UuUsWx\|{sdgnokqo]yWvcpdQmZt\wWuIcAYxUlXvlnc~VsQlJ`I^K_9LjJb}@ZvOjuRiVmSoKhSp[oUnHaRhRjXqF_|NfAUsHVt0@Z-;T2D^Nc{u`xbik[vIcNbPeH]zNd@Xx[rjIaK_~SbQiRlYq^sN_|/=W:Pliv}xq]wb|}xf\twphz[mLg^}]yZwkkf~YxjPjOhSq_|]t_vRoHgcm]z\x_zf}VpJgJdG_}G]xH^}_wrfSr\}klYwG^}Rlsked|[rVlkic|pf~fp{mwme~n_rP_~VkH]wSgXog{cymndv\sSmYtgio`z]tK\}N]}DTp;OkMa~d}PiWnbvIdFbzOhLdOg=Wq:Qm@YtNg{\x_v]sUnH`LcA[yXsd~XuauMeMnfNhZt^y[p@XxQisXiH^~hm`}`~t}vazQoQm_wb}RkQk[w_}hVuQq]zBZyLcNeRnc~c}HcE\zC[|\xPpFcVoJePkWtOm]yRlWqRqSrb~^w[x^vZpE_z?]tUmQfMeF_{Up_{bzUp_vYwUrXrEbRn]uZuPpei]z[vYt\sd~gSti}kmo^x]wu]y_y^|^{d|`{^}ph`gXvnjhgmqkbhp]Vtaic}\yakgYt_{UrVv\{Tp`{_~_|hfhlfhe]xjybalc^zl``~nm^|ay]xLh`zc}Yxnf]xc~msgkdiikviqxtmquplrloqvwooZy^|fa~jrWwYwd~Zz]}TrPlWrVtXtMde}c~Zs\ySo\s\vXrZsb}bzUoVva~hb|UrWmTjOia{UpTpXsWqdgcxf}YwTph}ii]ub{Rp\vXo`yfgc{Jcija{]ub|oqm^zazQmQm`zb}az_}[vYu_{bc|G`KbSlg{c{H`Vq\uPhXnUlXqSkPfBY{^{[s=TrH]LcOiEZ}G\}F^~C[|NkMkIdNl^{LlZzecawvfnia{TpcjZwWpXuYz]vOcN`Fa_yvjbz\rOjToKb>Qp/?X?Ss?Wua|WnOgWrJ`QkNd_sGcQjXrNhHeNbAZsDXuIWy3C_'2I)7M0BZ5GcPkhid}h~dvL`RiTiG[|NgRiOeLc_u\rI^|TmYpSf:Lk3A\L`{iyrt\zXvjZuWo[ule|_wQnNgb}u`~Xq]xiYslYve[{VtRnOj^yhbz^{\{b}XqVoMgAZv=Op=NlUnUqc|i[w^|`a|SkWokup~l^sd{Rjol`{[tUoVp]wTpRqb|bvZqqbzDZwFXw3@^Oc~Pg^u~kndw`{OhKegfee[q_r=OrI]yHWvXlPjbw[sSmWmG`{C]|PfWqB\{EZxD\yFc_|azJdcxQiOhUlQkWvYwXp]yWoPfSrkZt[tMfLjHZzITvbpg}Yys`~_ztuYp^yFcXpSpQra_zTqc\xb|`{ZqTmOiA[yKeXqc}VnKdC\zRkd~XtEbIeZrOmIhRm]zWuVs^ya}WtOj_yUsKeSkEZwNd[xQsVtWqZwe~a{Qnb~FcNmSn]uQq[vg_}XuZub|`z]{Xw\xhwqr`zWrWri{i^ykb|ca}d|f`~ecbpojgllekk^_}Yy]yiiZx_lmVtUqkd`}hNlPka|]zhmrnl`zgqjd_}`~k`Tr`}svbkjXva{hjora}uojjmkfm|tw`ooquvlxqqllj\yb^~kdTskk[yPofcOkKeUsYvVrYs`yc]ua{YvEbWtb{e~Wr[tZtcQp\xihlRjSoRoQmg[vPj^|e^zjb{WnRjibzYq^x[vhSk`ynipVoXq`wc}ng_vf\ynlh\x[tayb}Qpge[vSqZsYsZtUo\v^x_vYsRnGbMgEbQmYrTkF^}G`Tn[pXoKdG_axTl@XwYqHa?WuIcIaBXu=WqLiNjYwRpakotnef]|\yejTsVue|_wC]}Ic^uYvVqayd~b|Ga=UrE[wDStCYw@YwZtf~YpRiToXoKbYs[uOiTnQkXnF]|G]yK]~?On7D_-9T/Jd0?YRihdmrh[uQiTiK]{PeUlJfHeJeSkf~Ne_xh}M\x9HbO`{cnwtaMlmroz_y^tNfLf]uToHdf}MeWql`|bhSp_xXvF]}Pdd^}NiPleoi`z`~`zPjc~bzYqD^}8IhBVvIfWqosf~Zw\zd\q^vc}grk~Nca|Pn]w[rLg]w[uVs`yxrc|qf~^tZqKdEZsK\xTi\ztn]uYqXtLgWqd`]ziVj0;YL_~]q@[wXv[xQhZoVoE]}E]zIdRhTrCWuE\~PkLeD^}JaIaUpMgK`{WoHfZqUlNfOeEXzHYzM[}1>[1@[3MlQmZxgoYpc}bxIa~Soe_|gbxZne~=RqOnGXwEQrAPn6Je;TnSpiibz[wUqE^zH\yQfOgF\DU{TkWrWrQiVoZtcx[lRfj~}bh\t`rqUrUlUd6GcCUtcxWqSmQmSo^wTqMik\xlpXpNjUsa|Yw^x_|_zmSqRqYteQmVq]wXmE\}XpYsQk{eTq`~]w\tayOfVoju}{mf`zjVp_wYqToGbSnZuJb{B]vzsWlezj{^l9GeAToRm[xWq]pWnmA[yLd[sNketr^xG_{DVtBPoK`LfOmWp[uTpMb=SrWrMfBYwNfNd_yezSh_~fmI`?TuBVuKbQmXwVpNd[yhWoNlmlF]~E_}TlwiwOWwOhkq\sOl]{RoNjXrZzjj^|c~`{RpSofh]ue~RpNfH`~IdWpHdMkYv]wJeHdSl_yUqNgPkUs]zToTp_yOfJb}JdXrUkOfUmb|OjUl`z[yOoTrdi^|a~XuXrb}c\vZsgOkb|ohiVtYwa{eb~`~[xb}dfgjg\{_}fidlme`~dk^}bgokgjenrebb`~^|f]{`lkgaj`}eetuZz\ykkhnji\|TrYve_}qpmha}mpsijtrpkttwnq|pksorogl\{bulYwigdan|sh`wYu`zPj\wrja~f`z[vZw`{a}_}kophhnSpSr[x]{]|XxYw`}\xb|Upc}Ys]xRn\yija|c{XsWu\sf~ad~ldztc{Ys`z_zZud|h`}Wtb|gihc|`xulmm`zb~^{c~feklc}b~Zwbzb}[w_xh[vKfVrRjFa^z^zMi>Wt[sZwJ`RoD_}?Vt?WvPc^tLlRnUm]weYtC`|TkNhUqAXvVt?RvKcDbKjPjimjtnoh`~cp{ohQqRo[rBXz;Nn?VsAVvEUwFZuYpOaG]{D\|JbXqXrWoOeTkLgOfGbBZxLeUi^uc{OeI_~NeRdDRo5A^/=X9Oj_|zvnhQlNiWkUtb}Lfk@Ww9JjBZzSqPjc|[{PhRo\v^rgqk]u>SsIb~gw:Ml@XwhayTnIgZwd]yVuca{Wt`eNdA[zKefb~UqRnWnVpHaKfQoa|cLjWs]uA[yJd^xd|^wMjLjVtKhQm^yMiIdE\{PgXsUr_yZsMg[v_~Tu_{`yWsTqUs]yd|dXySrgyZuGca|_~gpb|_|\wlmef^zYw`~jl\|\zclfqnegha\{blgdejfohe`cbcgflgioeiphgdj`gwlcile\yYxkffhhtnnphrhclwpfcweqvnowmdcdc_zjhoia{ZxjidbbZsyoVnUpc}[{b~hra}c}j]yWtZy]{krbZvjm^|`v`x_|Wveac^xc~`x^y^y_~UsWtZue`}]{[wbzXqa|g~]uRrQmgjyfYs]zd`}h\se}j]{gywjre\{a}lheeZwc}kjb|e_yb}[v`{[wRkRoTnRiGcLiZq]wIgIfZr_yTqGbVtQkAXxKa~IcHc[vMhGa~dyTo@YwJeH\zf~JhLgSkRmPiM_}DTp9Eb.SrL^XrGi@\xXuiIdjb{OgWpRoIgUqTqc{VpYu[sQkQoaZwe\s=SrF^yUob|j\udb~ea}YvaxUnNlmwp~\td~wfPjWqZu_tNgKiVlNiDa~alkn>Ol1;TAD\M]wxj^z]wg|awYsTmSqbwfzJ]CYxQbKZy?QpAYvQkcyLe@YwObK^~?WvD]{OhI`Mb=Uq>VsTmZue}^|Li]qPc>SsQjzHeKgNl~dxD^|Uqhfd|=Sr7JgmIbEYzVd_wSmQm\xi`a~c\xa~`d]uRkQjPk`}eQnMf\vZtUqHfPlb}QmD_}IccWrF`~Ne]u_|KhOlUqYvWuIgHgJaIaVqSqNjhi\xMlOmc}^zUpWu\xazbcUucXs_zhZtUpPmRlovba}b|jihg`{a~c~hajkubllhjffbmda^}be`ihjka~`}hk`|iohkpeiomcaecuufxgg]xmkgd~_{ipeomfgnolmhiputgxsgemldb~egfa~ZwdubRo_{jcSpPoa|kkYv]weWwpltuna}b~_{hjcbpnkleic}d^zWq\{cheb|eZz^|_{eZt_y`~^{kk_y_|gb{Zw]v`|Ytiylod^{ti`zihVuhvlihjjh_{dkgc|hdb~n[v[x^z_|]xfcUr\u[yOkSjVqaSnXsZvb}SlOcWjouQhVkUnRoSjNgFb}JbC]|Ifjc{BYx@ZvQkOh^td}?Xu=TrIbMdF^~IbKc~Zq\y`ze_|Rtda|oo\xWpSoNg:Ll;Mn4AaFQsK^{PgJ_FXwAVtNe\wKhKe\pNfOiIcKcVmMf`zXrWqUkJ`HcLa~:Fd1@[6IeD`{jtzg[vZtNbOeRkVkTkNdXjXmSmXrc~PhPiTmQinuspp_ya~yzmhj~`oxL`|Sj[l7DcL^|CZyBZvYtZwWsb|\v^wc{[uToQjb}`xXs]zUmWp_z_wXqb{_vOkMfSj_xjSpJgfWta}k^xZtLfYqvvlXt`za{[ufauSiPgQiUkCXxYu[x[tleVc|3>[5IcLe[|q^vVn[sXpPirzLch~dwHVr@Jc1>\FXzWmIebzXmMbLcA\yIaF[~D[zKcUoMe]u^vKilfAWyEZ\rUoB]{Jdc}qWrXuMeLf_w_vRlOi:MlNfsdyN]az[rWqQm]wWw]|bc^{jkb_wYqVoA[x\vbRm[u[uZx[wEa~Qm\sWqToRqVsXtQiMdHf]zYtNkRmUqOmIiXpPlJfHa|Pk_ykZvPm\w^xUo]xh_{f~Wv^\x_zfb}fdjWtTjYoivhhb~_|eo`|deYwa|hhed^{gekeihif]y[xlebZykol]|_~lhxb_}hbohcdrse^~hllnrknlplgprjidesmiskopfjwqllmq_]}jqsnZybkjfjfdUtb|iTm]x\zRpWvcckm^{_xkZyow_{gmgkhd_{c{ghohcd}[wfTt`|ada{VuXta{fpc}Tra{ii_|hc}`x_wk\wYpUkifug]vwn^zc{_u_}i\ta~ogkqj\y_|giko]|^}llii_~epa}Zy`}a}aza{Mhn_zQoMgQjczmZqIgogmg}D[y_tZq[sF[|H^~TlkVpNgMfZvRmQfUmC[|AZyMhSn?Xu;Pn5IbH^zE_{?[vQmk{vdjlkak`|\yKiFa@WwO^~?Ll:Ig@UqNcM]|N^ATuBZxFa{Uq\sBZyZkVnSmOcSgTmXq[p]pQfNfZsQ_5?[6C^5HcF^xoy]zEaH`TlRoPg]uKeF^~WlYo`zf~b}TnNiUmLcet}xllszpootHZu\rbm[hIVwK]{UkE_~Wrg[wLg`z^tQjXrXqQlQkKgFad}]vWr^z\sTl]{^{QhG^}KbmnMjPntrkbgd~Pjylc{f~`zikYr^t_tTmRi]rLdZqRm]{ovlUdJTp1;VMb}Xy]x\v_z^wVnYqGeʬYuPc`l8H_?MlL^VtVn_yt`}Po_wXqG]}:OlGaWooC^wGefcw]sQhOeh^wao8JhVrwul^xZrXr^sYv\|d]}c~deWze|c}^yH`@WwB[xRi_y\zNmRn[zWsZrYtRpXvJfEcZvZxDbOge}`{LiMkPlYpRoDbRjRgLd_{gZtXvfeRmSmUrXvZyTsQo]y]ximkRpDded{QoXtdeifd~^}ggdea{je`|c~d}lpZyZvkcr\kudmc}\|gYy^~nifdnrdcgncgjqjldffajdijtuuovoihlwqnorgg|vbhlkjgiZzdd`tgkhiha|cZ{Wr`um[q[thkZufcrnb\z^|Srhjgkog~flie|ayb~sndjkf]zgf`{]|mna|c{^xVvdme[xec{kk^|d~hhSo_yXrNiaxdempsgf_{dzmgd|jmplu_|Zwcogi]yUofq\y\ygd~b}\|Zwa|[uWsib|c~YyMl]w[tUo`zQsXtoZwZrp[s[uKeLc>UsQfTmLbMe[u_|Kj[s]rKc^uKj\uE_D]|ObF[yVmRi=Tp?WuQjXquoqvii_}e}\wSnKhTm>Qs>MmBTt9MfMa~PeK_~DXv9LkWoIe?VvK`}UjIcJdI^|WlOgJb|VpNi]u`vWlFYu4C]1?[4FaQieohTmZqf}iSmNh]tRjLdSiE\yVlVtuNhPfZpShUrkzvfrmkqcfiyj}^o}h|RfM_{?RqM`IdVv\za{SpPgYnLfIg\tMeOmWt^Vq_z[x[tUn]uPmRn_w?SuJd]sbyVs_xmjceu]xGeis|sr[oVsehXrZs^wUlJdF[wPfQnUq_xSnUse|j{FPl)0LWilZth`}XqTnMg[zZ{fufxQcL`HZu?Mm;Ij;SnOiRlDY}?TuMdF`}MeCVyFZzBXu>UsFaVsqd|hs]sBY{Ib_xMf?VuQlb}hczQiYrVqh`vBWv>VtG\wla|_\s\r\wfa}Zti]{tnTm_xbeGaIf@Zx@Uu[ta}JgSo`}\x\wUsWtVrWtLjGeTr\yUp@ZwC\xUoNjJeXte{Tm_|WqF^|D^y\x[x^}bh[wVp[xWrYvYwUsRmTokgcLfKgTqr`[v[sRmgjjfcgnegjeffkjc~^|jgdtkbdjaYtis`Wvcej`heiivebfcibhunccvjike}uhmhmprrivmjij{vb]zZxepngj\z[xhhii_}gTpbYv[sfug]zfe~llj_}cgpqXwWtb|mhoqi]{koipZz\zgnifrYw_~ge`~ddjk]x\{\vmd~Yy[vggnYtoqaxc}VuUtQmbz^vYrc}cesreimhfjqmcrd`}\zb}g_{[v\vg[uNk[|h^zZtXuRqc~gcWq]w^{aSqha{Oja}adYrSmXoks`zYsNhJcRnJe=Tr:OlKdVqJd_xWrOl_y[sPgXr`{H`~G^zUlD\yG_|G]}NkTtega}jSkWn?UvJdWpD^{_wYtSlVp[wB^{Ldg}t`|:Pmgxb}[yZtmkZzd~]xrkkbXqUpZw^y^{UrJdB[xLfF_~YuZyb~WqSmTu^{OkPlZuGePl[uTqYv?Yu=TqG`}UpGiXu`x[yWt]wPkJeYu[xYx_|^zgp_wUt[zWrRlc~l_|[wi~fZvdifc{]wb}cbrlekicddj_}efYv`}c~qd]|jkjXzeqntdd]{]zjhm_}^|kp{mged~licemknpa~waqxgectrnojxshhforhg\y_~doqrc_zgod^z^zd~gcZvd|b|gndnmYv^~ddWujsvbf^zgidohe_}hljoSrZuXrb~cg`{Vu_}Upcq\xa|l\zc_y_wgc]xke]wVqjka{e~h^u^|`zh]wZwca|jouricnlik^|a~]za~dc~YtOl]xbeQkQm\yb|ij`}ui^{_{`yLefa}liVraw`u]w_yUo^ygjqf~lPlOiTnLjPiG]z>TsD_zOgb{OlNk\w]sQfUr]{OhE^|VmAYyC[zVhKdC[u6Ge9Nk>WrWuYxhtuwr`XxWsSnMd@Ts@PqDStGUtDXsCWuIZzBToBUtF\wXq^vOgWfTaF]x\yeyHb~RnWnNeZs]xHaCUsBOk;Je2A]EWr`xx}jRjawRlQkQiRkb{PiG\}AYwJeWn[rYu\uMbAWvNk^yvouiu]}TscizoNglL_FYw7JfAYuD_}Le]}d@Yw\t\tJeWqJb[sZsRpSrUtdc~azVtRka|\|[tE\{QhWqHa}Zs`}_}^z]ykZva|_pp[rayZuTpf\xOj`u[uIc@Zw[xVpOka}WuKf[nHXr2@V3F_]tYu]tOgPlXrJdMgLlpqKe?XvFVt2C]5CcBTuVmJbRjPgA\zRqMeVk;OnCWtKa>UrTl^z]x^yvWnIaCY|E]}UmYq\xiTqB\{c}d|j\xnWiXpKjXudla}^zefmg]{OmUriVtUrWqXrPnWpSjFa~Ki]ydz^xYyRp`}d}XqNkUpa|NkMnWrPgC\xF_yIfC]yTlPn\wYueXr`s^{Pkh~cgon]{\|Vo[trp\wYsmmld^|owd~b|k^|ihjmcbd\vf``{_}bkd]zbZw^zes^clmckltklb~`kmeciu{pme_}pkgsqmtsxwpukplgxuduyxkfjhglm}mdddbk`|eg^|]}_|dsgiln\vXurrkjhYx_yb}fgclrqin`dmfgehjjec~Tqeib}[uge[yXtb}cm[v]uaghh^{gcj]|gqnXvhfein`}f|qcamshntlpltdjrv_z_zlf]x^wqleZvWl^u\x[y_{ejPn`{fb~baxjmcf^y_yg_zfsgefUnIe[sauTo`yNeC\|Je[r[tMhIeYu_vNiSoC_}A\y`WoHaWlUoE`}TiQkLhF`|Kedjhoommh_yF_HbC^|AWw5BaIZvHXyFZ{BWtHZ{9KhK_~`xIeQfavQkUoasJc}XoZpIePjVnRn]wMa6Fc;Ec>If7LfWrw|awRkPme~YsNgSm\u\vVjL_Vnk]zYrI`F`~Ohe~j`d|mk|rt`Qj_vln]xZuvVl;Pn:Ml=Nk?QlPkOmMgaxUmD[zSmXscxRlOlUu]{\v`|RmMmWrVrOnGdayUk@Sw\pb{pjmhjtOjQnqywjq^tTqb|[stXnIeVqQiZuTmMhdWpIg`ys.;VVpIcVtKgLfWvkl]|Ie[p[x\y]{ncZxlgbZxRmb}pa|kffe`}`rlaWwfYxhjkff\|Xulgfic_}Zyfa}adnjhhdgojmd]}]{jpe_~amsoud]{vdknpwrpiwqgnskvsuxqkrk\yajgrlk\|i[wYuc}k`~Gc[yfvi]zhqmdgpqiua\uXukpepoppqb~a}psgfnocjhafsh`|kmjSo\wa{moa~a~ffb~c|jof_yfolkjlXvd~n^z_zpmikik`|a|kq|{hmdkrgb{kljiqo_{f~YoQpf^z]xfeYvd_{dVrUqZpekeXs]wslc`}cWso^{QnTn[q`wXwdyQoGgIbNdI\~Wm^xLk\w[uF]xKcXwrMib|TnD_~XogXsI_BVuHa}Ok\y_ydtwugPpKeJhKh:Mm?Nm>MkGVuK_~J`FZ{>StG^{HdQk^zRlPkZqRlNg]tbzTnRiMf]xVpPc3D_.=T;Li8KhAZvZupg}o_|UoRh>Usc}dwRiBYyF_WpUqVoMiOiOeH_Nnbdmgdqmv{d{Zv]|njb~fRmTnLb8MhNoIaOdUn]zUqQmPkVnMgTo]yYu_x_z[vXqXpWoZsVrb{[vQjRfTkE`}jvc{Zt^|sayKc\{sd~ji_x^uptMiRnax]xE]{UoRlRlOgdz[pB[{FUu2>W@UjUmOgXnWmThMhIeE^|Nh=Trrjd{Of>Rt=LmDTt>TqVsTpD^F_IaPgXoC[|?SuNbCVu;Pn@Us=UrJjzo[rc{nUgGY~KaHa~Xv]xYtZsB[zSoVmq\sIdKdYyQp_efg`}dhXrZuMkRkijOiOjSmWqdpRoIePlSoWp]zbZzSs\yUtUo`{KgIdNjRlSkOg:NmWoXsToUub}j[yYtb|^zUqa}[ySr_|l_}]|PnUogtiilqgb^wtdda}`fjcji`Zv_yekkfhcYvda~dgdjj^hm`}gkre[ygdkia^}crimuaqxomswju}olzwtvruoc_mm]|jrcdrrzohuca|UpZu`z`wbzklpha~ixlbelq`h\v_|djvtdnnldnulhih\xfr`^|hfajlkfhQmPk`{g_{Wucbecqf_|b}`~ujc\wd}Yugjnoedijqnhyq]}jbhuup[ygm_{jua~b}]wOjmpVp[xXq^yogToa~h\uTpVs[x^xQnb}dWt[x\x]yik\v]x^{VvXwdydVwMhJbLaA[yC]yHea{^wE\yA[zD\zSlZvb~h\rVqRmAYxF^{YrJb=VqF^~PmVqOhEbYwyjZvSmMhMaCWu9OkCTtK^~Um>TrI\~@TsBYxXtSnNhKiiSmNgnf`{Yq_yKfa|e}H]}DTp7Fc@Hf;Hb5Ia^xysoRlRkQiUnMa[qSjE]{Z4E\M`wVlXrWqVjYrHe_yC]{G]|Xn]yYrfG^CWzIXy9KkTsC^ztjeN`RhKbNeZsQn[ypRnVrMcd}_uRjJg_}Nm^{biqeb`Qld`~VqRmQoZt[tWqLk@\wj^QpKjJdayQpVuYw\|`~\y[wJgGeF`}UpF`~KeWoHa~@YxYq]yZxPmZwZt_{k_~c~b|WvYxec~Yy[y`|c~ghfujidcfkqigf_}nfgpiXyb}b]zfnSra}q^{`{Uqagjlda~nh^|bhl_~^|lmZxjg`_~rjrnhnprnkrsw{lxrqsolfenbmemgadcdlvrfkka~]y`~e]|pm^|eqtmemic~ionv{_|hbfh]gdjnidgom\|b~b~ocgllbbdnqg[xOjVr_ydhZz\yadfimtjhhtjmgbfmnxigq|lqwxiiprsmakrmicguqa~ali\x`|nm[vOjjnikilVrQn[v_z^}YuPiQp`zh_yVsZt[vqtigOfSraTsKiQjLlHdRkPiWoTo>VsG[yCWu:PmUoln_{ToKaQfdVtLeXnA]zXq[qGa~C^yQmsulkLhKbHcF`KaBYxC[uSfDXzRcL_D_}LhTlEbSqg]u^x`|Rl\vbzSoHe^xg}QdEVt>Jg3?W=F`:MeTlgqpda|XrOg>SpC[xShJ\}_|^zJbGc`|kRi=UpMjrdYtVpd}iiwsodSnZtnn_|VqdiMeBUu6Ed1?\EXwJbLk]wB[zD_VqSlNgFc~\tTnGfQp`Xt]uGgSn[vp}_xcwM_~YqVrelti^yg|cyFa}d}reVqZxjd|Xs`z^vLdMgNjUne}AYxRlWqJdKc[nFUu:Ie1BZTlUnUiOgNlNgQkTlTkB[{SmagPiM`K[~5DcJWtDZwE]yJ_QgJbF`B]{I_~FY|DZwCZxIW}DVx6Gd6NeKi^}Iha{KcQe^sI`HeZxPmSp\zVnSjkTnSl^xXtda[{emr\yLhhhbUqGbXrRjYuUsOkNf\wggXpTjFdUs\wZuSo^~WtUtRoH^|SjNkBZxTnb~KiNfVqPq^zQoXtTsYxecfUrWtq]{SsUq\wb}j_|kkjthfkllea|b|a~dk^|Nngcjh\zb|k_~`~mbfwjkc|melreljin`}tpk]{\{qpidciyvjkmophsurtx|umfjfqwrkjta}`g^yUudgkdhf}bVufgb|lhhyxnfjtfjrynhb|eWtghlqj[ukklnunrdaeljhlfprnitfa|\v\xjm_{knlg_}oup^}_|rsmmgdmlrpq{sftyejrs{oh`{cxrVu_ymmib}prb_zd}ofZxa}_|g~fWsamhe}Qiea|IbXugk_{Rma{RnD_~b}ekg\zSq^|e]{SoXpPhH_~C\|QqXqKbXlH\{>VsZriZrb|`{a{_}XsWr\u=Ur>ToWnSkGa}@[wE]{`w~v[w^uWtZqXpKeE\yCYwF[zJ\|EXy?Vs=TqOcVuNh^u[vJd\u]uRlUq[vAYyUl`wNfZuNe2C^4>[1?VBUqD^{emjimSkYo?XvRn@VsYrSm[vSnWnOiVkAZwSoSpGeMiD`~c~VqOkGaTmfpgti~\rZwcTqe~h\we~ayYqKb`{ysc|c~ha|fjIeMif\vpIcOhMiTmHcXpSg9Jk0OpIYuO`~G\xK_PhKa@ZvG]{JcE]~@TtDYx?Vt6Ie:NmF`~hYsjWi[lAYyC]zVnLgIhFeQii^y`|b{SlVrTqoafdlYsKeWu_{^zWtJdNg\u[w[x[ve|XrQmTpkkUtHd[s\wWrSr]{QnYs[sRjMfHfa|hLf\sWsKhd\x[wVuSpZuZxfa~d}e~[xZyYuYt[x_~a}a[}lksmgkdhm_}vhmbYvazik_~_|ldinabg~r`a{jrjkilmjtgmceg_gzlfoarydkluuqrfor{w{qd`ipe{ma~pi`~bhfYw`|_{ifnYy{l\ymfa}fdgipvqsrkol`domndnairpd^zdqqd~swj`meji`lnhgl}oiacfggfmqldmvpi]zhpijc`|kghicnrkkmptkkplmh]{gieehjj\wha`~d}c}^zewj]y_uaxZv[zlmh]wba_y`zXpWo]x[zdSqQlDaGibknccv`~ZuYpUnE^|IbJhKd[sgXm?VvJcJh[tXp\xXtcKeSmWpB\z@Xt?WuSleRlG[vAUsOi`}xjf`x^uWoJ`AVwAZwL^|QeDXu9MkL[G_MgYqMiSncy[qOgTmTmOeYp_wMiXv[qOaCQq3=YM\y4Fa?Sfjnsme`wE_~NeJ\z:Om?VuJbZxQn>Wtc}_{Xo:Nl=Sr_{rIdFaPkOoduyrsqnZzGdYrl@Zx]tUh6GdGY{LcId\vVn@ZvNdOiKeMfTrKhRlQoIeNleb~Yx\|cxqbz`xoMfPj]ycgTtWr]r[rOm~kfro]xTqlf}UmOlWtZsYrXoQmHaPgCZvH[{)-L%-E@Qg^xXt?UvWpMhE]}XrOjC]{Oi]{hVoG[|=QpH[}Ve9Gd:KhObCVvVlOi@VsSk\u?Wt9OkK`I[{HZ|DYvLfvxQgMbLcYtVp[sYqRkCZy^w^xUkQkNiFa}K`~H\zI`~D^{Nla}b|e~gQkOgKcCXtOa=On7IgCPrCStE]{IbMhUpa{TpQf^tZrXoRlSlJcKgOkXqRhEWt6Gc3@\,:R?Vnc~dcf`}QlUnZrBWt7JgBWuMhWtWtjj_{ezRgHdgf[uRhJb`|dhvztet}jd}WmQk`xUjJ\}ATuAVtWtGZxLdTs{whYsZqLeF[{6EeK[yGVuBQnASnK_|JbGad}`zZvUmWnfNlOh@WvNjGc|NfQiIcCYt:GdFKiDRpAXqTrkherjd}ThQe8Lh4Ha>Tse`|[ub~jf~Qi[rkmmK`CVyD`}ey{_}utvhXrD]~RhLeG^WnH^}=Pm:LjE]]zKeLdKbC[yNdG^{TqPod|UiE]}B[{ToTp^|Zxbx_|PiE\zNgd|bzSlSrbb{\uYq]yUqexjmod~^xayxToc~YsbzIcLbXoRjSmbzRiG[x6Ec*1N(2KjRgLbhmNdWnMdG_Pka~^~YyNfF\G_}CUp,5RKTu9HfPcHaAYyC\|QfRiKbH_DZz?VtEXy4Ea=Okb}pUgZoTlPkE]MdPeWp]yRpVudnidebVucfd]xeLkMgYuoZw[u`{[{hfVtWqZw^|_xTvf_xHbHbTpPlJcWk?YvHa~WkSkVpQp[{bf`|]|[{\|^|Zv\vOjJgXw[xXvTqc~j\{bkjqfkpink`cd[}dlcgh`fce^|\{a}dcmnvqvhhjlqahmrdckpuqhtxodoypjmhjt|puykea_{a~mhmUuca~fcTsai^yTtpth_|ecf`~`mnb[ykwwbwqnlnbZprqskrqphYyaurg`hw`nqnkrnknmzrsnqfbeifmtpadgj\z_z`~cjgikelpkeRk^yjkeb^ztkfn]ylrelpcZub|TqftfWsZxtkc~YrSok]yXug`|`zd~kjacatx^zhfYsXtgd_YwPjRnQoa~jc^y^yLhKgPkYxhZwTrRod~dYxb`{D^OhIfEa{KgpkdlZtNjXte~OkC_}KdQmQig}eKeC\|Vj@WqG\zK`~Ha~Gf_{oc|SpNj;Nn>Np>MmJWwDYuAVtASsDXwI`|[sYsOhZrWqXtUjSlB\{OcSgSiKcF^|BQrKWuDRoL]y:PhVq{roo_zTmTkJbFWv@VuE`Of]x]zjei\tE`crpF[~?WvYvZugoljontVoTmGdPjSlUlVjAUu=Qr?[rAWqNdNeRkDYw:QmD^|ZvnjOeTmXrOh]wXw[y]wWt`|f}UmUoXpNcYxdtYsie[vSmoyz^xhb~a|_yc{YrSnOhOgUo`{VpF`Qk\xO`).J5?UqZwYlJaJ_PeUjD`|A[yRqj^yVm?Ru6IdKZ|@Ll3?_:KkPePiVoJaSmTlQiPgWmFZ|DXuSe;Pn:SmmrMiIeRjBZ{^vYnb|UtLiFdGg\vlwtdWuSlYw]clYuQkWrffliY{a}c~be_|OoiVwLmohPkZs\wPiWmId@[wWnlXu_|\wZx\{b~mcSp^yb|]uQkRoUsRnb}[yb~g^~cmftpkjwwpblq`kazkgnekg]{f]{l^{`~linroekhkgchlkUtakmfkopwrpsmpupqngprwtnoehh^{^}fiTr_y`|iXvjprdbb{cameotnh`gdlszgkvriqoin_{ing{ngnjfhfltvoefkovovrZx\{mmdmkhdkhifgnrlfonkga|lhgfkld_yf~\u\uakme`|`xfikg``xZtoqjfa|WqZrel^zYtYrZtl]tVnZuXt\zhYue~g]z^yila}gnimeZu`{Zw_x_|Sr]z^yUrWu_w[x^{b~a{OjYseVuUreRqRp[xXv\yd~[z_zPhJfd~pa~spVpGb{D_zJ`OiSoUrDWsETr3B_8Nh]vmvyd`}QnNgWhNcC[{Pac~VtVucv[wYuZvk|yWtAWy?SvNlgxmUrQnmeVtTs\wNgNiZsQhI]7Je7D_@SoNhI`EZzQiRjRhMgUm`wrTnHc~UjVs^|^yKdeVs\ufWkQbJe]zkgngmazVlb~~po_zYujRlrvYrazXsQo\tHb?XuD[yTlZqOiMdCXxKWr)/L>VlaxOgpr\rSfE^E`C\zPijfF]QiD]=PqARqM\xUi?VvD]RlA]zD\E^@YvK`EZ{NeSi>Rr=On9Qj9PjTl^yPhWq\wWn`zZxXtD]@YxOgc{swo`NhWr[s]y^{b{PnXse^~cfb\uYuSq_yd|QoYx[y]|\xkc}RlKeLg[v\v=VrKcSmGfWs`x[yXt^x\xlh}So_|NmJd]x^}MlWoUs^yb}cjjgjo^fvxkhirgi^|f\zZxnt_}Yua`e`hgqn`iauq_|Voillfftikqhkmpwwvhjnkgqodqxefntnsc}YtYzgha|Yu_ynhazpvljsmgejmkusfrscosght}so{{g^~dnpbguzyrdezxintstqmxsXvmd]|fb_}rmtka_}pa~jiehkkfazi`ja{_{biVoUpc{Ut_{snhp_{a~d[yik\vZri|jbci`|mc|a{[zr[wPgfnc}\wXu_za|c}VsPoUt]wdre[yjnqo`yYuchg~WqUta~lPmUta|fehXsb|`}Jge`}Qp]xQmXrToOj`{tTo_yiXsSm`zZu`~^wRjRmWqlF]}RmMbbsoy\zVn^qK`@ZxTiKdToHg`|XvglYs[vlzypGZCZ}b{^~v|aLdRlfVqNjeZsRjTmGdRhGYz3B_@RnF\|JbAZyPlNj>WtIcHhPogWsSoHbWmPlSn]tfYxUsUp\vLcMhLg[veigZxWsf{ZsXsbkof~\tVq[zq_ve|cz`}WsRhJbRiXpMiWqRiH_~MbL\~.7V'/HWojl\q\sZrE\{=QoUtak\uSnmCTs,7P/RpOdOfD_D\~`wG^}PkHeKf@ZxXqfhUnWs_|XsYtbc~^w]ye~ZvXtXpgbi\vRo\y`ycOfOgomfcgrt_{TmkYrSkXsdMfF^|TkVqLdZrTk;Ll8Gd7IfH`|\xjg[zZvSiSiIcE_~ZvmVo]tJ_@Lg(0KDPnO^zFUpAUsMjVrJcAYyF^|EY{VnIeAZtA[sO`O_8Mh7JgQn9LkF`}^|hounXrbXsBX{BWuMdOgZxcSpTsVs[xWp`}kzv]tG^Fc[yn{~d~_sH\~@XwKhq\tRg_{NjOf8KiBRrFXyi}QfPgYtKeZsUpTkWq^|e_|kMiMjirb|Yt`zj\wUk[uOmWsnm\zXqeLa>Rq\w[{cwiNlb`}WqXsa{ZrXuUtKfD\zF^~MjJeLeFaHbXnAUt2=]3F`[qLfJkf\re|MhNbI^Yra{XqD]}CUtGYu:Ll;KeBNiHXvE]{Jd@XwYtTmL`ShF]{@UvNcRdJ\}L`~6Ed7DdG[xSkbzGiWv_zjjydVvSpIcUpb|dh_ZuWoTobja|b~i\{bngWtEdRp^{jWuPnc{XuSrYtZsKe[vvfYwXv_~aTrjo^~g[{\z\zJhNh]vZwXvabcfifpoccjmjclhhg\zdmpkYy^|_{gcfpkagiih[zdirgorogb~gpmmovxonlv|y{klnwslikfib|efifkkndYwc|r_~hknacruqnmpivrtdrx|oRxiqqpdivy{m{tkgnnurmnwumblnjjgbb~kbihd_z\w^z\{^}^~a~[ypr_{fnlikf`~nuldlsuofilbzea}fi`urb}ejec`}YxMkmlXrUngdWqmtb_wimdWmVo_|OkYvZxUscc~Zqa|JdSm]{ieVv[ue}IfRmLfeq\uUn\y_|Qn\yp^}hue_hZttl[xd`|ZvYwOnOlUt`zUm_{[|nxeRmfC\}Lc[xb[ze}]qOfPiLbXobzRlE`~\r`yWtMiWnc~TmHbbisWvhLeCWxL_HcVkRcOaOaG^zOcYrKcXsRjZkPfF`yRm^xQjTn]sPfL_>Pl2A]F]zE_}JentgbnSoNeTlUnKcWoOjMja~oZzQmKfRs|yVtC[|EY|Kb^{pyeuikVjRmYqNjd{QlSq\wXqOcHZ{ASqUkMcG`Mg\yRnI`^sTmA]z[wjmWrNib|a}h^~k_}Ztf}MeBXuA]zneYucj]uLfLhDaMhgccRpeiaMjTn`xVrHfQnF_GeRhI`NiXtVnK`KkFUuQeax^ybUtco|ud]}RlF]UoVtOqRoTrQoTn]w]z\z^~_|[y`~a}`~cRnQkLh\x]wJfSpTtgOlRo[sMiRq^|[|XuYwZyZxchYzPmIeOl^}_~GbB\{ZvfX{^~jvb\}mehfceibiqgrg`~hndalhbgmmbb}gsncniahustsplhwutnwx|~gs}ymqocjlnnmibe`zZxb|c~hql[ydfaooklfrpzsbibirqq{tnzwqmbjb~mlovmgrrypjet^|Tusm^}]zkifllddica}h[zhgg^|lgjnhrqilqvrnglh`}kiwlfe^yd~h_|[wd~ev}pYvczlia|d~Yvg|\udha{WsYtd}na|kiic|_x[vh`xVqi_{[xc]wd_yVpIhc{taNj]vd~\|Da~D`ig[uKiXx]wXuXxZya~uqxj]xWrgblg[ta|`z^z`{fWtToOjXudmejghgRlXugcxg^wQiXoTkKg_y}_tQjF_}RlVrUpXoHcGhfoiQpRi]lQe_sMdEY{L\~4EaO`Ys\xPiWmXn[tMeKfWnYpZv\vUkQhN`@OmVtUmm^tIcWlOc>XtJgZuQkC_{Vof[yfa^vQhHZ{?YuRmXl9NiFWuEZxOiWmWo_vZv[uWqJaMdWr_yF]~RjaxHX|7Ha7Gd@RoEZxMjkvlf]whF_8Hh;Nn@VuD^x]zgwWu^wTnB\zSmgbmOjD[|E_dokkmygC\}Ql\ua{Ztde[vDY~6Je=RqTjE]{AYv]qd}>UsRlVqVpIbWth^z`{_}^}gifcdc~VoIcE_I_TmNmWvkoRhF`|MaHgTphsgKfTq^x^xYrOiVtgNhSjMhLjPhNhXrVlTkGXy3?_6Ea9IfC\xPj?WuJcXtWq^vC\}?VuA]zQjbzd~b}BXxQeQp@Sn9NiH\}OiNdPi`yE`{OjPmOlQpVrRmSnfnhWvhkc~TmRhRb8IhE_{Zwaie~VnXmGdJeg}rbd}`|XuZxToTmVqMdQh[vSoMhGdJeZuNgPmRk9KkIWy>Ij2D]QfMhTkBVuOf_xhE]}D_BZ{Ec\zSq`|^zXmWk:Il9KiGVv>Nn>Vp>UsJdOjQlF_EZ|WtJYz@PoCTw=QnLbazivjhaxRkNlRt;NnE^|I^{_xYtUqXv\xc|@Yw[u\sCZ}MhhWu[uffwkepmecYt^uVqOkKfWtgZo;GhUtC]zHcFc^xMhD^~QlOjVkAPq3?`7Aa/:X4?\VgUmQiNeTlKcUjSjC]|;TnOgwYtQnsK_OaL]|N^}4Ba-:T>Ok]rhSqQodgdQnIiVuPkOkYu^{[wSnB`w]xdRq\{]yXwWvYyVtb|_zQlSnNhPhZwD`}?WsE^zcjLiC`}Yvn]{khf`\{Zvdh_|SlQoRn[wSlLdYt]wVtVs[{b}StWwkgk_jb_{hsbmUtZy^~c^xT{foijkk^Yyfrmejmtguzlsvv|x|vssbuxmofgffonjcjnjmeijukhcmmtqqyopuywxpes}kmiv|~vuhduvjgoyuicfffjpzrcbitqrgutqlxl_jy|\{aqcoljaWugfpohclhigny`lwopgoxpha~svoitnpmXv`|j_{HgYsfni_{luic`yhl_|idVtc_ydmknf_y^xkpTpWq_zVtQsVtnnh|gXtSrepa~_{dTsgdYu^x\vQn`}^ym_zYsgk\t]wLlUpQibxd|NjJfehPkWuje_ob|Xrt`zLidToKeXpVrWmNcNlWulrgjjUr_}qjC]}@ZwLeNa~LcXsSmPfUkd~f|:NlLac{ekg{QcPeOjKg?Pr>Ok:NlKbQhMdVoMaTlYtTlMdH`}czd}KgXnVj;On2@]GYwF`}Haj~vnko\yQkUlVsF^TmTmJaXtLhD\|>QtBPs+5P.6UCRm7L`?SoCWtVqQoH]|LcOjGbJaKe~RnWl^v\zUtUnNa;Jm8Bb8He`snQp]xi\{jsUsTqMePh^za~^yOlA]zF^_y]}^{feNmLkXuegUoWq[wYrYsA^z@ZvSne}VrToXqYz_\zfjhLkKg[x\wZyVtZt`|YvOkWpIgPkj]zQmOmYr[w_|fdfhXvgle`b}iccje`~[zXx[ydil^dg[|iwplgmnoutyxzwsxvvztmutmpg^{^}]{gtdj}tceu[zaxqogdfhowityvl^{nqtljzrropihhhmuvwxnjinjm]|m}i\zcknkdqvrmmnjkempnnglgZx]zhdmjeeiflpjl{kn}ppahit}p`i~ja~ilmmgk^{cdVo[udi]yemree}hjd~c}ode}fYuZzdga\{djfYsTro]ySpRn^xl[yb~rWrVsTqZxhk`}]y`ycePsb{Zvde}UpfYsUugjToWrZrb_yQjJcRkMjNiPmTsUri]~kc~Zxlh^|bz^yRiKd\w_z`v\sHaTnYwcevWuZtgXqLf_zQk=Tq=UrVpjQgRhVp\vWrSfK^|XoYx`zhSiNdPdVkCYyAVyEXwPea|iMcKePjMcQhHbd~PmUq`w]vG_6GeFWuOb?YuHdpyjnkfwF[}D[|Kl;KkGYw\uWtibZzixo[yIdUo^|UtUo\wNkTlZt_|Xv_|j^|XvXuegc}Zx`{[uVoMgHc]x_xOlZvlb[vd~f_~mg]xUs]{cUwXtk^}GcWrNkVpYwe\xKhXtb}\xUsTrcaalpcZzTn^zkqiiae`}fbdh`gyobeqynmhgpwuxynempqdhyuknmga~godebtsmcf_|evpqk_}glfntfoywrknlsrgmtobiogghfghqqunqrqnmjeq}mdfogriu`ooghd\zjjfdgipnb~adc`mrdpurqi\~isslgqtsvrbkfjlooieumc]{qb{RnZvazhXsWtXvvun^|Wpf~tcagUq^zeaihhj_|nfdec~c~ZtVrZw_|_|eqa|[xgdWz[whidQnXr[vlqZv\wf[v_{]zYvdla{_~If]t^vJfOkNjEaE_gVu[x_|]|c]zgsc~ZuLgGaTnf_wHcGaNgD_|Zxmedb}VsYsoLeMeH`~UmXmLcc|MgD^{e]sXmAXt9Tjc{d{VpLeI]~]tNfOg@Vu>QlRhbzXqYuE`F]yRiYoQkQjGb\r^vVpQkK`BVu7Jf6GeBZx[{lhl|OnJghB\{DUvN_Mj`{TlWtcmF^Yub[x?QvD]Ro`|Todwqhqecdm]xOjZuTnTnPkTnI^>Nm9Ji6DeH`}Vra@XwPiGdPiWnWq_xTmAZzSmZwKfYv[xVs^xVtIfNgUdAVu@ZxUqNkYqF`NlnhGdUpojhy]zJeIbWt[yJdVoWpNePgAYySiJbOkWrWpMeUkI]~BNo16W+5P3?[:Ig7HfAYwOjE\{EYyAZyC`}Sn?YvJdWjG\}Lf\sKcCXx9KkAQmZtYtXxWubemkgbVtVv]|_{XuSoVp`{MkLkZxiqcd_z\yZxYws[xRnSk[y_{TpRnRm^{g`xdzjhgcobY{Qp_xb|Wu[wvTsIgVr]{hZuYx\{j\xUsfZyTrcutdkmi`lqgcgid_~a`}dgpnlelppmtuw|tuwjifmv{qptpgdopreZzgnljhsffnjmmrfrwuga{onjpoqoqwjqtxqukhqtwog^~d{zelgous~mdnwppmioongmyqeble`}b_~k^}ntvfTsficimptldgjqvttpss{kjnjwkefsykjrfjlrj[zcaz]wcbNk`{vooekna^kpi^xdlpk]jl^|_|jqm_xPmZvWsRp_~pb|ho_yUr`}ej]~\xZt_zlpdfld|YrSqXv_dc|fimXpFc`|XrIcAZzNhLk@ZwPmNkedYvpfeSqNiPiF`|n\zXqawI`IfSlhpfhke~?UuXoE]{AWtH_NgOiFaKdSlTkc{RiE\xCWvQghQnThAWyIcWpDZ{AQoBSpFZyNgQmSoPjLaG\{Ja~`uWpC[y]rbFe]tBUs4D_@Mm>QoEa~Ifc|jfi_~SnWoNg?Wv;OnKcZwc~pUoJhOpQmWmD\~HeQiThA[yfrqlrsnc}Tq[ujbHdFbUtPl=Qo3A_?Oo>PoAWtE`~OjOkLif|g{]tSn\xPgC[}C_{Vrc}FdOjcxMiHgfbvEY{CYyL_B\yRk]w`}afSqdVoQin{ac~Tnd~IeVqPhCZ|J_SkUnMaVoPlWpC\}NkIfH`SeVb3?`?KjHRp8D]5B[H^|Ld@TuBTvJgLgFdIhQgDWxCZxZsZuId=Rq7YtKeK_~BUxXtOjZqZui^ugb|\vMdOfZrkhPj\pRlawa|LjLhfn_}ayVla2=\CRo=SrFe]zhjtwjnVsVqGb[vPnQkQmYtUhEUv1=[/8XY:FbBQlGZ{FZ{VtiSnE`IaAVt8Gh:Ji9Ok;QnKd[~bidToQl`{If:Ml>RtGaRqWuUqMkTnXxXuLb;Jn5@_IhCVtE\z>UsPhe~Rm`{`{Si]uOkMfUoaic{^u^v[xgNf@YxPrMfRnPmZzYwKjVvtmXp[qirˆ_xXodz`ygXud{XoPlUlDZ{A[yGaJbJ^MdCZyDYw?UrIaOcGUq9H`+8P=HbANoEUu@XuAXxC]{A[yKdA[yF^|Zn_wMm\zinytpgdjcWuVtXtOjavVo\zlwVtOiTo`{Xw\wh]wPmRnUq\xUpWr{]yQma}p}g`}^|dnopgVvVub~WvUpe|`z`~cee`]yc[xhja|_ce`]pfghhncimc^{]{uojtvuhcjry{w{umo|}qmollqmqrjgb[|luipqfgjfa|b}ltljqunlhrvospkzylnjllztjjspujtrpb~iamrktrqm|{ojdjlmcqinqmxsemltpklqtylvulttkp{prtztxhjmwsxytdvpvzwxupywzpkurmoyryb\{nrjfdgecebknr_dijjeinhee]zchbc]y`}_{cnme`}^zXwdldoa}RpLjZx\{cedqiXtXuhchjfb}a]|bro`|`{ToJgWoYrh[xVqpKcD_SmSnQlZrVoZuYsXoJd]wc~d^xFaYsWq_x^zRjKeYzhii`{UnTo]vga~LcSgRjJ_~AWvc~WmEZxI`}CZv[qh~M]FY|QiSoMjIbI[yHbTnOiQg]u`zOme_xJcD^}h`~OjIbVhShD\x7Hg8Ih=XrZzejf}ji^yUpJfLfRh@VwJcMh_|^{ayQpbhd|;Gn,1R7Dd9NkE_cphivnc}b}Nh[uPpRlH_[rYuF_I]UtMlwkp~TmQmSqiRmJgUnTlBZz;OnMePeH_B\{?RrJ]|G]{?Uu=Pp:Lh=Mf0:V=HgFUrBTqK]}D[zJbNfE`Ie\ngZz\xk`}cqioj_}ohTuEb|Qh}\|Hi`{fmea{[v\y`|XvQpSrfUqUqb}f}qhmkd^|njX|Y{hff]{`yiWwNmVtTs]}dmcYu\x_z^|doh`~eYweo\|fowbgjlt`|Zxb_nhg{uvplvxqffnjwuaajxncrs~ytvgffp`ukei[xnmfdkwvcdhvyspqiqqtufkmivd[}oopmkszojeijjrrh|ulztinwjltbcigroirlpjjppvukvyr{ru}usq{rrqvvurmpxz|oix|yptulmwzga}fpwehwtspipkhq`jehbenqesufnxnll^{ei^~li]}^|XwdlsgeaUu\zdmpib~cYv`|`{SsUva~^zcd~Vr_}zKkdlfpRpfsxgJiZtc{ZtOjUvNnIdTqf~XrOf[oYpSnCa}[uQpNmLiPmd}bNgBZzPmVrf}Rk@[wIdYtotc}A\zF_zawcazJa~PkLaASqLfa{[pH`BVwK`|SiSfRdVkKeTn]uVnKhMgTn^tRjOhKhPlda|XrC`}F`la}VoMgKeM_:Jh-9T:OmVs_tnoy}_{J_~UplGaEZ}HbHeZwXqOiPn\}feSb09Z6EdOeLbGadwjjqja|e}XvOjPi`wPnJfWqWs:Jl6Ac?MmNdPiAYy^wNgNiPkIfc}\sHaNkSo[zXyZx_yc|eNldVl=RpE_~LeNfFbTtUsYwb}f\zQkHd@WwPr\yh~OiRpNn_QoLdOhayRiJ`>StD]|MgOfC]z@VwNdYmFZ~7IgAJkDQn>Mg/TsCZzJcB^zTfhbVpdfufZybsp]~WuXvIiNgjpob~]x]~gp`|[t]uXxPpVts`{Vp[yTsg`~~mTr\zfufel_}YyVte|eTw[uXuPlPt\~_ie^{dXw_ye~bgfmjfbjpqnacjekhj^{aijszqyq_envpgsndaoo]{npgklmkjknllqjghfmh^{Ywhmkecfw{sxlkjfmqqqhnmgpngjqmqvsnipxvvikymb{znqqwssjnlstjn}xtntvsutuvw{plw{uswxpikwy{qunnwxriu|qjgqb_~~ldivlYxktvqhkyrocjmilmsrowjorrojpszkZ|bilhZxe]Zx_~fc[ye\ygedtjal^{WrXwccqc\zjf`jlid]zUrjlkad|^vVqJfOjTp]zfZrQdOhSmZpD]{A[wUo]{^}\sTk_ye~gPlOf[tc}]wQgI^RiVqUvn^}KeUlhc{IeC\|YoRf>WsGaKc~TpMfLbI_}C]z]u^tF\Tl]uXoWsHbHbPjTnPkD^\w`~ZsVqF_JeGa~YqYsQjQiShH[z6De@Qu>Rnvn_e|QkMiMgMdSgE\~PkSnF_WqKiTrsi~TcC\|>TsMbAYy^wpqmkfXvQmQkZuWqJjTq\uHc;Kl9Gf6Ie8LfKc~VtOlJdQoZvWvMiNfTqD`Zvca`|fs[vd|m[uQkCY|RdL_~?UuSpcJjKmYzlXqHfD\~ZrfrfNmKga{d}WtXwMhYuNeE\}QnNiAYzSkG^~;NnE^~VqFXxZ4GaK`FXzLaB^{PhUi_x\|d_|_ise[{dfrgRrPpPkZwavtgdVriea|pdVuVtXu\vqgSqIeQnkyzkjdeddf`~PoJi[yOp_e}^xTsPo]{\yXvamid_{mfgXta|chgbmpkfdefcmplfa~kpoys}o[}bntgilhqbkmrzuepovsxyokjd`~kwowtgcmVu`|egvrbltxlhkpmoryfpmknplehhixvyssvptpmnoyjfnsv{styzclusqepv}lwvz{psqr|vuuvpr{u}nnl~{zpfl|}hplsc_pj^}oy}sXt]{h`z`{gmpkgldthci]~ntvxlpokhnpdbovpd]|hmgmjieYwZvimdlj\z\zldcjnd\veVs\xedaqefe[w\xa~Xubd]{Qn`me~\w[uIdRlWrgLfLdXrWqQhBZ{A[yRjSj\uc|XsNk\vv]yNkNfUnhXr\sD\}=VrC\xLghwc~VqJcSk^ud~LgE]|H]~J]~PhZxTsGb?TuMcJcLeLbYnE]~`}TnE\~>UsC]|WpVoVtKfNiNlc~Nk?VvNf^w^xTnA\xNePcNd8Li:QkTs|nemn[wRlGcUp^uNeE`OjSmVnC`}Gb[yuy{VpBW{RlNeB\z`{pigqjiRnYrUoUpMjLdWr[zTpF^:Jl=Mm6JeF^zGgFcOoMjKgKkTpXsSm[xOk]wbd[u^~ke}[ygo~IWzDQuD[zHcKiOnNlUrSrA\zcvTf?VunYpToXyUsG_TpVufQkJdD^Vq^y@YxUnPhPhCWwPgKdF^{IhMc9Ij4Da3E_4@aDUtI`}JfZtVnVnGdrzokxlh[|FfXpa~\zXvgRqZw`ycjpcd}l]|oZx]zhYvRjgiZxWq`~g]{cj[|Y|afYwHgNiZsWuTrf}eXy]zayc{UuZ}lpdbvc``}e^~k\ydlf_hndefiolgopckuysrjnghbkloobegjnytsxvlmqrl_gfiecmyxnln[{`okmuoiflvposipolknokpignnherlhw}|hiiqutvvhenszqox|mrvqqrqs}rlysw}{tsuutx{nkw|txwpnut}{winsfjqrvpbgjeqnkwk]~j`yqx{a}nhcr{meet{pzuoqkikilbafalhdk_}fg`pkfnda]~fiehidldappglUrLhWtVtbph`|^|baoebd[yfdc}gVrXt^yMiPi^w]yNiWpYrUpLdTg;NnMg[wSnPkhWric|\tVl[ua{^wMfVmTsTnMgKhXwUiYsNfE]~PkWxSrbzWtLkUp\vWq^v^xMehjF_KdQh=TrJcJdJe^sQcCPs:Kh-4S1=\7Jg@TrE[{PjNcRoIa}QmTmPkLhb}dMiWqc}_{^~fbljhazGaLmhw{`qKZ|Sh\wWqKd{[vko[o^uWmA[yRmc|b|QpbjXqkTpKbTpOpH`]xczB[yG`@XxKaMeHaEWwK]|Rs6Be;QnHbH_G`~MgQmMkbRnAZz\wjWrEa@YwI`WpRtRi_uG]}J\GYyCUvG]G^|PdIgEa[rVpSqVtXqd~XtFaVpUuSj;Kn.9VJi7Cb6>a:D_d\xegocWt_{mhVv^zeKgKgPnSn`yVvVth`~ZwRs]wE_~Oi_zirvQvFeUr`~eLnSrme[yYsXxXw_~c}gSwWrWq`Wq^yOnJj[uOk\yc[xWv^zimt][|li]gcp`]{nirqf_d{yqmyvvmjovsxgi`~VvZyc}cwfehjconpnwhjtuggotd`}b~a~^~fluzklqhqkgthlzhjhhosmnqqbjagnprfcup{{trssytghfuttzzw}unowo{qmywxytu}wxvp{zxustprmyyounhvxne`|gulgonmgdc`}QsXwa|VtWmeMhXsWt[uby[ue~b{PkkĞppp[rZr]v^zmbye|Tq]xUjNhMkXra{TrSmPl\xYtdzoYmJaC_}Lg\r[qWuVrTo]zccgrdeohsptfllnukjsygZvZtbrx^~[wjcUsQm`}iPl_}YvUsoe[zc~c^}b~cQmUla}eQeE_~E]yHXx7Gg>VqIa~YvWsWvOnfZvZvbyVmb{`|TqXnG\~Rnjr]}gZt`}bHb_wkHcTl;RnKc_uPgA[x_y^tNdCX{I[H[{JbPfLaG[;Ol7IfH`H_ZlI`NkToGbSkKeQn`~B]{Fa~H^K_}3D`?Vuinw_|TpKdYsOhLjUmK_IdI`;QnA]yA]y_zSnby]zaug@Vw@Xwep`ipmilg~F`YuWt[v]yPmTsGd9Kk@QsFZvJcNfNeOiHeYtMjYtZ|ZxWrde^|_}cckVpOjTnVn`ySo_rCVyH_TnUnTnfg[w]zRrZuMhLeUmOiCb}Polvfb{fNiFaIdK`PgB\{JcYnez@Xw?VrQb9HiCXvO]8?\da}imroXvVrdfWwRmOkJdSoSpNhd~Y{NhXuchRsRmJbVp`|bshPr_zcbWtHiSpgn`jdcWuc}YwRt`{b}Yx[zVsTqWtc}[wHfQp[w`~]yc|cZ}gc]{]|^eiqlfaijnulmrdkxvnjjqtlfilkcSr\zlfmgfrliqjbtupxtl`mlmdXserokhihqpggolajnid\}ksahopotwonggiqqkkspuyulmhgdxyroyttx~yx{tsyvzvtyw{{vz{xwywlporpriilnggk~xoivsccadhelf^|hcba~FdGbHaZtVmNjHeLfQlWsQkWrRnRlVo@[wD_}SnPgJb}\sZtUnVnIcIbd|QkSnRiJaC]|HeOiWmFcNiIaTo\vTm^ulZpA[y;QnJa~XqD_~RhToSmMeOgGc[u`}otlogknuwssigrpjirgZyplrpWt_~eeazWpWqQnJju]zUrTp[u\ymfVtUnPhUqXnKh?XvEUuCTt;Ok@Yw?WvF]{Wq][uVnUpi^wKbYtTsbzOeD^Je\yqyh\yYuG`Xve~ZuYs=QqG]|xVlTf;RnB\ydyYoNaI\}AYw[w\vASw4Ba8FdVt@VvB]{A]zJdSnVqGaPiRoNhQi[sNhG_}HcOgC\xB\xJ`~Kb~KdB[{RlazF_}MfD^|D\zGZzEZxH^~Ga~NfK^{I]|>UtAXwHbE^|_yihnhltllmlcvd_~wr]}hmmknc^xVpSkXq`xYuRnmRpOn[vb{PqZwdb_{SjIbNfMlSmJ]?TtJ_}NeAYwEVr=QnVtZrTi]x_XtZpXpTnXsYuKjUlSjOljyh`|hRpYo\u[xf~ThTl?ZvToRm:OlBUsf~>PtRtJd^uI]XtPmRnSoPkQlQofa_|fkgcYvb{qayca}d}d~]w8Ji>PsJcNk]{Yv]zgWuHi]zQmVpgcw=QqB[zTo\|frYtPj]vJh?Vu?TrLcEbLiA[z@WwI\}Mc~=UqHUufSpGeJi^{cc`akb[yRn_vOjIg^{TqRo`}]xUoNjRna{ieUpNjQrPnWuc~fX}QoRkXtXs]zW{VuVuRtd[{YuPmMoWp[tEdIiPkCb}Pkc|g\[}`{hh^}e~c~`Vwamcfhacmgooq{jsrtqbngrp`eac^|cfwr^}[y`}fpgpkbepvcmltnttgkkskkigqkckqljtqefd]|]|pta\}entjvvuxmkyujsupuru{r{uqwuupsxwxvx~{rxwt{~ftzzuvsquovnlt\}Xvhnfarma~\z\yea~d~a~h^y\ydVofQpTrbYuYwHiPmgaxZuEbPkaxLjRkIbLiWr\t\rIfDd_xgUoTmRmIcDaKfFa|Zq]w_yWpVpWn^w[wOjNeOi[sZnNfQiLdMcJdD`|LgGa~byLdLdDZyGa}BYx>VtDYwK]{J_~=PqJZzF]|VsVs]zZwZwYtX|jpk`coly{aqialpnkca~_x_zgYsf~a{^~`Zwf_ifhlgYvIbGeeXoGcVl]uNf=Jm3@`8NhB^yPgVqOoUsimSnKcQoaZtPfKaSokuptQnWod}em]uH^G^~Wr\{IdI]~AXtJa~K`dym\oL_~astL[buLayTs:KlQk]fbgeWoVu]wQfLfPeBVzUlTkC^}Eb~SlG`Roinqve}LbDZ|Iafvjjrc[yTqfhpg~RqZvbzc|PgEYz9PjObYqLiOk\y[t\vZqKkYylgQpRq`}e\x[x_}fi\tWuNmPdUmTnPjOcJeJk[yXuq\zKg]wSkIdce}Hf@XwQpkc|NgC\|McLcNgQjWqQkE_~>VtI`}ZfonZvHgUs_~Yvacf\{Utad~UoNiTmRmWqTqZukgZxLj^ye\wQmSrRqOienZ{ZtQkRm]wVqOqSrTrPmToeeRnVs\uMiZxKkJaJeQp_xZt`~\{\y]wZzZyc{b~^~WsYtfc^}giakcfqoywrmocoqbt|aTyWvkjg[xqycbi`~irgmklqjguzjhnwsuoghoildebkkmnsf_|ohikfmb}jcdme`quslv{ytlqp{olw}}xrqy}muw{uvrvz{qxuwf_crxk]pspj^o`Z{e]zZuTr`dVub}[tSpWtb}Zwi\vUq_zXud^zSna|bVtQlTmc~Vqd~TpMiWoPkNfLkOiPlHaSlSoD]Vo\wTmUoQmXrMkKiRmUlOlEaa|eTlE_}QlYtRkZsUnYp^ySlNfTkLe>WsLeQj_xWrXpLbD^}H`~CYxG_~AWuPgAWw;Mn?Qq=NlBWt8JiNm8MhG\zL\|H]zRqWtXxsmiSnb{]wWuH`=QqUhOdHa]s_vPjPpUvwwg[vXjG[}@Yx]vpqjkw`xF_NmVxplXsUrhXuMhPeOhBXzPdC_|GdZxbMiRmXs_zh^|]{XsLlmWuQlge}Nkbeb~YuSmTm;MnEY|Jc^~WvHeWvVtYu^{iD^Mfe}\uG_;QnKkvqqka}JeXrXr=QqJc~UmC]}OdVn\xjnr_~YwPlDbNjSjMhHbRk^}]|b{eLnYu_yZuUsQnSnYtTq`}mYvOmZwfZxYq^x_~Yvc{d_}WuUoXvSre~OlGe_zQo\x`{MlNm\wTrPkb|iVtSmjocfYx_[ya]|Yya~_|\}ckfaljlnqf_jpgd]j^{fid]yfqcbhcnna`b_}ioqigorfmxfbiopqbnlnd`lwnk]|mpdWtfompnjmrfnmqhjeoqisy{zxuyvy}xrwxzwwwhkh`~eul\x]|ghhhZwZv[{ee]tYv^}[z\y]x[tMh\zee_|]ya{XwXxUp]x_|_{JlB_za|f]{\xll\vWrDaZt^yUnQl`zd}Rp_|\yKgQiJeJfTnWtZuRoKfMiYu^yZwPiYqPlEcc}a{`xPjLg^wQiD_zSlb|`zXrJaWkNhVp@[vHb~_vQnCa}LdLdNiNe@VvLbSmHbUlMfReQbD[{OcP_~5Ec@TpDRt6Ge1?\MjSr[u^wakntwvmnolplbdpkk\}cdjqfYslh_yYvYvoxc{[sSnRiE\}XoXtZtbyJ]8FdScL^|OeIcOeXqcUrPlhbRnXniHec}rsvkce}\s^|d}lNdA[w]xjPn\x`tqpkgfxwqatSaL[zGYu]p]wUtUoGbF`Ton^wEaHbMhXrJ_~9HhG_}jykmXqLckb\vSjPkB[{:OlJaWmVmWnGaXuryWtKdOcBSoYkYr_}pmlljGaQobhXt^ynPmNiPkMlKb>NpVtH_}I`}EYvQjWtGeZtc~^yKgZvbLj^y^x]xrw}fi[uZr_yUpXvKi_xb{Wo;OnNgȑmYnWnbvdw`xl~exJ\|JYzEVwMdE^~Qh[wVsNhQm[xLjMiMjFbMaJ^~=Tr-6TC\ycxaPjHbKediZsG^=PqATs7JfMb]q\xLkMkfgb~Qf?MlJYwNa}XrpkwlamiNmJgXunQnQoXsZxHePjWkJ`DWzStF_XtOiUpXsE`UnVoF[|8Hh4Ba9Pk]z~{Yp[uZvYyi]vE_BVxLb>Tt>Tsc~PnLjHe]ynUsYt_~RpVlYp\{^zdZwC]}E\~RlUmD[~>RtB[{SngeJhLlHhVnOj\r]v\zZ|adhijhr]xOhToTmWsGfKfbYxZtkb~hfNlEb}YtfaLiPl]xSn`|`ig~_yZzcPnKkPp[|jc}f~[zRtdZwUodNiIee~^|RpYxdefcjjafkeYxYu]{o_rjs{s`_jqf`rgfj^|mejpcge`jcbesefqgejskf[tazZwio^|bm]z[zg]zlngjlgYugtoktdhvmjbkgqwf_}oqtnvxxxpptupuyy}{zy|zww{{o}yuthmqhoh]}OnVv`~YwepXvlg_yen]{Wua~e_j\v]{SrRrj^}Po]{c[yf`}]x^w^u]x`Urgfc~`~eZxWxmbXzXua|OoXu\vjkea_{fWqOmHcPmVtNicxUpDcJgPkKiSrPlTlk_zVrLhJic{ZtLi[wSoYvVoZp\{TrHaQn^xOjZtdKh=QrD]~OeLeJaSkF`|JdZqc}]tOiTiSgE^}F]ObDYzL_@Pn>Kj?RrCZz8HiFZxLe^vVsOkicgvutqoshZ|hkfnkfa}\wbjbz^wMiHcdnSmUmSjOhRlNdVmMhJeG_}[rjI`Ea|VqXqPm[v`|fYqVoWuQoWsWrSqixyye{QkNh]qYrQkf}_~^}SmHd>XtOi~qdHcUnOfKcVphM^}R_5DcOanD^}Nc^wVp@XwTmRkfKhF`~H\}N_M_0;Z5GbfrqD_~KitTpVrXtH_SrL_G\I[};NlBUtAWu?XuA[xPl[uRj\wevvrnsjwiinhjdoa|a{_yaxGaRl\z_z^x`{^vE_Ki\td}]vNcUiRh[v\uQkXsWqZv_{]|Wtks]xZx]y`~Yt]wa~\~{hXr\vMla~azFfPn^yZvWp9KjB^yadc~ZvUqOdLcNhTkSg@UwsVf8IhQdVoJfQmPfUoXsJd@XwSmPjCZz>Pp=QnEVsTmkdNfJaE`Jf`}iYuVkAVy?VuOeKbPl`ySkIgwk`o^s=Pk7GcD[ylzhlmVsibMeJihgJhLg_sUoKeBXx?SuRtHcQogkRlOmYz]|a}OmQq^xVq]u`ycXxTr`{h\zKhRi>Rs:Kl:OlLiKnPqlRnD`~_|i_xNiJcdTqJ_D\~D]}TnZwXuLlGeawc|WtSn_}^z]xdsmdMmEcVrRmI^~\sKhIfZt]{Yw\xh_|]wXpQoKj\ypNkJg^xZsKgEb~Vq]{]x^wb{fYv[wXtYu^|e\xe}UqRt`~[zZ{TqYu`~c_}Ws]wd~bgkkpedlbmvbkhsg}jdpddghj_mk\ozkhfib}_|geoiqdhjsiif\z]y`|mgVwalijejcswl`yimko`myzfgnrphjgxkwheqttvz|{y}xtvskz}}{ltwthchsqj^}b_mdZxZwUu\wk\{_}gb\zOqWthefbdom_{[zZx[vZxazd}^yKh^wga[yYwSnb[v]ym_z\vjhNmUulfVw^ync\ye\ygc`|\wNj_xci[uNj`zb{b{^|QnPkPgVmUkSnRmPkLgXtejazRpMiNgVnOjRp]zPlEaMiZuSqSp[u`}a|SqNi[xg\rTnVo@WxHb]wJdBZzVoYr\tYrRlGcOiIbOgRlD^}MdVnOdASv>Rq9Nk;On>WtE]{KcOfYrOjLkmnevywlmqbpkmdc`{bzTnTlRnd|\wYx[vd~OlRmpg~Lc[p\sGeJbQfXpJfB[y^uUpRplnib~Uq^|ZvWoLfbcs{nWsZyQp\wHeNjMdToeOjIbLiJe`{fWsYsgWoHaHaWm8Jh@PnDUr^rUqE[x:OmEXwLa@Zx?YvAUq;PnOh\vUujgrpmopyjjwacke}TnVnkRoRsVsb~b}KgNfSkZuToQjLfMdXlH[|MfQkUmQmTpd[yj^yne\xC]}_xn^xXs`{vWrIbYt`}dbx?XvWvrc|\vH`Oh`yta}VuhQkMffzh{Nb7LgK[x]qAXsMe[xPjez@VuGcJeOiIfBZzG]~9JjASoCVsMc~nTqIb}h~=TrXsYwTpb{Vm?Su>SsOj]wJdZxGbxrNaQiTkQhUqxudz{pYpPjGaLgRpOmMied|OiKeUjCTx:HjBUuH_@UwGcKjMjLkNlcb~k[xIfdZwQlSnd{bTtipb}Yxc~UoNe>Qt@YvRmIa[vMnVtXtNg^ypQl^xLiKgVse~Ha?SuE_`}nymcNiTnTqGiNpVtG`Ga`zSpEbVrTpJcNiXrXuWsQn`Xxkb}Vod[zBazQkZuVwKiBWwOfYvRlIjVt[v\yWv\|Zv[xc^{Yy^}nZu]zee\z]|Yvek[zXuWt\{i^}^~hejfmvjfhbghmupll_~koqrkgfb~cel`ahom_|ffrjjrc[ybi^}SqWsZsRjWr_{c}qhkhcjnpelbbkfd_}g|tgfvrpiuyts}rq}~usu|yyyiegrlhjvpg^{\yjepfSq]xblTtTtc_{TsXr\zPp[zXtRjTpQnXv^|]xLj^}ge~ZwIfRoYx]xaKhCa}Zs^x^zbz[wPjLiLiVt^zUt_{\vYvVpPj^zWtXsTqPn[wca}[t\scYxcZya|Sr\wZvYu^vVnUuYu`{[xZwUpLeH`WqUpMjQlXu`}b|SmDbEdWpSkZrZt^xPjUrSlZsTqWtPjTqVrMkTrLfMh^v[uKddz`{E_|Jd?WuHca~[u[sRjJeLeVqSp\vPjJgZsOhIb?VuCUvCSuVsVqLjRojuzqlvxpohigmb}YtKj_yo[t[uiXtIcVoe|^wI_Ul^xZuLdRhUiOjPkTkUmm\|Tq`{hgfgVra{[u_yitmsjb_zpToSoC\|H`{RkYrNfmv[yUvda}imUkOgLaM^XoPgTfAWuc{RgAYyBZyjLjDXzH[|OfF\}@Rq>MiGZuQn\|aHaQl^uNeB[{ZvYsUn[wGaRiB\yVs`b{azh^xPhMd@XwJb~wvtt}^|E]NhLk[{`}ieNl_F^G[~TdHWx6FeH[zE_~GaJeNmFdGeXwg^}LgNjMkD_RmSm^zVsb}^zXuVq[vWtQnH^DZ{Qr7Hf5BcI]|DXz=QrE`QnD]~LiZyUth^yHbQm\yjJeZt[xOmOj\vRnEcKhKeI^BZzE]Mhf^wGcWrWvPo[rnb}[uRnVrRmazLgJaI\{^u`{qq||qjWuQqPm\zVvVoRl[v`{\wXt[{\yfzhd[u[wihJiJ`NfYsUvYvYsNfMdTpYuVqb|d}RrNlTpXxd]yUsXs^ydbYy_zspd^yTqdUt\xim_}dtmjj_b}c|jstuibZxZx]{bmfaemhedkifshhpl^}_}faldkdfmba~Zxoa{cl_z`|_yec}c~ikmktjfpzjeowsbelwvekyuowt{st}xztvzx{{wnqjotdiebiqj[ygtjb[yWu^z_}fedZy_zhWtQqTs[vYuTtIgKbWsb}ZwRoZv`z^wPoUp`y^yVq]wYvJiYxc~^{cQoQkXsRoh_zYsFdRi[u\uVsWujh[xDaKjSlSmPoHg\|^|PnXsHfNfYtTsOjSk\wOnLlZuTnWpNhC^{_xjOr[{[uOiUp[{MjToTo_xb}YrMjMeNfYvUpXsVrUqXp`wYvSn\vLjPkWthlZu^vUnOiTiUlXuaz`wPjJaQgRlMib}SmFbPkQkJgRmWsUoNhUoJgF[|ATuDUv>PqLmAPq@Mo9Gf=VrNfE]JaMhUq`}Vse{PkLl[zYsLeNlLfPk`{[xQoRnQkSlKeNfKdA[zTkfTmGcLe`yVw]{h[w_~VvWpTqUoSgm\wc`hxql^}]z]xQoed~GbIf\vj]{Zy\z_ycofZvYua_[xRtLoPjZrRnUs`yd}aVt_yZwZx[yYwKh_{ZzQrPoZtZxcq[y[whmngc}Xt`}`}iqthhpe[}a~_{jf_nehibaf\|`~dickfgbfi_|kg\|iokZ|dkmke\|knfce`yjnvkVrgukmjf_|itn[|gqnleplvnewvxxy|rsvwwvx}}urqwzvovsinfdjeWua~i_}kich`]~\xYx`]yh_}fXw[wYxVrVm`zSr_y_w^}`}TmQoStPn\t[{Qpa|OnUrYr^{NlXtbz_zb_|d}XsIe\yeYsRoZte}`|RnQna}]|Ywd~_zVnNiTpJfOm[vUqPkXsTkOiKgWoSkca}OmMiOi[teUqGbRreQqZwc|YsXvKfD^}Vqk_}ToPhLilPgMg[uYuWrWvYtVo[uSqYs`yLgHdYr[v\wOhMfYoTla|LdSmRoOh\tF_~Ea~d|YtJfLhIbA\yTp`zSmOjMiGbKdIcG`FZ|HZ{8KiCUtG_xLhLdKeQj@XwJa}Wrhthx{vbbjbYvQpZykiVrWqd~XtPnZr[tagM`TlQkMeFZy@WvWoTnE_{PlZxekgXv_d]w^wgjmWvZxpyi\z]wdzZuEaAYyC_|F^}@ZwIaHa}p{pl[vr_wOkZqkbuTnPiF]|J^|pmuSk>WtVn_wTnShCXx;PnESvBQp1@[BZxNo`a~XsKgIfVoI_E]~VpWqE[|D\|?YvEa~TsTu[xkVpqRf1<[>XtilekshTpiDcMgOjoYx`|\x@XwLdO`BTv4Ca8Lh@Vu;PnAWyLeE`Ca}l]yWtWvA[z\qWtPqQkWmLgWsJhLhVpNhRo^zKdKdQk^xPm^{YubzDb]{cJiNkiMkMl`{]sqpka~Tslyprda|b~kg[yWwUqIfeigYwKk[y\{eojVnXqZyXz^wXrUnVsWxieYv\zTrc}`}[zYvb~\{f\z_y_{a}^|[xuol`hi[xakqzqfrm\|^}g[z`jn_|]|dkhjqncedhkgdguoY}cu[|fspkmmkicgfimrpjeeklddrcdenjhpbcvigkltursquy{w{{u}{tjuyuw~zttcm{wknfhcfa\z_~ggga_}^xeagf]{\|Zv`gdXv_}h]xXrTqYtkm^|g[xKmUwUsXrRqYv`z\{f^zPnRp]zfYwVuhiXvRn`zwayTr]znWqda}XuOm[yjd~f}XvUqJfEcIcYsb{XtZtF`KdMgPiIeMi`yYuJhIdSk]zSqIeWsWteZuXs`}`zLfMg[rYvYva{_{Ql\uYt]w^yXs\z^}YsPlYvQl_zKiKeKdGd]xf~^wVqayJdD[z]xRpUmZuPlUnXqUrPnWpF`D`JeTmXrRlMeLfKfTkMfKaI]}CVv;Mm=OjMb[oJdYsI_>VtOhXp`zSob{|qnjpif[v[zwuZrUpWo]z_xKd[vl\sHfHhLeDZzMeOhSlMeJc=VrTlhYvVs]|oi\x\{cbz]{eVt_~ltfazD]~Zua|Fb>VtSkB\{=TqC_}honuoqtd|VmjnE]>QsG[}H\{rsw`xGa|D_yLjWs\q[qI\8Hh,5R/;XI^}^xJec~WnJcPiNgMg_xH`SiJ\9Kk;NnEaZyTsGdftd}Nc?Uu;Pn]porvqazLlgrUnKfWyfKiGb_wA[y@WwG`|EWz8Hh5FbK`F_=VrIggZs]yVpPgBX{UoOnYv\uJfNiPmZz\vRiQoQmMgWqPkHdPmWt\xIbFdYu^zOm]ubzRqPpTpbyigrg_~`knvemi\{_~bb^zdehqYzTnRreur^{TsXvXw_|gc}JeLn__~_}_}be_|Yxa~goo^{[w\vc~Ts\xotdihsn\coylljmfbiiab}i`|a~fnmljrlreYubVvUsfojSwdphhljkrvm^{dhgjgtkeWuYzfilfnmrcvyoibk{fbst}tsnptxzu|y|~vxtxygdk~qipqeokefc`}f`zdWw]}fg[ue[{nw_{\zaIk]{eYy^{ij]z\zWucfXvbgc{c}cUt[yjZwWvea|VvLiYvZw`]{ZwcYy[ykjc}gc`z]wfbWvZwcQo[xlf]}^{QlB\{XrSoYv_|LeKbRiB\{=WrGaLfPn]|OjSjNjWsTnXrJgWs_|^x]ziXsNiUoGcGf]xpLhIcYv\v]vVr[wc^xc\wHcKgSrVpUlUqLikeGc[rPlOgTrFeC[|Nla~^uTmGeKg\v_{SnJbF_IdC\|Kdc{UrLcMb>VtCZ{MbN`6Fe:KiM^NhXr`tMfD\{J[zG]{^vD`}Smgypexjalk^v_}]v[v^xOhSoheYtYtRpUmVoUnF^G]Ha;QnIa~IbQoYthidbXya\tb~\zSpfmivpUrRilQmD[{RiHcVmRj@ZxSpquib|inRk\uYsUnJ_D[~N_BYxVteVnTl>VtRllUmYqE_@Tw5Ab9GcHSr.:VRmufIeLcVpcJc@WtTjQiMgJa=QrC]}^{B[{A]y^{sPklk|9Lj6GeGbfeety\zvWqggNl?YvWudNi>TtMdA[zObASu7HfETv?Sr=UqJaIbSs_~PhLa]vNjPkDa}@XxJfQlUpZz]xXoJfFaMgZu[vMhGbeLgLiXrd~^zPkUpWrRn_~VuXrpp^c~lvafq{tp]w]xd`hdlWs]|pcidbYy\yX{[{ka|\ya~^~TqWtgdh`}feQrbf^f]}NkSnba_|abhhxyqvvmfnpp\|`{wvegg]yRpYudkqmlhaepjek[z]ydkmefmkskeibgg`~hb_~nfgfdiih^|kutqsrl~xotnuuwxrwyxuopupyz{wzzy{xusdX{bkxoibdkllha~ffbWsVueb|fgce\z[{_~gi`|^z`~gdd~gWyan]b\zf_}jbzaxrl[tc}_Utb~^zQq\y^{d~eTtWvbeY{jc\yova[x]xkenmYzf^{ganmWsNkIhQm^}WsSjVlPmSkGfA[y?WuLfe}\wNjXnZsZwSm[ua|[vRpUrZwb}]zXrNiA^zdf_xSpXqYr`{f_{Qjb{c~LgOiXrQoOjVnPmSpTpEaKa]xXqTrNkQiIhQp`{VtMhSiZq\w\ySmA[zD^|@TtH^^v`|UpLbJbEaLeQhNaDSs6FdAXtD^}_tLdJdF]zWt_{\}vlhm`zPmVog~Zs`zh{EVyH`~C[yB]{wYoQiPkD^|a|sJcE]FY{1<[+2PMe{lMl^zb{NnQnNdMhK`Lbd]yAUvSsLgUoD]H`r\s5Bb2:\9B^7IgTpqv}{n]}ngdLgRnYvfTrAYySkQiAVyH^CWyBUu?Sp>PrI`B[yUt\{B^{NkMhVnaxUoC^}D]Nh[tVuplGfOlb^|Wq]yUoMgYuNkC_}TrZx]xTmSqNkgm]~luuqe_[|VuQlgxvib}dfVulfYw`}ooa~Rr[wOjSoTqOo\yh[uYy_ffe]|bgaYwWu``}_zXsZu`{dejimjbcgwyv_\}`uukliqeb}ha|iddgmiih\}c\|fddk^|djhgoY|nwt[z[weZwkia}^zc~gpjnflh^mlipoildy|zniu}{uqt{}y{x{|w{zsmrqwkolahqXw]}Yzci]{bphccjkehb|Srbe[yYx]yXt]}cpl_cffdlh[zbbdfgkmiUsYxeafa{aceYx\zUp\yXzcefZyeafecklgXwZxelWvivjgb}^~omWtVsRpZvc~PjGch\xPlIdLeF^D[}JcG_}IcNiMhB[{Upa{UrOkYqWsQpOjbzPjOha|fZ{YsIdMlSqc{a|VqZvUq^vUkFb~JgUmRjE`}[sa|[uVqPo[vYrWqXu]wVq[xQmQjOiPlTqNgE^\sYnMfNiNjOjWtOiRiRic{B]{IbOc:Ml;Nk;PlJ]|OfNeH]~FZ{PiD_\tC^}@WwF^|Zumvy}zhpksjecgc~Xt\xyh`{b{VlKhQmOiRlH_UkG`~=RrLcQkVtg[wUr\|`hda~\yZxYw^xpnhE`@YxXsF]~Tj\zJbD[|F]}H\~c~f`t_}VtRlOi`zQiF\~IY{8IhlPhIgrfC]}=UrC\|\xYuQjRiGXz+3Q-6SDXvWsorQjKcLfZucAZzEY{D]}PhNaG[|>TtF`hF^OjYsg^r;Ch*0MRr]zxytkcigZtOkc}^x]yIfNiOfPfKaNeBXx4DaDRsK`C]|E_RhAXyIb^z>Stbzf}D_~]yhNgFc_}Hh_[tQlQoYx\zfNgHc[xTo@WwPgc}YuOkPkb}n]^zc|xnq`WwPmKf]yfzsqkba_~`}fiueNpOmNk^xYuRq^{Xtffbe`aa}ad_\x_{\z`~VtIeSoWv]}ea}gaiahihryzq`f]rkd_^kefencjbkljpcgf[zZ{jg_}cmlhhifgijkif[w_|h^zZvbi`~tlslohkrfnilw{nq}smn|w{z~y{vpz}{}sdbtsbnagifmxZzYsg]{^zWuZzlpgslfbc}fe[xQohdiWvWy_z|nfdmbk\~peXw^~di_gmda~Wu\{icgjiUr\w]}Vt[yXu`g^}fnhjroegn^}bb\{Rpecgmb~a~mfg[xVtYuYtc~TmE_Mi_{KfLhNgMbNeHbJaKaOgE`RmHeKfTiMhPoZtb}VqRoa|[tSr^}YtHeRo^y`zc|cUtRmTleKhKfUpNgXqNfNb\xJjKiXs`yZvRmJeGgVsVpYuYtRlNhKeH_G^MhWrNkF`VpdToFaWp`yPiMgOgK[~=PqDSuL]yL_|H[wBTvAUzE[}BYyVoE]M_ATw\y|un{smfmegc]z]z^{b{lt`wId]x^uRiWoH_\vc}UkPgUpdSpWvYwb~c]zlUsVtUrXv[yhj_}OiBZ{D\zQiGbB[{PhiWm?WuDb~cl_c^wCZ}@ZwD]}e|EW~:Jkau\oBZ{YuMgQoUqNeTlRiE_RlKaK\BQr+2P.TsE]}~TtLcJdNjHda~h_xEaPl[uQjMgPkgXvSpZtZuVpdTtOl]vWqQlQo_zPkOjGaVmYvPnTpXt`zUpKfSnHeKfMhUoIfXpWrToI_AXyC\|XoSn^vTi[sTpKgRm]wUpTmVqNePeHY}4Ba>PnQbN^~H[|I]~QgXoSjViN`?Yv?YuYsi{qo{pysmsea{hfc{ZvHd`xWr[wE_`~eVnG`Mh^zYtZs`yk[xYxfdVqUoRlKfTk]xgm[wOiF^NlNgQiXrWpFcAZwIb`lgb~YtD^~BZ{CY|SkYo0UsSgC[|OcNeXs`xMhPjTpVnVnWn>VtTpeUoNgMlWr[vQnWuk`zSpTpUoVrYvVpVsMhC\}JdZu^zRm_zVrVoPhSn^uIcSjVpPkf~Kg@VwFZ}Me\xKeKeVpRmSnVpF_XoToSqNgXoK_8Fh6CdPaH\xMbBWwDZ{LeBYxH^~B]x:Pm:NlE]{v}x{ywmmdypmzVpljf`|Zv`XsVn]uZvTrUoOkPjbyi^w]yRpYxZy[v^wYsFbXrNk^{mweNhRoiWoQjZrRlPg\vAYyZucjjb}SmStLiRlTlBTx7Ff.;V9NkpfnmPfa{_xRh@ZwFb]vG]?TuQk\upe~?WuD`~^{kre}_{Kd=Nr>Wsa~l{xijTpSrFcQiJeSs_|MgC`}WrTiG_Qc2@]I\zSjC^}HbWrPsajhsspj_vWq[tOiGgVs\sMbMfKiXqRp[vQhLd[wXrQgGb^vmaeljmX|imcMn_}gXsRt^z[toxi`}`smWuRoLhF_NlgdUtNnhWta{hdmpmj]zZw]{gfeYyWweX{fej`mnnnstdKlQoYrknchg_z^ya|fe^|moqhigrgegaijka~kpfega~ih_\zcgee^|a}jddsqdcf`abgv|wmopdlpmoywv~{{ww}wwqiiqptda~lheYxmjjllRqHg^xb}ftz{gfyja~a~ifrkridckc]|lne_~[|c{{rnhk^~agfdmcTxYx`zceifc~ojakc~llnieZmlfiXupnglb|^~g`i]|[x[wOmgm_{VtSvabWwWuVuk_}YuTnE_JgTqIgQmOiTlSlIcLeGaShLe;Pn:MiPdJcN`EZxXr[wOhNcOlPgRj__vKcKfOkUoWsJjJi_ya_yXs]uPnb\yIbSjRmGdJhe]zNkSlWqYv]vTmPj^uNeSmWo[qLa?SuLi[vLg\uLgSmUl]vVpSmWsNeJaPhOgBRtAQq?LkGWsK`{I\{;RmI]|VjQdJ_;Mn?StJeNkazxwmlplnv{vkb}XrUsYrbza{Vr^wjc{IbWthWqPkRmXzWxVqa{SpXwfHdTm^}qu[uVs[zSkVnXuIfA[yNmF_}Vtj\yof[wJcF^}D[yN^|8IgN[|HTt?RoMdI`NjOhKc>VtK^~UnWvKhAWzTiFZ}1=[3A`3C_Gdrlc{x^~WqGZ|KbMgG`G\~MfA[zTpZvPhVoD]C]|enrkYt;Mn9LkoxsrcjgWuMeOj\xD_Ph[wZuNhIbPeauIZy2>]C`zYrRnWsQo{uet{]wTq]uGbQk]wYuHb[uMmYtNnZtHbOiOnPpIbVp[uxdZw^ksgg_}da}a~a~Zw\}SoRk_}|pc`VshfVtIgBZ{D\|YrZuXw_z\z^}je[xfnhneVt_aad~fijbcjfdtprvvko_|WuZuekcckic}h^zoepfdgt|wf_~jiimjkkgiuph[zcdrk[xeek`~ca}\zlmihllml]}aouwyokvpnvr{{xv{qtzzfXzev}jb~WvecYwXw`{`{{hdd`}dbpyp`ikrugirmupg]{ajjd[zghegdwx[}eqmdm`gohZz_{d`~`~dfeemnjae`~lwffnyi`nqiil\|iZy\yc|a}^}[wbZxUs]{`~XuZyTqa~a~[wZy[zay`zRmTo]y[qIcTpb{VrXqLhJdFaE_>UqM`HaLa>Tr@XxRpWuUm[uLdG_}RoMg`xOgNiKhMhEaFbOiSqUr[ySoHfNi_y`u`zVuPiMeeZuHcXr[xKhMd\yZva|AXyBY{ZqSjIbIbE^UlSiKdLkTmTkh_zMfHcOdBYzQiSmMdTdBPo9IhCVs@Tq:Khk[o@VtQhMdI]~K`RkA\zZuprpsrmretveďÂgic_{`za|bzXuepJdMlHhIdC`|^xRqRn\u]va|Wsa~KfF^~XtSpivuOkD]~j_zToBZ{Ke[vXsUrUtpjfa|UoCZ|Mc^uK\{APmAMjIWvYoQlAXyE`|QkF]}AZz`wMeLeJcNfLa@Sv9Ii6Ke?Us_|{qNp[y^vTkJfLhAZwJ^5Dc>SoAWyJgfLfBYy@VwOonytRp^uctRliwmpy_|]vVq>Rt?VuXsgRmOkRmVoIa8LiK_QiG^~JdHbVu\zkhw`j^|KiRlQkQkOjKiNhRrKkHeMnVsLfIcNiJgOhZu`|t\|`{gbfnot\zb}]xYuXvZy_|b|^|_|hkriVrZy\{ZyQiD\}D^JfTsd{Use``~c]}eaqsuzWtZy`}fmgfooemumrs{nehgf[y\{`^~]|bhfjfhmpdgmtrajsqfcojgkguif^}`z^|eofgdk]{`}odWuglkhoqhmcfqvuu{{pruvy{kp}{y{rtka`|hgmq[w^z]zWsXx_zfdptrifXthogqbY{hvjbzkailhfdcijj\fslaa~zhhgshdTufigd_~g]ya}fjaZyegi_XwTseqjq}zmqmdiibfomXvVq[x]}bZwTqZxcg`~\{WtcYvTp[y[{fl[xYtWvZrToIhWqXvn]xIeNiMhNgOdIcOg:OlQgPjSq`x[rD]I`G`SlgXlHbEaC[}PhMfToFaAZzOjWuUrVnPmMjQmUsbzVnGdUoQjb|`~\wJcQmRpUqXsUkJdNePhRlMeNcEZ~F_YvTmTjTmNgYsLfK`LdPjAYyC^}JgAXxJ\}ASt=PlQcevPe>SpPeD[zPf]pK`@YwAYyMfRlur~yndrlfb}~t{ehcXrXwb^zTle|NhC]}Vr\wNjUm\t[vVqUqeUqJhWrOjHfp{dfa|ZthIaigLe@ZuE`}\|ebeb|SnC\}HdYp[oANk1VrpaUu^~RoWs[wRpHcATw=NpCTrGZ|Xs_tPh>VsNbIh?YubyqjZwRigzpnkveubLdJdMkZvRjMjUpLjC]}WsG]~F\BZyKdOgLfD]J_@YxLfWoSq`@UwEZ~\sUrC]|FZ~J^D_~efFdQnHeEa\uYuTnLiKeJiYv^y`yYvFaIdf_{OmMjTmc|AYyMdSiToUoIbQgJbHdTqZuXlJc>VtK_~E^|C\}NhIa?SvK`~BVt7KfD]xKb}\o=RpAXtVl^tHcG`QkVoMeTmr~ufnkmi[ykwsgih_~jb|_yYuifIcYtHcMe^u\xXveb~XrUtbZxdVr[tXun{yghoZtWrUoRiQkOhVr^{clRkKiKeHdKfXnJY{2@]Kl7GgEagd]|[zXwIgLhSiE\6Ee=Jh7Fg@RsBZ{NiawKgBY{B[{SsepyVqxKcazvsrdn\zJeDcOkSlSmLdGeQlOeC]z=QqBVvLgQlHcC^|GaRnYw[yefXucVtPlUp_yOiJf_}NkQlNfZw^}F_Ha~KhTk[rmIgb~pfhtjQqSqTspkXvZw\wf`}b}gd`Wwcm[yQkJdVtUqIeQkWoSt`~jjcjceSqHf^ylnpk\za\~_{kacmf[lb^|fpn``ikmmntndemmojjqiilqerqjnrtgwu_egfeqee]yWq_apbhjnwf]|jwpqvpqwuunyzyvtx}zw|ligbq{c`f`}XxTuRoZr^x`|dTqNm`^}faoqtjeieeyb`gkjekuvioshhhb`}cnl\}Z|lgjnkiditvodhoieg_}a}e`d_zVxX{ejnjfochrxvmrdgcnb[yhdbj[{Uqb}accd`iaa`|Qpad`~df`d}f_~ee]xiqmq`{Zv[wJfGdOhJcCX}CZz=TrKfPhOiAYyAXyM_QnbG`H][qQkRiOgG_DZ{E[{SjNiMkMfH_KeVpMhPj[vFb[u^vLfc}HfVp]wQoSp\yYvRkTnKcXqTm]vLgNbUkH`I`Me`vVp?UvH[}J\BWyLeTmI`FZyDVw@PqDZyF\|Tkez`vCY|WoZtQlQiVpAYy8LhMjZwpvxxponnYxj}jTqko_~mjWx_~`|e]wPmI^E[zJgOl^PnTmdVwcjlYsLhVtb}npLfYnNiUncazc|SoTsm^zVtKhHdKgTjOeE]zVkEYwF]|Vrb|Tp]xOlLdUlc}\vRl>Qs@TvM[|MW}:Lk;RnRmd~\z_}TpKe\xXsJfNe8Hi4@`6CcD\zOiH`NjI`Mc@XxSnb_uavkc|^icqhNlHfNiKdRhOhGfKgKbMgH_VraysFb:NlBZ{Smfc}MgHcD_~HbQnk|ymjrefi|jWr\{ja^}`~\y]zWt]y`zSoD\}>Ut>YtQgOhOm^}ah_{a|Soc}oiebjzo[rQffeZunLiOjJaWr`|]yMiSqKhSi]tLbVmAWt:MlQk\vTsPnYuKeOeH`~]wkMjWpp^oUf;Ng>Ql`VtAYyTmMhRjD_}E`E`RlTmIgHh^xLhJkVqGaWsMgJhSpHdC^}\vJdC_}Up^trPrc}krndYvUqVsXuJkUrme\xVqZwlkwpWvNn`UrKhZtTmh`Qpd~\y]y\{ke\~Vvd~YvVtYvPoSr\x[{eb~b~njiblj]~dih_~`Xwd}|\{Vv`|_}djptm\xfsortgolqrknhhtyqabf^|eli[xQobbmdkpkchrtmtwrmmnzwzywwwwpw~xedhmuoed[v[vZyYwZxTrZx^zdmmbe}b{bik`c\}\{n`rtkrogqockqgijiwri\hokelhj_djnpqp\z`hee[z_{agc_}_|aoi`a}dfc[zhqfjviUvk~tjofmsei`agopcb_}isnhepedtfnXvYxfbadbb~^}mn`ga^lkMlbc\{CY|CYz@WwUtEaPkXn=Rr?QrL_BXzBUx@UtRe[rLg@TwE\|[qSnZtSlFbC]}OiSnY{~wormnhggd}aY{YwolPiPm`deq`{D\;MnJdLdWna}hXtnvarkjZv`}qt\uKaHbOl[pIcYvYtMeXqZs]zZuPkKeHbSlSjPaWgTjOeXn_zRmSpdf|StRtF]DXz=PqJ_}NhNfOiAWyF^]zUsSpTpPhUmB\{`~}pnteluulZx[zYvel`yl\|QnXqeh_|YqB\{C\}Kg]yYvec]{faVvmhYv\~gPiI]~JfZubxNf]tRj@XvOgQi]yfQkJgXsoI`GZ|JYy^vZvOjG_~Jf[xVsa}JfLeN`MbNh>VtK^|Tc=NgJ[xMf>Tt@YwZwpzncXrSnMhKc=Pq;Km=OrG]}TkLfF`H^IeWt>VtHhcfC[}Jh:PmE`}qSkfigd~[vRmE`{H`J^HZ}HVz?RuNiTp=PrF^SnG`D^~RrjlLc3@_aCRr]ri~H`AZzJgrkmhRlG_~G`~RhEVz;Ln?RtMbZtE_KhD_LfF_E`EdaoLcStOjRl\yHfKdH^WqWoLgQo\tmkmbkogWtJc@YwFcYwUtRm_yeinoVsXvgolXy\z^y^w^zTr^xcVtb{bng_}`~_~jb[zQoGeMhQpcytlgjncfnlc`gk[x\vVugVvVt\|ka{Pm`eZzhgnrkddgjiknqqhc_a~dghf^|hegekafihcensmrhotytoootx{xvytixvvnsyhUrdeRpa|iVpWub{]xgea~lb`hpij]}gamqnekpo_htiyzcgjgwnlmhksmwdajkgnghrdfjoh[|dkkdjc~bhbddhpb]|__~iwpa`aaa_h_{]{Tu^zmaRp[xme\sNgXsa|RqVrPiHbG`IeHbPhLjGfMgXuZrOl[we|]wOiJcMj`wf{PiPlo\tHbPjRnRn_xYvOnPjTmKeSjNjC]|AWyPdHaF`F^}HZ{Oe?WvJbSjIbVoRkD\}BZ{Ogsci\ujeWuRk\vWuGbYtTrRmSfKcHaC[|BZ{Wm]zSkMg^{LcE\~MgOih]wKcRjUnMgQeIcF`@WwQjSkQlG`J`\sNgBY{UkTjQmQmKcLcIbE]@UuIZ>PsG^KbC[{SkVqD]UnVr_|VpVnc|MkHevyrvtmpugLnbl\zJllkp_}Zw\va|^RpJdD^Oib~cVvslIfTr`~Uo^vWvSrUtpqXuE^VtXrLe@WwH_@Xx=WqMhkd}^wD[~IaQlXoLb@TvGa~WnPoYzZwRkTpUqXx\yQjBZ{[nPhF_CWy1=[5DbQhNhPcE\{]ylrnjSoPlF\QgQi=Rr@UwUoiQmLgBY{E_C]|\zgiUu@Tw5CcMjr]xoUtWpBY{[vuPnSpfd}UpG_PcBSsD\zG`}Ga}>Vt>RsEbD`~H_TjSk>UtBZz\zLjRjQiQkOhQjOhVnXrXsmlfd\|f\sSoIeMkUuZuXpeotuh_cd_~cOoQnioa|XtRpXvXxlod^|\x[u\zYxVwRpOlRoNl_wwv^cc~Yy_~knje}geVsZr[zk_Zy]{i\ygn]}`|]yZxlrf_}dnm`|`k[{_~knbedYyTo\x]z`|e_}bgfrl\~hkmqupzvx{yvqktvtwzgbdchsoreegh^yXtgkdgnc}e`{Wsh^_}mprhgc_ednqorhjpfjpsmjsfosliimbh|o^gqniXzmko^ewy_^|hmirphjdccepsab\{Ytda~_b`~d\x]{c|a}WvUsee~ZyVrYuTqUw`|YqPjSmLn\wNfD`PlYtJbF^~WpLkWoTpWrTpTqZt]vWpRiOjZq\s^w_yQli`{^x`|F`~ax`{XwOlXtTnXpUsKlLcPfIdHeKd?Rs?Vu[pNbLdIaB[yTn[sH_J`B[y`{u_~kd~NnVr`~mofLiFcSmOk=TrNdLcOd_{YnOfKg[rMeYuYuNhVob|SmF`LdI]VnZs>Ts?RqSlUr[sUjQkSmF`D[yTgG^KhMfNeTkSnIeI^=RrK`KcBZ{VoKfBZ{UoWuEc@Zw\q[uToGcMhd`eovof^bc{_y^wc~Yycom[u_zYxenWrD[|BZ{RmVxb}VsUteHeLdkYxEeMk]zjXuZsWvWuVpH]~LbCZzAYvTjSqc}mRmG\F`>TtI_K`4Ca>Rt\xb}Wpc}RoF`VsOkNbA]z\r\vNkD[|=PrM`~F^{Kg\sOdG^|XuyxbUtTtLiKf@XwD\|NeBXzXq[wFdLfLgRk@VtHa]nnEZUt>VtLdKkMgPgJhJgJbGdGe^xLfNg^v]vKe\vip`eYt_zee[t\x\yVpgeohkxviXx^{YvOnXxlheWw[xUr\{mfm[|On_zLnNl`{]wNjPoguvqa~]xVujcefg`}YwSnmfbdjiTrNmdh`}]|YwTq^yc`|gnmga~c~\|gZ{a|gfbeVqTnUqYwa}e|dplcqoempqvmje}}wvtkmonpuikfdn_dnf_|c~jd]z^|_|igigYwTsdfcgbdjflwtk`~coqtvtpfiihdt{yllkguvidim_hhrlgebkdfannfirkatki``aedblllbZtXt_|Wy]}uk`~Yth]wXoQld\xWrToQjPkOnVuQq]uYpGgQm_uHgIg\u^uWmFaJf]sQkPnStUuLjTrXtd{[wOkLg\tUqQlYumc|HfSn[tWqc~QlWrOlMjRk^{RnGaD\MhUmF^D]|WnTlRlD]H`KcfVoPfF]~=Pr>Wt]|hpZtSw^dyi[wVt`yUlLdVpKaMdOdF\|\tMeXsQmWsRpPi^y\vLeVoPgO^SjMeCW{F]}Zu`{NiTnSlLgC\}Qh\oOfOmRj[tHhMjUlLfCY|;MnIcQlSnTlKeMfGaLcc{Lg\x^xUqOhXom{wyrhpclpj^w_xNohudUtYwVnXsc~MfLgFaC`|NlZu_{edZq^zQpKl\}]|IdTm^|VvPmE`F_GaC\|IbF^Jg?Yu[wjc|G^@XxLaK_H`:MlE_ZvWsgMiSl^{OkGbSpJcZsF\|Le\sNbDVtOeKfQoGb?Tu>VtPneU{`TrTkHaC^}SlJ`BZ{JcNgb}iKcC\z=Ur@Zx`~uoLfRtRsMgTnSjMbLcWt_yUtXu\uWtZoXgRjRkRfAXyHaLfXmKdH_LbJfSnVmIeNjXqWrMgWqXqOiBYzAXyD\{PfPhSnC\|UkIcJcMeOgOkZw\vQkTnirqootolwkha}kRoa~jUrgZwJc[xshWrF`?UuQlLhTqac`z^yeVrfRpIbTkpcUtVrUoLfSmNgAYz=Ur=RrGaSp\vSnMgOfJ^LbZuPiBY{Kfgi]wcTqSpUp{SkAVzLcc|]sEVzIYyG]{Hb~FeCRv6Ae4EaNiXz[y}a{NjSlE_GaC]|>TsQjKdWtSnHg_{B]{;QnNmyuXp@SwD]}`}_~fjBZ{D^~nWtQo\w]rF]BYwH\};PnNeE_}A[yIaNe]xBZ{=SrMf_u^yF`A[zG`~E_~LhIaNcpkh`|Yu[{`{TqQpHcSmfhJiUqnsZ~_~f~eamd[vWpWpb[{_zZxhkplcejhca}YxUr`{ZzPpXu]~b]yk`rk[y\}\}Nl\zs`}Zzbdbb]ziokjleikrbXv_~Zu``fiZv^w_zTs[xSoPj^v^xXrb}fghcdYvgswrntmoywuvytrytvrd]{loikqieh`|a}\x[vf^zgjYu`}Xvkhnhipf`qgmemcktpooclvmhw~pqpommomqrnmcjfelqgdnopikkfdhhwvkjtohjgkm^}eggda~_~{peXtQnYtVtIiOjLfWu]wRmSnMgWqZt\yGdPnMiJgKiMkbPiYrRmUnNkFaIeTj]uIiLdPhFaG_XrWpSoYsUqMkQmWsVpXsNjKiWqUoHhVrb}XtKeJfZuTpYsE_WtKiPpTo@UwBTvPiRrLfIdRmXtKgOiQkRh\ubUk;OnAXu@XwPgZpKfWtOl`yk`z}^YycOkC_}WrC]|@ZwUpVmKfTnYrWrTt[znZvUqUrWtVnQiXpRjIaBWyXnQkTjMiIfPkKgVpGa}IfRl\rWqLiZsTmNhH]LdLgRiRjD_}OiLe_uJeD_~I_Zr[{NlQnWtohtrwn[}pif`|Zvd[u_}caTrMj_|gWrLcOhD]D_}NjRtUscfWrfUpQkUpXsUrWtYw\yVqNg\xFaNeK_RlOjAYyTrYuKc?SuAWvOkYoMa?Vu\uo^yZxZtOn]yjhYtUnGa}F`~buHYz9MjH[xXoLeMa5Db)5LB[wypW|Ywd~TnSnA[zA[zC[ySjD^KfRpZsJdBYxAXyHhfjWq@UwMgX|qw|k\xPjQjUpKhLhd_wD\}D[{F]{CYwD]{JfHb@ZxNjKe>UtUpG_}KfZxC]|@Xu=Rq@WwF_Ynhoukb`}`{YwZ{dRoXte_}^~pSuOqbxld\zUuJhPmSq\zf^|aXyjrjVtXs\{Qn_}c]|Xv[xIiXwnr`~Ihohf|kcc]za|g]|^~febgekjaenq\|a}ab]~g_z[zd`zecg_yYu[wToG_VnUnNk_{[x]z`}kkmoonvrxw|uqx|{rryoe^~c}]u_}bhda~XuPjRoXuhf_yb~li_zjhjfhmtfaitq^~pnfcccvutpqhhtxmsnqw^_mmvsogmndjjkgpl`lvyrfsnsvokrpfb^\|gbada_}`~jc`hbVpSrUtOmSnToPn^{Yv\vTnSnSnSqcWrLiNiQnLiUuUqRlLiTqQlOiJdJcRnIiRkMgGaZpJcE_OkSnXsHfXrZs`zdWrHfUoKbGeYuc}XtNfRnYtRnUoMiVpPjZvRpE]CZ{PhPkAWyIbUmRhNkXsNjXnC_}LkbzVmThVlCX{?XtBX{QhLaB[{MfPkj~qfdQmQlRmD_JcMaPjHfD\zPgYxQr[ud}_|]RsJaQkUqToPhAVzVl^{Uq?WvCXw[tOjQgLcKeGa]ua{[z\wb{UpTmId@ZwWq[yJcPjPlKcd}HaJcYtZwSvXuLhZxvqp{vsmdr[zflaj^{^}VoE_Vte`wNiXtIaQhQpWsXv`~XsPm]|c~UuG`NkSoTmgWvVogOmKday[uTmYrgbzVpHaNcH\H_H]NaEWuC^}[x^vd|ZwNkFbfpmJbD_~?WuUjH`{9KkTr6Ge>RpRlXvpYtUqOmHbRhE]}?Sv9MkK`WpPiJ^Zta}D[}>TtIfp]r6CdFa\}encd[wG_PhGfSqr`}VsMiE\=OqOcSj?Xu=Tq>TsD]{VoTqAZzB]{`~PkAXyAWxWtFbXn`wjpvhSrZsUpbp`}c~UpYvptd\ybdonUvFdHfTo\|WvVrbeghmg\|UrXv[wPm]xleZwecdqdYtqelqrgeXxg]zabfcbcnmsd^a~kl_[ydbdfcWvg`~Wva}e]zPnOhWqUjQmSqLiQqa}b\zb|gvzrsv}ty{ysqou~sjmllebTqZud}hXwVv`zSkIf]yc}mhbXxjjhdZz_~_}cfgohsr^nwug`~deionidvwsmtotpoomgusnolrog`g^kf^nwsztvveZ~jmn__eoa\|mda_}Vtb~b\|Yxa~a~YvNlVrXvVra|]|_xSsOnZs]xSm]yUrUmRnHdIeJiQpWqVsQpFcUoWpPjD]B]{RmQlHdGaYqPiOkHcKgSnToZtOiXsZv`|WsSlRiToJgLfXrZtQlRlOiLfPjZsPjQlNiJcJaQjC[|D[{JbRlNfSn[wXuGbNfTlUp_{\tWpQmJeRiBYyF\yLc>RsQgMeXq]zfhodQoXsVrF`I`B[{KcQiKeE_Rn[v[wZtb^~Zq[tYsYs[tSlRkNkVvF_BVx]uRhReVr\vF`Pg^w`|\x[wMhgYsF_~QlEbTnPjUqKdRkYqUrQlLg[xb{RnWr[vguroĎlyyeka}[xojXw_}UoG`Xtc]uUoKcTi\{KfXvY{WsGej]}llNiIg[sbUs_xpFbMhb~E`GafTlSkn]vF]AUyMcOd>NsEZz_VtWsKgMe?SuUt6Dd;NkMgMfSogodSqfMdHaIcSk\u\yE^BYwXrdYtIcdgUm^wTpVs]wUmCZ|MiZqcyLg?RuTjfTnBZ{Qi[sRhRmRmZta|]zSmOkRl@VwJeXsIaB\{Xr]xZqIgMhKdTro^xOm[ykrwxwodsdWuYwb^{ihZq[yGdYrPkE_DWyIeNjYuPvQudmUvaqXtXuSpQlcUrE`UpZtPlJhTnRlNhYp[sglH`BY{H^L`H]@[wPeDXuZui`|XvTt[vPoa}ii_xCZ|IbCUv9Ee8IeAWwF]ShI[:Jh5EcJc]|hVvJiUrUoGX{5AbBXxQfD[|F\~OgGeIfTmShGaNmfG_?SvB\{^hY~\|pZtE]QkXnVpSpUud`{QkJbH`}Pt>StawG`@VwAUuaxjmpfdmf]uVrVubaht`Xrevr^}a}d`}Xtd}c~`{_{WvZv[vbbdZxTuZxWuOkRnIeNiWv\|epbmjhdffd`mic^zgkojg`achie_djiiciqh]y_{Xwa{SqRnb{QlTtYqHdQm[vYuXua}e|a{c]{hijmswuupww}yy}sleenba_}gYv`{]yRoWq`|azhUuSra}eg_|afehjmki_fxigqkgpkhqtojcnmcgfgrwqkoqsmllkqhlrjawrmv{vttplul`rohg^}ehhVuVuXwWzcZvLkSpZvfWuSsMnZx[za~r^}Zx^yPnMka{Sq[w\yWvTrOlKhTne]zQmVrMhJ_FbLiTjOhPjVsKiQgMdLbKcH_WoQhLeH`NiPjOjLgPmNhIdI`F`KfOmSnSjLfIaThHcTmdPkHb~Jg]zUnLfE`MgZs\vPhRkKfLeMdF`ZvTpSnOiKhGee|Ih[x\tRmJdIaKbHaE^~CYxDTu7Gg5Db;OlIa|Ztg{tSlKgWsb}ToLiQnYrXoXs_yD\|QoMlWvQmMhRnUpQeE[~JbKdTnRlOhKbJcVlIaIfWnUmRkRnVqNj_{WtaZsBZ{NjRlG`QnNhLeWnRrNjRiLgYugRoQkitrlx}mwmXvig`|rl[s^}[{Ig_zUoNeD[~B[{E_{PkQtk_zQo`dUtlb[tPlJiGdXrUoKf\yJd@Wxb~QlMh[wi~ZrH]EZ}Uj[q?Uv6GdRsLbEWxD^}kdYxbWueWxtu\zRriVtKgYsMjD]~Lc\yD\ic~AWyQh`vLaAWyLbE\~;LnCTv6GdH\zVsdnc^yVp^|h[qD_^yVoHc:NlOaBWt9Lk9MkMe]s9Jh0;Z@Yw[wjRlG_MnWvKd9Ij4Ga8KhE]zXtMj]yOlAXzUt>StLftwTmAZwD\wg_rXmPfd|noc\|ZuNmYwemPlWr_}ijpbhbdj_QoQobhene]yUt[~bZw\{^[xVsPhKeKiWtga}UuSra~gonsea_zYtWua~hl]_|a}`fvfhgiiqpidffedbb|Xva}b~e}YrRpJaMgIgdd}[wab~mggkrrgmxvy{u{}vyywlnnjXwUp\uiTsLiKg^w^z\zc}^u[vfda^{e]|[xiqi_|ccajhthkngomnfpfprsmfkyuencdrwmlgmjriflyyyuw{ropqbcsemqgaejkcWw[wTqQp_|\wVq[z]XyYzVs]w_Qpc|]w_}VyXva{QoPqjRpKj[u[vQmRqSoWsLiH`OgMjKiQn\wZrGdSmKeJbVoIcToUpLhI`G^C\|JdPfSkKdCZ}GeMiXpYtSqXtMiHbD]D]zPgTnKcH[|Mf?WuLcVlUmJdbxJdC[|LcRjE]HaIbF]~_y`~PjQiC[}H^MdKcXsMiIaQnVpLiLhc]{XnFbXqWoDYyEa~KcEY{@Uv>Rp?Sr6Je8Mh^v_{QmSpXu]vteab}UpYqXqZtEa?Tu`u]uNcLjHgHfNkgPoG`YpNiZr]xNlNiNjKeWpSqLjPjLgD]Uq`~UqIdFcToOgLdMj@WxPfRm]yKgD`}RrXta`{Ogqpauxippkdlb|Vr[z`zdWs]|cdgUnKbAVxSnQpOpOmYvuc[vwlWw^{_{WwYva|RpRlLcB[{NiUm\uE`OfBXtD\~Hb^tn]uG\=QrFYvTlNfIcKkYwjSpUt\w]|PnSnC[}H_LbK[~5Dc:MjNgUk?SuM_HUwBStF_F`QlYvRmWpCWy=RrATxNfMeGaMg\yYw[sD`D_~B\{\{vWsNgPiPn]ybZ{]ykaVt9Ik=NrVl?YvLgRlD]~MhNfc{D`{?VvTngH^{Hd~mhhhZzpq`[vRmXvjuf_}j[udliora_~ZxYtLkSsgklhh`\^{NhGcfcZxWlF_Ws]xcb~WuQpjqqgfmo^}\|d]|_zjfihmdbwkcg^{g{`hjh_}[z\xie}\zMnSoXuHeIcYpLgTn]u_{b}ffhfmpglnnz|y|v{yusmgno`}PmUoVv^}PkOj[u_zUnZqYsc}iZw`}aa]{gfabkg^|c}lgmaieelnsph^qihpkgimuihhjkkmrkhkpswxpsuwulof`kvspda~ne`ib[z^{Wxc\yZya}`yRt_~]}MnkYuYwUrSqg[u\{c~`xUrRq]{ZvXuLfPi^xUpWrIfKj\vSoNhGbPi_wZsWtNhF]IbNjSo_zHfSnYtLhJeKb?VuHdRjTiD^MhTnRoKlMmQpQnPiNbUkAZzD^zIaOfTjNfBWtC_yAZyUlOlToH_TkQiQiKfH_CZ{Zr]zWqRjIaB[{LdIbNiPiOiQgQkVrWpSnPkKiMjD\}LaSjPjG_~CY{L_K_?VuATxF[|G^wXna|hb~^gp^|ZtUoRl\uUqPiUnLlB[{GaSo^zXqWrPkRlczFaOjSnJbZtb|Uo]tSnVq_z[sVoVoNkKiSoUpVpF`]t\vGaD]}^qVmOkMlWo]wVu[zd|Tr[|w}g_ridhxZvZwdjaQmWuTu`_|`zFbF_PfDY{AWySqlhed|^[wiuc~^~VuiLiMkLfHcSnYmNhUpVkNdCYxJgK^~Tk`{YyLjEZ|?Km7EfD[yJdWw_Uo^}\|`}UpHeRqPkRkKa@Pp@PpH\~DVyNf]u>QrCRu4@a2@^LkKiMfYrUnD[LaRfPp?ZvJc_tXn>RtKcWoSnDYF]VvRpGa7Gg9JiK^BXzC\}VqZuVtD`NhJcD]|?WuBZ{RoeUtlG`Iga{dbzFWyN]|L_G^A[yIiMgJbIeJd\sZoVta~]qe]yeab~a}flc_}mhTrbfeoooX{VtTs[xb_c~hcc~RqRsZwdopfa}VtUtcauxfa{rsh_|_helff\vl^|Vufj]y[{]ybbcdabpfZx\yhigmjfi^x[rVp_xXtQmPkTpYuZt`zhdbkgswsxvpvtoyrpmnkiedsiRrYs\v]yTq`}XwWuc`yWqYt^yc~ga]yhodlgoiXy\|eZyb`}kmbecbm`jrsrog_mlmnjghstvytkksntefhkwmppwgkvbdhb_ad^VwiiUy\|a]QsRsYx_|`bejZyh\yJjZw_~UtiZyJgZwb~_|[y]v[sZtUtVtTpMiTnE`Kmc}^uSrOjVlD_~HhTqUnYsRnXsWuQmRrRqYtUqSoOkJbLdSnOjFaPhYsZwUpGaLjOoSm[qSmUlWlSjJh_v^tPg@Wx=Op=SrC]|]uMgQjE\{JaSjMgE^}Pe^sMiYvRlQkSlE`E`LbYoSpEcMd^vZwPnXnLePhUmKdGbSkRiAWyMgKcHcVrYsUkG^D]~Kd[wysid[vh^y]vRkOgPnPmUj_wLgGaHaMdWrTp]wZsSkUp`{_|^xe|MnMm[vSo[z^{QkUmFaUqSrQl]va{aUsPdYrVrUpUr_{YvkTrA[zSswƈpxpoi]|qi_yWrWw_|OlMkJgF^}TnWpPmNjhIfIfZy[yd^}ZwZwknMkRp\y^}nRhJcVs>Utb}d]yI_8IiQjkQfa{lZuNhEZM_:Hg0;Z=Nm_zZ}HdE`m_XwGbLbLlYwTjEUw7Fg9NkOeMcGdIeG\I]Nl`mSrQqWtWuOc7EgCSrAXyQjawOiZyToSqE`>StK_MbPmbgLeGaNhmh\wTkRfYjUfPkTnVlLcRgMdSmIaFZ|EZ{IcNgRek^~b^}^yVs]}kaetd[xbj_fpaUwWoPnUudZ|ZzYx^}^zeVtTuJhXsfm]fh[wOrWxrwkld`jaYybcqglbVu^ydbfoc]zdf\{^~jkxcSq[xbdpld\y]{]wNiTm[xYw_zVoa|^y`{Yvdnhmqz{qywrvvpoktmedea}^zXuZta{`yOm^^z^vPn]zggaVtXtd~f\{ifchkahm_fcaj^~adf`rtdknuvvjfdchbdpndlt~ptbfmppckoodbqhljg`Zzif`Xyeia_}jbY|ieh^[{]zZz]|]|XxWvje\{]vRl[u]}b`}\z^{SrUsSm`x[v[zWrNkYsQlKkNkRkSiQlb}VpFaJhMjHcMkQpZxSoLgOlYw^yYsTlTrQlHaQlPnPnBY{C`|Wtb~SlIbRlXsOkUoZuTl]rKeFa\s]uNjE[z>NqCZ|QjOjNiG^OeMeUm]sLaLcOkOkXmWrSpMmJeC^}LcZpNjLeIgMiYrc|SpFcF_H]JgMiQgPfUoSkMbRjRlTnUrc{PiJgSmWu`iwRqb|c|PmOiTlXrYrC\|MbNf?SuRgUqTrKiYs`xYv\{tdzQnZvWqPka|\~[xYt[t^z`xPiSmVpWycc}e~WqMfYxcb{ZwUt]}EbBY{f~rtrpweLf[up[{NiSqOlGcJdOhRlPmXsb~\yTpQofpQqXwt\Yu\uLja_|itKdG^HeE`}g_vKaE\{Hb~]vjd}az]xZz[q4?a/7WWqtn_zcRi>OtJ[~P`9IjE^~UsVxTpAYzFalqYvEaA[y@Zv[pGZ~7EfJ]}H]}NgWmPh@Tw;NnYtre[}_xYxJiAVx:IjSh>VtIc_wEZ~LjVsRgWuHdQjE_EcHda{eQkGcSrlwqQjXqAUyI_LcJdJdEc>Sq5EcBYvCZ|H_LamXyXuVs`xc}cb~^zniYsggrmjdRpQm\v]{g\{UsSnYu\wXxfj^~Z{[{b|AZzHaiwhf]}^{l^hypgjmcabbcprmlggkahnjk]{`}`_^zZw`~cYwTqXuWqXsgc|cdVr[vce~ggglskgihosxrt~|wrjinm[xWv_|RmIgPk`tb|]wcd}]zTsYuhXuTsg]~mkphb`mcig__efdeeabajplVxfkqfbolkmoyttytuptleginslofhliif_\|`^^`fpackjd]~`edgaZ~\~_\zdcXw`~]}]|Z{_Z{`~ojlXu`|^|e\ylYwZyTr[zQrJjZy[xLjXqNiMiVqMjGbQkWqOjKgRmFdGeKeUlIgEbJgYsSnYtMkDaKg_|VsNiXr\uNfE_F`SkSkUlTnkd{c}WsQlTmGaG`F`MgTqOiE^I]KdKfUlJbWrOoE_H`RmLhLcJdTmRk[v_zUqTkD[}G^>TtRhGcC\|TkNmPmUpKbFbHbIePiTkRjG_G_SlXpWr^{ZxMiIdavXqOldwimc[{FcKc]zKeSmSpWp^yRlQlSr]}VqTmE]{TmMjZs_zZvTr^}jYu[we\v[v]}WvUqSlVuk[zSqUmNfMiTo_{^sIcVsMfATyJfl|uvowqYwSqj^ylpo_zKe?XuRlOiGaWr\xQlNkWuv]}Qmb~VtYuRoKjg`{SpSoLccxPoLiNiQkC^}BY{BXzRpga{UoYtMcEY{;Mn9JjF`bRpGaIcLlWt\uHdE`FcE]~?Uv=No5CcCXwK`PjOmC\}@XxQkhn_|[xVvI_;Jn;Mn8IhWpWuHdXuFaG^{ZyXwPkF`Jhb|YrA[zPmgHdGaQpkjgZrH_@UxNfYvRqFZ}AUw@SsCWy@WwQeofjNmPjTpZyiebVwXrgk`ima]yXpQoWuhg]zLiVs^{\x\zVtZw_h_|KhIaPnVtfmj_}e^}aibit\{]~ekfdiglko^|nwvhirqggbkb|c^y[vSnSqOkSm`|d|eZyYuaz^{_|epjnnpjrttryjmwjuxdarf~\xZtSlA]yIfaxXs]zd~XsdOpXulcdd`~^{osdpjpgdggsf[za]~hcb\}pkeilrjggqolpuwrrqhpkkg^jklnrh[}fgf`~]}af]|dinobUxdmo_ih[|ggd``]}^aa~]|ZyZzb_|\y[{edk`~_zZy]{Zxijg_^|b_~Ro]zZyZud}UrSlYtHhNiOiKfOiXqKfB\{PjTnSiF`GdHcWoTnMjVpSmKfSpWn]u^zb{VpHdJdNhVlRj^uYsHbZtLk_z_wWpG`@TuLaMiTlQiNfF]H^\tPiE_KgJbUlJdHcE^H_OhSmNiEaHe]wUnDY|=Pr?VuRkIaQeLgOhRmOiTlLgKcSmMhOhRiLfNjLcMdSpTqXt\uXm\sIdGb[wmga]}]~a|LhNeSnFcRkRm_yTp\|ZxJi`yXqXqPljf~ZvSpZ{bZxVtf[sd}a|Ut[xZwd~byPkXxXsRlNkZva|ZqHcJfTpOlQiLi`vs{nffhbQs^xcdin]xe^zNkJgPmOl\sRqVwkPnWycUsd{JhC[}KgenSjSlYu?VuHaYqNkE_J]BZ{Ea]x~pm[zQjOj6CdIX{TiQm`|dEa?UvOiYtb~eRoBY{E`BVxBPr;LnFWxMcLfRpD^?VuLjfa_~[vJbG\F[BUv4DaG^}WtfOi:NmQoZuQkYtHb[vXrKhF`MeMjXuTnMk_i|vgJbCW|?OuVm[uCX{?SuLbPbpg`RsJdGbHg_zZ{oea}e\|Y|g_{Xv_yd~c~SsOm[u`|Wu\y]|WuVqWtZv[xXva_{_z[yFbMhec`ec}TsXvQp]|j^~Rrjqleh\|^|ntmoyuhirolniec~fccWqRo]yOiUr`z^vTsUtbzb|hcfa~noprzxvvyokrijprqaokMkUp\uIb\w`{QoVt^v]x]zXwco`g]|Yu_zkvly}vljmuhcelg_a_golgrrmlnmxlipypknoijklpmpjbehcfa[zblgZzhlirmckggii_en`ce`gjcdeeZ{d^|\{jcXw]z]|denbZydlghUtdkla~Pm[ya{_z^z[uZwHfIbXsZwOgJcD`RkSkMiOiSmHdB\{D]|NfHcPhVpLeMi\qWsLiWpXsOkXtHdMfNgK^GaMkOjMkPif\wVmN^BTwKe@WwUmQkQjRhMcPlH`;PnTj_wYqPhBZ{MdVoIdE^SpTu[rQjPhUkIb=SqCVxQeF]MdSn_{azGcLcWsMkD\~H`JfHfC\}F]{FaJdTmYpWqUkRlJdSkAWySmrc~vl\v\v]zOk@XwQnMkbkE`^|c~VnYtvlPkYvJh`{e~[y`kUt]zd~b]xWqXuZv[sNlXvQoYqIhWsQl\wSoD_HeLgMiJe\yuqtjaeXxQl^|\{bja~gpWs_|PnJda{NnLnYuLnecUsYyj_}GdNjNnbseC[|>St_w]uQlQe[pOmD\~C\}Ljrs_{Fb@UwVnVpAYyYtaKgDZ~MaPidjdd}Mk=SrGZ}YlFWy8HhI^~[u[xGeB\{D^}XwsiOkF_]uAVy8IiTsHZ{PhFbLdQlIgSk]tNmQjRfPlMiGcMgLdC\|G]QiUqQmKdNjPjYn>WsFd^yuzjmcSpUtNiC]|Jgn\zRm\yPpSmhh\wGaXwXxc}tQoWxg[|_}jaUt^xUuUslXuIfKeXnLfTpSpPiOgSmKeDaMj\tUq{v}j_lhPoUs^|UtlmfoTnRoXsToPoLkSsOiWt`|lbcQpjdVqOqD_~XqkVwCZ}Vn[xLdSfh[xAXyCYzBW{HfvuhazVpYvLeAVzE`TnfXuKdF^GaMlYwe\yUpLgOg8Fi9HjK]G^{IbKfPm@Tw>TtnbWvTtXtLfMd8Eh4?a8IhMhSrd[xB[{Hc_zXrEcPs\yWrSn?Tu/;XMfQqXrMjRqaksiLhZvWqXp?TuOad~eZ|OnQnSqSqb|XwE_Ztcqte^}YyYySqPlZtga{[vl^|TvddTrPnSob~hOlJhJgRn[v[vXoQkLhXt]|Uqc{`{Yvhuv]~Vq_}ghhvg[{hnmmdpjgYx^~gdkb|hf^}jh]{[xd|c}f]w`{hdljoovs{rvynnkjoja~\zd_zPlLeSmaw\sa}^xWu]zgYskebb`|d~_}enmg\wa}^~kimmhlbf`^}vt]cmhehnnjngp~l_edrporuohd]~cc^|cdbi\|fknleqhgjc_edbikadiiebf]ckhng\zejfgb_}^|idbd_~_~g^}Yxc^|XzYyYyZxYyXtQm\y\wRoa}WpJeHgOhNfUtcGdEaPkSmFbSlE^B[{H_MeE_|SjLeC^}=UqF_}RkZrMeQmKcMhWoPjRpQjYlEbQnGbE]PgPiJdHbD\}BY{F^LjGdRkWnWoMcRiE]?UuG_KgMgTmF`D[}H`>VrF\RlPhC[}KcPiYoAWy:MlMdB\{JaXrFbH^YnJfUs[tUoOiIfIeG_JcOhNeFaKhNjRkWqOhH_GbF`Nhfrng_~dlQmOjXoMg_}MlB[{[yiVn_{lc[y]x`zkedOtga|fX~Vt^{jdNmVqXtAWyMdSpGdZpVsUqSocLgUn[xkywtmlhd]zdf`}hXx`VsMfVqc{ZvTnUqhQm[xhVugol_|bdQmAYzYs`VuVqLhZv^xHcToB\{axUi=TqEegihVwYxYoCX|LfRmPjQleYxCZ}A\yHcZva|r^|B[{CY|Xj?Mp2=]=KkPfE`D`Mc2=];Onbeca~>RtI]Jb5Cc=Hi=Rr`ymVr@UxIeHfLi[yIfMiNlGbE\}>Ut4Ea\uTu[xVsSq^{ppo@Vw>StQiQbWpa}XxVrTqUr\y`|UrNgOj\{bfjbZxYyYwc}Wt\wYt_}msVv_}l^|LjXuWtaeTqA[yMePmRnb{SlNgWt[{]vd{e~^|ejVsXxgpVu[ygpjolomlfnina^}bddga{WrWv`~a~Xy`~\x`|c}ifgcjjhmw||ytsmdqtuif^|UpYsOiKeOi]xd|a|Nl\v^yhhZv`~^}]{a`}d~fmlpcfra_~`mruqgohchpshdbkqnvnlqsijkklpbloijcskbZzd[y_jma[{djia^~kmh]flpqgfiifbchcbhhZybi`d__fcdg``}cic^}ecc`Zy]|^{dZ{]yTpVv\zTpYu[wYtSrPnNiGeJcRiSqXuKiOnJfD]~D^\uNfJcKbKb>XsLa\s=UrXoXnJbIaSkTnF_C\|G^E^TpTrQmD]KeRkE^KbPjPkKcPfPhLdJcOiRkPhF`H`VnH_=RrBWw>XtJaNed|LbAWwA[yG]QjI`E]~Un@WwEb|QiLaBYx?VuTjUlKdD]ShPiJeTpUpWoSoNhH^SnXsNfD^NiPkIbMhKeWpTp]w=RqAXyTsg{rmslbYsVqWvIhWr`~OkTlb~UqSqi]yNkXteeUwceZxkxf`zcPpb~qTqYsShRk^{hLeLiVrNmIh`}WrIea~}rlgbslnYxVub]`~WrSnPlVtWo_x`Vw[zOnZxZxn\yfYzca|QnVoVuiVqD]a}IeE`ZvFaOhPeEWxJdMl[yu]a`zIbZrNiBZ{E^VveF`QjXsLiSpPoOo_}SoCX|FZ|I[~2;]_4AaBSuJg\~_{D\~IgRqVqE_ZrYwOlc~RlXtJaQfJdQlOgG]}Qg@[wC]|NiCZ|PfTnA]zDa}PfSkQhXpMhE]~F[~JdJaDYz@WwOfAYzKcYuF]>VsQlMgJbTkG\~F_|H^E\@YwQiI]VqH]L_F]SmHbRfD^}TiPjE]~OcBVvBWyNgPkRiMg@YwHaNjYp_xWpUkOlTqLdKcUmF`PiMjKeSnSoPlVlD^~E_Hdb~~udks]QrRpGf[wkHaJd`|JhHgXt_yXxJihljqk_|bgb}jdPp^yXsEb\xuC]}Lja|NhFaJiKgRmLhYx^{Yvdv{{vrjgim[zjn_}kr[yZxRrBZ{D`|ZsYpUuZyUo]zbWxl`itXwb|Zs_}f`{Zu?WvUojAYyIbPfVkNe=RrRtCZ|SnWuXtTob}Pl?WuNnaTrD_B]{Pj=Oq2B]>RoCWuVnQgFVx9Kj:MmC_|j[yZzeTnIe8Gh,3R,:RLdXr\wb|Hd?VvjvRkTp[wPjRiAXz/9X7KgpvlXuRo\wglUrPbazNjWyWuglhGcLe_x_~cll`}_~so\|c}cdc`~Poe}oocbd_ZxTqUnGa\u`|RpPlQkXqb{]xRoQj]ygn[y_~^{a|etsgmXv_}[xbekkoc_{b}deiYwQoWrZvSsbdamdggaidqwgxunortoftwgaVy]niVuYtQj\qYsQoWu\vRnHgYu[z]{jrqkmgiojUv^~^~ddfikl_`~c^|b_}fnilkmlttk\^|da`fbjjfumtuhfbclgwnhk`ichjclfiendbolleglfgjpskjea}ch`~ddc~bgeig]{XuecfldZ}bhf^XyOi]yd]Zzb|c~Vv`SrRpWpNl^}cXrPiTpOjQkRmHdGd\w]wQmJeHdSoAUx>VsBZ{K`IcEa>VtAZzG`B[{NdPgQePeYsKaAXzC[{PgZsYtLdH^C[|LhGaC[|C[}KdMiJcWnKdC[}TrHdMeQjBXxLaTjI]=Qr@ZxSkPiQiE]E^G]{LfI`RgPfThSjBYzK`G]|F^XmRnLkG_KbG_PhSlKgUnQnLhHdXoJaOhMhQmXrIcTnLfYqRjKhIc^vkehflf`b}ZuSrb~b{Vsc~d_SmTqZyQpoZsMkifac\zVuyoVv]{]{OnMgkWtLe]wa{_~UoToLeHcYvp`{OkVzprtpnloe_pnfmr`{aTlXoOjUnXoXvjXvVucMocfhh[~]{VsYta{jdE\G__|]sJaF`~QkAXy>TtAWz:Mla|mckWsmUmJ^L^CVuKeQpKh`~aSqNjF`TnWvC^}JbMb=Or=Jk4DaFWtIa`vH\6Ee9MjVpsdUnNe_|\v?OuBRmFXtH][tZsGaZu[qLaNgVpmNiVtMb]uD^~Ia]uF]}TiF_TpMdKcSmOfI`SnVjG\~LfIdLd?Tv=PrOcMeNeBWyGaE]~UmOgC[}NgAXw?WuE_LbHaE`DZ}E_RkYrLd@WuC]|E]UnAXyTlVmDZ}LfB\{AXzI]NgOjI`BX{OgSkNfKeF`QkXvPmUnTn[sWoPjSnHhKjRkIcMhUsTmSlFcPjkwe_|lpdWuWvVvTt\xeo\wbz[wOo[{Z}Ut_{_}^~_{h]{Xuea\z_{a|_zKfg[uKeRnVric|C\}Mj]wJhPkUn`Rtlursrqjaelfcied_|b|^zVpb|UuTr^zUtUtUub~_{TuY|bfe^|Tn`|ykVpD_Yr]sAYxD^}OjIbUmVsXtq}LcSmGdÎKb9Lj8HiB\{ftbub~Zxja{WuWm\ydikf[zZzZwd~aecbld\zbkchdleof]{ifWxOlSkUmQtGeVs]y\vWuUpWqXuPnfaabVualckbXvMnUqkxeajgc}haYyc^zYtQkNl]{VtRo]xYvNj]{ege`~lllidhvyrhymvqdYz^{g~[vPkKeIeQnZrSlYwd~ZyWxXpb{ac}h`akecjofjrvqb~iubcmkkaejtqigjtrspmgfulc`~hm`}Yviigmierpufe`ebfkh`cXy^~dncgjjvlbqhro\ikhggalqnj]~`mec^{lc^^~p_~Wu_}Z|Wv[zhfdfZxVw_z_}Zy^{\{Vu[|WyMocd[we`zWvRq]yVoKdXs\{_~NkEaHeTrHeVn\sFdRl_vE`F\}Vj`{D]~=RrKePjOeGaB]{JbBYyRkMb>VtAZyPeRfHaC\}DZzCVzFY|I[~FZ{=SrJ_~LcG[~G[zK`D]~NfTkJdD\}NgF^~F]{I]G`HaJbQkLfEaE]JcG`JcF^}SkUsMiG]F\AXxB[{PgKbJaMe[tYqOiQiQnXsQjJeKcMe_vUnJkGeUn\wPoVtWqUpJfPgXr[xuupkiVrOn]zNhPk\x^}dczdVs]xRsZyca~YyTpi\{QnUqSs[yf`yZwKfMhUpQnNh>Tt\wc}UrRpTnMhPjOhXrGaUv{prllebba[}koncZz]zMiD_~KgC_|Vpe\wKk^|_x^|aWue}fkTpGbfdgYxE^}H_}NiNiPgLfIbH_~D\}MbMbHa\~lfa~XuA[y2=^;Dd;NnPhJgGd]{ibIgHghQhE\ToUl?Qr+4Q@LjMcToLd=Qq8Ih@XwGfvpKfHaLfF[E[}?UuWs_yKcF`TtWwqbyKdOojn]r_sL`|RsD[zI`SaH^|NdIa=OnSgYrKb@Uu@RwCSvTgOeIbNgOeJbGdPhNfWoNiKbNeIdSnPhMdAWwIcKeH_AXw>UtGaOhPhMfOkC[}[oWnRkD^~GaMgMhSo[tRnTqPk[tRnLe]wNkGak}ug_da}lZtVtWrXrUtepe`xj^|]xpStSqcf]y\wUsYx[xc~SqNjRp^yNmSm`yIh\w[wWwfQpab}MjOjNiioyonnte_Mjb}trmfbgPl>Ss=UqGbQoOiJb[zeMkSoQrfzXwXylVrPrQo^{l^yB[yRqSmF]}MeB\{OhH`G\}=PpIbSoc|agki>Ot3>_;JjObWmJeTn[}ad}]|ZwBZ{\v^{^vF_8Fh1<\8HfDXtNi\uPhUrAVtH\~B[y?XvD\|L`>MpDUsDVxAWyIaMdHcIgMeK`[sSpPkHbH_LeQhTnOhGcLdOdJa?UuBZzI_JcRlToSkKbRjQiRmJdLaH`TlYuRpSm]wa}XuLiUs]zQmFa~e~_{jqmicZvVte~ZrToTuek_{^}edg`~ads`\|XxPp^{UrUqWsNhNhFd[t]v[{VrSpWwMkMjQpWt_[zZtGaSr|wvwrkfb{e~c}hjangMg@XxJf`~TlJaIfLkTo[tRq_m^zbgUuSt`xQl]{oZuSqNjI`E^IcLfHbJdATsQfMdJdMlZtggSlVl@Wv?UuPhb~Up`iRkWthSm]vPjHc[sG\Nc7Ed)4M5IcC[{^{PjE]:LlAZzYxlcnXrSj=Pr8IhUl]vJfA\zPmUrTpJdXrZx^^{|czPbTg8Hh5CcB[{flxTrD^~b}aQpYuUrcniYzioa|]y^xhebYxigUymkc|Vt[}itVtc~bjXsMmNhMh]yQnSo[xjUu[xWqMi`}f[{o^zgfhkdknTr`yTq\xm\{^{a|]zPn^{`|[wOkKhPiVpcb`|mbb}^{a~evqmeqvmnrzrh_{XsWrUpNjPgWoc}gUu_yZwMkQoKia|e}cb}fd`hne~n__leeciedbqsihunynyk_bdkrvlhttpc_jcjponldjlqrmfhiopqge`}fjfnirih\}opY~^lmlne]ZgdqphgYxl`[~djZzWu_\ajgcegbbSr\yp^ZygdbhjdYwc`\|[}QqUpWsXsXrUsVtXu[yVta~WuYsXtPlLlQmOiMlLhSlSpRmMiOld}Qk@WvG_LeTlVrFdBY{[sXmPhEaNgGaAZwC\{CYzJdG^JcRk?UvUkI_=Rq@QsDYzAWyK`DYxJaVtLcG_d}XsRnKhWvgUr[uYsE^KgYvTjAQv2>^7JgLfXsXsH`6BeFZ|YthvhjThBUx>PsQtNc[rG]}NeKaH]AVwNaD]zAWvBTx?Wu>StI[~FUvGVxL^KdLeKcId>TtAYxGb\yJjMhQiWsPeMgRmPhG_MeH^E[~RgG]}RjUrOjMfIeMe>UtB\zTlBZ{KfOiXrRqUq]{a}]|UuSqTsE]I_c{uvrkeTnc~bzWvWtZzba~\wYv_}eSrUsebic~[{jVrQq[yUr^zb|Pk[xNjHfPkf|e|EaJiPkZsRn`|b{Wx_{[tqvuwxg\~_[ycVq]h^|c~CZ|F[|Okn]zC`}JiQlSoMgccUohrmb{PlVpf~UpD^~HaLf[rGaEeQqOdJb:OlMbTlMbE\[x`\z]zZ{=Sr7GgL_Rje[wfQnWtQoSq_y^|LlFcF_NgQf9Ki/:X>QtYwMlI`FZ|AXz\{euWtPlkCWz9GjI_LjEaSn]{YuWqD_IhUxUr^{UolPlRjShQeLajXxd~hZzTpZu]y\zb}clm_`c\zg_|\xZ|fcaie`it^IfRnZx_~[wXvZwi^{ZvWsPj`zkhWuSrXsa}YvZwpf]{]|[x^zbc]{^~a}Zu[zYx[xOiOlToJhRoa|UrWv`~_{UpTqWu]{ehe`}nnkklwhdgjof`_{iQnFe_w_xYvnt\uOikh]vWu\zc}c~]xhmhfgiixl[|_emfikicjgrujhlkgpwpgbkdjdWyfqqemncfolflikbmrumkgmdlhfq_^}cjmqwqcnvncfmrkbidh]dqb`]}cjaled`}Zwacdjfe_zjb]x\zXu^ze\{aYu[yemYx]z\x`~Vw]zSnNiOkVr^z`|HgVrPnUqHeNjb~YvJgL`QgRoXtXrRnJeG^IcVqQmHcD]zMeLfSlJcPiC^|C[xCWwM_Mb;OnFVwPb=OqKbTkH_C]|NeOgNbI^~VkH]}PeE\}ShGZ}>Tt9LkGYyLaI`BXyDVwGWxGXyCXy@TwAWzI_IfRi?UuNhUmUr[uOmNiLcE`LjG_XoOgLbI`H^}H_JaNiQkD^~QhMeC\}HbKbAYyKdTnOjRp[w^z\y_|UsceXs_xNiJeev\kvfZvTu^|[z\{gcVw[{_}Tr[xeUrlcijQo]|aRoKjVp\x]xWrVv]z]uYpcNmLfF`Fa^{QlD_\x\{ry{sqomqptmkPoRuQppa\vAXzE^}[uc}QoWtXr^|Sm]yZx`za|lJg[wWs[x`zZsPlWr?VvHaE^>UtOlSlTpD\z:MlL`RfYqNi@Yxb~ZwVwE\QsE]~Xu^za~LfHgQpOjGeaYuMkQiJ_ZtMca~Nja}hiZ{b~_|Ywgkcs]bi_}codUxe^z_hjgqo]~`}MhYwVtQlVqc{ToLobed|`{_~[yYyXt\u\x[yWu`{[x]{jcba~gb[wZw[xc|h_|YsOlNjE`~Rk^y[w`~^}\yha~_y^|^c}esvqaiokcgc`}ZwZxkkUpE]|F^zNeWq^zcĈzt`wn[{\x]}cca~mkk^^mm\{Zuiuaaunakgoykf\~dflutcfidckUw\|fktvjkkgfnnrkkbcmqeilredlsaabfgiioqnmeXnhysbbeiggj_`XzTs_afofda}^~bdihgmi^|ic^zGedsSwOnQr[xaaca~PoXuVsQpVsLgTmWsMjFbSmVsQmRrNkOhNiKjNe^vLhF`JbLfWq`wKgMiD\GcKdJaA\y^vGbOjB[{;OnRfQf?SrFVu>RrVhL\C[w;QnF]}G\AXzJeI`}CZxPa>RrG]MdMaQfKe:KmLZ~TjUnM`CVvHZ}AVuJaH]I\~H]~JeRiUkF]@UtRiPiMjGbKdHdMgE^Md[sXoGaF^yNdShQgE]~HbM`K`KfLeYqE_E[{PhLhKjKgd}`|\zUq^|d^x]{QrLhTmXuivwhbgeWtTpXxk]}Nq[{\|VvVrRq]}ma~Qo`hZw\zUsXra|_xJcbjXra|d_}`{FbC[}LlTnGbYwNjToe}thspkioqnfiYv]{WtiSmSsNgWrC^|Ut_ySqQkH`AYyBZ{LhPjD]~RmXyNm]x]z\y_~jiQmE`E]NcGa~CVs6DeToMkUpVtWvKj]tbzFaGbbHgFal_zI`~RhZob{Hd\z\Z|\|gflib`dobadjg`a}c}ecdcromcf`{QqHgJgToUmOiJgb|ii\ySn]uUnYxZydb~Ss[tdzbln]~eVrea}So]vVoe[y^wZyWx[vVoIbEa~c}scghWx`|b~Uoekmhijgg]zc}b`}`{Vs^wYtTqRnTlNdOi]xYviŎ}\yiqng__zZt[zdpa^^cilca~dffsphhceqmejfhkmrknenmibb`Zzdktqh^lhslbosfntlonn^iicgmhbd`onrnedhkpwf_~kgiddbghafXx^`eeic\|hff_]~`{cdZya~gNnOhhTr^~Z|NnXvWvWsOoOqXwMlVrVuOkMgIfMiMjSpTlRiOm[zHeIcG_LkWvKeOeMdPiJeVtTqGaF^G`C]|B]{VoWpI`KcPiG[}M^K_6IeTrCX{E[zLgD[z>QtMcSjOcK_KbF]KcIb;PnEX}E[}DZzLea|KcD]MgD]McPjOjOgGaCZ}ThRjNeAXyE^RjKdNjOmD^}RgOmLkTnTnWqPoYwc]zPmYtWt]y_tUqhzbioe]z^x]ydfZxSpa~VsTtOpRsTt]}hsZxHjcfKfjMiTm^xXsVrUnHdWwfa|MjD^F]Xt[}PjPk`nqwwwpqqbalrj^{ld]xVqIe?VuF`|FbLkSoAXyUpXwa\~^{kXs_z_}f`{LkYwb|G`[sSkPqG[yRmUuXvXrc[|YzeddOi@VwPjDZ~?Ro=Lk5GbIcPlKg@Vw7IfPhlegPm>Ts@TwEZx;RlUtNgCZ|@WuPfPh@XxD\~KeQhQiSkF_E\LgVrWrKfD\~G`D^{H_KbYrOfH_C]}JgPhZqSrQnPhPkTmZtTqUtXwVuXuUsXtby^{QnQlmrsqfewg_{\{Zx^{bVsYue^{jnb~acSsd]ybbYyZu]xXvFaC]}QjTm\y`}VuVsJcVtVu\xLiUrXts{qw{kchndkncgolnOkUsZreVtGcejJi^|^|_|]oZtUn[y^|kdSt[{irlnnfWtWtalilhih`rj`bl_~^ieZy`|PnVr[ycb[}Zy[xgda~]{Tspn_~YtOkWvb|]{a[wYu\xTrQlYt_|VqYuSr^ygu_~ejVs\wg^|kwwkcbgl_fVu\{le]xb}Wt\w_wHb~WrSpYs[va{]xJdNiXsa{WtNmo”ńlfibijnjbdal_hollljfmlgacrtfhlj`bedginmkgjqrragmgfqrjinjjpjilrqpngqheeaifve`lgppjka]pempfigggdc}YuWu`h`~_[}eb^|^{Zygn^|b~^|Zz\z[xYvVtLkRnOhNjXu[w]}^{]tSpNjWs[rPjHgQnTkPl\uOm[x^zHbKfOgToYwKkRlSlSkPkPlRlOdUmJePkJcQhMiRkKcMeC]}TkJbF\~@UwK_L[FUy>Rp>Qs=LlEX|JaQr6IeGYxUhLeMg@Zw9IjLZJ_Ia>Rt?TtLd[oI`=RqJ_RlC[{BXxZrNf@XwMeWqQiNeI^@WxJbMgKeQhKcJfLhMkNiLjIcG^}G^PhMe?TuE]~KeRmYq]{RmQiMjYs\tLfJiWv]{Yx_~LhVp`~JgNgVusurms`}]yYuQnTq^{mOjYu^|qd~Nj]~qZwVsdja{hQpPo]{MjIha|QhQmPpTq_{cXuTqUsMgB[{Lfau~{y}vppjPsStUsSsabVx\{XwLfXmC[}RoGc@WwAZyMiUqUubqhbZxZyVpYuZv\wB[{=TrWq[r>RtIfbZsCZ|?UuAYyNg\tPgE]IfSpJcRlnUs=Qr?TvHa@VwKaZrPlGb\{RtafxYwYxF_K^BNuCRo:Lc;NnMaZlJYz.6U1:[[rZyjXtQkTm@RtFSs8Je5EcE\|`zTqZw_zYuVuTrTrNkg{`yYqJf\yfcdZy`~mloonm_y^|dfakomhrqa~Wtcbbe^yhlSrTqUs[xccZx[ya}a`~b\z]{`{hgTsYve|WsSte|\y^|aKiSo^{UrIcSn_zaoikdacckfyub`vrjpZwSvXw_{hffMo[x[qXmd~Sp[t]yd~\x\zUr\xff~dQo^~€fcdilbjfnnjdfheenso^|gnfgikbhadvsaboqmmja_gvdhopecorj`wsmqpejfdouihsqgccdihefdkqjj`cjc]osmd]dbhXv[|^|^{[wbOr`e^zWt\yebaZvb|ZzZzec}Mm]x^{SnHcJeOiTsa}l\vOjOiOhSpLlRnZmKiUoSoPoUtJhRjTkLfUrRoOlRoa|PmKgOiQeGaJeE^HcRjKbJ_OeFbEaVpJeIaCZ|@WxSgJ_AUwM_9Lk>RsCZz?Tu?RsBRrSs;Qn:NlDQq@St:PlIa\tI[M\>PpH\}M_?SsCWwMdBY{>RtF\{QlD[zG[}ZoJa?WuIcIcF^H^~OaJ_AXyKcFbMeJ`D\}HcOjGbVqPjLdWnF`HbJaKaVnRmJfXrMgZsXu]xOkG`E`LhWu^}cUqYtWuVrUq[wZtfyrl]z]{^{b~XsVtqi\y_}QrLkeYtelYvipWvUqRm_}_~eWqKg]}VqFaLkTrKiY{\{HbJhe|WrSrOmLit|~}yssg``~a{VvZ|pcXsY{LmSkG`NjVsTmBXuNcH_HeTulqWw\ye^wbce]{GaSoC]z@Qw[rXxPkOgTsJe9KjOi[v]|MjCW|@VwQk_zYy`Uo:Ll7DgHZzMgLia}bJfNlaSwJhLiYzQpRf8Dh3B_AOoL]~PeEZ{Qb9IgQtPiOnKcOfF_K`@VuJ_KaHaQjAXz@Wx@RrKX|PeBQr;Mn?St:KiCSrJ]E\|;Lk;MlOdPkKdH`RsBZ{LeBZzPdLeNjF^HaMgAUvE[{K_J`E^|C[}LcSjE[{9IkF]RfI]ATv9Kk9KiG\}Vl9Kj5FcEXyIbF^|YqJb:Om:PlBVwI`Wme|`tViAXxPeLfPgNdBYxF^NgG^}BYyPhKcGaMfOgNhTkE_D_LfTkNiHcXsWnSlXv\wNgRlSoVnKiXrYrPlYvYtPmOmOjOkPoVui\}]zfZwYvTpOjlv|obYyf\yWuGd[ymmd_zgTsQncOp\wqs_^|fWwc{XtRo^|NlRmOjQnTrcb|SqOkRkEaYsVnGcHebwrstpzvdjVuHfNlo`TsSnPf?Vv=RrOgcRn?VuGcHcQm[y[}h\zOoKl\}ii^}LeAXzGaRmPlBXzC[}Rr]yDXzC[|PnZt\zUsNiNmGaF_XsTnWoARt9LjSnUjLcC]}QmZvYv[vlJiC^|WuUqI_H[}7Af>LlC[wMgHbYnI\zRja{bzQmHbFZOgUjJ[~9KjOiC]|Ea~wXrEaf`}[vh_zb_~\ubwaymtgmjacqjqibgfookkZyi]{``gKiRpZyfiecoj`}i[vig]fvo^ebcha__{\xYub}fk^yZs`ydc]xd~dghgiqltponhirh\yZxYxVt`~]~OlKcSrJ_RhOd6Ie8JhG\|CXxEZxNb8Ji;OmMeKeG\}=Uq=PqEYz>RqStLb]{RpYv]|Qn^wgTrheaZu]vjbhm`clihje^blikkb_za{hc[x`[yd{hbWv`efpofa~bd^htfbneWu`~VvfjVsXtWrgq\x_{d]{XvYulab^yfnonnnjafo`h_{WsWo^xXwXwOkKgA[yOh_{^wed^{IfQnc~khVtZxkdYuZxb`~ok]|hddqmmihlhilsgiphb~b\{khWwZyejacdnlplcjkjfkupjn^gqyqlpokvvqifgonfm`Wz[}cb`Yxbkob_kuggbppcuscjd\|]~`a\{ZzgfRv_chi^zMlNj_y]{OnWsSp[vZxYu_}fPmGeUnSoUsVtVoSnFbYwaTqIeLfTlVvZwYrPkHfNiYt^{XsRmOnPoHfMiRmJgQmfXu`|SmLiMjNiIdZqEaNhKgE\XpTjF\~HbD^E\~Re@XwCXz@TvNbF]@WwJbTkNd=QrCYxPfE[~?Rr7HgJ\G\OcOb?OqM^BYvCZ{G]}QfJ]:Nm>NqCUuAWwC^|[wbvShAZyAYyK`NfHbGaIcLcRjI_C\}F]~E^~NjQjLdD^~KcMhWpSqQnPkIcOlaj]xQoOnPjQoUoRkLiTpXr^u_wSrSocdXuZ|cc}Zy\}Urb|hl}wvg`}jKiToKiZzeemmee_}LlYyngghZt[z[yWrRoOjZwUs\zOlPlMla[vMeQnQlGeTpAXyOigrwotnchhfgbYySrYwZyYuRmE^F[|K`>PpJbWqGaNh_{c}Pl[zUqUsVtKiWvNmlmEbH_HdC]}Ys[x@ZwKc\u?TuLda{ilhLj_~VnD[F_IePjH[:Im?SrG^MieBZ{Hh\wWpLhZyHeMfZuOhKY~1:[:JlPgRpa|Vm9MjStLn@Op@WuA]zKjQlBQr-5T?YuTs\xUpKgKda~Zt8LiG[zBUti[~[pfem_Z|basjg_Z~flnnnf`i`nk]~caaik[y_zXr\w`}bmfddfqgUu_ekid\z]xhg^|^}`~TrOmKhYs[x]zYrRoWuc}hjoihjhlo{tjiym`}HeNjOiOj]tWqLjOiPfUmToUrZu^wPmTsYwhha~hf[xXt^zgmc}gZvcjbbjnvjwvqonklqoiqiligfedkiwnbmdjqmcmrpusp`qmnirr|q[nquslpjhbmbclgbkk\{ftcag^bhhke`^~iui^~c_~b~eebTt\z`_}c~\|PrYu^`^zSpad^}Ws\y_{]wa~RqNkYwSnLkRnZxWtSoIcGcJjToSmNlPmab}JhKiKgWsYuKeJgQnE`SmUsOl\vIfKh\z[wQpTplUqOkRqPn^xOhF`JdE_IcJbVmHaE^~JdNg[wUqC[|>SrDXyD\}TjRlMdAWySnAVwJcMdSkI`BUvObDY|?SuG\{MdHcTpGa>RtEYz>SsJ^FXzKaLgFbKcG]H_D]~IcIcNcNfMgIcPlUpSoMkToTrWt[x\zSqSo[tNiRqYwVsKlUp[sOlRn]{hcePpZzc[wg[vZxmvytfheYxea|[z\xPqQpd\|^n`ari`{_~[w|dNmUo\wLgQmYyLj^|`|\zVq[vSpFaOm^yGfJdNhfywvtytpVvHeYrVvQrgfOoQmD_~G]}RfMf:NlDWxPhG^~C]|QoWu_|]|SsVrFbQlbfqE_ZujHeEaMjBY{RlWtMgNfVpqtpea`}TpGbBX{[sXqBX{:MmRqKe=Tr:Pm@XxUjmclf\~NrRrfqqk`cdc_kysc^m__a|faja_~[|Rqffcdmehoa~`}_a~`hmfUs^zkf]|^{c~WuRmEb]v[wggXtKjTo]yicdoomhwytlpxjd\zUrAXz?WuPebvOiKcYqWoLiYub}Vq`zZyUra|d_~kebVu`}gjldc~_|dbjinmgkvrkpsjmpgbge]]}kheagimolohiquqgivsklhkliinywbjmmrfjouofjedchgb`[|mahycepnthVx^}cnlYyd^|_zbdbcjf[x^{bSt[vnbWs^z]z[y]|VrTqWt[x`}[vUrhYtHeSnTqQoYuYrPkJgOhZtKfHdUp]uZvMjLhWpHcYtMkRpE`GaXtXsLhJgGc\xWuOnWrSoVsh^{E`QmSoHbTnJcQlNgQkUoGcIeQkVpYsGbAYzTjHaBZ{JaOhJcG`HYyCWzG^LdEbOnIbI^}G[}C[{I`J`>OmWsPsK]ShJhQmVqZvLgYwb{{WtC]{lUtTmQe@Sv>PtI^KcOeI\=SrJdOg[zKdE]JfIaAWyJaXvTqUjjhibOsWwUmYqYu``QteZ}jqmggjgfZ|_~a|e\yWuUuSr`|lbni_jpgflfib`c~bfTpUr]yQnVtTpUp\{XwSm]uVq\wdmiimd^~cuw}vomd\{e^|YyZpOkPm[xVtKhI^|AVvC]{DbPkPl\vNiPnUtgc~_|bh`{b}^y`~plibgeqgfpttt}mdhkppsbdnhZ{_hpkfachdhmuolnhruluy_jqtxgltmdbgnkihftmeftv^gqhg_ciZz`|]]irfXw_~heuiX{bcd\|]{iZwZyVvOndYyY{hUrSoQnKl\{Ww_eSoXviUubYv\wZz_{OjXu`~VrXvRmQnSqOm[tIgKiE_OiOhNiMmTrRpQkHdUsi[uPmQnZqKjUrRlQmC^}OgTjEaNjLjJf_{XyLhWqMjGbF`RgVnQkNmVs?WvK_TkVnJhKcKg\xJdJcOeB\{NkHaCZ{I]JZ}>Rq=TrI^H\K`~NaGZ|QeAVvEXzL`=OmL`AWzI^LeLbNdHbRoUmEXyRdG_B\{GZ}RfL_?SuDUyO`DXv?VuOhNeTjNfF_LhSoNlTmJcF^HdYt]{UrRnXrTpZxVsc|]{WvSqNj\u\xUqSmJeZuOmYvVsb|eZxb~gbYyRoXqYyjkijpy`{MlVx[xbYx]{eh_|fmed_|m`Xva~hdhNlHf^|StSq[vgKgPkSnKkIhHcHdSm^}ktklrrroc~Qn^{Xx_}YqRp_~NlLkA\yXoRj=RqJaa{KhMjNhGdKgRrSsPlc~YwebUpE`LdE_{ZuXs^~XvFaTnPmD]e}ug`hdp[sD^~EaE\F]JeH_RkJhMiLeUqdz_~QrQmiPnTnD^D]P`CSt8JhJaSkGa;Nn8IhYwUrLmGcEW{?QrB\wWsVl^yhlgWyPnSlebXxLlLlQqgecmukf\}bgle_}Zyho^z]{dXxjlahpidtvhZxh`~feYtZv[wRmQlSmIfPpWu]y\wd_{Zvgrmmjbotyuuue]{chXw`vdxI`KcZtRoYsXqb|HdNgTo]wYtYuSsNnYxfmb|_{^}kcgmna\{jpjrtpiwur{vp`blmgtwhceljimffanmioqnhruduzohjjzhk{mlocnmrvgo^\bcbgoogpleqhgjj_~kkaba|bmkhjhXxZx]yh^{efa~fcOq[x]y\{PmSp\{VtWvf[xSpTpZy_{TqOmTpZs]y]xRoNmVs\yVsQlGc[wSrLjZsWpNhOjOnKjTq^wPlHeNkYvc~Zy\vHcVsd}\x_xF`LgQnOkYsIcWrUsIf`yKhHcPgMfD[~Og]z\yIgD\~OgE]?UuJdNjMgPhLeNeSnZxSnJb@Vw@VuGY{EVxNaTfBUvL]}BSuC[{GZ|>No>Nm>PnOcH]AUw>VtBWuG[}NcLhAWzEXyH]>St>RtG^J`EYNcNc:Km9LkYo[xI^?UvJcSlNiOiSq[uTmQlIfKgMlVsZtVrRpPjMk`c[xXyTsZwSoNlNiSpQlMkMiUqihXxa}eUz\]yQoWv[w`klftd^z\yboZ{[y`ga^xffahnoRranVsWtfoYyX{PpHdPn`MjUpNjD^~a{VpGcQkdbvlmjntpk[yUr]{]}n_{ZxeLjGfHeKeJb@XwJdYu_|HfOoRmOiQpZxOi]zdZxcNkFbNjNl@Xw\zJgNkfXrD\}OhXyfrqkeTrQoRnNiNcQkE[|9KkUm]yMhVtPjVoYwKk]xUoXtd}C[}VtJ`>KnGZzAUwOfWqB\{C[}Nlb~icZzZqAQuYt@[xUqmb~QkLeYs\w]z^zUtXxSp`}c}eZza~]z]|je_kdholtsliev~xrp`iodlmjljhiiqtn]ghefopuetkjkvzpkibhyqipqqmki{zf\k_[|enmXw^}fj_eY}]vf_~cmp_{Xvcia|ghZx^~fjqdffd_zLlVuVtUta}[xYuGbTraWtXu^zUt[wZw`XtVrTpOjMhIhUuTt_{by_{QqPqNkXr`zLgIcPkLiJhIaUoGbOnJiWocZxWqJf`{jgKiIhJiE_NgJaF`C]|NiZvRmJf[rUoG^?TuLcOkNkVrYsE\DY{E_KgJaG]D\|Qid|YuGaKbSiC[zL`K[|ARqCUwN_BUw:Kl>TtPfLYz;IiPd7GgNdNc?Tt>QpI[}N_E^}?TvAVxMbNc9IjVpC[|QeF]K`FZ}K^NdB\{H^~BY{JdLeTnE`OkPlZwbPpJeGdHcJc]xWwToQoVw`|h`\SrYu]zKiUrOhJfYtRrOj[x^_g_}c~_{cie|ccodcp_zihdjwZxZy^|Sm[xWzVvfcc^}fWxOoe{aWrWv[x[u\yKkVpWrUrYqMfQiPnMiKgbsqoqfmkiih`~`TtMk`~fUlVqQoKiLf>Ts:LlPfZuIf[{fbxLkHgOlJdLilu_}QoRoGeIfOkSnIgVrVrYwFaNhisrmcVvRqeJfSjNh?Sv;JiBXtI`XsMlMhQjXsWr^|j\wQlYtWwCY}FX{WtKcVpXyRqfc{]x]{]y`{WwSs_~YtVrm`~a~ffbjthhosuoffppw|vmwechdtqfqmofblviklfgovrqrhkhitrwnegnhomvspddonlmo^^`dk_}a}egbhYz^|jbZxhhjk`}c`~edb]{_}^zh`~d`{[vaa~b}[yUqRkSngkJbSpWuOm`}\zRuVt[x[zdTsOlQkQmWsUrFcTpe~YzYx_wWrKiMmWuSlWpPpUrVnRjTn[xOqQiLkUwkZwMhUsYw_}mKhBY{LfLaCY}@XxNiIhPlF`IdbyH_@TuJb@XwH`RoRnSoRjSkF^KcQjHbHbK`EZ~LfQjXoHbGaJ]7Ff?OoG\}@VxTtI_J_NiOiNfUoF_LgTpXwSpRnPjJfFaSoMlPqTq]xd}Xv\|]zZze]y\zWsUnWoYtKj\wJfZxVy`f[wc`Yy`zQpdtmffhgcXrRraig]zTrYylbbgih`~`inVuQnhvcYuWrXu[u^{PoVqJfTpMkHeIeIfYzvvxsf`laqbhdJhMnYvMfTo^|UqE_C]{I_@Rv8MhQg[zRqLgNk^WsZvTrQo`meUqC]|Da~^wF_A[xJfKfUtQlRlfZvjkdb~^zYxLmF_Mf>PtFVx:Mj@Wx_zFaIeVsE_B]{^~k\tC]}FbXoMcIbEY|RrG\{OoJ]BZzK_~8JiNdMgM`DWz9JiBXxJbG\}D[BW{KaDZz=Tr8JhLa\tTpD\E\}YqMcNdGcQlQiQhSlMfHbFbNkTpWoeVvHcKfJjLi^yb~QqWs\w^|edWxSqQj]tC[|Lka~WtVrTpSu]~]Y{^|TueUsZxbnqlrla`{QnRp[|dn]zdrcWuZxfm]}hb}Vu]}_^\{ba|_zc~SqJiXr\zEbUrMkUtWsMgUr_|rtpnqanh^}guf`SsRpOqYx\wZrLeiRdTtF^TnSkI[~9JiJZ|M`=QqPhZq>St1;[k_y@UwVoSoN`fiufb[zejZ|\wKeVr]|ipinia]^}kefhdWu^zhjpeqgfhbnlisnc`cb^{nfYyg^zXqa}ceeehidbqsuuospr{qcceoi`[tXrIdE_}NaKgPn[p^u]yMhTlSnPnng_b|c_}\vJh\x`{ngWuZ{humktrhbggipmsqgfpcjpnmfnroksqikrskddwugfplvtslmfghswoentpdjjrj^tnclpd`eWv[{hlNmQrklc~a\{_}f`|femieRpY|i^{Yx^{aQqXutg]{VvNi\x]}TnMhNhC^}WtqPnQoYv]y^~cUpHgggOqUqOlFbNiQmFbJfOlOo`~UqNkYx]{PjNpPr^yZuQoYwSpUpXtJhPm]vTrZuQmGaPieVtUsPpRoOiJcCY|I`KeGfLdTmToQk>StH_LjD]HaGbGcGdUnHgQfKdMjMfMeFbJdTmKeE^MdTiVl?Tu:LlCVvPhD\|QcAUx=Rq?QpVj@YvJZPbDXuBX{TtHaMfYsWzOiH`Wtetk_{_|JeRoMgLcMcIbCTvCUwC[|hdC\}BX{cztVopzZsC[}Hc[yEaC]}?RuHZ{G\|JfYtNh=Qq9Dd>LlVq]wVktfbcd`feZ{[zsfgiqslclgc^zd~TvYypkcac^kgejntc`nrljhle]}ffhe_}bbpfdkqh^wjjvuwvlopkjmg\{Wt^yTlSjQmTrHfOhSnPmQmRnkjYvSp\z]{Vs_~jke~j\wVsYvXudkdpnpi^|mjpxupntgqlmjvtoktkptolppwusiqrnvisko}vqorrkkholhmjrmlj_]_}dhjihZzaere`|Mi]{\z`~[y[{^}fmaPpZw\zjlkfs`Rqc`~^~\xca}_|Yva}xvb}TlWsXvPnKdKh[wTqIfPl_{[yStVs_~ZuPkWwQpUrXrgF`\wRpPlMhOiKhNlLjSlb~ZtD_Ki\xRkVoVtQlJgGcJfUrUsMmGcMfLfVsIeMfMeKcUpIcIbRiOgA[yA[yBZzE^~Uj\lDXxB[{JbKaG^CUxIbNfLeLdOhOgBRu?Rs>VsZoMeG`C\}D^UkH]E[{NaFY|G_RhG^~JbPg=Sq>RsTkE_SmI]=RpEYx>QpH]ShSt8HiOfFbIeUmRtH_G`OhIaSnEbIdJgMjTnMjTnNjVtWtNmSoVoLeHdUoOjMgSk]vJfSqXzOogUqXw`{d`VuKeGbF`Kgbb`~bUtRsSpXsacUvXuWvcwxqelmSujZz_i`Vwf^~h_|`~i^|XvrkVsWrVvUvMk]|gZzOjE_c}TtYuOkHdGeHdJhdydxzpombfa_{YuZy^|Sl\vTvJgJbWqTi>Ws=RqDXyG^zRiF_PmXwc_|^zXx^}UtQsdxurOgRtBZzVsRmTlMaCUx?Su>RsEYxH]OhNhQlF`D\}e~UoPi?VvCZ}NdAXyIbNaKcQlMdG[~CZ|LbBY{I]E[}JeVq@WxLgNjUnOhF`LeMgXoIaE]QjUlQgLfPjFaD`OiF_FcRmXsHcOiHePlQoJjKipZvOk`vXuTsVqOmWwcbcc~XxTuPnYtWqOiFaLkOmYw\{Ut`|iYzStXt^|bQmRnWurqWyooj_{_|rm\weWyZ{^xlVxWxgrc_fZvMiLi[wc`zcQqFdFc\w^{QmSpUpLicinvrnpk[|VuZyj[yXv\xHeSoQm\uYsHdFbc|TlDVxCTu7GgAWwVoYsIbMi[v\x\yb^{}Hd@WwshVoNkMj[xUp[vC]}?VuYtri`Qt\wSiF`UnSlD_CX|Oilh~I`OkeWqQiQkF`KfeOmb{ToBYy8Hh=Qq=UrVo]{LcIXxrcif]}p]zXxb~od^cfcgjifcmfda`kopldpkflpwwfgffidZ~^|ffkpochkg_clov{yplpwvtghdRqTsNmUqG_J^MiKiVqRta\yMg[wYrYv[xc~c^}Yvdgjdgd~j\z\zpk`\~`ffnsomeqrfmnqrsshlbjrnru}zvmnyvorsttrvwnomfmplnsriY{pulodggdgug[}`nd\yai`|gZylgWu]{`~WtNoeqbil[|[dmg\{XtUr`[yYu\z]}Lq\|\{Zy`}UvJjYve_~JjXs]xTseVtVvdVoHf]|Yw]{^y_yWta}OlIgUsPnSm\wXvLmOn]xHfD_QiRnOmPlRn\xLjHeQpWuKgSoVtTqJgMgFaLnRoIbF`OfMeAYzJfNgQjOjF`SpWpQlE^GaPgRlIcRhLfI_K_GZzFZ{GdB[{HdOmIaIcG]CXv@Ss?TuVkF_BZ{E\{IcLhTnQlHaBW{G`G`LaAWyJ`G\}MaCZ|JcE_EZ|TjNiNfNhOfSiD_Ng\uQhHfRlIcJaViF^Ld]sQhG`KgTkPhMcWoLhOjQjKhUoZrMiHdQqOmYvtcHgMiWrRm]z[za~[{ch[zSs]vJeEaSkVm]~ZwYw^{dSxSsVuTvl^VtKf_{vlnhba~agk^zTs]}_fmgjZy_ridfHbSo]{_|KdYq_vZxTtWxQmJdGa]zVq_e`{ZhyrnihfOn^|Wvf]{HeGeRqVtZvOmVpYqKfPkC[}=Nm@QsYsPkOh]ybta|JjSscyq\tXvIfMkVs[uTr=SrGb_zTlRjLhgăqg`eZrIeJfE_RkDZAXwZsc|PiLhVrXvUqebzXsTnVtbZwIeMbFW}@PqAWyVrUq_sp__dma~`}Zy^yhdmuhRocdidenaefl\{gpyhmljmsplchmgjrmW{Yxqpisvqemrgcixww{ztl\~kjumMlJgPlIeNcJ_PjFfKgZy`{d{b\zb|fTrSqZy\z_|ce[yaieTpbejdfmhagrqtvppnfeousqpjqlcwwqpttsnvumqqniv{ysxtdlsl`nvujcTvhhgfgo^wkbWwgomYxjddh]}em`XvZvWv\{a]~hgUqWv[~c~WtWw_Zw`~a}[zXuhgPnVoTtXx]}[{HgKj\uWqSpRqYtPk_{_~Zy^zMl_|m\wYwRpYu\~Y|XsSmUvMnOjUpOmJfVr]|NpSpWrMhPkUq[y^{[yZsSnLiHePlWsKgHdQiJdGe[wWoHaMeVoF`NjE\MfPmLeOiJdXpRkHaOgJdMfIcPjKb?RsAWwLc@XvDVxNcKcJfXqQh?SuQsD]}dQpiYsC^}Rnj]|VrMcSnOqIjSpKeE[~EVx5Dc?StD_Zrhe]|nfe`~^fhbjvmgd]b]{d]}Xzbmhojoxkovmtsdd`\{joflrcgujgqsrmtvtlktyv|xymf`ajp]{E`NiRlMgIbQkTqUpb|^xifXxi_~NnXtdZycd]{\{]{mfUs_|eknjjcnnd`kvsmbcoovppoosvmvtrpmnwwrvorrvyoyv}pshcmxlmnonwtlbcmnfaa}_~dcgdjcickgedeja[z^}_}[y_}hfZxa]{cSsgnXx[z^zWuYva{aZxf}UoVs__|YwZyMiWpVqXw]wRnTr[vYu^yTt[zqVrWwPmLhIje[wTr_LkRp[wKhMiPjWsUs^zZxTqUq]{SrOkZwb|Up\zJgF`]z\xOjRnMiGaMgHbNhUoToGaHaKbOfG`PgLbSlOjNiHbKcJbE_~AZzE_J`EY{KdMgCZ|@TwGY{FXyC\|GbVlL`D[xH]}DYzLc=RrOgOeG`KcBZ{Vq\tSkHcE[|H_D\~PfG`HbRjUmKcTrPk>QsSjd|WqLhRnQk]sPi_x[vYtNkKeTjOkTqQjLfLfJaJaTnSmD\~PjYt_xTqOmQoGcOl]zTrXvkaSrTrSqVrSqYvgPpTvWubUrLiIfKeLjTq^~]zMm[{Tsc`}Xw`~iYyYyf~{qkjb_}_{gen\{\wZyUvgq]~Z}cVshd[ulYwSpKfQl]{ToYweRiLiOlPnEbUrqluyjmql^`}NkOra_}]y]{XvLgQn]xc~WtMkSmRjBVu7Eg?Rs>StOkMjRkXv\zUpQsmohs_wD_D_C^}Vp[wmVp8IiMi^wPoW{webmsebQlRiOcVmTkC[|D`~n^{FaOlJhJhVsUkUmGjPpb{GbVo@Ux:Ml7FgL`Xk^{Ki[v``a]}[~jempiaqti\|eb^}VuYufcirmsylvpsuhdcahtnlpetie\|knoioxzxlsxvsyugxodXwQr]yNgC\{QjKgQmWrUp[uc|^yXxUucg^Wt^xujVv[x]wbb_|cbnhgmccoooq[dlpnfiromnjrqyrxzrkqpjxwsp|xoq{zsnttrugtjehqtconprb`}iqngZ{ligesj^bcjdml^~Wxcd]|OogcbdcmbUvln[|YxVqNnSrb|KkUulkXxee`|bMnSneTrPjSq[wLdUm_ddb|_}^|hVtOm_z\xc\x_~]{[wTpYt]w]wXr[v\ycWrSoJhWtUqNnQm\wJgRpUr^zZw\{LkJfNhD]~FaNgIaPiC[{SkPgH_G[}I_CY|MhE_CZ|MfH]E]KcOfBXyKcUoJcOhNcCTw=OmLbJcF[~MbH_F^~UjH^~EWyH]~LcH^~BZ{C\}BZ{GaQkOjF^KdRmOgAYyD\JdMfShTqOhHbVlQhAZyGcZu`uSjKdd_|PnTqZvVrHeUoRlMiNgLeD]NgOiB]{HcHaSnTqNoSoMjcRnKiPpUt]}ZzSqMiPlPlSpQk\x]TtRqTpPlHdJfPkRkQiPmUufYzTtYxYy_Xu_za`}b}lwnolVwrXx[ycmd]{bkl`Uutnd]|LibkfRoVoSpZsZyIjVpJfQnXsF`VrgwpwmemlhieTrQo^}dVsZvMkMiIeFcYxZzHeRnKc=MnSsMeNhIaLdC[}HaIaPfBX{MfQjG`OgYqRmPiNeNeKcWrYtD^Uq`~MkPlg_}RlTmXpMkLgOhHdQjHbMgHcJeKeRmMkWtXuj\zVsZvSqSrPoWs`|QlNhKiWu]vWu`Wv^wVsMkGaGaF_NeGd^~eaRsVtd_f_~e[y^|]z]}nyvdnZx]ygakla~jkVuSqglcm^}ZwVwYybeOmPlSnRrRqQiGcSq[sOiGg[ywt}w\~]ggg`{SpPlWtcVvRmTp]xHf]|iHdAWzUjSe5EcCUtEcLiD^Ki^zRkF`RrkpnQocwd}OgB[{JcMl[zfNcUqG]~@SvEX|G\AUy@UrH_LdNgRiFZ|TsC[yF`Um\rOjRlQmAXyM_OfQjH^QeCWyQgBYzOjTnOjVrPjRmE_MhLgNhE^D\~QlE`ZtSgBY{RmNiGcVrgUqQlXwYt]v\uOjNiKgNgYo`xOkD\PlOmRmOoVq[y^xWt]]|]uRnSoLeQmfUoIgNkQnLfIgQmZvVtVuWsLhHcSlG_KfLkbf_~ei]yeb__{ggywjhef_}XvUtfipnZ{`r^{NjXx[{rhb}WtOmXuQkXuXwMm[yUrJeKfD\~D]}NgRpLjm|tlcorh`WwXvKhUsOlZvgsIfUrZwKkEaOfg|F\}3D`5Dc>Kk>RnHi`PlMlLgJeMnLkNkkuZw]{_{Ph`zGddD[B[{`zZuC_}HdergZzXtcwQnOfM]I^{NbEWzH\|PgMdD^VuDaQnnE_A[z[xla\xJdLeN`Vr]zTt\}Z{edbonijekoZzckolc\\~tppnvpvrvsmjvtlfnuqkrnmqp{|u}|xzwtvruuwsqfhcc~RpNle]yZxTofd]zZwcac}Wua_}db[yc}b`~Yydklqxj^{Rqbssd`gngkinrknqiomqvoy}rqoutwwtjlpvnjohnnlvrrtgrwjkpif^ne`YwWw\}hle]iigmfhqq_^}dcfll[|\}dgnZ{ZymginX|ZzUqZwf_y[w`}ZxHeLgJiWqTmRo_}]v]{\{\}Qt^~i^}[zUvWv[w\xYybdek]}gZx]x`zZx]yQnUpD^GdRnTmTpbYtUqToHeLfIdRrZvUoFaE]NgPj]v[wXuhWoD^KfNh_zE^JeHcHaQiF\J`SiE_MjGbKcWnXqNgAYyAVyQhH`CXzEY{PgEZ{SfNb=Rp;MmEXzJ_}O`Ia>St;OnJaOfH[~B[{RhTp@WxBWyG_RmPhDWzDW{F]Sj^u]wE_IcRoUpVqNlLiSmMgIfGaNfMiez\tGcC[}D_^|]xXtVuOnd}Wp]xSoWqHcGdMj`~b~VnTqTrgStTq]z_zLhPtTra{]zOjMjD^XrVrOjNhGaPj\xWuSpMjUtUsSqMjMhHaKd]xWuYwi[}\zbkd`~j^yZturnVxUv^}Zy]{`{Wv]}neVuzr_}Xw]~qna{^{TsQlNjPnXuSpVtRqVqUnWrF_@XxNk|wc{{`Y{[|il\|^}_~Vu[yTpRoTv[z_~KiMlNfAYzSl?TuCWtATtDOrFVwF`~KjXv]zMi\tNmKiZv\|cb[{RnXpZsTq]zHcTnMhD]D_}\vvjiqKjZuhfdQe;OnJ_MaASu@RqCXzNeWtD_~TplPmKjXuNjgnKgKgWmjpkUsPn]z^dij]kuqfcifcgib]}arlswrvpluypilrhiowumfovntxyyytwtwrjklolgg`}[xZuWtUwiUsd~b|[y]|qgi`{Zw^~cb|mhb~_~\zdnkrqheg`ilidlgcf_\opngmuqvoluoytzympyztuun^mvrprkglkprjlhoo`ihlqddce^^la^`|hpg`ajrlg__cllb`Yvc\~Xwa}c`a}i[Z|kbUrRn`{cYyXujOoIbJcUqRuZwha~[|[{Uwlvff_|Ytc|QsMj`y\u_|Vy\}cXrFcSrXrOm_|HeBX{UmRiJcJgZu`|LjUsVqMgMiNjWrXqLe?RuG`OjSmFcQn\soPkFaTmF]MfPhF`MjQgRiI_AWyC[{H`SiVn^zXqNgTnNhIcUjJ_Og@ZwLdQdBVvBVyPqJaK`C[}ZtRnQlBX{LeBZ{KdNeLeHbH_KfVoWsWyGfJdWqC^}PiRhFaRna{TnE^IeKiF_SpVuWtXqpa~VtOiQoUqQm]{_}RlHdJfYvLlRtXtSmSpOrOn[wUv]wMjQoMkFaQkF_ToUqJh]zIhMiQnOoTsXvOjC[}KbHbIe\yXvUtiifrcbeVqaRuwzl]{ZvRoVvYvKhXz_bjridlgZxmmi_~YvOkSqSoVnD\~^b~IdQlOiOnKhMkXz\jha]bl]}^|fUwUn_zGeVuihXtNeQiG`?VuDWyPe9GjUgBTuHbC_}GdomTqUrjXvf[zTqOlNkHdC\}FcYwHcWqOiC]}C_{VtZwtlMniabY{UsIfPgJ`H^:Ll=Rr>OrMgTqJdLeHdQpf[uSnKjVwWvXqktofXuTsdilaVvjniil\x_{e`chfbnlnrxsopspvljrqprtvtxstvwm{~vtvovupllmdg_~Ro^wd{fZx`g\{kZxeogea^z^{Zvb~eobgchkyvwa`hqrhkd`ebgfbmnpnlrmhpommjt{|nurrxrptpdsvtqgkmmlnjnrhnihs{mqehvr`d`fli_jphdepqgge_~blce_}dz\|WzQrYy\{Zu]|ZzmQo]zWvVqj`}b}n_{\zRpXsWvRrWycVsc\}`mjm\|eZ{JjOkIfZu]xTqRp^|_{KjJhXpTpPkVpUpVqNkF^IcWs^zNkOlXuWuFaHdMk]ua{KiRjE_KcOgOkRoka~WsTlTnc~\tQlDZ~LfJ`L]IaF`D[~E]~G`QoWpZqYuPjMg@VwMfKaLgBY{I`KdCY}E[|G[}@QtEZvSjK[CTx:MlM]J_>NpEVzD\QjZsQhPfG^~WqE`?SuD[}F`Nlc{MhIgC_}SpMfUnkToB[{KaJhKiTnUpQnMhKjJfF`JiXsZv^{jh`yQkXuLhMhOkMlVqUqMjOmMjg]yQqOkc|`QpSn[y[xUuJhIbQkZuLfLhMlOi[oF`JiNqOlSqLhF`[nRkJiPnRrc_Ywlfl`~\z]|Yriv{bni[{WvVsUpZuYyi_Poc|mtPoaqrhWu_yYwVtRlPjXrPoWuOlMkLgIdMkKmn~tncXx[{`|RpdTsLlJldgUq_dKeLkZvHdBXyQt=OpP_DTxStC[|?VvMaIaOiE]~JdKfPj\uRlXsGeE_D[QkZvPmMjGaOkTrLgSmNk[wYwVqMjFcJe_zSpOl]zmiZxTsXsXtLiSn`ZyKfOjRmSnWwTtZtWtZwQpHdMiSrVsSlUoIfOhOiNoMjQhUpJjQmHbJiSoRpaxRlFbHbXrWv[zUul`{e\{ilUodakpiha|Zvjb`}c}TwMmdl^Xwhffqj_{RnRpRp`}fPkSnRpJgMePkPiJiwpyvlpiaXvQol_{SqLkb~\xLjFd]{ioOiHdVpNfKbDVwFYxNdOk_zKgE`\zx^{Yv_nb[w]xpdJa?TuIdcD^@WxHb9JjC\}E`a{ngXxq_}WrVuNiPiPiOkRjCZ|PiNhFbPka~\vazZvWuKgNmXq\qfdNoc~wknrfgplmaddcgeZyb|Uqhqvyrqtxpnjqlejljghixxyyronruuyxtlubaeli\z[wZxXulun`}g\yZw_|Xw`}\}]|krflvb]zXvfqij^VvXwjwtochae]}c`|altkehidhuxfnpkryrlpuovnimwsxwmjejjrmqnprvuolptpc^oobesnknkYz^_~ifcfindbrrpaZx`cc`cSohVvVpJdRpSsWvYwbVwQtWuf]z^{affhbXw_}^}ga~SsVueg`\xdhdXvLjNhWq\{Nk_yXwc~hVsMhPlUp`xXs`|\xPn`|_vVq^}]{`|_}mjOnb|IfMkWqGbZqYuQoF^Oi]x]{_yOkSntVpOiNkk_xNgTiQfIcF_KbVmRjOgPk\uWoMgKfNeKdUmUoOmKeQfASwHYzPc>QqB[{>VtETxVlIg=QrMaOiAZy=QqCZ{IbXoKfPiKdG_HbQiQmUm_wKiFcIaaxazGaC_}MgWq[w]xPmWtGbIdRmOjPmOlNkSoegVuUpYuPpQnVvQrUqSlEaRkWuKjSmUn^yXwZuNkMjTqVpJfQmWpVpLiJh\ySjYvTnLgJhOj^~OlE]D\d{kUqVsNmUvbcbj[xWr[tdZyisia|[v`}we`y\yMmPo\zaMoYwhdjb}ei^|dTqTs[xSlVnPnOlSmC\|KbGacb\yirirpWwZxYs]x\yRnSoHf_|Xy[yXvOkiWtJcE\{CVv8Gh?QrNhSqXr]yTpTqYxifhi_|HbWw\}[y\|D]~DZ}PkRrKcNeFbNlI\z=QrIaYxHe[xb^zLjEa\{bqw_uN_HfcYt\xd|[wOoI`Mfcbfw|c|JeZzq`|OkD\~=QrDVxMaMhTn]|QnPkNiD\~Fdb`}YsWrLhTp[znhga~ehgheYzPped`hd_}drgosrjkmklnmgiqssrsjnowwz{{ur|rrpjnhckcWv_zcSqWw`sf]}_fdfqw_~Uscdaefkmi[{dkj`~^{ptoefbhk`~`ifimkibkmvlsokytqmmnmspuytlvpnuqnoimmptwecornwnplinnkhnrnenumkdedqwon^bjgcch__}i]enTsUvfWw\|`n\z[xi]VtTp_zdc_}Z}Rvcg\}ZzTv^}[w^}\xSqUvadfHcQs[oecim]|cl_|Wwjibccdd~\yTvRm\uVrd~WwZyPmTrXsLiOkPm[uRmHdD^IbVrTpZu[uHbMgNfSiLgE_Qj[uLfNePjOiTpOkHeMfBY{H_F_DZ}La[qMiC[}L`DZ|LeRkNeIaTiZrH`IaE^TnUoMgLiSmRjKdG_JaNdF_NhKaVsPmGbTp[uOnVoSlNg]rXmJeAXyHaMhLfLfPkVtZxYsOjJeMia{b}LhQoUpLiUs\y[xIhLkToYqRpYwb~^zQlTqeWpH_OkLk`|f\|_jMhHeHcTnYtPo]wOhTiQn`{GbF`GbTrRp^z\|Gd\y^tLdGaHd_~^{YzWxga~Xw\ygOiYoXu^wtuvRqSpLjFbQoiafddvfRr[y_~JfWw\zWsHdKfZvPnWum_{OnYzHbKfLkPri{mol]|d[{ZzagZyHeYvXw_}MjVnRmJhUp^xZxHdXoPj3C_EWo5DcEVvWs\}SnLlcZzJiTmD^\|nZr^{D]~Rlb^zDaQpgHbC^}]zgnaVsSndkj\{F_IaTjAWz?SuPj^{D_JghVtC]|^ybdhRoXu[zcabmlkkkg[yUs[{ahlh^~kcpwkpjjomqkegjrplyqkkunu{xx}{qilrpbbcXtbhhc`TuXwrngedcgdjb`~cdcqfbmhbke[|ff^~qre_ciaid^^}dntibekqlsrjpmtvxqlsfoyrmpokmhqojki{ysrvijmnsk{mstdjfchekyymlkditkjkj_icde_}Zyd[}\|d~SrYz[x^z\|gg^_{l_ZyVuZyc_|Rq]}a]{`~\z[{\iVrKh_|^~YxVthh`|[}Z}_ebjk^~]|qiehgfd^ze\yVvUvYtToRnPlRqQlNjVs^xXpRkSp`zUs]xXpVpSnQoTnYtIeGaQi_tTnIgLg]wTpQjLgTo]xUpRpMgUnGaMgBZ{D\}J`HcHbH\F^C[}D\{VlI`M`G`GaUiPgKfE\KbIdPkF^Wp`vLdE\RnQiRgUqNiUnKeG`VrUpPlVtYrWp\x\uNiTpZsJfSoZvGfHbPiXuLgWs^zMkQpRmOiIeZwfRsPl[u_xNjNkVrQlXtMnPlHdNlNiRlZtRlLmXyZt]wGdMkZtIbOlnZuH`JfSma|QjIfIgJeLeQrZw\x\u[tLgEbD_UqVsblgYvUtPj[xa}aWuekwlciRpSpOlWthj_|bb`_~a]{YwXuKhRnIdKgLiZvb~TrGfRl\tVrNjWtWu[{strnra\}[{PoPot`{QphRnVq[yC_zIgc}UrEb`yRn:NlRd@Pp8GfF]{WuXsHci_}ma|F`MoYzZ}Mna~VpGbYtPjSnVsmb|D^HdXurnUsUqSpWwHg[tNiAXyEaRiJbD\~FbZxrZwVrJeTsm`|bd^j_|]}rtptpe\zjaY{WyWwlkjpiptvnptounegomljtqqrzwry}vyxsnd]hsc\xXtZv]{]yeinf`|hqfkjqd`pfbbfiejjxrkhdfhc_~maWvccclkc`akt`_jjidgsyqepsvvm}ointtpbbiklZ`tsvvkwzrspqqp{vuvojjb^~ikmwtvvb]|c]hinkgjZzcbXz^bQr`}f_Yxc~a~\{bbbhj^}\~\|VuVsb]{b[zYufbdfb|_{g^~f^xXvZv_{]|[{`d`eghjcmqiYw\}`\}a~\|`~YuXwOnNjVr\vVo]w`{Mi]zZv`}TqNk`yhYsPkJeYs[yNkEbKbZpQmIgMiWpOnRnRoNlNj\sUnUoVpPmZvOmD^H_NfFaMc[rI`@XxBUxMcH^{B]xIdNbH_QiH^AWy>TtKbAWyJbWkH^NhKhBYzTkYqOiIdNgH`GbOlKhZyXvRqOj`zic~PjKf\v^wHgKhhWtMjUpTpSp^|g[tOjRmLjWuneRpLgWtPoUmYuQqOj[zTwLhVn^yJfHdNmTmYsYyHdRnHcc~hIgOlTpGaTm_yHdNkC\|OhLjTpMlWvc|PlHeHcYpYujXva~_{Yv_}Zxbjmgdlcnold~[xGeYtmagbKmWxYycWu]~XwOjGdHdSpHdGbNjMkKkNkLgHbSnUs]{WwijnliiTtTpTrfh\yj[yhJjC\}NiSmZuVqIdVsPgH[{EWzQcBUo?VvF`Uoa{IgjpXu^}OlYuZyYxeMkKcYqnNjSp_wVqD_}Okbwre_|JgRoNo\yRlD\~>TtQiVmLeIdZwXwXwTp`{Ji`vYrWsfmaWuZ{dwnbkeStcgd[x[wgemnmosmvts{fomjnirgdjr{zkx}{vusxqe^za~j[{ciZx[t_ikqehopmurp_qtafcgrbY}h~ivrf^|fmnb_~inbmijfbmhnkjfqlffmnityjsy|uvijpqktskorkvwgjlu}rqjowxtonmttjljldqlkqtvpk_~UwX{gfbm^_i^akTwTw``~]d_|Sp\|]}\{hmca}i^}]}Tu\yVwQsZuhXzm]~tqbeYuYv[{ZvWv^~dfcaihY}in`~]zeWuZzXwZyba^xZx\y[xZvUoXte}WuUsRqXuToToTmUtLjb~PlQmMlIgRl]uLfNhUoQjVpLjKeWqPlOnZrIcOhc|QlVqOkYsNdMgD\JaNbC]}OdPcJeHa@XwPfI^~I_~D\}NeRkLdu\o_uViBX{GaH`?VuE_Qi[r[u\uToF^D]~RmRnNkNiOldiZvRlYuUmSnTqQn^}Xv\z[wJdGaTtfnb|RnKiJd\xcgbQnOk_xVoPlYu[{MkKg^za~KgPkKfHdUtHfHbQhPjYrB[{NnWtWtLlRlG_F]RmOjLfXoJdE_\zXwNmMjazSjIeJhVrRvTyifdOlGbfma`glWyTun]}[x`zZyZzPlZxZwMmRre\wRqTtVsRnYtUlXsGbNjNhLf]uKhAXyMbNiVy_}lxiglktjtmPmSrig^|ehYxSlJd^xOjXzXvIb=SrH\}4Ca>OkF^yD_Sp[uKeKjVwbha|^{f^}\tlWuZrPmZ}m[oOhi]uJdSq[|hn`}[x_[yXpC[}8GhDWyHaKiDZMf?WuGcbTx\}[pfZyUvi_Zwa}bmmdgagkhibdgiltppheiorokghvreklktmpquttupwxnjnwia}YtZwhgac^}ghisotghttajlqkk_aodSu\{^~kquvefjhichmddjheki`celpprccnmphqnptserurahenyjhplfqmjqwujspu}rqqpbitvwrgjhq\|_qwrsol]|Zz_fm^]d]z\zkcYxXvb~i_WyWv_ye}f~acY}XwYwdfStfcY{cga^}lobifd~ZwYuZwYvdg_hhic`\|Xxgccg\|ZzMgQjWrb~`~`~Vv[xSnLhTs^wboPrOnVqSqMkUsLhXr[xSrRoMjXrUsLgTkRjMgVoTpQmXqRmJh\uUo\w\tJdF`LgaybvRkFbJcH_D]~F_KgNiTjQi?Tu@UwF`JbZsc{\ui[sSnVnNdQiAWzHaE]~?VuEY{NcQkUlTlC\}nTnG_JeWur[yRmXtf[xNkZvZwJhSod_z\wMkHgNoaeSnUsTpMjNmjY{WwSp]zWrGbOjMhLfMiUscWsWtKfNjRqQmQnLfLeC\|GbQjRj^}b^zHbMfRlKdIcPkNhFbSqVtJe[v_z]wD^~Mi`xKjTs\y`UuSqHdWsXyUwrljPsNqfQrqbTs`~^}`}\{[{TsTq_yVvQs]y]z_|\vXuNjSqOlHeJdPkPiOe\;OkD_}NhTrhXsJaLkY{nSqVwLgMeUsj[tKhNnhRrSrOgd{piye`d_xZsVtQrNjIbCUzL^D^~IdRpE_IcIdTopzvd`Z{fjbbfe\{dg`cd\~jldpnrpv{klpgijtnhjocguxxz{pwtjputplc`Rsiifj`gpqtkrfe_lnckk\flhrm_eefjjgjmvpkh[{beiab\{eeljgmikijuukkplnnnliqsmruposieuvkgoluhoslwyrnktjousjovljymqqqvupX{V{hqppoiPr\ynfd]zQp_tefd~[x\{_Vx^^~_yNlVl\y[{`|YwVwbjYxVvUz_aOpd{s\}o`hqbffVw]jdamlcZ}hh\{]~^}^{Yw]{UrPgbx[{Qr\yUqVrIdLhLf^vgva}[xWv[yUsSnNfOjQpUoQnHc^wOiPhYtNjVqPnRp]vNkWs^uSmNmSp^yRoYrUoLhUrPiSjRnSmGeOgI`G_UiNmQqCZ{?Uu?VuE]}KbRjJfZs]vmeXpWqG[OfCZ}FZ~TjE_~F^VjQmIfVqbzZsSsKhbZxRr[yZuYwKjXtYsJfLkXx[yYuVsHcYvf]|WyZxRkToSqWtZwUr\wXxVrSmGdEbHdGaEaejTqWrJgXwUsHdJdLhJaKeLhFdWweOkHfLeE_FcUqUoHd_\wYuSpUoTnWmEaNkYtSsic^|VtNlXsNkdpnlcSqQieYyMoVu[uLlVs^xVsQs^Pq^_}PkJgXyUq^ze_}KlXsPkBY{ToG^UlGhWvbyd_ktacib|SqUt{b[vVtSn\xQkLcVtA[y?XvQkTn9Kk.;UAWtC^}VlHbTrd_xPkGd]yWtVutPhQkWr?UujnVpB^{Jjb|BZxSrp}vfei]zVtPpXsJjCX|CTxLbRiPgSlToUoKcSmmqublkdakgQtYwXua_`mekhlqtyjewumihcgutisqntnquywtyr`ollnc]^a~]ycepvhfelvvnmomkhhprmqphcle`^\zh[emlvmpjhgeejiee_`ftjlosrvuwpjpnn}ojrfprndhpwqjksunrgjuspkvxeinjtzskwpdqmusehotsY{^~\zWysred`kebcXvg_]`~dlSrMm_}i^YznmWrWrYva|KfLjekcWxcdXy]{bfbVxhdcebhdh\{bjdhecllZwQq]|ca|`{XuVrTnTqQqUuSqayOlJgRlPhMhe~WqNlRpXt^{RpUpOkSpKdLhIdNeSoSmSnRkGaVuPlVo]yTrLiPlTsSqPkg~^{TtUtHePhWo^yOoKgRnSnLeHbIcNkTjQeI`E^G^\rVnQkQkb|KgSkWoRiI_KbMgYtD]G`CZ|HbOkKeHeZtWtD_~Mf\ygbLi[}[}[{dPpVsVoa}`~Xv\zPkMhQo[zWvLfSo_y[vRoPo]xXtVrRmLjIgYtI`BZ{JeVs[v^{MkWtRpOmUoLjOkOhH^AZyIh[xLkOiVqD]EaOm\uZt`Xs]xYwIfUoUnPnUtKg_x^wXwa`~QlIc]yteZyeieJcNkfj\{WuRlGaMjVvTtUtZynOpTt`YxOmKiWq_{Wx[{[wJjEbC\}?SuGfldwusl\um`l[z`|OmPmVrjNkKgOgPjgjF`Hc[qd{8GiM[zDXwFa~KcTsLlJh[ue`G`Lf]yqOjD_~PlC[|_xXtGdTpUtVp>RsA\yhhvrimbYzpSmFdQkNdE\PgJaTmMfIbRm^vepkkwtekgnWvQoUsWxglhhbnllpwsjrrfrrjdmvoswswvv|w{}|vmolhlcUxcoechklnzljprsoqqmhiototsaYzhlfdeg^]~dnsqmlkleacohnaafdimpkrhrvqqnjjxspoigron`npgmnpnmmmtpsj]nvppkeissjalhdpnc__hvnna\~Lm^}Yybhcaafpik`c~e]}gb[{YvhZzRsotno^{Xu[uVuYwiklpk]}ZyXzajWwbjihpben`~^}pa_ebfm`_~]|\{d]{a}XuRpWrVr[|Stb{[vMkNlUoKiRkLhKiLjOmUp^|[uRmMhRjLhVqXoOjMeQjWsJhQmSl]ySnVqTpRoPnLjQjQgWvdUpTpLi\uSnTsVrVtXvYtOoKdPmVpUkPiJfIaSiPjBZ{F^~HaG_QkKaF`F`HbOjIdOjSkPkJdXrJeGcXpUnUqRi_zVsKgWtl^|[wRo^}aWuIeLiXvTqZtSnPlRpVt[vZuSpTqSrKhWrOlQpVsKgTrHbF\G`IeRnQkLhPna|UqSqXtXuRpOhUlTpGbEaFcNhWsHdQjUsLhKfPoQmYw`~HgYsTlTnOkOmWnRoWu]x]UqSoki_}tjPoZy_~_~WsQlTs]|[vOmIgUuMkLi[w[xYyh_}RpSo^{TqTn[yUtVtb}NkD]~J]@VwFa[}mylwtlfdqcbRnHcOkf_}gqNfC`}OgQhXqMeLd`wdw9Kj;MnH`}JffPlIcHeNqfj^yPoTrLh_{b{JfC\|Kgl`{PkUtC\}Hfb|VwqnehloRqYwMeH_@UxBZ{E_MiBYyBZ{UsYqqj`buzjnpbejid^~^|`|ejjhglsmjmlfvtrqrgmoovy{wwu}xywupmdec`jofpmldly}pnopimvvmdkkmmlb^~\|cjkg`\hb[|ipqgejh__gjbcnijoae_qpjptyxqifhjpjiivymnhbfuvfql~tptlbissmjibhqjmom^bqhkpnjlirk]RrUuOoYy`hjgbkukgd]jsia}b|a\zgaaesrg`cc~bhnb_jcbgd`fhpsc_{ijemdbhba`hji\|]{Yx\{ZvRr\y_xQq]|^zeXtPoJhLiOjRqHdOkGcPlQmLdSmZuWmJdKhYnG_H^OiTqLjKbMgVvZuWqTo\w]xRmXrPjVr]xYqYsUv[xSqYvfWsRpNkZxZxTrKhUnVpXsXrPjKfE_E]PgUlIcSiHcJjTpG`D[WpVoRlYtLjIb]xk_uKfOiNgHdHcQpRmPiZvf^{YzdMmQnXs_zn_zWvNlKhWr]xLkQqKkJeWsMkKkMf_xOkWpRjNiCZ}E_E_LgVra}]yMiJfPoRrJiZvWsKeJhFbQkJgVrUlJgHdF`MlRnTr_}QoYvZvD[H_If\xZw]yZyLmUsNgVu]{QptgZyb~_}Z}LjD_Z{c_}^{TpNkXup^|MkYzhbjb|VqNoOlRnUuSpTkWnPjI`E[MgHd\zwvxyjigjveUsa|[xYxWtmgSlIhTs`{h_QkAZzIe]vypachcewZtAXzC\|BXwJdJfDYTkOnOiyc]{fgppri`bhkq_^^{]zkkgpvwmhqloupkrooqhjqtyyvvzyuu|tmi`[y`jcgijlplnv}viffgomnmjtogm`egigindbb~b_\|piiedh`deeaekjvrm``rspkqzraghna[{r{nqspukjkkroqmytluwmhljotso]nheye_ghtoaljgfbpqkXuSrWw[{hnhi``flcfhdhj]|_~^}ffeVxlyngef]_`ledcl`chldcnp`fgie\{bdd_~`~[|fh``|`]}QnUqUu`|PnTo]{YtPm]xUrVoJgWtYoMfJhPlJhMiHaFaSjXsOiWmNfLeQhQkFcPiYsGbJc^wOhRm]vb|ZwLk_za{PjUlUqSoTsVsWuWqUqOoQk\yUtSqToTo^ySpIdNiPlMiIbHbPkdzMhToMhUpTnIcPkF^LhQpG_UoYr_yYuNmTn]xJeHcF`E]Pk\w_{_TrZxVuYwToLi^|]|\zSnKg^}MnOoIeJcLfMmJgJeRpLkIcRmTpMgH`HbHbSoKfJfUrNmNoYwMlUuVsMk_|QkJgIgJfJ`HaJgRlNkQl]{\z[uYvJhRiAZzOiMiJiVsbNkTrXtbOlTqYvkfh_{RsHc]yOoNn`bXxSq`}gRtihadcb~Xt\}^|MiHeSp^yUlHaD]~RmczDY~HchjrwijlelXw]|f^|RpjYyPneOnTs\tLfA[yNhFcD^~OgNaAPq@On:OmIh\yVq_}NkYuma^}cSoF_B\{bzSoF`JeA[zOkdQnGbiltj^~aRoYzm_}eSoG_?RuE_NbQeSo`uxmgkddnqg[z]|djinjnjhknlrsohurqoidnqmvnsw{v{sw{topwthic`gk_dfjqtrgmwttrqhlpukiowne``lni^{bahnccea`[|dk_^hqdadgkokprlyocooxyiggxmbkwiswinrtwggstniclw{qohkjrxrisn]}lhcfmujdnemdcbigdkj`_gcqtYyjhshbgchkledel^fgpnlgfhltl]dnmifoq\}hghehofe_]abe`~e[y[h_}XzZv^xPnXvUr_{`SpUq`{^w[rQmLjWm[t]y\vUoKjIeD_OhOi[uLeE_IdXoWnD]~VoZsI`RlRmRlOiOiPkTqKja|RnLfRlVoXs[wSoVu\wb}SsXsZu[x[xRp[x`|XsSmJeUrTpKfTpKeYpRk[sNjMkPla{LgG]OkPoUmOhQjIdSsVvc[wSoXqLjRkNhF`UoZ{\uWqWxWr^}KgKjWua|Yr[yLlOmLjPnUmIcF`JhSoLjFbJeMjIcVm\wPlB[{JdNiQmUrYxTqMjRnUsGcJfLgSnTqF`LiNkLe[wSmAVyQja}Rn[vWrWsa{NjFaIdE_Mk`|gUrXuHbIde]{al_~a|WsWs^xQpMkZzeXxYyRoNofskZx_VzhjWySodZwPmRrXqJbOgG^AUyCW|\yRoLgqudcncf\{WvdiblZzKj^yQodj`|RjTlWrGcPt?OvF`[mnhljrfnlg_~hb]`cpnhwxtmdlntooinmhtqpxzywywyqoposhbkhcjhaigagmvpljnztpyykitsliqrngbcfkaYv`~^~]dbdqiaUyifacdkhf`ddcY{gowor_gnoukynjfhijcpvtkeoniizphinhpvnsnte[~mmmfpn]he\mlfog`ccsi`eaovX|cchrwh_gffkofljkmfd`dmiijkmnmkmnnjghamnhdeejlnwf]~e[`c_~elfPs_}e]}a~WtXuYvZvYwUuPoZvPoToZrUwHgKbSlfYwShJePkPjJdNgF_HcMgLfVoUnMeBX{D]}Tn]yFbJaQkRlLfOjOiPlZyJfLi[tRoVt_y[yRnUs`~gYvLiVtKhfb{b{iNiMkeUqSoUqQjLgYsSsOmNjb{\xZrWsJgJbOjH`F_JgLhe}d^z]xTvUpRmNhF_D`PilaLfTnb[{WrKd[v`[zPlLjIfc~LhPnXwIeIcH`OiRmTnKaKgPnTpJcNgNiLgXrXsJh[xZtRoYsEbHeGaHbQqPnF`JbHcUoRlBW{NdHfQpnbVpMgE`JcOhGcPnZwYyZwMgQmZygh[xVuXvZvlfHgNm\ylag_ebakq`fdh]y[z]|XuIfLgZsJd?UuCVuASuG_Vtxwhjplcdq[x]{Xy_}jcYtXuUoAYyOjJe_thhPk@VsPfF`;QnP^IXz8MhNneXtNjYzlmYzruLhB\{NkGbD_~^xMg=UrAYzMicZwMlxwk`XtNnYvOnYv`|QkNiYqLa>PtJ[}lstrhkpa`endd`eebnw~vkttnksolnlooplp|xutyyvonmolmc]}[zec`~cjjjpmojfmwweetsrpksjepeblmlihdgbVvZxbgmhjkeggejqldi[}gfe^fknjnsl^~mqoolknnleqeoyxugjlwpvuqlhk{tlrphciiomtugndcfW|gdfjiqqih^~Yzamjofcdirrkjiegqllg`llknnegfijegbenricgqo`ermjl_hi__jmjaadga~`~_dYxWra{[wPjXsSrRpRnRqVq\uNoTnWnMhIdRl]rRmLjMkPhJdBZ{MfNhXq]tHcF^LeKgNePkRnLhYtPkE^OjJfKgKiQkSn[sVoKjGe[w`{Xt`|YvXvNk^zTnTmSqUs^yfKiTqRpNnRoRk[wPlVsOmXw[wVr\w`}TsSo[wIeMiQlE^KdSq]xf\{VuYwZzLgMlUmZrZxZs\vmn\zSqPl[y[wXtWuLhYuQoYw]wNiLjUrKeQmC[}JcTmRkPnE`MhPoLgSpD^Lj[yPnd~ZsJhQpHdCZ}QiOiIfOiOjUoIdNjQlJfPmc~Xta^}ToNgJaMjNlJg_~]yVtZuUtRskv\{Uv\|]{mf\{TtWx_s_Tt\zYykhZyXv[z^|a{QoNnZvTqTrSnMjLbLaBVy;MnLgfm^jgdekfdsdSp]z_ecPp_|OjAYzLd\}hih_uC[z=NqDVx>LkGYxTqPn[w\~Vu]x]|_~X|gUrVsb~Qi_yVpF\F`E`~JdB[{Fc]w^witkg^|KeQlWvQoVoYqayYrBZzXkjrtjiroMqYwgkqgfh^~`lkottrtjlnrrsxnnvhnvwvsxsrsrtvljbYy_~^dhcghfpumrpqpmhahrwmpvtdhlmjtrebad~aaVrXs_jfcef_achpqmph[|gtb^qibkv}dfvlavqlggltfo~}tflhehuootntsohjrrgenmenuitw^}\~`a`hnjknppkdUx]|gldbijkwsqhfmlmqh`noedgfkfk]ahfhnhelkkkc`fjnmbagg[}fingdkbf`d]{Xv]|\xWtKeYtTsVrSnJgXuRnLjIcOhMhJgOhUmNjPmLhOhGbG_LdF`Tn\tWrOk\sWrWnTnSoJgWqQmJfXpOkRlIcGbQj\uUmFbJgXt^yZtXuUqWtVufYsQn]}XyWre]}WwNjMlWtYtTpRqSqVtTsSrYwQqZw]xQr]{OlMkKgJgLgIdMe[uh`~Yy]~`}WvYwVqLhXu[v\x[v\y`XxiSnWwPna~WwStNl\v`yUrRqToF`PmNkOh\rHeHdPmQoHcHcGdUqSqFbQmOkQq^{\zUmI_GaPlJe_{WsJeTqcE^E_ZvZvPm`~[wMgJdOkFaUpUs]z_}\wWuRrcvolUvMldg^}Xy\|]|c`b\{hl^|Xw^{RpSoe_{JfKiWv^{IgKgOhNiRgBX{@XwEcQoktgmr]dTv_}fX|d_ed`]zMgH`JeIjC\|RlmwOhKb?Sv3@_5AaIXv:KlTlaVyLoWvb]|\v_}]|ZvKaKbMgPfc~EbD^~F_\{nE^Xxvrb~Vt\u]yYxSrMgMeKe]xBZzbxdiskktmYzZv^}d`jflpfioogvupqrnmokuvrqqlivwswwqmrsvrfe]|f[zdlmbtrrpvztyuiifce|xs{s\drsmena`^aa^id}Sr`}Vwb~gijlnfmhgllhanedvsfglrykmqglfvxihkos~wmkyggfggctvwfl|hqultgdhbahSvdjfhhlojgliopojc`flixmnnttplmhinrrjkm[isdklaecjipd]ij`alhgjgmfkgfmecbjlqfkb[yb~RrZyRnQoMhPnRnJbNkUsMlIcLdOj?VuGbTrUmRjPlQkNdRkPmG^E\G_HfQiTmSoax[sQlf|QkHdQmYvZw_vRkSlSnSnWrKfOk_tZtMlHcZte\wMjUs^{[z^[~VtWs]}ZwVv]w]zZyUrYw[}bc]{TrRrZ{\xZtRtUp[w[zQpXwSpToQhNiZtb|Xwbi_Xy]}a{NmSoTpQnIeQofkRnTv[xWu[z_~ToNi\v\xLlQoRkIfLmF`TjTnQkXtVrQiE^IgNn`zQnPnOpNjZtSqKfXoQm>TtAWyQpKiZwZtFbOf]yPpKiPlQmPoeUpNiNhQlVqYvSs\wYuedlpnn^zZxb}`ki`TrXv^}Mmbd\zbRqNlHbJfRmXv\zXvLgLiWrHdMmLe?Qu?WuWrd|losregiWyQr]z[ypobi[zE_Kd^uMhBY{G`?XvNelp\uNf>Rs@Ts?Nl6Dd1>\@XpfYz\yFaUr\zRqchRjTrAQrFUy0=Y0Qs8Nh6Jd5Ca7JgWu}cUt\yWtbzUrXoLd@WwH^Da}Vq^uXt@UwHc[y[{mti\{^yUqZvXuUo]{@TxEZ|Zopqisr[Xzaikllaeimlpvtjkvlfhhmqclcklpx{zz{wslmloh^|]wdeidfvsdpwjotwpp|yltsljlddfrwnkk]}XwfdcadTua^`hoq^Vvcejrsna]~gcbjob`gkbenyplhgmpgoyqsvlkjnq{vmbeoqkqtjfjrjrjcof^^~ngepbejieahptwtmrkmssptqkhqpmyungpoomllvpjhbmf`dlkdgc^~gkugalobgm_\~cba`~dda~`XzUtWyYyTr`}XtZuRt^{XuNkPhNgMfHcLlSmOlMkUpOhGbNfUlJcLiXtSlHaLfOgLdKgHfGcPiXsHcKhKfMbVoPlRjYsMmMjQnPnXpPjPkRlVqSlJfZtZsPlSnSoXoJhRml\wVtg_xPrTxRma{i`}Wtg\w`chePoZvPq\}bjVu[xZv^za|PnRrMkRpTqQj[v\y_~Xwchag[y[yPlHcUnMiHaQnXwNkSped`{VuLjIfRnMlF_LcBY{JeSpJfE]~HaK`To[xSnLkJh\yLiQoQlUqVvSrZyWqYrD_H_VrWsXq_vXqQfIaXx]zaxSmJdNhPiKeQnOqUoNnZza|^ze^o`XtMgHfUsTpVsWt[xd~XuVsVpPhYtLiTp^|bVsMgUnHbSp^z^zNmWrIaPfWm@VxE_btjvhkgnppgeVuNmkvgc`z@VxOiPmVoPeD^}EaTnSmA[zG`Od;MgBRn2=\2@\SiVuWwglYuWoWtB[{SjLdBXv7HfD\}ZrQoOjD[Wsc`l_jiKgXrYsHe=RqG_eyklloga^}\~dajkjtnjnttmurhviogfllhopfijtww}{vpxrl\|aYva~ihdahnlhuunrtsqtvuyrjkrcXyirsj`fdlmd\{TvWs`{aa`[{hjrl\ejdlpjaj`afa_~npphdedksodmunhrobpvwgpis|oi_~agspqymenifqffhmh^zdqri]emhfeg`kv}tshlqutottqlmtutmpmjpschnrj^mubig_]~dihgc]}cgfdkdjmkkff]dh[wRpZ{c^|Yy`|VpTpPjYv[zXvXuJiXo\yQoD^RnWqSqUrJfXpVoTkPiTnJeSpMdNfKcKcF_HaRjRiRkPlToVpJeH`GdHdQeYuJiVrSmKjMjLfRmLgNjVnOnZtSkMiQlTnOjHfUob|[xWu`}azYvUvRnSq^~c_kd~^{^|`e]f_|QqNlcfYsTpPpc]{Po[wSnXvSpXvJfRn[yjg_`hY|KiMk_{RlKfLlHdLfRmp[xMh]yVtMkRlOlNlQmOfE^OoXuH`OkIdG`JeQjLiOk\uPkQoIeNiWu]y^zNjdKiRqZv_z_x_u]z_wSkD^YqWqVuTqLeLfMeXqUnSoe}TjPlRv]rj[wLfJgMiZtF`IfXuVsUsTsl[rHbVtXvPnSt^z^yXpGaE]^yp[{NjFaOgQgI`>RtUralwwhgrppkffmhTpRoVtxtRl]wWr[x]v\xTsRkFaIeNfczCUw7Hg@Sr4B^9Ed;PmMgdqka|a|QmXsUlI^>PqBZ{IaIaNmUnNhJiY|nrikkf\yD^KeG_F`^rgbmed^}`~cjdcekrttpsttxsmkkpkomlqirwvnrvwyrvrjc`_y_zejn^}Opoogkjqyvo`rvqqdhtufY{nilnedZyZxgqc_PoVo_{\cZxTwhnqkqc^}^nmif]}^ph\xf_ompj`_}_}kmtlnplo^dwpmrooqvhcfmfmqmtpfccgg^|bjhn[jhnpjoijl]dhkwxtyvrrvsvuxhuqormms^drndhijnkeedgm^~[ycagg`YzZ|ml^imellgkVvZ{_}[z_]|SqXv]{SnVrUtVrIgVoSmOnOqfNjNnHfWrWnSmG`D^OiOjOfJ`LfHcFaAXw@WwE]~D[}CY|SiQhOgNhLgNi]tRlD_}GcIcPeFbMka{MeHfJkLhD`KhMh^vSpNk[uE_RlXrHdJf[t[vUtYtXwRp]vb\{UtWw\xVvdZ|cdccjgWtOnYxSq`{YwUtb]}Xu]{e_{XtUw^ZuQnYyVuQq]~\}p[}UwcXtNk\vTrFaOgKfMfUpRnVr\zYyMhYtSoFcVqIcLkJfOgVsTnC[|E\I`F_G`G^SnTrOlPlQpUrLg^y`{Oo]|VsOhglLla{RlWpUnPmKkPmQmNjJf]uRhLlhwawRpVxPrfo_LjKiHfLfRlUsJhSrVqKhp\vQlWuHfUqUsYwTsRnRnMjZqb}]}Tra|ToD]~E_~G\Of^}Wwln{rsbdohZy`[wSoFca}c\|nWq\tWt]zdZtLe^yLfNgPfVoPkMbBNm1=[3>_5FcMi`~ggXtWuMiMeKaWjJc@WwBVyC]}LgMeLj^}mqeUv^|]|Mn\xRmE\~LcMbvkhm[{fridXzerg_wvtwguyunxjitlhtjvlsvywvwkfrnwwudegh\zYyjukpidnprptnpyxieanm_dfgdktgd`]`~mjl`Mh`~Ss`~_|ag`kwrghinlhac`bojf_~gijnjja^~kqrqqgpf^~rkjnnthovnpjtolknh\}bj[idY|lcjtntqkmkdnjhqmlolovxtpssvwplrrmmqqpvi_upkfpknbddadfeUv\{baeltVuYyes`]e^gnh^}Mm\}]}YwVtVv^{]yRnZwTrMj\oNdD\~NkYwXrIaSo\yG_OhIc@XxQkPlLe>TtJdOfG_QgDZ}Lc@UwE[~RiPiXoQj>UtC\}KdPiRnQmSlXmLfC]}D_QjQmLjLgNhKgNhTmSmIhUoNhQjTnSq]vPhQkIdXtYxTt^z\x[{UsOkVse\yVzn^}dfb^a[zPo^}g^YyfXxUq\{^l_{]~gkQrPqKjMl[xggTsY{g]|UtWsWrNkXsQlLgE`PhSpb]{RoSnLeD[OmUqSpE]=QrEaTqNlPjJeKhKbF^F`IdQk\xKhE`FbMhQl`zVsNmaye{[xXxlZuZtSoWtLhE`ZuYxAYyJd[uJgXu[qUrTq_u`zJiTvj_YxNlAYzPm\|UtRqNfUpUsSqYvpTsOhXsZ{IgWv^|Ol\vUnQqTsSpXtLgKhIbMdJhUocmytzpZ|[}vi`VrZvfVpJhPpf\uJbFaLgRm^vWoYuTqSm_zWrXtHaOfF`}J]6Je9LjGcSp]yJh\|WrF`G_G^@VwI^PdQi?Vv]xa\xXvWxdfiRqPsjZvB^{ShPdtrg`blohhc\}hiarlnwrqmlrrmcutrpjtwsmru}xoenifrjdh`_g]}bwukphfowmhw{wqn_ovhVya|ma_fhbikmfdgod`~]|ZzZwl_hhkbpciokcgikeadeksrladsyogceeisnklejimefmdrwnpmjejttd\~^{]|Y{fmgflelhuq_lrnnkmpjpslqrstwrtytphuwuikmuwpkndpmknhlb\{^~hqd\}da|aqug_idcebihgpcVwTrPnVs_|^|`{TnPkdZwLkUpXsLdJcPiYtVlZpF_C\}IdSlNfMeTnPhJeFbI_PfI_D[}UlF]H_D_}EZ|L]PiQiI`C[{G^~SjXpPjYq\rF_GaG_KfRkH`Zv[tRlRjHdJeH_^tOjJhJh^xHaQmNhIdXvg`}TpMj]z_|`~]zWs[{^~]~ekPpbjaTsPoYwc~gZ|_cc[|Zxg_h\{`bRpMm]xWv[ya|YwSrWuXvZxSoLgQqZsSnIeIdF`NgZuUsSpVqNjSoG`PkXpLcIdJeLkWtLkLjXpSoIbQiLfIaIdYyPnJfLiToa|TqYt^vUn]z`zpRo[zOkF_GaWvWrJfGeIcKbF`OjSrTqawlOj\zh]~bRsMgLdPlGcUsKhYxcYxKiPm_~c}[xKhMibYwOmZtHca[{RqZx[wIg>RsBZySo]ya|\ptjmkoY{etkZxSs^z_{Sr\vTqIfSlJbIbHca{m\wGcVrMjDZ~LfLkEaIdLgHdIcIfKfRo\ywMiMi]xRs>TtMj`ctptopj^|]yolMkQkVtWqZt\{a}`wI_Fa}JjGeSlZuWsXsRmAYyC`|Nla|WqIeQpZygpbzPk]xFbGdVrVuRqF]NeVmD^~OiVt|t\~gpYsOnVwbYwd{ug[{Y}opjke_}glbjpoimkgrrsokhrnrpkptywwurmfmrjaZxYwd^\~dmhrvlhlrvrtkmlkouysolh_y\|Zybhnj\_kj\[{WxUsVvgPpVui_}Ts]{p]f\~]~]y^zXw\zcilfhikb`_}jjgovdgikrolfpadln^\|Z{nvhkrjdccvib[{fgawjaabcb^~a~gidjnnqprqpmpttuwqwrq{svywzrqppxletxxjqpgoa^\|_ern]~]}deal]~bbbjj]}_b~nlVv^zge]~[zc~[wWt[x[sUp\z_zWw`{RmVsWtSqMk_}`z`vMeE_HeRmUnToKgPhF_Umb|^ySqOkPdRiNgOkPiKeLgSq]uJaC\}MeLhQhD_~HcMh[uVoWnYpIdNeSiKaOfTmHdOhF`FZQkUsOiSpVsOiF_JhRmMjagXuRp`}_{VwVwYvVube__Xz]zWwdc^W{Xzchf_ge[\njhhPpTrTrbRqZxUxUpWsZwYtPmMhTnRoWs]vRoHcE[H`kWygf_}RrLeKiJgOmNiF_AVyOiLgTiLkNnNeQlQjF^GaoZv^zWtKgOhQmXwQkRmSsMlLjSnWuIdQbNiQnUq=SqDZ|JdI^D_HfGeUw]|dicbMjTnTk]{MoIeQnSqPm_zTsYx]zQmTphRhGaQmXoTt_~Xv_w]|g`sFZ|@WwWpa|iwhvrdY{ZzkfffbWvMkJf]wXs_y]wRm\yJiLg[u]xlgNhAYy@Wv=QrYr_{Pl\yTmQjWsjXsKjKfD_Oj=RrIeUqD_~^yfOoc]wpsjfm`|[wpTu_yqY~Xt`p`]~fll`cdkqrvphdjruqvvlnojsstuuttvulhffhg`}a~`\\|mtonolmpjpwwtpqtyzeophfh]{ahjrfelcbh\|TsZz_~_Sr[y]}RqXtioqkse[yNl\z_|Uq^{e\zdchcmoe\}iqojggkrotnheklhkbY|aitu_agbchhigXv[zekhi`^~\~imb`kgcaitqxwoxunusxyvyyrt{vxwyrow{rojkifgcadfmaYy[xqb_~\zVvcjba]}`~b]}a^}ckeZyZwWuZwUsgc`}_|dXsb|PnZy`|`}WtVr`{TrMjSqTqayZwIeKgHdRoVs[xTlJdMiLdLgTpSpfVoNiLhNiIdRm]{UmPgRlXpF`MfNkC^}QkC\{Wq\vWsMgRjJeLeKc[pIbC]}GbRfVnOkQiKiIfUqPlJeLdPiSnNiTpWukZyVvhZwPoOnVudkXx]{]{an^]gsfagkc_ff^~iga[{XvQk]yZy_\{RqRr`}ZwKhPm^xZvVrLjPmMfRfE\Id\~o^y]YxUqPiNeCZ}NbMcHbOjJdLiE]UiWsMjF_PlMhUrPlYrZt\vZsToH`Rn[yNlOkZsWrF^>StLdGcJdLeF^H]=QqF]PgHaQqTqPmhr^~PoQlD^~C[|[uSrNmKhLj[vQrIfWsVsRn[xhGaJeJdMgRo^zmXzLnYs^u[sAWzPk^~puolrvqjgdVpyg_}[xRoKeD^~VqUpC\|D\\za|QkRnVwfJc^yG`OfWjeNhYtJeGbIeglEaUs[zG^C]}NhAXyE`eToE`TqSmXywdpzXuSr_}Uo^xkY{djoca^|_lgjntfnvmnmgkepvvsjokrt{vxrpv}vh[~[zeoohg]~^~npoossstljsprvysvwfihegmkdajnoephdccVwXxbc\{RpVvTsXtfkefsk`~`}gVqNicbWuYvgoeajmmkoypb_~kltutj^z]}`mdih]}cgdliYxa~ddridb^|d`eijfgik_`rd`kmnywlu|nqvxywwtuytttvwvy{rxtokmjegcjii\~\{ZxYwWwc~]{gb`ePtUt^b]}hka[{a}`}gb_{`~]|`}^|]|^|\z_|WvRsfRoSqSp_yWsUsXuVvIeQoMkOmKhQoMkTsWp]xMmHaMfNhC^}Tpi^xVpOkHcKgGbNfJe]t[sRl]uLhOhRjE^RjTqRo[tNgMkNhG]LaF]}MfLfOdNgNhSjRpId[xOkVoLeE]Nf\u^{NjWv]{b_}_~^}WuTsOngcYy^}]|if`itcbphg_h`bc^[yicYuUsYvcVwXwVrZvQnPn[yNjPlOkPnLjRm^tKdQmC[}D[jrj]zWqQjF^CW|[rQmJfUnRlKdHdRrOiMhVtLiG`AWy^xkD[G`RiQlMiXtRoPkTnJcAZyKbOhGc[tMdCYzQfL`K\>Qt>Tt\w]yim[{dbFcAYySiNm^{PoaHfSsfNkF`]zLiZrZvVoF_G`E_Rk_{_^LlC[}UmYqOhNiWunvrlrbchic|ea}XvevB\{D\~KjIdNeOhNjKeD^SrdSpRmna{cLgD]~LgSoZvb}VtKe\wOgUtUtPe`|Pi@TwLd@VxAVyNiWr\vRpduoia[{_|d}\wfXydsje_cekrjitkjuinspqbafjrrqvwpk{wwvkkkmfYv_zdhkreljoqpptjtpjgmodmysi`_oc^h_|fb^kiqkcgjgdabake`~WxSsb}gice]}{}pc\{c`~]z]zd~^|b`gkpn{onmji`gskhee]}fhune`Z~oijb~Vwla[~j_Wv[xc\|mckgd[{Zy^|jlghipsypu{qw{ss}vut~wrow|wtnoupksxjqmfa^|Z{Ux[|b`bYwbeb~cab~WwUy[~Zxcmed[zddVtii_~WuVvYybXv[yb`ZxYy_|Yx_|a}YwZxXvYyJgNj\uUrYvKkMnOjSoLiOiYpKeD]~QnJfE_SlJeIcSn`xNgHcLcYr_yRiSkYqVmAXzNfSnVoVnWpJhMhLbMdNcCY|D^D\NhUnUoVshzTpWvJdLhRlNcOgKjZw]zVrazcVu[{[z[{e\y[zi^ebfeckhm`glmggfe^^~dboWw^|XuOrgeVsUqUuYxYzLjH`RoVrTqRmXsQlF`F`[tczjg^~a^{OlIbE`KgH_F[LgOnKhJaLfNkKjF_SkLjRrZuc|wXuE^KciVvJiUqRoRoKeYrPmGcOiFbD]@VwGZETyARq[uNkKiki[|bWqH_ZnNkE^Ok`zYvKgmZwWsTqSwNlJh\vb|UqJdHaPm`}]|SsGaIaJ`E\}WqNlg}lqod[xnf[uf[wUtUwPv]{VmLkKhKb^yVrNgNfePmQlHfRoSrTnRoId^yLk_|nYySoIgNbE`NmZpIeZuRlQnLgMfUtMh\x`yBZ{GbGcJi[{pnQsUrTsef_ccekljtmthsxijmnjglppoorr{~yrjlltwhfgcfiqolghpyuihryojjifg_}[w_zd]z_~cjkb^aklhehtkfjhZz^zj`^~dhkfie[|\|Z}ko]|]akh`b[|`X|Wvhjrvz{pkgdlirkhmrmjqmcjjgdkqifrlig_}[zX|kpl\|Xt\yamoijnmlhgmtsrtyvtstnswwysvxtuuywu{ykjhulfcjfg\d``fhd_}c]~Sve^{`~m\|^~_~XuUt\|crma\{b~gvaasfTtefc^^|\z`XtYvVuVw^eeVuMoTqQmXpTpUsKfIdGcLiUoHbLecxQjHbH`KdG_VoXt`xIa:OlEZzOjHfMfG^Ph]vNfLdG^F]FaUmUnAYy@ZwE]SkH`ASy@WwJcNdC[}LfMjE^Ledy`y^zWqNlWtOiOkQq^zRoWrXvKjMjMlTpa}[yXv\|Zy\|cccjpvb_znfeg^}f`]}c_|[~isgXyYx[zeVuLmWu`WxSuUuMjSuTr^vUoMiPlNlYthczTrG`F^LgLk`\{YuKfNmMkMmOmSnD[\uSnF^dLhIcTpfXsTq_|SpUtVsWrJhMkVqSqMmToPkNdPiTnHbJdH^J]E\~@UwVqNkHejjkZuQlPoJeXqFbJhNpOk[vhEaFbUpYvOlFaG_\qJgSoUpNn\wVq\v\xMeD[zZv\zbrnltrlgd[|k`WvYu_}`Yu]yWuWt^~bh`wAWyD_~]xSoJfNiRjuXvYs[w`{uhRmeQoBZ{Ng]wGcJjHbUnD]~I`C\|E]~MjVuOsp`{PqYvQmUq\{[{]x^{`jkpjfvjmrshalfdhhhsvsuvzzvxpqknzkpbZ{dljmqnlptrtskhgjmvlg_|a~ddca~hn^yb_^__pagk]`nmfZ{gaYy`}]}egilhlblk`cgkdkmnpiccccigt{ffljdglhnwkki^\fg_teelpa]~geff^~nil^zXuYxhqtmmrsnmyw{wwssutrxoqpyvwtnv}vru{wqokoomgiflhh^`dpfa}fhVxWxe^y\y`e_~_yg`[}a_|]{l|fWwZz^|]{[{g[{X|o`XvNmRnb{`eeUua~YvWsYt[tMiYwE_KeQiIcOkJdWpToMiKePkGbLbRiLiUnZt?TuBXyPgAYyQlNfD]IdLjPjVlH`F[~>StIaJcKdJdUlOfNfCVy:LlJ`C[}OiSnKiJbJbSkOm[wYrbz]vXtVqPnUqb[yOqQsZvNjTqg]|[{c[{ejg]htxne]}`se\|Yx^~ehcYy[}pymZzVsgUsZyXxVvbb`_{\{\wPjMiWuYvRpLiLhc}`~[vOgE]Rp[xb~`ZwNkOlFbNlVsMcTrIdMlPm`zXsUwZtNiNpXvUrMkZsQoNnYz]xGaOnYuNmUqF`RnRoH`E[~Nb>StTtQqQmTth``]zMles\TtZw`}dntojpniv{qhglklfhrrywsvttwwyrnmdqj[}^|ijjlhkdfgwxpoplchpi_cbke[y^zbefceidfbbe]eaz`sg`~cTsYscefe]~dqj`crmokeljamsendaZxYxZxo{cjb[w``jdjumfgldfslph\gb`_gffi`\|]~]~a}`egliihvwnrvr}xvxyxswvtrx{wmsyvyurttttwikfhnkjdhac^fb\|c]zXxSsVxhb|ZxZzVydhdWxVyjgQpagbckSqni`qa~Wteaa~Sr`|_z]{VuOnZwdXvNjPjVqQkTpPjMgMhNkUmSlKdNkZsRjPlHfNeEZSoQmVnOgIcOfH]H`GdKcOeMgG`YoQmSmCZ}AXyOhQkH`G]~CZzTlLdE]CX|E]~E_IdRkIaNhD]~GeKgXt`za|a{[uSo]zTpVt\yOoVtTsQpUtYxa|ia~[{_]|efgorp]Vvhrp]`iggf`[|`{qedVuYvWtUtQmd|Z{\zeWua}_zRoQoLhLjVpWsKiMnUsb}OiTpJdSreiTvTuNjKfHcPkPmfQnPicWsJfVpa{OnLjUs[za}HdTrZyUsJhQnF_LgQkG`GcIeAZyNeRkD\7Ef:JjQkdn[}XyalYwE^D]~b~VoZtUpD_~LiePpQr`_|PjJgAZyE_IeNlYqf]yMkE^G^BXyJbNi_}Rtr{i]~joneihcjZsSpMmPn^xRmHd\{PmQn`aYqa}[{Vq\v`zRmZtkPoNieYuNlkVmSiNf;MnE]ZuKfWrHaD_HfIhRlelTtZxUurjaa^{eb]~motholtymjhllmiijpuwwusppvywspfgZ|`fiibfilejjx{lpricf[yZ~]~[{gweah]}ckkkjgegc\fgKiSqkmfpb[wSpckihhbfbhiefgijmajn_gj`Y|qr]{b\ymia~^|a\}fisofqhhnpkpoj^^jpj]n_b[z[zUvjnelf`hiptpwqputrsyvxwrrzwwvuyytntysprwyttfY}mngid`ge^f^ejd`~\}On\x[wbZz\zaYv_~caehb_\~aiuib~ejjVr[v]~e\xd]{SoUq^{PnMjPkUsZvRlVpRlUqNhRoYvNeE^NjUrOiQhJfOoJcVoKePkPkNiNjJdE\LeE`C[}IbHaG_UnHdLhNgOkE_BY{>UtJaAYyAXy[tOgPeF^F`MfPhD[{KgVoIaYvQnUoHc_yd~UriQoRoVr\z[zVuTqOohogoc\~cdddjbjsb]}aqeg_c_ek`Urdec[z\{SqLjVr]wZwPo]zYw^|l_}NkKgLkPjSnNpNnNm_}i_{MgKiWv^}Z|YyPmLha}KhKhLhUpPkYuVtUoc|eMi[xZuUvZzWuRoPoHfUuZw\xLfAWz]yb~E^QiOiToNiNe>Ss@UvPoTrbrj_dHdGdZsSrPp_zPnLhJg@XxLiXzZw[wRnRqH_E_GaUm\zVsRoa|QhAZx?SuJaTq^~cumop]|^~Z{hdkb~ax^|`~LiOi]yPlRlFaAYyk[zSnXuPnJephSpcbjLgUrlWudn`xjIb:ImKcVpPiKfOiUpYuQlOjVrkb\yb]vh`mnmmqjfrikomolbkrtmonqmmvutrssmq}ndieirc^cdZzirvprutirrxrqqm`Kkaj_~flhckrfiqfbljbbRrUmcc]y[|uef]{`}ihmdjmWv_X{eojhvpoje`~wrcivn`c_hwpaZxcjieornopfaijghgnof]em`}\wXv^krjjnduonrsuxttuuwxtsvrvsuyvt{{vnv{nswwypttlffkcahaceW|__l^~db~WvYyYvVuc~h[~^|fdWu\|mpd`ccjyiVwStiymJhSl_xUpWuWuSpYuTqLjMhYrVsSp\vFbLfRnOiVqRpVoUmSmSmJfFcKhQpNkLjRlNgUoHaPkWrMhD^I`G_NjHbShPiE`JdPnLkQkJ`D\{G_Ja?VuF^DZIbUoVoG_RhRgGabx]mXq[xOiRqa}NlPlc`Om]w]yWwa~\uRocdZxlhXwd^}]zhlfhlhjgerp_fn`^qhi^~OpVvl[{OnUu^xTsVy[x^}eZ~RsZxYvMmMgPhQmMi]zPqRoZvYtIdMh\y[~iVvUrYxTrSnF`Gd_xWuKhRmPkKiXwb}ZrNnRtZwYv\xYxKjWqgdaySlPgNdVoJfMhMfRjAYyMbHaCY|Uttm_a}RpHgc}SlIe^y`dKcPg`vHePm]y^yPjNeG`UpUnPnQnZvWuF`;Qn?QrAUvSnPpRtlrqjgb_~_yba[{Vs[{kWqUt^zVr]ue}EbSmYpXsaSqGcQpWv`~jdp~ldd]zLlGbA\yy]wHa?WuBZz_{G_NgOfD]^|WtTtQoa|VtTjfbcmmrwogjdjvsjnmpcmjnlnnvyzvooxs_vohefmqlnielbalxxrnleq{wrwkaQqYrcb]{qsntokcnhhhc_|XxWsOkSsb|azXzdhl[}a}sbcolb^fhdjtfdabonopkmj`}l_eahlgja~^|\|`Wwdennkica]xVuinnkb_he^y^|a_egmcrnpuusuwsttwwov}spvotuyyuprvrqqrtxrnpklwi^ehhleahYx_|`[{X|khaZza~^}a_{b\}d[{cdfcni`}cccdc[{a|epbYwUlPlQnOoTpSnVpXw[xPlH`GaJhKfPjLhE[Lgf]zGcJfPjHdJiWqMeJeTpLiLiMhPiQkUr^|SnJfOfNkOkOiNiGcD]~MhPiZoUqLfMaLdOeAWyWoPiPhSlUkG^[rHdIaNdGaD`[uXu\xYwMkTrVtKhc~eOpUsVt]{aZxSqffnb^}ch[}]mieh`g`lcenc`c`hhfVw]yi`_OlKidd~XvZxXy`~h_{Zy\yTnIdXs\uOiOmOq\{NmIdKgQm`{]|Rs[z_PnUnRm[vSkYvNkHdTrLjRl_|\{\}Yzd\zStVqYrZu_|i]uYqMcUlIbKfQmGaAXyH`~VqKeWpp]}h]zMmKhea{E_PgQsTv[wkfD[~QjGbLeXoI]SpNkNjHg]}[zLhJeOf?Oq?Pq[tUtpvSu_ppijaiXwVtY{Rn]vay]z\wJ`Rl\zXvPjNhWu]yTrOjVoTnKfJgRplwjloXw]yUqE^IguD]~KcPf=SrF`McEZ}Ea^{JdUul[z_z_xiciegppnrrlitzoiiptondplrwywroozxgcebkmehinmfgggiottmrrlurrtfnfa|YyVsifjiporajklnd\{JiUpUqUriVqMkeoicfid_dg`chhjgidedlohom^qjd`hmjpd`bd}bYvbe^|\~`ot_g]}eld_~bih^_Yy_|gfecclgsmryvpntxvoywnuwvr{vqvvy{vwnpwnpw}wtoxjfupgajhaja}fYy]z]}\}ggbb`~c^~i\yWwZymejeVvVwejdh_}a~fdc^|[y_~ca|Vt[yIe[vSmLe_zXvKgNhTnHdF_G_OjOiNh]xKhJhXtQmUpIeGaXqE^~G`JfKhHcUnVpOiRpZzZuYrGaSmMjNi[tNjJgMgLfSoJfNdTmQhXoXsHbKeF_VpRkRhIhGbPiF`Id_wKgYtXuSpToQnKh\va~NpTsUqXwfcVtb~moa]gb]V{\|Z|jkXxckegihopaVx]klfXy`~Tu\|b[zTr]vf_yfb[{Xu]|XvPkToLgGaPk[zNlLjYzXtLgHdJfSolWxQrKhfVtLiNfOjOkUoNkMgMi[{WvTu]zc\|c]y\vQlJgQmZz^|VrH_YoWpKeAYzBY{@Tu;QnmaWvVw]zXwTsPlQkQoKgVoHgPoTqZt\vRmWrJdTiQhOiSmOkOlXvTqTtZv\vHeE[|Te[qVsbvfhfsyh]~fd]{ga}SnNmZv^yWpSrJiYqhVsKjRo[xYv_zTnOjE]LfJhXvehf[{dj_}GbGaXre=QqH`YySoCX{RiFaQjRpZ|c^wXsqielniljqupvusrjjrrpnfmupvwzrilpmlfo]{\zjecpotnlnuigprtwrrk_jjjknpgfgheaiywkedif_]{^}UsNlXw^|ZwHeWpfqhegidiegjjaeodedpnmjemfeqpmqqroo^~eiif[x]}j[}^|gmocYxdepf_eh`Yz[|c~f\}]|hkjpnosyrosrwvpvttuzxqy}xytnrxxwvoswypqmpvshmqe[[|jgbl]}cSoXv`z_Yzaoa]|hm\z_~`~_~beaYyXxWz^}kk^|Wwa~dd`Ts\xVvYydYx[z[uQkZtXqE^JeIdVoVnAXy@UxMdNiIdD[~CZ|G`azbzLeUnUpG_LcD\MeD^~D_~OfNgE]GcHeTn^xQkLeHgQlVoOnOlPmQlF`FdXqOiC[}TmQqIdKfUpIhRn[tNjJfNmLiSkSkUoVpNiXr_wUnOnWqHdJhSqYtZw[|[{dafgjbij\[~Z{^bacdj\~ajhlj`de]~fi`f`}WwheRt\vYuSk_{\~Ps\{^zTsRpVuZuSnTq\~d~SpPpUrJfLhMiUo^y_Pq\zSrMkQqQkPiJhYr_wOhJgUsMkJhXu`[{[{[{Zu]yTvXvMjLhVsOjPhC[|G`IdF_Nc9MkNhVtck\y_d[wIeE_To[wIdMkF`MdWsPnE_XpkPjTpD\GaMg\w[xOlMlZuMmC[}=Np6FdC]}jfx{ffenwo]xegfTq\}a~UrTqMoFbPeYr[yfLiGdXwn_|WtYvYsF_JhRo`xUud\wWweeG`RnNlNeaxQjSsPivph`~[wPpHeNgGcIbSnNiJeHaIhOlQmXqC[}PjRlF`GcQmbb{PlKfRnF_EZxGZ{WpeY|wslp^}bxuj^\z\w`{^}]|XtOjVuTsH_@VxSo`}a|_{\|VxOlTplXsYxXzWva}MmQp[vUuKkNlazUtQsH`J`Sl`v9KkDWxF]PlVpazr_}hb~kgbdnogjf^mogipgmvpbivqmmqrnpw|mjcb^{ffjff^~dpxrkqsmmgoryw{locXwcmp^cgdgttroum`~`XxXu^}ek^~_}VqPpWt\|j`b]~fdbknnfbcmlhoo`clhhltgfnpmid\|ca[}gh_hssbbgbdaijb]|Y}ajce]z^~Z|flknkkmtmrlw{wwvusxxtjovo}tt|tt{xtuvmltrjofiijn^}fk_efgabig[xSr_|XvRsd\}_Uzceha~`be~de_~Z{d~OlZzdegba}UrZz\|VsWuVs^xXuNpb~ZwQoJeSmUlGaD]~L`KcI`SiRiTkAUyNdLeHbLdJbJbXsE\}8FiG];OmG[~I`I[MbJaC]}GdXu_xPjGeKgYrZtOjToGbKdH_MiVsD_HaTn_zTpMlTp_yQmUqgQnYu]v]xePlWs^ySoLeKeVrUlSr\we[xQpYym]zMlQq`igmcihcb]}`ihib\}dbaf`Vx_qpbecj`Yz]`{SpQsVsVuXwdWvMkRn]{HcJcRnUpg`~WtPmMkHaTpJdQmpdfSmUoQlRmMeJeFaOkTpNjUsc~OpXwYtb~[{NjLjiYv^{\yMhIeEaOhSiJaD[FZF[yATvMdTuomhbPoD^~]xKjHbKbTmMgXqMhPiaLkHaWnYqJdUpLePlZxYsNi[pJc9Nj;LmCX|Lickplmli_ipdnSqWv^{Yu[vlfPl\rF^OjE_Mef^JjMjPlbWrRqRr\}b\Po`zNlMnZycNkMlLgI^Poe:MmBXyTt>OrGZ|KfG_AWyIcKdQjIcC\}QgCXz@SvE]~G\ASs6Ke=RpI[I\~?Sr9IjBXyQlSlSoOlGbLgUn[u]{QnUqRn[pWpLiYw]zKhJfRkSoTrToNlWuTrgXvXxazpi_yUsYwSmMkIeNiRmVsd`~[yee`VpYtnn_}_^q`fbaekkc_acj`i]~fcgjWw^\|WxYyPob|b~UtTreYzRu]xMjQqWuUoKgQrQpYwMmRseHdH`ToJcKh[|YxVueLhXtKdH`MgLiQlSnJgLjKh^}`}MlUt``zPkMkkMiUlUrJcPeI`PhYsC[{BZ{Hb_}m[yXy|WuKiPlHaWnOkJhTqRj@TwQlHeFaTo\y_~cIeQnc}RmLjXv^z[{FbFZ}KbLcBW{ldmxwooigash^|Noa^{HdWt_}_yeOmE]Jd]vNkKhOkLgVtNl`|JdMhUr_|pXumlLkb]}H`Ol^zE]E[~ZvHbKdUlGbJfSs_{gmf`}Yy^vo_fcgpnikbacdhhjsrwwkdqvjhcb[~Yyljefbehjvpstmooysnowjiqssfbqhel`}kfdgpfjupmn`bZxXze^}^deiejehnjlg]|ceieiohmb~`~`ail^~Vv_`}lgik_~\yqj_qiif[xKkWx_gplgdb[z]|ha^{d`bajkkjjklwsyyr|wv{ytqxt{{wsuwsloqlwqyspocsrmwiekc`l^}^|pfcc`}g_TrWtSr`|d]|\|b[zje^~[}e_|Uua}`~aPq^}a~c]~h[wfYxWu\z_}LiQlUoQo[vSoMoJhE]HeQoXqF^LhJcLeUqKgM`E[|B\{AWwPeSjMgXtSmLeLfMfLeH`Ka@Su7MfATvBW{@XwDYvHXxBVuBXxF[{Yq]yGc>TtQiQjKgPl[tPjWnSoOnZwPkZwXuYsYsPpYuNi`yWoVsUzPr\wd}d\yWtXuXrKjMkUqYvVsZvTrXv^y]y\xfmi[xijmbcig^|^~`bgjfe_~cj_~`~_cpiWyZ{^|Wx^k[wSqNmPn[|\{ocQoNlPjNlKkNjTqNn]\}VuTpHbXofMmKhZyrZuSpPjLhTnRlD^H`QoYvLgPnRpNlRoMq\~ZvOkYwZxRjYuKdF_OiRjVpToAWy?UuOkNmhrqmNlKfE\I_GaOnVp]vZuTpGbWq_zPjSrIeWsihUraMkKhRqD_KbI`Lc[sRoacjtow\~gvzeXuZu[um^{Use[xilYvF`jkQkXrYtQoOm\y[uVrPnD`KhXz_iMlZ~nd\yTtE^TjJd?SuB[{OfIcWuNmYvh_|^gi[{crbbkYy_fhpkf`dcgrpkttlbruosb``}c_|]~_hhaaamy~rjmtyprtnnrrkiqplke\{`bfhjloiqhgqjd`Zz]iefed`megpiejbjjkachcfil\~Zyeg_fe[zfmcjld`~igioUv`}_{dkc]{Pt_d`~Y|Yx_{d_}\zfle^}mkgpvqjtrywm{{wnyt}yzwurzyor{vywm_skjrrnebnpidgkd`^}Xy`\z_}abXy[xfci_|Wv[{pjQsh_}pcima|f]{`}fXyb}ncTw^~fZxVwTsVuRpOnKfKcFaPiToOoKhRoE`GdQiJbTmNgF_SmYuQkLdAYzEY{K`H]PiJdMgToQmUsPkE[~JcH_@WwMbbw?Sr>OlRgDYvASu;OmAXzRmTqJdC[}I`E[~JcQkYs]xXtWrYrf}NiTrSoYpVwNl]wSqYwXs[vRo[yll\{Urc~gUuRn^|LjYwUr^yKhSrd]wWser_|a|ge]}hfcfod\~kgTxpe`\fc`Tu]}]be`Z{VxdOk^{a~OpSr_z`e^UvVoLgMmToMhRrRrVwSqbG]]uYtJfTraSpfUq`}^}G_SkSnCX}NkWtGaYuTqYtQmMhQna~`}Oj]y\tMjGaHeNjNdG`LgQgBYxHcSpdrfl_|YuUnE[~BYyD]YqZug\zPiNi^tH]IcRoVqWrTsPmZw\xToGbLjNfNdQkQlXtlc~`\lspadqj{xZuiTqXu`bVuRrSo^wOnYug^xKhD_`|dHcRrQqYsGaMpZy]|MkY{tnSlNlNlYrQqFb:Ml>PtPeRnKjVrdgfkb_el]\}cd\~Xycefmonflmkkupnmciij]}\}ikda[zb^|_jjdqsiluusurnqsnnkimhgfhdbmrjnebmdhahtj]~i`~alcffedhxrnf_lfpk^b~b_fhk^]|nd]~d_`~ka~Wy`}oljmcXs[wa}b^~]}jkVyVuXuYya^~\{_|gSs^}[xfmjb]gm}wnt{plpyzxpw~wrqxwrwntxwtvvkhgpgnrmppdfegloe]{Z|X}\[{_~Vu_~a~LkXwnkXxMn\w`{ged^}ge]}ep]}^}UsWwehcW{WvYsay_}YxWnMgXvVqRnQnG_PeRnNkZwKhKcRhLbYtSpSlUpSoXqPgG_PfF]~PgQgE]~D\~RnPoVn_wHfNjMfF^MeUnQhGZz@Ss:Lm;QnFYvBUu?StCZzUtYtE]H_~D^~DX|D^VsXtQnKiYrWqSsWqUrSsRoYu\yZw]{_{c}_{MiNogjWv^{VteSoQqZvb}gNnZyZ{SqVrVuOo]|qf~a{ad`idlbmcebhfn^~_cbVubdki_`Z|_zZ|RtVwPrQpTqOr\z__f^xTmQoSpSqZxYxNr`NlOlTmIdhnVqbTq^{fIfJdYsPiGcPkVoJgXwVt[yYuNkUpZpTp\yKgF_LgPhHbD[H^JcG`CYxIaePolgXv\{[vlYv?TuTmLePlZwTsa{KhE][oVpKiJhIeF`SrZxb{lNmIiRm[qLhXtbl_{f_ecolaaboo\~f[wYx_}pRmXvXwUlSjGcVtWqhUqOhFbJh\zcWsHdUreZ{fSqNqlglcQlEaHf_}Nf:Im>RtMiXsb}kcimefbdfdfg[zZw[z\~qjglpzttlhpnlnogUy^|mmm^{]zda]zc}iaedmcoqowwkgntkotabinesljkglaYx^zgjdgofde\|edhegeb\|onnt`Yzf`ilfoj]~]zh\{diaexcUujk^~]|e_|rpca|VsZw[z_c`}`}Ut\zUuPqWwe[{^^~Zz`~\z[wjg^glrwswwwlvwytwtwwtryysyyuwrorsmrw{|fi]fgdvnbhddgjca~_~^~`\zVuVuenZxRr_~k_W{a~Wq^}dgcaYwa[|^}^~\}bZ{XsZwSq[v]zWsZvMl[tRmUoXvZs]yXsMfLfKiRjWsWtIbWrFaD^NfQjTqUrSl[rOiLfA[yZpUlGaF`XrF`MfHdMmVm`xLhJcAYzKgKaM_H^Qs=RrAYzLjdngYyNkIePjYrpGcIcF`Jf`|^~QoRjE]OiUrIdD\RpQoKg]s^x`|azCZ}B\{JePnmiidpnbpgZzg^\}esiXwWu\wkZwaSnPlZvMgWp]|jRlMkKkNkUr_|TpZu`|TsXwZyXx`|`|Ni]|SpTpWoXwPnH_:KmD^Kgka|Wv^{`~dfleeeahbc\{Ywdjaomwz|mdeovosgab~gaee]ye]{ifed]}`qlpqlrovunpjogchoqdgsnhgfk]|Pn_{ifdjamdbf[|]~d^dbmhdbcwqehdjkxpafhWvfh]]|jiVyjbgf_~Ywbacd^|Zx_|^{aVuYsWrZwYzPrWu_zbSv^^}jdfb}beeplptuw}stw{tsw{rywquwstnty|{rmrwxrppjbkmf\nh^fiYzfic^{_|_[zbfgm]~Sr\}^sdPqdeicZzeYyfRqUue^|\xZxUsYsYth]{Lj]v^xHcJfQiNiPiNhLkNjPhXsUqRl`JhD^~I`G`WvG`HbUoPlJhAYyE]UmB\{Ql\xKjD]~F^MeNgc{[wHdG_?UuEZ~?SvZmRi:Mm:NlIXwAOmCWzBUyG[}SiMhJaRhQhKfJfMiYtSpJhC^}TlJdOh^xIgPmLiVwVv`}`a\zSp\{ijeZy^~cStaTrYucfZy\{aUu\|afYwfda^igh`[{f`~eqh]|odd[{^`ngldb\[y^}TsNoMl\yXycfTrOmUsTqRmRoXuZyVp\z`OlKgUrc\|]VtRnZ{^}OlQoMjKeTnKcVoUpLlMjNkVsXqOiIdHe`|YqNhHbKfLcGaRmPhE[}CZzIdJg_lqhNkE^\tOgE`Xt\uE_GbUr]bF^NgKhToKhGa_{QnE_]uLeTqWn>Tt`zdVsjfpm^|ipiY{X{bla~a_f]{dUpPm_}kPoE_~H`KeMlQk^x]|GeHbYvUrGb`z_zJjXwcWuWtYz[|YxJgRnG`Ke\wgH_Nh[yek^}]|ikmhfehZv[z^|Xu]}gijkhnivyjgloffmjdj`~fea}d|e_mjXxdpebvuxvveosjijkbbfnji_~kmghqiXuTra{`|]ya~\|[{`hcka[y`{dfgjwihc_|ooyr^}cjgkjbaib}a~Ywa}cjf`ffhraNlOncf_}a~VsTpRkSnUq\ySsVt^{b_{TuQudfflkj`lvrkhhu}zsktzy}tswywqzwtx}}{uuvjj{phuwfnuenqbZ|fcd]}WvecXz^b[|[{Zy^~geXv_~ip\cbXxbchZzj]zXuZwNl\y`Xvc~QlQnWsYxWsJcJfHcKdFcPoRlE_\tWpIeLdVq`|VuRoRlC\|MlWrNiGaLh]yZtRkKeC]}NjRpJjXrWoD[KaAZyGbSoRjD[~E`D^~G\|PfPf@TwHY{Pq@OtATvC[}H[}G[}OdB[{SmLbPkRoJeC_}SmSnOlRpFbRntOmPnYu]|a}^{eYxOr\~p`~da~_~_{Zz`ya~aZ|bWx[{c]zWvspedclfagd`gc]}`Y}dhdkdmce]lkgkfeb[xPoUx^yQpQqcSvQqZx^yRmNjLk[y\u[ydOlOnRnTmYva[zWr`~YwJgQmOkSnWsQlHcXtiOmKhb|StSoPjJhC^}KgLfTmIeG]C[}QiNgF`F\|Oi\vVu]dpVvKiazE]TqHbLc\yPhNcTsc\vOlHeQmhZuZxPpQoiMeGbI`BVud}Ys[vjiij^bepokZw`{vWy]}fvZyLinZvPpE^VrtHcBY{MfUnTqTqXsZxC[}Mh]{XuVpb|VsStdc^PkgZwOf@UwSnTpMcToqolcaciUzYylll_|Z{cjbfdhjptpehtlvuk]\}gk\yY|eiZw`fdti_~fjg`kouwphhdlwldUwZxa{hhhjjjaghi^zegXwJhPmZwXub`fhnj]~`~bWwb}mghni`~fnf\}]zspffajohaTrb\{]{dbnqUu]}fOjRo[zXxe]zPnOj\vKjYwiTsUsHg_yhVxYxg_gccihijkmfihwttmtvpvqoqtwsqt|wnqnv}poshnlwphg_fxj\{RqWv`[|Uu]}dZy[{aUwefVvZwgfTqkdX{kjee~ega_{_{`UqHdHaZsYxQpPoJeXoGcNoXsRoJdJbYtXtRkIcVoZwLiF`HcSq^yZvVuRpOmMmJeRnGe[w]xRm`{PlLfGbId_|NlIeE^F]~JcPlLjUpQlF`?SuBZ{JbO`PeJd>Us:MmBXxAWyFX|CVx=RrCWz@WuG^K\BUvE_J`Sl_yUpYxF`LgTpQnSpRmdNiPkUu]}[yVw_\yek`g_|dp^{TrZza`}dUtMl^~c~cdgbdgnnieljd`Tx_`}hqhZhlhbaiimjdai_^z[w[xi`Vv\xf`WtPrSpNjRq]{RuRtOl`zVrTtca~UsNkOld~QlD]~KgLfGbRoUsKi`b}KfLfTmQkGbJfJeJhXtNdDZ}I`McG_?Vs]t^}fjik\|Pr[yNjG_GaPi^yHaLaI`C\}D\[wKkOnUnVrOlPpYyOgKgPkATyBXy@[vTmp}fnnfjjjrfdee^^zZxkdOpDZ~JhVrJeLjNnHb]xNiE_Hd\|fRkLeEbGdh`|XxmbRs]|\w^}aOmPkHeHdJ\F]RleoXzZ|`aUz]{e^ciVwb~ibe^|ZzlnwwtqmfwwlaXzVsf]|Z|_`h]}efgjgcjiljmqklrikogc]~\}]|^zae[{jdncd\zfh^{]{[yOmNjGcPm_{\{hgake`bbehggeeh\{_~fdb}cngjlibeghXwd`~ga\{mcTuTp\vXsRqWuVsWtTpPmVqXyKiUqYvOoKjPjWs[ygeZ|gjfediijopnjlmtxtlhw{z{porrytttymqljsynnmrljoakm_klqk`}[{^~cb_z_|lhXy_}StYw]}c`~ge\{fiea|Xv_|`~\zZvOp`}\wYsTmGaJfUpazTmOiZwNiNjF`BZyPkSmJbUpVqUrUsVuPlJhG`Tj\{WwVsMiSm[w^|IeOkMj[xTuUtWuQkJfUqWrLjF`RkGbMjb{b{E^H^RjNhG\G]OjOjRjHbC\}H\Ia@VxAUyTtAYyRsBY{[xwp\~PomVpYuQnHdG`SnVqBZ{D^F\IcZxSnMgIe]yUuUrOhMlXsVmNb6IdIcYwgyynje^hhpqfhebZyg_}WuF_Ola~TnGbE`mkF_HaQmEbCY}]{PlQoWv`}QpXxp^}X{uRqFaUuhoZv[xIa@TxC[}]vk]{cbad`{ZyWyb]{`d`~^|fbajgkpuqsifqrhddYw_}eabe`|chdbijllsceemenmnpgapddd\yZwXzZ{cjmgSqfjSq[{\xRmRlTo\zQoce[~X{Y{dhlrkdcfdgh`camodZxgajdfdcafhihbY{SqOl_}VrLhdXuXtUqD`QlOnZxYuLkRmSkPlHfQnPmSoXta}aoqsmgmphjjkpqolz~nkzxw}}|ptwpuwyorsllvyprdoleq^hlbhmgnmca~ad`|b~f^}Pt\~__~Sshdbf\x^|XxY}X{^}`|SqYv[wNj[wSoSnXuOhQjPfKcKfOiYrOeKbIcGdHeQkIaGbTr\y^z`~RrXuNkQhXnUoYuKfYrc^yTqNkZw`~HhWsd}ToTqe`zLigXvNgGa@YxQl`{Uo\uGdF]SkUkOlc}d|IgKgIdSkPfNe?VvCX{DVxCXyH\}BQu=Pr@WwDWxTiMjOhWsMjKhRqWwg]xMlTqUsb}[zYx]{jb[xVuZyj^}bUtecc^}ZyTv^~aaandVw`VuYy\{ehdohhW|[}_jadnijledjdam]{PrPrUx\{Zz\}_]}[yYuNn[yce_wPnb}Zx[}SqYtOkLgfdWyHbRpWxIdI`QlMiPkMgNhRldk[y[xRpOjRoLlE\LdF^[sE\~@UxLaBZ{EbAXySlie[~Wx[tVo_}[wJeF_Ok]xFaiRj@SwF`^vMfPoVpZwIfIdLkIhIaL]8IhLcQqCX}hpyokfrimprrhbdVwQpq]vHdirQoOlSnTnXoIeE`GaMlVqNmJiKhUs_}YyXwPq`k_|[xWyTnVqh`E_HbTnhVun`gf`}\zkeXwZzb~Wtg[{\zimekqjirxjch_}aiild[zYy_|^yc~\{eacsmrohjqjfeokjdjUsZv_zlka~[zYu]yhnfZxUr^x_|[{]{YuRoZwk]|ZxTsWyZ{Yy_|bngejg_~khl\{dXv]zcghii_|Vu_fdclebf[{[~UsUsXsXrSo[yXuOgNiOhLfQmUsVrSnOkTmLgIfMhPnWuTp]{cdiiomiptldfaipmwwyy{pr{yxnhlrwrvpfvphfjighdjpd^~heqde_b^|fljckc^ak^}Xz[xXxUugiOnPoTtRuSr\xYvPmSp_xSkKeTnRkRmMfNfAZyE`LeQkPiTkTnOkTq]vOfD]Upb|UqXsUq]{fUsKbUl^{LjSqXwOj\w^|d~YxUq`yayVuPp]{To[sa{\zIcIaGcMjNlb}YsB\{E^TojTnfomVwWvH`PlKjPmLcCY}F_EZ}BTyFX{FZ{>Lo=PrG_QjRiMhRmUqWuUtNmNn]zXuZuStY{fib~\wQrWwZz]|ikf\|\|daSp[y^~]jlf[zUvUvbf^}gahmiafihbjgcmmiifkmk[zVz`_z\{WwXxaahYzTqVvTuTs\|VuVq[|Z{RnToVr\x\x[~Pr[vUrOmWsWrIcE_LfWoMiF`C\}\whb~KiHaWqSoJdSmJeCY|AYyYsTnLbC[|F`OhZyUs[{bHaE]E_Uoc|Unb}D[JcOiKeQiWtHcD[Jd\uMgGcRp]xSnJeG[|EUx@TwaVnXwigy}prhcepjhTr[zdTxOnQpq\{Ke^v_{OnSpOkZuSqRoazQkHbLiPoLlSq^ySqa`a}rfYuaVrTp_}Y{ZwTo_ygabgg\{]{bd`{]~_~h_{f_`snjoikjeafle]zb}bhf]~`}_|^}]zgajc`hmmlnlcjllnlnca}PoRp[s`zfdeh^|SqZxjdTsMhazNjPoa~ZzYvfYxZz[{\{Zxhg^siprfbru_aid^|`aZwlgWvMj[xgc~dk\}OsmWwMmWub]xUpJgLlSpOfKfMea{UnFcJdPiEa`xWqRnIbMiXtJjPpbbjlifpqsqdulebpgk{~vmprwwwtgmkiqvqpnlhd^~jl_]ikpkdeelnebe[{miigophb^{`TwYvUuIjekZ~Zy`|ZxQpOkYuMjE_PiJcDa~VrVnKgHcE`MgSkIbKhTpGaPhUp^yazSjOiXrSkQlglOnTv]~_|WwXyTuXtXv`}UrKi[vh^{aYt`TwHdSpYvPnVrOjVm[xWvOiVqTo_yI`TqYtQn`l_QoJfGfSrXw_{\vD\SjNj@XwDSw?PuD[}>QsBVyJbG`KdHeKkPpNmQoYxYwNn^a[wVqg_~]~MlOn\zjqXvTsbliea~a}\}\~g_{\|[}`Z{`d]~`jbivibhoegimnjijd_eg^\{Sq[yZxaZz_[zcPoSqPoRsZyTsOsUta{ZvWpSrMlLiPpQlTpOkOlLlVqHdH_F_MjRnLlF_VnYtYxZtSkD[LeQkPlKdBZxHd\yTi?UuE^Ha\wml^SnKc?SuOfTkZuTqG^TkKaGaToNlVsPiG]\tUnOnTsWpMfWr@Sw1:[1@[ņRmcgdhipc\}ureacYygp^|QsfYsxOiLe`~tqUrWt`|Jeb}_wTn`}VuYyVrQqlo[ubgZvWwYxOk[sWw[yMiOd`|d^}egZzW{[wTpWsZxbplb`}rienlkmob_^djcd~[|d^}chd~SrYwfmhhe]{mnnsldknifd^i_{QtXvXrSm[x\yco_\zVsOkXva_}[yLjNgVpaga|]|VvVv_}bgdhmjhofart]}Y}oe[{nd\}WtXwStVtWwc|XtZ|fWy\{`X{Pl]xb|\{]|SqJgOiMgOj\wOlSoWtHbTkOfE_Nh_x^wc{RmQoa~cbfhokkmjonkwniml_er{vtwpnzlovjqittalngcnice_jj^egk_Rtkfdfc]ed`p^h^b[zc\y`}YxYzf[yVu^z\yPmIdNgKhHdKbNeD^SoQjJg[wXnSkWqLhZvSmJfNhG_QkPnF``xYvVr_~^wb|SsVtXyb~XxdYv\vha]}MlJhWw]}cfi`IdYvYwZuIaRo_ydSqJeKda}cPk[uPlRoSplrla|GbLjJkVq^yKiGaHaIbI`TlE^8FhGTyE\|LgH]IaNlIbZvVtMlRpTs[{\}ok\zb[vc~[Lnjg^{]~d_|fnc^zQs[|_zb}^~Wv^}``\~`eggcwjjimispfshgi^gfheaoaVxZxa}eb]|\~]zSoRn[uYv_}Sq]zNlWqQqLkUq]yOiQlKhNnKhPkYsRkGaOjXsVqSnE_@Uxa|z]wSmKfGbJ`RmPj@XwOgKbXtWuRmRmZzgeiZt?TvC\}H]NgMhMeUnHcNgWqGcVr^xH`D^QlMiTnWrHbDZ}EZUtVp`|QlVmD]~MgVk@WxOjRld[xGbJfSoC]}G`OgRb7DgJjo‡jjoalc\}b\~pvmY|Sp\x\w[uG`\wgeo^|]uH`LeeRpGcWqdQpSlXrWtfl_~\OmbpPm]y\wIgZxYtHfShiXsSpXuNmHgWqYv[rc|\zh`e_~_flrsnggqgbd]{VuXr\t^z^~db|_|bfkdcfdafhorl`khjkkhh_}KmTm[x^}VvZySpVrXsYvYv\z`}Xwa~]yNmE`\u]|_~b[{deijif`eY{\{_}kjgekjgcalgWueb}cgWxQtXxUth_PnPmWsQmTqWuUqQmJfC[}E]UsYxQoKeLdHfXqKeQlUpXqRmKjQn_{TpXv`|_zdoaZyjlof`gihf^dbaidnnfis_jmtxid_\Z~imkiZdnengcadktkdphjqjagdXy[w\tZxfdb[zNpNpOlOke}hXvNgLfSoJeE_RiThKbQl^uMgLhNaMg[x`{PnNkYvWsXt]y_}ZvZugWwOkUsZwRqcqg\|bWy[{cg_|_^}[{]zbkoXxRqLmXvh]~YyVtJdQl^`yXuPoXxUqRoVoIhJf`}jXv[}a~`Rs\xh`}a|YxLjIfKfOkSvXuQiOnUvc~[z^xD\~PlEZ~@UwD[}Ga]u^xRnZvSrVwc|RpNq`k`ZxVtaicichf^fi[zm]|\{dYv^z_XuXvSyY~bieljdckgijspdoiajnjpRx[|^}Wygebec`~YwRsWuWxNnOm]{eOnWrRoQqgkgRqMhMk]yUlI`D^JcNiUrQpYyXqOlMmYsRrYuZvMlQk]uLeGaKeOfFaXpu[uWrOjVsVtWwUqe{Zq>Tt>RtB[{Gc^yPmGbPdI_YsMeGbGcSn^yWtAYzAXyAZyCUzM`Wu>Rs?Tumhithj]|_~Z{mel{pIeMkTqOjPlVr[}bnOkUqQm^yXpGcGcUtfNiD_Nkb{Wr\~pe{[zfMm]|Suj^yVt[qm\|Kk\zVsMjNkGaDa~SlVnZy[}sjgtjaaceangb``|\x]|[xXtc~d\~Zwea^}\}ose[}mlngjihpla^_~[zVxVxYsUqRrUvRr_{^za{]yQoHbUnfYxch_|]tYtZzb_~[|c\|fgkengYw\y`}nleijgeeejic]zOoa~[y[z^`~YueVwXrRmUpXsUpVqPmJbGaIcQlHhOkJeLiHcSjMhMjOjOlNj[saxVqXsPq]|kgb`g\~dg[zehrpllhmevqxipmri\bktkrg_~bbehjmihctq``i^}blikbpyaadofhbcgRnb[{TpQrMlIfVp]wQpNjG`PgQkIaH`D\H`JfVsQnQkMhVtYsXs`~Xva~]zJiWr\zSrVr`|_~Vubia_}]Y{dgTv]zec_}]{Sqbb}\zVvZzdZyaXxStHd^vhWvLlWse\zYxXx_~^xUo[yRpWs[wPnWulb[|`{Ut\zb{hX{LkPnJf`ucRsRs[xibVu\z^uGbD\~IaOgVsUsRsUu`]yYxWxQqg`~VvPnUs]{]{[z_~m]|Y|Vw_}jeZza}df\w]`{YxZ|addhgod`qp\Y~npfgkpljqore_Wxj`jegeZ{Zz]vToWs_wZwOp_~gRnKh[xipbOmSp`~WqLgMfAXzOhGeNoZzYwSnMlLkWuLlWvKgLfgKhGaXmE`EaXqOicjQlSl`yMiKiIaZv`}Vp@WxCY}JbSn^xGaLcSjIaD]HbRm_v]xWrVkMhNo6GeE_~Pf[ujmccnsosrjwPjqeHdSvntWsk[zJhOjKgMkPp[|fb|SrSsPlNeIcWr[|ab|RncVva|deaZwlRsIdVs`y`{SnUoRj^|Zv]xSsXtYsXtToNjSp\wbgtp`jfgl`Yz]{Zue~g`}`~Zv]y\{Vta|ehaa`~ksrm`ad~^}gefc_{b~^|\{\wb|a|]{TpUqPkNhUrdbZvNkHeQnIgPnXta}Rv`h`]}]{_}akectha]|ngc]}]z[{acch_~_|Ywcfb[y`~_{UsXtXsRsQrUsQnTpNlEaJaLfIgRpVmQkJbPhUoPjNgFaHcTpXqRnWpc}Wu[v`{Tr[z`}b~d~dfnbfmmjacfmhlemfY}lrjbttceb\}cfhntd]~`Xyhh_e^nme\d_|\xcn_am_~a\~Z{]{be\zJgLf[u[sZrGaFaBY{MbVnBWzAVxJcQiPkNjQjPh`yWq[wYx]}ib^}WtXu_yXuepXvTvi]{UsSoc[}Rs`c`da~dUyLk^{la`~ZxggUubd[z\zOo`~]zSnKePnY|`~XsWsXtZw[wXs\xb~YvSq`WxSnOnYv\w\UwXxRpXw_}\yQpSsMmMkNo[ybVvVtPpXy_|\{^\xSnHbJeUscb`{j_{RmRmSpiz^{`~UsSsWzcYx`d[{Wv`_SrXw`b_zVwZz]|bfecchgekvgfecfkgeoomppkke_ogdac^jZy\yZxXxvffcMmXvLjD[:IlPne^z]{ZwI`PgSlRk[vWrVsLjeWtSr^{XsVqXtLiRpMkNhPhWsToLbQoUsdkxklZtHcGd?UuF_OjNiUpSo\v[uTtLkC]|UniRqJiSqUnGbQoMg>Pt=QpCWv5Cb@SwYyijkgfpnXxp̄ZyJiUtpRoHc_~oOlC_}hnRoPmZy[xYtRqQoSrh^uHbHfRrTp\|Vuf\zXvSqcWuXw^YvOkPec}Po^yWsSnZs^yNpXr\t^zXv^}^|[y_|fjapkeqg[|VwRpYpkghab~a\yUsfigg]{Xw`}fbj]ln`~de_}_gVrUra|Xq[vUsMkg_}UtUpUsWuOkWteWub|PqUsQn^|[z_}fjfgjYu]}a_~eqhffjoh[}bag_zZx\z`~diidVuXzZxVua|XtMkXtUsPlOiUnC]|QhQhNjRoPkLgQlE]QfOkMjIhKdF`MdVnPkJdXvZu]v[yVt_|\w[u\zd~dcbiskdihgkikonfji_aop[~_dYz[{j^ajgfh`e`fn]~_}i`kzrjZz_}`~[zgYwXt\|ZyWu\{WwV{gZrIbTmTmJeJ`OgMfI_FXy?UuKbUnNlHdPic~NkUrSo[wgpZwcfZx_}WuSra}^y_~`Zxeggh[yYx\zqdSra~iYwXuYyOpb]}dWtXwbiVuPm\{\zNlXw_y\yOnMjUqbYwZw\yVrRnQkXwMo^zWrYugiQlQs[zVt[{Tt^{bd^}SqYuOoWte]{TqSr]}f_{[z[yVtQsLiRma|^~UxVv]ygeLmTp^zWvdg__|QoSt^|Vx[]~Wv[zXz]XzbZz_]|e]|TvUyamupZhoejjnmkgonjplqlfogoegvg``Yy]_}YudgomUxTo^xLePsDWy`uKbSkb}Ru\~a]~X{bf]|KectzE\OlXpZvbVqXuWtTp`{b|F_E`RmYt]vUsMlTnXw`^wPhWrYvTp\|UthiwYw^~\zJeb}mgY{b|_|PmbzWsUtZub~b^}^|ehjdec[|ddcYw\vZv\vWs^{RnVuXw_wfbfXwRo`zhlesg\wa}cbia`~d~\wJiSrZxYw]yWt[{\{YuVt[z[yZybhfSrQn`}]|lokh^~\|a_f[|\}ldfmhcg[xge]jlgmhgVvXv`~[}]{knbWySrLiUoJfVr[vKfKh\wSpSlSoRkKcLhFdPiRkF`~JeD]~G_Oi_uUnKhPkE^Sog_x_z^}Qq_~offWw]|yeWy^~alsnikkbY|_kch^zcYw]ycZy[}jfggjikRr]cen^edch_UxfjsgihpmdYvNiUpTp`|`}TpJfMkRlOiNgF]J^CXxJbF\Mfb{JeD]~Nc]wXtXrSrVtYuMicfUtcuaRue^|Yuc~Qr^|Zx[y_a`^~hZwn~UrMiVt[{egWqJiSrVse]xa}]{WsYwPpSsYtMlKgQmOiNiYtUnOkdWrQoPmOkOncVs\{WrSr[{[zZwPoKi^{Wu\|XyZ{agh]|a[v]{OoKhOoUrVx]~f_[yTqRrTpNmQqWw]}SrWtaXvRnOjTr^~jSvgZuQrWwXu\|ca}c}b}\y\|VtbQt_a^}WzQta^jbekitiinbhnklppbrqorcbemjk\~c^~\}]}dYv^{vg\|Uu[w[zd|c{ZxE`YvTkGcVwTmToPjKhTtUtfYxHdTob}dYsIeJhKbHc]tMfFaF\}Ng]zhc}faTwKjYt\vXrMeXqPkYyPpD_~UnXpD[Qo[zXuGd^{RrPqFaLfG[}LdTl:Gj.6VG^jaficgdgQoXvNmi~XsLe]z\|JbYvfGb_|c[xMmD^HbNfSm]zGeJgOmkdPjJdSl_|\}Zx`yie`m[yYs\qc{Xxj[zKn]xkcUra~fehlfb_}jdab~e^}\w[w`{XrZtZyYxZwa|ZvYw_|b\{Omcuebnb}b_|e]{Wy]|Qo`xc~Wr^y`zYwVtSp[uQm\xYw[y]{hZy^{i\y[wdVyXw\ddca`aq`~Svkn`~qacc_}YsfbjihWuji^j^|PrTub~ia^d`HcE_JbNeVlMhNiQiOiOmMlNgMgQnQmTlF`Je`zI`JbMeSoZvXp\u`~PoZr\w]z[vXw^}dje`dkpi]~ejndffceflUxTvhe^}cd_|Z|Zzie`|cckl_`YyWw[~hga~Zzjfa~Uv[zbbkkgb]|OkUpMhE`UohYvKjHcKdUoB[{ATtK`I`I^?UuSk`zSpTl[w]{VtUuYy]{Pq^}lRqPo]y_}^z]{RuZyQngnKjIhPib~_}Ssi_}dmKiZxMhNp]~`^{TqVrVpPkdYvPrStVsNkWrNkF_QmTqZuMkG`F`Mj`xKjToYsHcWrIdRq`{RmPmSq[wTvRuYyLhYvXyPr_ijhYzfdUu]~X|[wUsYvdUw_~WvKlYv\|_~[yZy]|bYy[zZwUqTrPn^yakc^~YyMlOrZ{`}dk`__|]}Swig`_chggggjfpjhstkpogllkspmggmjffcii`iRqUwlgcf[~iXoXvZuTqjvnZyNiGcJgZy\w^y`|MkOjfa~YtRsOoZxVuSn_yMiE`JfLi>Rt@VwVtUrn\{b~`~SsJgXshYtMdJeF`MiWrPjFbUqUqTtQnJfKgIfOm\zGcJ^Oc5Ec,7R6E`6Fe\rZvge`lj`bdLiLlr]|LjY{LkE\`|\|ZyZvHcYv]|YwOiE^?SuLeJhIdVnLhWxj\xZvOnOsutRsg\|ghc}[yRmRoNgOmZzb~e`Yw\{hmbdb^}bdda[w_|[xSoVrUq^xZu_}fXs\xYuVu\z_}^{\yeocihddirk_Xw_|^zSlSnIc_x\x[yXvMiZvWs[vYu_}YxTsWt]y]ze\{QtVu^efjkjfh^~Ww^~a}Wtdgcch]z]|`}fc`|_}f^~Uub~a[yTsQm`{`~QrahZxOjOgC]}LcJbGdWoPjUqSrSmPjNhQmTmWrQiFcNkMfLeKeSp[v^z\z]{To[xYv`|[y]zXx\zdjjdmeiiodhmecmna~Z{be_|ch\{c~ZzOqlfe[z^~dohY{YwPoQp]zg^~b[x^{aOrLlcjQn[zhb\|Xyb}RnFaPi]wc`{UoD]~C\}HbMdJ`J`@Vw?SuC[|Mga|RnNi\xRp]|Z|Yy[{]}_{VvWtQmPnb~a}[yWsPkLli_XuRlNl]wfb}VtOnNk`zfne|NlNlTpYwZz^zPpNoaYxVy\|Wq_y\yJgIc_zMk[xHdTqOjMiOkLiUoUoVtUoMiIfXs\tTp[vF_Ll\}^~Ywb^~NmNnWx[|n_h]zUuZ|X{Zv``StWwYw_~UvSrWvUu[z_{^~Zyb\~]}WvXxWsKgWuVs`~j`[{cdZy`Yy[|ehYxRuYyWvWvcg`fmnhkignmnpnpliklmsnofppjgj`gf]\z_|YzZywnzYxb~_wQoUs`Z|b~^{fYuQmPoKiRn_z\uWuUrTrgi_Kg\y[{UrVtWsIgPmMjE]}QdLa@WwKjka~YtfgSoUoc|MhRkSiZpKgJgOjhZuHca|_{a~PhQgVmHaH_@RvUt7If_sQiOiQlRmb~dTskkl_~Vs`{WpJkqwLiRnToYuHeE`tgQmHbC[}ZuaJfWoMkDZQmUu^gZwUnjeRqVxsoYthod^{^}ZzZyZxb~hdlk]|NmTpZyWxbm_}]{\xSrXt]{XtRlUsVsToRqTsToVl[v`|bkm_~Wrd}hdcgfWu`{]yRpMfSmSmTlToQnRnWpXwUwWwYw]yg_~^}Ssba}Wvdjdg`\}h^}^|f_}`}a`}[wg]~]yVxa}]{QrVub}VuSqYw^}\w^}_TqVpUrVyWxUqWteVrSpLhJcD]~KjMeOiTmUoRlLhLe^yStLgRlKhMeUq{awD[~IeRkSmVr\w[wciTu\{Us\z]zi^{Z}^~ch_{axaa~WsbeZzZvUlWsVuXwhaYxg^~QpYwdg^{VtQlXuRs_}\yZyQnQj\wWsMjNfUpRqQlIfRrTtWrVsb~a~bZxLhMj]{YtKj^wWpJgJcC[|AUwE\{UmKeG\NfRnOjRpKfZvn_}Kg`|RtWvVqLjSpTt_}ufLiZub}a}n[za|_|V{[x`}^|ajj\zWy^}qmWxVuZz`la}eh_`alg\zfhg`\xWuYwVt\xa]}VuYxPqRqRpYuacPnj_zZy^ydMkOqOjSmUtQpMka|\y]wQnOka}oc~__~Ss^~\}g_|_ib]}d^}TrUsUpPqNlWuaWw[z`di`SsRo\~XvPpagMmRmSmZxSre`|dh]f^Ty[|jhc^}glhpiojcksmoidepyqpih_eelnhc[~eYw[|]zTo[u^}a~f[vOkRnZy]{[{]NkZwjZwax`|QpUu_[yZwZxPoSsUsVpiphJdE^BY{MiMkRnOjNiXvSuxkblWuC\|H]UoShJdNmUsSoRlD]RmRlRjKfWrPjD_@Uw@VxAVxTh]rWlsf{AWy>UtJeRkYwlqhXyej^~^{VtRmk_|HdQoWxNiLgMlba|Wu^{\w[sRnEaF`JfUkPiedNlMo]dOjPngUwYsd|ga~`~gadaa~`dkrsm^{UtQoUpXvhd`{PoSoa}a}`y`{VqTrVuWr^zXsYv_}aa|jp[z_w`ze~akgb^yq\zUtXq\wOmXr[w[vYrLfUqQoQnYx`zdchaeVuRta{_{[zgcjjZw[zYzZucieYwNpWxc}]}e`~NmWub~^|\{_~\v^zjh[xYtRnWw_|\uIeQnPnKiDbNfLgFaIbIfGcNgQjFaPhXvTu\wZtQoUpF_Iei\uOhQlToQlUrUr]y`}Xwb`{VuTscikkZxLmdi_zUq\wWtPq\zYy]ybUwZyZvPn[wTscn[{Xv[}jd_zUpMmgZvZv[yGcYsa~YwRmNeJgXwYtVpNlNn\w[zYw\|_hd~PrQoHe]xYrE[GaEaEYAUyBY{PgYoRiOiNhPiPkQnc}aWsb}Z~Xv_{_|YwSpPp[{ZzVtWqUrMkZwXva|dZy^zc[{Xxa~he`_~]{ngdd]~g`af^~c`fdeZzMkXx`SuWwYxSrWrPoVtOoVu\zgeeRtXxedc~MjVs_{mb~MmQpOo\{WvXvXvZzLjZuTtZxdkOoaj\~c~frRvQuec^~Sr^~]xRo_xWuWw]{\zXx]}fd^~fQq\{\z`a_WuQmSrUt\wa|cgg\|beVza~ea[|\{c^ikjhkso`llkonw}sp^hicb^~lmabidUu\z_z^yYwcgTsLgHdTr[x^Zw_{IjOme{gRp]{f^z`[ziVw^UtMm\zbkeE^AYyJaLcUoSoJh\geVwc\yIdNiBW{?QuMfa~_E`JhIcJcXpQhRjToOkGdJfDZ~BXx\tknr[sRkI\{FbSt[{je^i`fgda|Tob~_|Yy`}b[w^zLhKjfOmUsczSnC\}d~a|Id_yUoIhXx`{NkMogy_zRngd~]xUtXub~f]|ft[bsijcea\|UoWuUs[v[xWw]u`z`~h^z\w[{Yyb|c}XwVsgiqe]}]|Zt^{^ze~`{YxTs[wWrLmQo^v\yZxHgUpTnXp_y[u]xXxPoYrd^~WvZzpi[|\zYv_~`|ejpjfYw[vbnnZ{WwXuib^}a~ZxMkXuTpXxVw`xUqSqYtZvXvXta~WrWtMlIdNgLgQmPiUoC]|G_OkRoTnQkNhYsLjRqdVoSp\xKgJgD^PlSnTnYs[uRpHeZvgRr^yf[|bm`~chf}YtGf[xc[w[uWtPm^uSnTq\}Yy[vYtEcPl_{\zXs^}bRt_}_`~[wVuVpKiJhSqWsRpWtHcVrRmJiKf[vYu^xZyb~Zy[yXy\|[xb~dUuOlMh|mNec{C`}H^MeJ`NeNhNeGcPkTnKeHdWsc]y^|fded\z_Xv[za^}^}`VtUsUrYu[xb~gefZ|a\~^~lg[|[{_pn_~dStZ{VuXw_~capk`WvXwUqOpd`[{b}QqLiNnVw^yXuYyfWx]zcQq]{^z_|Rp]{^|\cXwVrcWvKkNn_eTtOp[yfYyYyfaa~]|e^}Z}lRrUvjX{YxVrPiKjKjYvk^~X{akdia^{_zQpQq^~]}iUsNo[y_|^}^|YzZ}li^id^]habesccrnhuojypcmimvnwfVyWxahgkfcWxWvQoYvWtZzWufeg_|]y_xijaWzNnSlUsNl]{^{k_~`fSrRra~\|QpIeSoVqWrD\~E\>NtRiYsBY{dlc[|ZvQmVqZxSpKcBY{TpgOoJiUpTmD^J_@TxQhRnD^`{\uC\}MfLhE_QjfnyXrSnc|cPsPugpb\|adPlJehfZvOjXt\wLgD_JeFbQokD^TrKbKjVtRjKfUtVr`|hwYyZ}yqjkWq\yVq]xe^}a|ifhmj]}`~ammi^yXsSnPqQpTp`{YvWvXu]{ehd`|]z]z_}^n`Wz^\x\zcheSpGcUsUtRmYu]w[v`{XtIcLgPj`{^z\yTv]|QoWuXz^}Xxled\|Xzegd[{b^}jlbfd[z^|lwo^{ZxcXuQo_|i`~`e_}QqYqWqUu_zRpTsOmKkUoTlPjYrD_~HcLgLeTn[tMgPkJiOiVoSmTn[uTpTrOkOkKeYsb{UoQj]uYvPnXvQnUtfkbQqYxcWw[{Zwb{_~[wdhQlOjfZsMgQnLkSoXqSnOl[yZzYxQmTtg`{c~ZzKkOl\{[tPlMnMlWrUrPmQnYwVrHgRnTnMlYtWu]{UrXsc`_{Vt_}Ro`~_|XjLaG_bw{IbAUyMbLfHdIdNkSnPn]t[uYtZw]}VsncadZz`gh^}`~e`_~[ye[ySrXwa`jc_]}cpbYyWuQo[y_chUuYyTwc]{ecoggm_{ZvNjOjYy\|_|Sq\zRoNkPiPoOmYxNkYqb~ZzfeZyVv_Zz[|b\|QqWw_PqaSrVu]~cYxWt`fb_gob_{fa`b^[|Y{RqQoNlOpYuaSsTv_^}]~gpc[xTtNoVvWrMkgeQoPo[xZx\|`gike[]fidaqon^hlkrqsqjepjetytlgannrekg_WvYvUsQo^}UvY|`igXwefVvVygRuOlNmh_YwYyYzX{kQmHdYwYya|]zXtQmHfNmVoPcBWw?RvM_To^|D]c\wMjTrKi]{^xHbHbF^RmQlXrcG`E\RjMdMdAYyNhYvD]F`Ss_|g~]xPkcytZwZy\}Xz[xqe\i[|UqJeTrWtOni`{KgMgGaKcYuYtXvMlHgRjUo_Mi\udyUqZwc}vcIgVw_~pb|`yZxVsTqQlff^|ih^~c]~ihcgl^yWt]yPnSoWs[x`}\{TsWuac~dg`fg`cdWw[{ldg\z]|_~TpLjLjIcXq`|a}XrWs\uUoUnRmOkSpRqZy\wVt[y]|`~_{ekcUwf_b\yPscn[|^o\yXxagggb~c~`}cWu_}g]yUu]ykd]uTqNqNjSnJfIdFcOiPjTkUnGbNhSkGbOlJeLgUrLkOiTlTmIfWqUsXtjLjWsZuSnRlPjSkSrXvYw[y`{a}UrZwXwPnb`}RsSta~_}Xt[vd~SoOieWwHhNkVqVrToLgHe[zYwPm_{TqJh]wazVuTs_{Ljc|kXuXuUsXuRoKiKkTqRo[yTpNkGbIe_~VuVpLjZwcaJiOkXxfJ_]yQl;QnSg}Ri@TwZtVtMlUqb{LkVsZwZvMl]yc_y]z^dXyRvZyagaa[|\|XuZyUw]iYyPqZwb}c]{`a]{Xw_~XxUsTtjmnYw]|iZv^}Zy^z]~ghegc\xVrQoOn^|\{\vYwNnPmSnNlRlUpdj\}ZxXwZ{Zzafh`aa[|]}e[zPr```Rpfc^}_gipjh\~Yz]{Wwc`WyRtYwNm[uPlLhUs`ZzafvrgoWxSrWt[z\z[{QoTrYwZy^~]{bUwifojdibbd`ionjmj{vtjvwniimimodhpgdhe_[yg\yQpRqMlWzPoZt\yVvPr]|ubMlaa`~]|OpMmUtYxQotihZvIeXuc_|TmOkMmNhRiPdIaSjOhJe\vXq_zeZzKkHeCZ}Hb^vKcHaPlXpSrToTkXrF\Ic?UuJ_Sj?RuBX{Qmb|PgMfAWw>Rs`w]xNmZwfhWxodfh^ndXxD\E^hWvJgOjSoGaCY|IbJfTrMnLh\yGd[xd}^x[zocPmQn^{f^{Zxdze|Xwd[z`{fg`j`haal]{ce]|TpGfWvkUqVs_|Zw\zSo[wd`|dbeoj`cc`|c]zge\~]|g_zfZvVmPiLhXtPjMe`xZtPkNjHfLgVpNjb}e\za~a}Yv\zfg`laaYwYzYyd_Wyf]{aon_ekb^|geRp^ybYv^yZzOnYv`~XzJjPkQkFaJdE_E^~TmOiHePgQmSpHgXtZtQpYvQmSlXuIhPjKgZw\vUtQm[uPkWrWrUpOlPoMlZwhja~LgYvYvWs`{Tq\vgRq\vRiQmk]wQkRpdUqWseWt`zSpXuF`Tp[yTpE`HfeVs[u`zGdPj^vQj]zUt\x^zKjSsOkYvXxb~ZvOmA[zLiWvRkNhTq_zUuWtWuMk[v`ySqJiOkJ]ViH_HcRlMfKhNj`zOoTteZzXxfg_{b~\|dX|hiWx^gad^~hj^~]~^}d]{OpOqaohYz]{^z]|]}d^~MkWuqjdSoQm^}Xv\w^a]|hpcVuKdUpWwZuYt[ujTwYsXsWv\rOmLiSjUr^|[w^}Qrbke^ne]\\|aafYvTsjlbfgla~_^labm}\{cVwa^|OoXsUnYrXuTvRtga`a^unaQpNkSrPoOjYsSudbfcX|_gehiobekiojmqopnwop{wokbjni`[{[|gmfai_mgf_{ZxZwXvQr]y\zJh[ywb|jgl_}_{b~Y|MmVtd_}Kkgmdf`yIhOlXpc~HfHfNiLcTl\xBZyWq[wVp]za{KiMmWtSlG_F^MgXtToIcNn\uCY{IcXuNkF]~@SvReRc@Rs6Ge=SrEYyJc`uL`=SqOb]uXvnebhXy_|eeboaHa>Rt[vYySpjKfPmRlKdOiUoV{]zNkHf[vmFaLnXuUqNlPm[weZwa|UrWu\sRs[}eh]{ajc^nbYy^~dg`}SrRqPmOld}VsOp\vd|Yx[y`|m`{Om^wfjd`lcc_~YwggZyWy^|c~ZwXv[vZsRpLhVlQjOj]|c~SoGbEbMjMgHdZyUu`zd~`~VuWvb}mg`eZ|]~_|]|h]|[z^|_}]ybfhgb[xee`~ZxbsOoQoVt^zYtWuWsKjLkIdF^~IdKgIhJeLdIdRlQm[wYsOkOm]{VoMiTqZsNeHeUqSoYt]wQlSr_x`~XuWuYtSpSocg_~_|bSrTpd{SmJiTqQl[sJhSneb~c~e~HfGc]{cWsdYrVoVnWs^{TqQnSnHbMeXtMkUqYtIiOnWub}`|b_YwNkWrPoSq]y\vKgKkTpEaRpToHbRm^wIeQmoZqAZyHd`qTgD^IcG_LcRkUrSoNnSsdfZxefc~m^~Z{_`a`~jb\xddekdaUsYxgW{c^~fpbSq]z]y]zUvXvPp[xPlSskjZtPmUuTs\w^}Vu`}[|a_|\{Rs[yLiYtNleUoUoTuUpRm^{gSqHdKgVo^{b]{[}TvYzech`ficf_Wzkfcel_f[~^Y|kimed`a}c~fX|[xRnQnNjVrdaUyWu]|ahrh]zVrNmMmLgZsa|YuVwSxmpfgc\|hbiijbgaltwrhtr|vmjxlfY~erfa_~kfcnmlj]{bXwZ}VsSs[|ZwVtXt]xXtQmlk_~Ql^yhZyZubPsNo`[yGfLmcKdPkUrQiEcGfQjTjJdUtAWy[t\xNndGaPmSnEaQkWrQlLhF`JcLh]{QjStNdYmTtBY{nPmPjTsWsPkD_GbKeLeWxYwPkQpNkIdQmSphTqOl`Tvl]wdb^|acdjrp[~mhUv_|`}^{XvaXtOj[v\w^wWsSqc}d~UpVrOn_~a~c~gnnla_}a}ahRo\wTrZvZuVu_{a}^e}RnPkRkSnMhZqg}ry[wLhQlYt_zNl^{Zvffce\|[zgcfe]}\{a~dhgWw]{`~a~`|bachjniXwJi_~jiYsMgJfB\{TkSpUrUnOgNgC\}F`OkUqZsNnLlQmPoTrOoXvYqIcRmIfTnZsYtPnZub}\}PoUqa{Rq\{d]z^{^|^|QpQpRoG`\tVsRpWsOkNmWqZuMkIbKc`|mPlKbOjTpMkTpSoJeYpJdKf]w`|RpKfiMhKgHeIdUpPpUsXt[yWuYv\uSqWu[vTrTqUr_}Wu\y[wOjSkQhXwHcE]SkObAVvTjK`|E[y\uMgWsRkTscQnd[{Wvgkhd`dphboh]|`g[|af]z^{[zYyYy^}]~a~_wZxRpXtUsb_}Vs`|[yOpXqa{^}[vVrNq]{_}Zxd\yVwXxRn^xWuSoVs_XvSpQmXt^vPoMk[vSoKgTnXqZyekdNkPiLiRqdYza]{a[}Y|Wy`debdmdefjplh\c`a^~\{]}miVwVv`dVtLkHeSoSp^~_bW|Wxjc\|\}UvTq\yYvNkKhLkY{eUz[efg^jlajagdnawpwnmrmtniptligpghhPp`aeaSrLj`}_~]w`a\{fOmHcYz`]zi^|Vu_y]yWt`{i^}bQq_~bzc}RlIgPkGdRm^tF]D]~D_~H`KbVnCY}?RuPfQkdZw[y`~PlF^KcD^Tj\rKb@VwFaYvVpMfJcCY|F^ToOc:Il:IlKcCY}PgQe>StNeK^J`NfHa^zdjohbmYw^~[zKjY|oRpNkYsNfGcTmRo]ze[zLhDYUmTrHeHcEcPmbdHdSpNkVqZzMqwebZxdca`\kpbepbd\}UvZwa{LhVoRq^zXqPnY~[za}ZyUqVqVtZz[{dkbfbhda}OlYyUsXpWpUr[v^ySn\xg_yRoPmQnTo`xkWqXqtjtn[vRnUt\w]x`}i`bg[{amb\eh]|jbXx[{che\zeRpTv[~\{da_gIfMl[ygRnD`HeHbOhNhPjXtXtQlGaYsVpQkXrTp]{g]zSqYvTqPlRnNkJfMfLeUsToczXw]zXvWx_~\yZvSnZxb~Yuf_{RnXnLa`x]yHcSlOnMiYnPnQoUqLmWwUrFaEaYqhF`C]}IdRhKfB]{?UvXt[x^ze~PmZx`wOfEbMlQmKj\zUsOnOjIhZxd}WuPlUt[ve_}OnUs^xGbUqJfDZ~RjLbLbC[}L`FVwBZ{PjRoUnUr\zXwb{`}fTv^~kfg[x_~cp`~dfic`~knUoUsXt[vXwPq[x^z`|RpVs\uZy_YvWwYxToOpSrTs\xgXtMlXwcga~b{[{[yMm``]wNlVvUt[v[vc`{Pq`SpHdMfMdMiIeRnVwTtRtaYxHbH`ff_bSx_rV|atfhebddmmgebjdkh_\|VwSx`~d]~Vxa~Z{UuJeKeNndb|]\|[ygYxXvbSqZx[xRoQp^Zzfe`ka_hebfhgbjeiwnkvtljrklyhjjobUsqvhi`Wzh_~aVrMjecQpUvYwQqPtXxRqPnXxXyb|`{WtJfOmOnccVvVs`|bMgLcF`GbWqQlF`KeE]BV{_uPeaxYuHcPhHbHgZzNkQjSmUlUnQkF_MdG\G^KhNjkD[EZ}TmG`@SxHX{LgSskpNkDZ}?UuOjYvNlWu]^~gkfmhRpTrMgLiRpcaHbGdWpQgE_Us[xUpKdRn;Mn@UxIcHdQnQnTqYub}Tpg_|Rqa|jj^}[zb_|jc`hefgfdkYwWvYvQnUpUsTtYv[yXxg~f]ycWuTq`|`Xz[yYuWubakg\yXw[wXxOmToRqSoQoZzWoOiNjWuWvRoLjSlYtZtXq[yh}ic~[zXw]{b^_|hdc`_eniho_Wxej`{]zWubhcc^|\{PpWtuaPpIdRqOnGbHdB\{B[{E^G_MgRn_wLjQoTpXrRo]xdWtb|aRoZx^{NjPkShOgMi]w^zNkQnc^Xv\y^}XuYvMkIeQlewvkYrEaLkTnF`JgQl\qPj]xfSpZvTsHgQmSmWnQhNjUrTlE_NdKbMgOgLi_|c~Sq]yk\zPlUl[wVuRnHfZxeNhMkVv_|UuSqLiSpSlc^IfF_YoD]~GcXoI]HbCZ}F\D]JeZsKhXva~]}_}Yur\}a~edqhdRuWv^}me\|bYvXy_|em\wQmTtWsUrKhUuVv`~[x_zZxWvVxYvc}VwYzVvMjaWw_~_ZwTuPr]}Wy_}a}ac\xUvVvda~_|TsVuIeWqPoOp[u]tJfKjUoTqJhXw^}bnLhZrZv`~lakpbaoejfXyckqgdfebjng`hTvTvYv_}]}Ss]|lVtKiTvHeQkgb~StYxfZ|fePqWxQrOo[w\x`dhd[y]gcdcfgkhleehXylzsmwtgrvbebslkngkn_ejcgf[vZyOoJg}uaa}RpWwVwTt^~WuZxWvYtRoQmXxZzQlNl\xXw`~\yLgUoIeF`SkOmH_KcEY|>TtUlsx\wPkE]F`MnRod~QkHbGbUpLgJeNf[rGaHcXtIfRmBY{C[}_yF]~?UvJfYmTkgoOh^v`{^~XuZx^[~^chybNmfYt_yVsWwWwZxUpE^E[~ZpAYzHb[u^yYwKgTlTmGaSqXuD_Gg]{idfdb~_xYuWv[zecegg^znhdg[z`~]|WuYxMlYsaYx[y[zYx_y`~b|^z`}njkf]|_y[y[z^|dbWvTqYtWuVt_wZwLjSp\{RmLhSo^y[xSsRpTlKfYvb|]z]zWsdjSu]}f[{]}bc`hkf_fn`laba\zc~YwX{ki]{hobUq[xb~d^{MiMiOgXoIcLfOjF`C\|D^JdWoUrXsWqRoPlQmYvWvc~[yXvWs`~WuQlUqNjWrPlZwVsXu]zNpYvWs^{\\{NlRoNfUoXsQpPmfVtSn_xUjToXvTnMiZtazLgHc^ybb}YsE`MePlJeOhWrG_JcIcF^E_GdPlVpQj]u`~]yPlSoKgOiNn`~^{gZyKjVrdeXxRqMgQn_{XvQlKb?Su?UvMeI^OhIaWmVqHdQm\{Vrb~eb~`cbeha_imd_~`b\|\yPnKjMpOnej`|UrTuXtMkRpPoTsYuXs[w]y`Ywa~dWx[z_{]}Tv[z]|kdVw\~`c_~UqUvc^}Tu]|`|Xy`~`^zayHaWuQo[zfa~]|^xQlUqWtPlPk\y[w`{SoKhWsWztuh]aeih[}dhi_ljbcqiZ|XyjhZye[}X{Tr^}a`Zz`KkMgZuUsVvd\}Stc\{Yy^~XyUuPmYs^{VuOoccficciXzcgmjedecljhqrhpwi`jnodafkajbj`\}_|giZ{OqTrb{Ll`qfibaea}`MkHaWwWs\xMmWoRnUqGbSnTpPpTpIeC[}JcGbH^NgOd@Wv^{BV{MgptPkJgJh\v_yZtOkF_OhLhToOlZtLeLgJfRmHcI`QiKfCZzCW|RnPtQsUq]yTsQo[uRrF^VpLhKcZsZvVkD]IbVrLgJcVsWt^wLbQiOb=OrDXzRsEYxJ_C[}NpdeMjbpkinf\yOiFb^{NhGd\{XwNjXwb|Ol?WvKePjLhLhMjWpSlLjBZ{OiLhHcXt\xVqegZ{dkeYvUvh]|\zb}VtTpVrWs_|a[yVs]ydloeLnVujdlshYz^x^zdjgUw^{YsVrVu^w\v\yb}UrMlTnGdVq\wUqee[xTrZz`giUuPmVn[vb_}ge]~[|ib~b}qmig`ya_pe`}^|_}j_dfUxVwcZyba~Ro[yWxWtKdJhMiKgRmF_F`NgUlIdMnUpOjWs^y^zUsOlIe[vZx]~SuVrUqVtZwVsgeWtYu[wXu[x]yZzTsUq_}]zcd]{He\uMjPmLiQic{d_w_xLkTp\{[wWq]z_|UrPlNiLi^{KiTqWrRmQoUpToLiQnfFaZv_zKgKjGdQlQnYrVtPjRnWpKdOj[sLkKiLeNiQkQjVrSnOmPlSmMiC\{H`McCZyAUxZnXnUqXv`ZzWwkhdXvMlXuUrXr\yUtPpWp]wMmQpe\y]|Vw`[xMiSt`h\}^^zNoOo_}heYtVuUvcZ~Ss]xXuMm]ybUwTtQtcaXz[y^zTrXuWuPoVt_}b}QqSvWtNmKgLhTt`}^zgOnJi_xj_zPoPlPi[rUq]|]{]edY{lg_heTqOmXuZw[{[|MlZzWth_ed`ifkifnYw\~lmfpjcdjdkgRtZyjZvYyKhLg`yUvPs^}`aa`\|h`Vy`}VuRrfXy^{jcitj`ommfhrjcmlrdfiqpklgcbjnm_dha`feWtUw^~Zzhjb~[wRpUzY{\vb|b[wHeJiRqQkMm]~]|Xwe[sPpYySqVnMgHbD\DZ|D\|Lg@RwN`NeE`Xxpi~c~StNiQk[zWnCY{F_BTyG_~czD]KfNkKkZxb}Kf@Ux>RtLgTqWoNiSm`xZqMbC\}FaGd[yLkTs^~[{a}kpsePnSo\|SpD_~QnbSpEaRn[wRoMkMfNh@XxC\}HdHbPmHdUp^yGbHcg]wmfY}Y}_d`}aba_~e_}YwQqTq`~dhVsNkWwilo__{hdbmdZza{e}^}^]|fXvb|XsQnZr]w\we~WsXv[yZxWtQlKjSp]yYsSn]y_}aa~f]|ZwSqlfY{b[~^|\zd[ygoZ~fbb}ieb~`fhgbfreY|ZwSt_~`~[z[zUpQmKfC\}PkSkIcQjQjJdTnKgPnNlRnSp\uTpXsXu[ydVsRqWv^~Rq]ya~WsXv`_PkSsbghZyPn^{Yv`zg_f\{MjWtTqNiRlWqYu^}^yXyNlTqWnVpQmZvb~NmWrVsTpXsUnVnRoSoOkPm^yE`NgXr]{jSrQlWqLhSpToXwRpEaTnWoE^Rp^wGaKgIhKdQlSqRpFcKdWnTnC[yD\|TjUl;On?UuF_Oh\vbcX{Vu`|nSwUo\xWuHbVmVvXx_{Roa}[vXrTqMlYxX{Wx]|_Pr[{Yy^|gZy[|Vxdcc_|^~fRqLjkYwMl\wgQrSq\{NiVtOrTu\{^{\xRrVu`{Xx[t^xPtWx^yKjXw\wWq]yToMi]x\zLjNkZyWvZsVpMnMlb~]yTwiilejX{Z~f^{[}NlMoZzpgUwXwe_`egbkpne\hkZ}esjd\^o_ihTtfbRsOpOlSqPrKkXvchcac_}YyRu[za}[y[}\{^|ldpab[dgrjnhimhmwqopmeg[|ieadrwlfgh^`_}d\}TtLjYt_}hgJjPrKg_|ae^y[uWv^{QmG_\uZyLjTnRmWxYwVqPkQjE\DZ}G\}@YxAXyBSzWgEUxD\OoSq`}gmQjHdXzeJbAXz@SwG`QjLeTmYsXsIcYpPdE[TqWv`~I`LhOmH_F_JaKbKdSs[vZyRqWy[|u^zNnolUrPlWtRp[xjQnXvLlIeNcPhUv^D\NeF`G`E]IfOoIgVpNfMgSt[wm^|hlq\}Z|gk__|dZvYxPp^zXu`b[w^{a}d\|bkjleacdfd}dg\{Zw`}ZxWq`{UpQmSmXwc^{UtQrfZyPpSnZxMiYtYwgcaab~baghafadie\|Wvb~aPr_~\}mul_|fp`}b}j\~giih^~`eUtRqYvWsLiRkTnPnIcPeTiLgXrNjJdLhXqUq\xVtPm_|]zi\zRqSq_|RqYue\xPnbc[xUqZxYw\x\{\z`~Uuc}]{VvdedZwPoYxUrKeLiYtSna{`}QoXt]{NjQkUpYujQpJj`xSmSnNlLjRnNmMj\yToUnWsXwVwUq^wSoPmSoKgSnZwJgLhPnQmXrLjIgRlVoPmSoQoQoKfLd?SuRtG\zNgXpCW|UrieXqNkWwHeD_Ke\uLd=MrF^~LhUqOiD\~E]CY}KdIcNg]v=NqC_}ZsMi[xIbOjSnPnRmXwghZ{Kj[zag`Rn[xXwPp[uPj]ze[{IdLePgMgJjKhc|NgSmXsE`IiKkHeSkOl_kkaclkRt_fod_{YtcUsPoSpa}Suc]{\yef\^z_{efqliXx`}ga`d^{Zy]zTpQlSpOnVrXuUp]y[zYyc`~PrXsWs\xXv[z\xd^}XwfaWwc}gTy^}hc\xeWxWw`|Xxa`Zzea~di^}kla~g]cghkdi^~]yUsUrWsXwXrUpLlIeRfLeHcQkPlNfHaFa^zYtSrZxXuSq]xgYv\xXsb`~Ws[x]|\zYu_a}Qn]|ZxRpZwWwTu`|YwUsWw]}a~XwXuQp[yUpLjKgToWoedVuPnPlToD^TmXqGgbfYtNnOlZxiMkMlSq]x`{JfMkKl[wZuWsXsIeD_Lf\wYuJiUqSp^ya~OnLdWqNmSnNiVvOjLeE[|=QqAWv=OrCY|RhOgNg\uTpJgQl[t_{TvUxWvLiWviTsPlNlZva}Qp_~TuUubaWuWu\zXtYv^|Xy\zYwZz\|c_zYyUu\{c[xUqd^z[xWsUuQr^{\zWsXvTsVrLiOpYx\z_|PpKgTmWqRpPnYuYuOhOm`~c]wUvOqToZtMkNmWvXrWsNn[z^z[zc_}TsQo__[bgeW|nsaZwQpLkgZwUr[|\}idl\anf_amijecfmtiiadaZyaXwPmRpaXuVuTrZye\{bee^vgTvY|VwXth`_}ejfbppjdjieccgpjruostsj^difgdmqvi\`mcf^|Z}g\}[xZvRq]wb~YxWuTsRpOjSmVoZtXt_y\wJgLhQpLkHaGaKgWrTpF`H`@UxEW{@Wx=Qq?WuBZxYj[qOkKkJeTnQoHeMj[wNiMfKbI[}KbAYzF`YuUsVsIdOj>Rt8GiF\|ˢczTpE]C[}DaQjGaLdMlchUvak[xQo]}ZvZycLkLg@UxQp]^x[uPnHc>RtKf^UoQmqQlEbPkKbIbUrVsPmSmhphf^}Wykra]XxY{kp`~Vu_{SuWsZyRpTs`ck_ajpsma`a_^~ebWy[w[wXuPoUt\v\x\yVtRm_{Zxd]~XtVtTtXwZxTvTsYxYyabgblY}_{lm\_hZzd`|Uu\yd_}_|Yv]{]z`ni`~asfe\y[|dVvSq\tVoNkYyPoGfMnJhSoTpXqVpNkTkPkRq[xOnSmTqLlHfWq^xTq]wkecVvNmb]}\xSt]|h]|g_{Kk[|h[{Xvc}\zVvTw]}`}dYvfRpNlYvGdTob~Wu]y[wMiMiVtJgTpYvPl\zYvSpWsQlRmMlUrRoUpWpQoMmRlD_ZvgFdLeZuLgD]GcVtWv_zVpUtXtKiMmJgF_UpOjNgKgG_JeCY}DYH_PhUpMhJgOnMkUpUoQmVta~PlSrMo\yYuUq[vVuTpYvYzZzcYxVtWuYxXuZz^}VuYwXu`|ZxY{UyXxOo]zdWyYxUsYvTqTo[yMmYta~SoOkVubTmLkTxNl\tOnStRrSoOkNlRm`zRkKgLgVrWtOkIf_~NmLjNnKhplNkOnTsWsQp\|d]{baeigd_ru`vXxQr[vLkTuf]yWwX}]}[}^ppgd_ihfllrioqma`ZycRnOk]zMmTr_}`|b`ce`bffqa[}Vul_ada~]bitgmtckkjdolnmmhhmqjthckjnhkpknfc`la~Mm[{`b^{]{b{Spd[u`gcUqJd`xeTp[xUsOlMiTpRlGcPmPkLdRjToHbH\H_?RuI_SjOdXrE\MiPo^yTpG`Tn\uOkVm>StBTuSjXoE^IdIeLi_{Nh@Vw>TtZogZmQq>Rs^vYtVxTuIg\{flod\{]xMiJhXv]|`|HbF]H]YpJiEcMiSnLiD\UrLjF]LeSlKcNi`[y^wgcjvnaY|fiX{b[z^}^yfbhjdUu\{YvZx^~]|[zglnjkkgiad_chXx[{ea~ZxRsUr]y[yVuUpPiVt^{d~a~^|[{_|^}YzMo]zdfagklpe\z`_efc[wVwWvYs]yeb`{e^|Xyb~lc^bedeaX|WyPkYoRkHdRnSrMmKj]|ZvXvb}XuXuFaSoa{SuTr`xUqJhHf_yQlOjSq\uSqd]zZtUwX|]yTrRrZvUta}egfhTwXvZw]wcSqa~a\yZvRoLm[y`~RqMkVqVuUsZsa{VrTqSpHeQl_|E`DaZtTvRmWp`{FdSpVq`{YuZvPlD^QkVrIg\v`~LjOh\tUrMkRoIfTo\y_{RnYsOjEb`xXkQjSnE_MiNgPfSlGcHbSmPlZtVuXvSnRlWtRmXuPpToQn]z^zUt`{Vq[z^{a~^|XuNnTs]z^}TuUvUvXtYvPmPm[{]}Opkd`}[yQt]{SmNk\{Lj\x^za{`yKfNn_z`{OnLhZtcYyXwLiKhMjSnMfLhRlXqLhJgE^MhNlPqNiZtTsPnIeNjedcPpRrf^}d\jeli_lbX}jlUxZ{`~XyXu^{XyUw[}cjeapffa`hnpplnhd^`a\zTxSr`|^z[xbfUuZye\|egedgipia~aRtka^Z{klfiffnvajpdhlmmhobgjnopb]|ambkjfmc]b[xVpYvZzZ{^}VrPnXr[uSo\{`WuIfXuNoNk]zYxMjRpVqSlGdWtUn@UwRkKeHaKdKbJ`DXOfOdUnc{JbMlHdLiRkSiD\JeEZ|KbCZ}JbI^I`OiOjNlTsDZBY{OhF_?PvIa[swOd6HeJ[{Ha~?Wug]|Tr]xRpQrXyVwfpNjHcHdKiIec^wCW|HdG`QmSsMhHcKiMjPlCZ}E^NeJfWr]zF`Solmblcelhj_``~ZtQn[uTslt^|\zfk\z[yf^}fgqtk^fgeth`_{^{`}jfgZ|\zQmUqTv^z`|Zy\~mQm[wba~X{]~Y|Ytazbeedhi`\|gd\|\|fnd_~^|fdchhcddkj_Yza~]yeaOo]}`{TlUrQmRlRlSoJgTs^yOmGcPmNkPnToQnRs[w]uc~Tr]z^y\vWuKiNhGbb{^{Xq[yV|aTo\y[yWsYundghnhXxYv]z`}ZvTuZwfVs\yUr`{a|Zz^xWwUtb{[wTqNjSpOkZu`~RpGcWpPrWtSnUqSpSn[xZtLeLgRnE_JgUqazOiGdOlE_`x[zOkWuZvNjKh^{]v_xMjD^~KdShOhToNgXqZrLeQkNgPkTpLe^wPnSq]yWuMjUqXtacWx[w[u^{RnLi]}`Z|\\yUvY{]zZ|[{\{ZxNl]}Zxd}a{RsZwUuVtc}aRs]|dTqNmTtTsQqSojcOp[yWtLiHdVqb}[xTpJeNmWtNiKgLgIbUqMiKhLhKgTqNnNkRkZtKjRpJgMk`{c~bY~]Y~`~Z}Z\hekfhc\}ih\a}QpPqTtg_|OpXyj`ia_klkikpnqouoie[z\wh]}Snc|QpVuq[zZzaTv\zifPrbnqd^eb[{c`gnminbggolgullojmrrlgrhfkgtl[}__Y|`gaeb[{]ySoSs[ye]{Tq]xTnQkWwYwSpUqQnPqZzaXx`|XvQlRkKhIeOeF[|HbD^F^IcI`UmK`9Kj?RuD[dbzMktQmF\DZJfIeLbIcYsIeLdOgPkGaPmSqRnJb@TwF_[uQs;MmIbG`EWx>RtSlLdC[}JcUlUoKkVoIdZtZq@UxC^}MgRpIhUmPn[xTrHbAUyF^IcXtMdYrZuTrRkFXy?Po9Ji>RsGZ{C[{Hd\x^{RqPnUv\|e^[wE_GaJe`{iG_@PwJiQmXrc~VuSrRnUnIcF`E^NhSmAWyLjhmocZ]ye^ncUvNq[vSqb^{HjQscfe]|\}egfgkprtog`k_fdb]{b]~_}ZyVvhZy]zhbbi]lgdXxY{^_dcX{Ttbdh`Ru[{rfeofnh_^kfmecYyVtkuhfe_dePnRn_|\}\{b}XwUrSsJiNfHgNmYtVv^|bgYtQqWuQmLiOgUnJiTtSod~SsMm\z]{TtWuRrNmWwbx]wYvZyLnMo`{]zhhhedmkjVuOp^}Pp[zcfWuPoPlNgRmOkQlLmyfVsXoMjVtNlRmOhPjLfRmNiQiKgKk_yLeTmLhTsRnXw^yfZvOne~`~PsXvYx[vNjSjDbRpd_yWsIdJ^H]Ok[wg~VrIgEaLhRpayXr]|Vu^z[}`~f^{SuUs]y`~WrQn`}h[^bi`TuSr^~laYw]`ZzVthbRuPp\{YyXzXuVsXukKkRpYuQjJePlSnNkUpJaOiUoCY|PeQmLfTlH_TnI^I`E_H^QiSoSmE]IaG]F]CZ|KgQkLgKiVrUsQsUsTrVzZ|ZyRratlgppookk[~eich\cbp^aUuTse\znidmklfkqtniprsrmrdjhRp]{jTv_~doplfc[zbhf`caZ{ZzcaU{bprjknnoljurajmpghnmilohbfmf]~bd`gbi^~[{XxUtRtMnUrWqXsLftMc_zna~[wIeEbVsNi[xa~UwZyXpIeLgG`TqVt@VxCY{F]PcJ[}F^NgJcOobTmYsRnPkVrDZIdYuGcE_E_SnD\KfE`Qq^ySjC[|BVwOiVlf}VqJeKcCTvRtATv@Qt;In^u_~Y|IdKfNjIdKhXpFaXsYuXuRjC[}Up[wGaE^TjSjSlQtBY{PePiMeLfPoRpKgZt_u9JjBSs>Vq:Ol?UsC[|^{c^|bgVrMkQoIfIfOmOjBW{HcHhOm`zUoVsSoLeBZ{LiQlQjSnLjNhLgJhLfgt_Yyaigi\|UsUqQp[u`}nd]|eh^bd]]|ikjrjfpm\a`kjjWzZzkc^~\{Zy\{Wwigbaa|Xwfkd]}pgUy^d`cjhd[yjhed`e^~c[gkXyfep`ifXzfke^}[z_~_z`vbySsQqZt[sQlVrTmUtMma|opiRsQpYu`|fe\zXw\yXuOj\x]|`y\w[wZtSr]wf^|_}QqUv[v]v[wXvb}flc\|_e`kha`^Z}b~XuTtd[}RtYwtyRnTnPkRoc}d[vll[zVrD_RodNgMcPlHcOgZsZtWvYy_|_{^{\zbdYzq\{\w[yRnVrZvQlF^IbWnMcC[|GbHgOlRn[vZsSpVpWpTtVr]{\z\xd\|[x`Y{_~_|_|b]{VuVxbbh`dc^dmdlj\xcXyYu[xWub_}YwYxTsXtSnJiLlMiQmQlXsRmJjNjMiSlMhHcKcSjJaG`NjVsEY~@RxGaWqJcE^~NiNgC\}QjVvIeH`H_E^@TwATwNaE\}G`KeF_Ni]|Wz]x^{[|WxVyplZ~iocXz^dfegoliga_fhhjX{XwZwgtclk^fdklkenriojgieRqXyVuVxUu]}^kelqrogdbbamafaRsV{`lsjprkinmnepnghrrqiwkd^~einebhpj^~`da`{QoUs\tNl`{d}a{iSrTuLi\z`RqSo_zMj^{\zLk]{Qs[y_xJgMkToPkJfE_E^RoHb@WwSgNbEZ{F]So^\vTrKhLeYyHdI^G\=RqUp[tZxD\F_MgI`Oe@VwH`F_JbKgRmLhgUnF\JY{;PnDTu8Hg:Hg=VrMi_{b\zMiLiUmTpJgPjDU~[s]{HdRk]zWuIfJhNhZsazC\|A\yRm_}FcHfOjHe\r{w]X{X{Wy`~]|]}b~`TtQp]za}cb|iqlb]|d]|\}gle^grmj^cb^^{ikecZxYzef]z[wSs[|dmpmf]|cgZ|bj[zUvbbagtdX}bkdblkbVr_{gndUxjvl^ylgga_~SnHeRlNjNkHeOk[wZvUrRoTuQmPrig_~]}i^~_{ZvSoVsPob~ZvMiZt^z]wRpZw_|YvWsZzYxPq^}`NlPmYr`}a}_yYxY{bmh_~elbdaVt[zSui_~X{eo]yQn\ze[x_z_|nq`Xq[yRqE^ZuWsLgQpdJjLhf|ZuMnVrTpVuaXx`Yyk]zMgTnSpXw]}VpTkFaLaHbJfNhMgSnHhNgRmRoPkWqZyRo^~Xy]}OqUveaheYv\yYz]|\zVv`^~]hj^~[|a^~TwcZyZxpbTuZyXuXqYuZxeUwUs^yQpJiIeIeTrQlHdKjWsOnUqUoOkJeRhF]MeSoUrH^ShLgH_AWyD]LcTnTnLhIcJaLfRmPjK`I]G\D[~H_ZrLaOhPiPoSu`_Xxgmh_cgggaW}eeaX|fmbjjd^ikce_Vv\yi]|ghdqf[chqgZjjekklf\|Qs^{egnj\jni^gn[zaorjhb^~e^|jtirddvkcjlk_tvpffnhmhe_`eqkefiedZx_RuTsRs[yOlNlHd[ti]|hSpOjJfPmYvSpUqUuVwUrPpUtXrKeSld_zTp]wLjMjEZ?VvJcPiTlSoGcCZ}QiYtSqCX}F\Uo[vQo@TwDX{HcGbVs`RuSj>QtFV{QqFY{>RsXnAXyCXzHaOiOkRna|KdG^AXzC[|C[}L`KeIbHdUuWyaiaigi_bblgblf_innikmbfnYZ~VqRqYxln]{\{jnggnis{ai^hinojhiljn^agnnfd_`fja]ikfc]dqolkmjsmhlpji`gqrgnb_dfkcbihfi[ymcTrVsa|Vs^wVpPpOjXqZyVrOpZ{_hZpKbNkVtRqTrWtXwXsVsY|WvUnBZ{VtXrRjWqAZyBWzFWxFXyKccSoRn[yWsE^TmD\>UtegFaYrNhKfF_MhGbVqYn?PuBZ{NjOlYvcWtD_D_|C]|YvVqI^H^BX{D_~XtaZwF`crOlGdKiUsqLjOiUpE]FaKhTnJbIcPm\s^wiUr@VwAWyG^BY{imhka}dhuwUrTn]xYxXxTs_{^}^|Zy`}gedkkmedcmhc]\|]z`Z}ceei[{cYyZ{kgbYz`^~e_b~cebffjj`chighj`af_~ieeee\~igloj^{Y{_[yfdbOnb|cgZvc{JgOkXr[yXu\zUtSkOkWv]~Ywf\zSvLlac}bUsYuUqSo\yMjLj_{\xXu\yXwZx^{[zaXvZ|nhWxTsYv_~i_]}f[ycdgejafh_ek_}Vtfgoj_z[xXt\yNhQnXu^|XuVt^|YuUpJhYs\wQpXuUrYw_|mpkfdVtJh[wdb}VtQmRlQmToSmSmUpRr\wKhIeIfNiWsWtfRmXs]x\x\}Twg`~SqQq[{\}_~\yPnSu_`|Ttaa~jndaYx\{mTs]b}f_Us]z]}QslaQnUqXrWuVtJfTpZuPlMhLiKhTn`yYpZvQnKfRmNgMhNlMkTrKfJeE^qE\CY|H^MdAXyE[{NtTsCZ|eXxoUsE\KgG^>PtQhI^GbOjRjGaOkJdJb9Ij=PnYwYzVsZt[wRs_|h[|CZ}CWx?Qt>PsN`JcRlG^LkQkLhVugPiMfJdJeF`FaRkaGbHa\za{GaE`JeZpRkOkJga~\vIaSjtwsfZz[ySrNmRo\zXvdedbbh_cfdankdcksuke``UsZwj[vi[yTsXvc}^|ajaca~`}acdf`^~e`dcalhhd`jggigmijlkfpphfolbchec[}^}PmVsYwTrWuMjWqPkVrWu_|WtWqSoRrOl]y]z]yUtc\y]z\zUt_}c]wQoPm_|iTrVr_|YvQn_|nrg`~`iheb`~a^~\za}Ts`~nqnnegrl_~jmnmi^|`Xw_[|c\{dl[{^|WuXvQs[xVtWyXuZvSrRoXwms]|Qm_{[w\xUvIgJic|VpJgKhQoMiE[~ZrTmKfKeGdLf[u`}aa}MlWuTo`~Wu^\z\xXxJfUp\y[zZzVuPlTrhYz^}oce`ciRt]Vuki`d_zXwUtYt_{Yw`}UrLlQpTq_{YtLiIfPoQqQoWu^}SpOkTkVoIfJfcRnF_E]MjQoLiLj\uRl@VwC\}Fa?UvNdOdQcDXxG^~J`F[LaI\@VwJkVpOiFa[wOlKjNmToRoOnRrPo[v^}jc\f`bghgjigihh``ijyyrrible[|``]{Tulwhjtkktllf]sl^~hpcnm__ehnbpjRu[~ifprnn_ftkeoaszroqmra`vudgoigmjc\~_fbh__aYy\{[}Uve_|[zZxYvZvHa^zXxLjd^ciJeF`TnXvWyQraOnKjQl\xPlF_JfC\}JcOiWmF[=QqK^EX~QkUlF]Lka^{NjLjKeRjE_E]?VvI`I`HaTpZyIdF[{;MnBY{MiYvb}a^fhMlJeWnAWyIcRiPkZtKbRqQlCZ}Ie[sMf_zPjHc^xToOjE`PkQmOjMhWqWsKdRjXsVtJg_|OjBY{QhmbgnaXx\{XwPoPm`}k]|ckikfid`{eccadgimj_^e[wRoTo_}ni_\{[wUqb~cba]y_}`}`|Tt[zlgf]|[z]~^|fa~[ySvcwnccgoplfpg]{lnkto^]|^{ik[|NoTr`XuOlRneZtUrSnWuUs\wYtYtLkTrZyUr\wUu`d\ycZvRrceWvUsVsYvXvYuTqXuUqPpYydgfdhgkbcf^}YvcWwXvXxhme\{osbjilibvhkd~b{h`Vp`}JiWvicb[|NnTn\seUuNo_|eja{RndeQnE^MiQkXnQlVpWqQlF`XqYoPkGaMeToPjLgYtZu[z\~dZw]z^}MmUs`|\}^zSn\zPlRrmm\z[y_]jgYzWx`~nf[{`}]z_}a]yNla}WwVt[wUrMjLiVv]|VuIf\wNjUuRmLiLjb~cVv[wVv[PpSpOjPlJgLfKhJgMgG`CX|DZ}RkRi@Xw>StH]I^Oa?Uu;KnLaMaL_CXzSjUr\xNhF_KgOkSrGbLgSnZz_TpSoNoSt_]gegejjimrfothkfiilrpnij]~_iigYxXyb}vqoipwiklilkidaZfrhVxanjelpbpdWy`pjhka_~_x`~eegspqpkgpdcugtr^`qmede^~dakij`\|Ww\{Us_}e_~[y^{ZvVqNnLk_zWu[zbcOhCY}Kh]}bVuNnNmWrUqTr[uJfD^KdYrMiBW{CZ|AWyDTzZs[uF]IeQoNl^}IeRjNeBY{UoKaAUxG\^w]yOmD[OiWmATxIeHaKehdYuOmGeXsHaEZ~TnF_G`HaPim\z^{QnE^WqYt^wa}gHa;LnD\RmWtD]IbOhhhE^F`[zIfIcKeC[|bzh_^}eZyVuceUpVu`zfYwemgjk`lqhmnljbja`ZzdceXuQpUsb\zWyabWt`{_{hcZ{^~bdYz^|_}cdagacblaW{\|elinqgpornpc_mgsyb^|edcjVuTsMlYuTrWqd|PlYw\x_|MnLi]{cWv\{XvVu]y_}Uxda~ZwkVwOqTrXx^zPmKgQnXvWv^{dXzQsZv[xkijk^^glb_}aXwRuYv[zehfptqiltiedjjgkfZxbZtTr`~MiWtVrZvf]Wu]zwgY|fXsVr\uVsg`|RoIcOcJ_TjEaXpf}XmGaGbKfOjHfYq]yWsSqc|`zWzYzLke\zd^yVs^{Vx^~`}]{^zMm_{bjcTu[|ailTuhf`Us]z_~^}YyUuVqXscMj[zYxLjOmPqNjYxPoTrJgTrbz^yVy[wUrVy^}[wXz_\xMjSqQo[tMhF_JaOgQiBW{OdLcOfL_ASz@RwMa@SvGY~Ma@RvFW|D[NfNfNgRlUnOkQpVrRrJhOmZz[{_}WwPtOpaWtOm]|dnffndmtvnltn]ec`prplaik`g\z\dhtxtnclnhrdYyhovlmgniZ}d_hbctoid`gchniWy]zdkgjbgpmjqjmdfoppphrc^~mfUtVx_RqRrd`Z|Pp\z`}NlVpSqaYyXwSmanG_]yXuSuXs^vZvOlHcWugc`~WtSqMj\xKeH`PhKdMmUpPg?Uu4@aLeVvTrbTnTrY|IbASyCW|PeUpQlNgH`GdKgVqRmMj?Ru?Sua~H`UneQpTpLkNhVpBX{\oNh@WwEXwE\FaOnRsb`}TtKiFaKhSqWqD]~RjOhGaNgF`AYyLcJgVvC[}UoJcHeVo]w@WwQhlic`~Xv[x_{iiXuZw[xNo`~chfbafnppj`Y}g`_c^{[x\{_|a}^zXvQq`zSs^{a]}hjb|c~`}\zg]|]~behbY{alh[{]}^hc_}baaqnkpibmootmhggniehb}ZxbPo]{`{^xRnNjUsRoYt_{JiNjj^`a~NoRq]zTsa~hjcZ{a|YuVtNl\wbb}ZtRr^{p]}Ux[z[zhndejb~dab\~`gafWx`ekjelororlelg^\}gg]|l]yRr]{NlTs[v\zd^~bsg[|^}PrMllOlIbPn\x]wBX{Kc]v@Zw@VwOfQjUrMkZuIgKjLjLjWv\ySqRu^za{db}PpWrZymd~QscYuSr_PpYxaZwTqcdRs^zjtg]}XtMg_{KjYvVrUv[xIdWrfQna~d[x]zfTnRm[wMkWr_yhb~LjRpTvc}ZwXwnXqIdUrWvWtMlMfE[}BY{H_UkLfD[~FZzK_Oi@Vw>TtDYzH[~H^=PqDZ~=SrK^OhJ_Haa{`zYuRnNlKhRkYvKjMlTv`[}lUtWwbRpZ{fgh^ntvwwxmhee]ikehtvjela~_~\~[|kklwqrgcrand_orknvkkd]ffafmlnaricrnidUt^ildfeclnfaZ_]z_~nihu{ni\Yycik^|`edbUwMlYvTqZrVrTtPnRlb~pji\vSrQkGaQsQpVqTtUse`~UvSsTqPlE_TpVtBV{HaQnJdPgHZB\{[|^~E^]zqKfE`KcEX@SwVtLeNfAWyAWzOeLiXtMhD\~LgYvRib[{]yKdGaNfDYzN_=Pp7IgCTuUoQn?SuKh\{OgMm\{TnOjFaHdTn_{WtHcIcXn>QtHfSsG^VjSp_UoYsYwRnViwpmg_a~Ro^|b]zUufbi]y_~ffjaabssmhbani`gcWwUte_Vw]z[x]yYugb`]|b}^|_}cagna}]}iidZ|nbi[|^fbledmmjlkhfns{reciggloida}b~la~PkWqOkRpUrSoa|^|_ze_}hf\z^{^y_j_}c~_}am]{OoUsPkNjXv`{RnLg_x`b\xbbXu\}\iiTtdjV{geb\v\{ep_iupwtlkdjpp`Tt]{Zwgea~TsVt[yHcSocaZz^|aifgZ|flTqAYyD\WqSpGaPgQj@Yx@WxXnMeQmZt^w\zVrXtYsXtKiUvdYuhyuvmKmPrcLlckQoWwd^~aSsTt[}gm_~_dgZ{KdOk]zEaHbQnRp`Sp[wUrYt]x]{WvYv]}el[x\zVtafSrPoeTtPmb~d]|SpQlRpRoKgNjRmSmPiDY|K_IaE^BRuATwIeJa@RtLaRsE\NgCUzSe?SuJ\M_M`QtRiG^F`Yxc`JgF_AWyUnQe7CgL`LaDZ~F_F]E_E]WqUqHa\uQjUskWrToLkE[Me>Pt;Il:KlBSsAXxOhLaJdYuNgE]~IcTsNjVqKgHdE_QiYtWq@UwD[~IbXvIaCX}RnFcIfZrc]~Zvtjf\|``|TxXv[zi`~ad^zdgjmfo`nulivpme_Suc_~^z\zZ{b~lVvTxdeSuVtXwbhZ}km]|\{[zbdc`fbi`ddg`mhhb\~jpdkrlejmjlv|j]}[ye`~VtUu\z^|[{]|^|[xRoYtWqNlQqRqc{]{YyfdY{Xw[{c\}d}q`~b~_|XvXtUuOrWqPpPnUmYr[{\|^|[{cfleea~fb\zg_ppi^~kuomeroioqlg`ekiecb[yc~ebXwPoYuYuVrakk`]v\xc~PmSrUpWnC[}>UtRgE\H`\vQmLeTqMj[tNmTqYs`ysve`zSpfbXv[uz~`~YxPmSrVwZ|`}d~\y^}h]}`}Zxac^}SsZxLkVn\wToFbJfMhLkRmeWrUrQqIgZx]zVsSmMk[{\|Y|Yzgd^}`|^~WuLgNmYsWmWuOlZrCZ|D^UnMbNeKcSmEZK_D\~K_Qa@NuPtRiNgLc_}a`F\MeUq@SwASwDWyLa]tLd@XwD\PjWoG]@XxAWyRm[vGbYv\xQjYzUqMhQhRtMd^ziZuTnGbSqOjF_NmOkF`Nd>QtJd`|MeF\C]}JcJdSmGcF`LfPiUtVqjbjiea~Ut\ya~fqf]{^{aYzbf`^dnddrtmouhY{]|a~e\zXz^}b}b]~]|gcfea|]~[}Psjmh`jhb_}g^edlb~a_a\|h\mnhfhjlanjnjolmutaa}dgcb\{_~Zz]}`e\xTsLlOn\{\zZzhnd\}b_{RrXw[zkg_{a|jWtVsQqWva~]{[u]vOoUuYzce`_yNoPrYyhlg^|apvr]ahltdwpmvkkqg`bgjqj\|`jddem`|XsQnUt^xhbQiHaYwPlF^SoMgQfTkL_NfFaFaTqa~WuHfYuRqQq_~MiSodfooaVvc]}Uufy~mKiXwNnLlXwgh^}h]~VwfcXuPnZwOoMl\u^xVsF`Yod|`~PmUnVuUv[w`Xt]wXuXtXuStY|PqWx`{QlXwjWyYvMhLjSnCY}JeGa@VxXmMi>PtJ^G\LcQiJa@UvAWy^wI_Q`BSw:Kk]pDZ>UtBWzAXyCX}NfHbRkNkTtZwRq_|Tr^RpRo_}YyOlUr\xRsdgdPp_~lgddflhbd\irtnki`sschjffnfbYySt`^~h`qp`\{c_dqw{qfhivgcfljelmdp`_fcwtZyQqLkc~ncdlpkcikciiadic_adliVtQr]}YwWvWwhe[|\}UuiWsTrc|a{IeEZUoh_Z{QqgRnC[}JdLiTrb~\{VvNo[{cToLhWsD]G`UnTpJdJdK`AUwD^~AXyMjPnTqJfRo^Oi@UwEX{@SxBZ{Ia?VvTmMg>TtCZ|UjJaLgWqZv[u_zPn\{iXtWpF[?SrH\CSw;MnI`VqRr`[ycQn@UwBW{OhTpQfE\~PhAXyPiKd?TvG_@XxFbUuNnRk@Ww>UtTpWqr[z_d[zfihd`]{a~\w^}ibad`\qrb[gbiltwtg`|[|dUtbac`|[yckcidda}Uvb`ebgl`~fYwZ|]}^k_^~n^`~gZksnccfgplp_jlgf`~kolcd^|b}[x^z`}Tr]}heSvUta~_}ZzXuYwWuYsYxtnStRo^zSrPo[x[vhqfWvYuUqTq]u^zVw\za`a~Zzg`}`Uvdkaplnj_knpnltztkmkpnlapj_iidnenfbfl[ya|[|TrJhKgJfGbMhNjPeQmNjXnQiUp\z[wJeEaXuhSp[yZyWvb]}JfXum\xdmbcY{eh_Vs`|\ydgZx[yZxkn^~Y{]|a|Wv\|Tr]xWwSr\wVrLhSo[s\u^zWs[u[{VvXta_{ZwNm]z`}X{Y}UuJh[vVsNmJkKjWtb}VuGaOjD\@Uw@UvGXWoJ^AUw=Nr?RsBWyHbL`@SvOhG`Pha|I_~;InFZ?WvQg\tIdG_HaKcQoNpKfVsPm^{YzcTrXvi[zZyTsOqeigfi`Z}`glhggghirnkg\foqlglnbgleb\|WwfWwhjkndc^jnbmmmrn^bamqge_hkngcdigiugUy[xa_~dh\}Xzksl^kiibirjeha_~\~[~h`~SrSrOofbaXyhiLhVoLkMnSmc~KjE^UunjtSqJaFaRqg`~[yRr]}ZxTqi\wPiG_?Rv[wIeG^G\RrSiLhIdYvSmRlIfLi_{Zwa|\|[}ebakh^~UuUuddeihm]WzitmhovkjmddpqZ}\mjjfejpijkPpOlLi`bqlhijjkjhnoqofc^~^rpjgc^`Y|hvmb[ncQuarf`eh\npdfjdsaikdqp_`Y{npiZyQpWyXxUu^}TtPoXxcVrXvRrXsZw_~RoRoKfSqOl_zlNjPmLiQqXwaMl]zXuTpUrcZx@VxFaLgNiQh>QsBY{uNcDZ~b^xYpAVyD_Jf[p]qCWz9GjNe]pDX{HaOlD]~RtRfVlDZ}CXzCZ{BV{IbNsBOs[qH^CY|QkXuXtVs\xNiZxMlYum_~drpg`f`WyUsjg__lieejlimojrq`ejd[jxongirednn`cWvYz\zYwcbmrrppsjktwc`ZzY{jnZ|onZ{[{figi[|c}f\y_fooqefsZ|amtl\~kknbWyctgfeNo_mk]}]}b[y^|NlTqQoSpa{FbF`]}m^~TvfVqF_HdBZ{KdSq^}StUrdRoPnToD_~Hc_}Yw\yLgKiHaMdJ`NeD\Gca|mKjLhNgToKc=SrASt?QuFV}IYyE\|G`RfI[}Ld=OrQi_{WuZx`|Xra|jFbAXz?TuRsUo[yKfLf:Nm4CaZqF]QsOp:Hi=OpQiQhF^HdXtQpOoMkMlVvXv^~fekvg\[XzZzfgjfn_hfellohljkkhfeefijlillicfdhhHc[waZwodorsnstnnpjf]bimtlajf\~NlZxgjrNnSua\|jlocfkqfnudbed`ichVtSsrp`_~hg`me_r\zNoYwHeXt^~Ut\z]z[xRweeRpVuD\C[}IdYuPnUrhZwRs^xNhIbQmHdQmUsYzJdLa?RuSjlJgE\lsYwJeC[}D[RfFWx:MlPsPtewqZtE^Hged~_{WvKkRoWtZv^t[w[yTt_{a|Yx\|\{\}\}f\|TrfZxSpe~Zy[{Mldb`}_]|e\ydkWuMkUub`zeVvMm^z_z\xa~`|TqRnNkWw\{UrOncZwPkMiYuXwZx_`KgSnWrVtIcQgRlGaLgMfDZ~JdZwfhi[za}TqQpUwdj[}Srl^PnOkNfCXzFZCU|BY{NhJd@WwVpWvDZJfVqZuJfMlWw[|Wzcppe`gZy^}fb^Z}plfhcgomtljifX|ctjhghjrnjm]~hpRs]ydKhLj`{h^Uxbpicpcbtta_`WwXyvm\uj]e\y`jsZ}lnQmKi]{gnjeopj^gdcfdd[flYyQqbahZx]{fZ|fdciaZyUrRnKiHdYxVwQqOoba\wZxTqIdSqMnNjJfp]}_{VtWr\xKhKjHbKgYyRqSh?Qt9KjD[~LgczQoRqVra|Uq?SvCY}DT{k`{=NqC[}ATyBW{CZ|F`D]OkJgSoa~degXva}PlXyiVoG[AXzA\zUkD]LndD[=Rr=PrAPs;Mn@SxMf]yVmI]>Nr?QuF\}NgSjCX}nWnBW{B[{J_I[|Ўƒd]|dbVwVvd_{b~Yw\eb`~ukcbgchtqmkfjeb]~kh`ff\y]yddcemiblpZ|Uuab~jljhgqhX|gb~Yxb}`]~e`de^~_binijd\}kdcUudimgZyOqYuUr^}]yibXu[{cdcdmmlhfacdf^~`|[|UsbYyb]xWtah_|`~[uPkQnXwXuVua\{UrSre[|[ygeinmtmkoakmchrrpmkpnlrjiotonjfj`}WsLmUqZtNkLiLbMdNfAUzBWx3E_PkRnLfYt_|[x]}XyUqWuVp`xUq^}cbflVw_}acjh^}UtVti}qui]{Jh[zfgcdb{ps|e~MjWta~e`}XxKl_^|LiNmTnTra~]zSpZyUuSujiRpd^{^zKiNnNgRo[sGaJePnUtrPiHbLgTjYvNlNlcZy|gfeXx[{VwQqmZyd~^}MkOkLbOeJcLhOgD\TnRpJfGaYs^yKhNoUvXxZ}cgTvmvoWvTt^|`b`j^hjbgulkjig]llllllebq{fh^Y|ccc`~NlQqjXvJfPqlappijjhn^fmaYxfharflslm_}QoPtcjeZz`|`dmieitgdlfclf]_c]~\}in\}^~\|VvTt[ydbfWyQp^~WuToNkNkYzOnVuYz^|MkLhQoRmVw_ZwWuMoOq`}aXtF`OlWvNlCY}JfRq\vCX{9LjXpMfCW|_|jVrToYt[xGb>Ot@UwYqF]ZpPsG`UpXxiZyMiLfG^F_ZqPfMkNqQmRjVq7Gg1<[CWyQtQa\rGbI]AStJaD_HY{K]@VwH`PcPblbbRn^ya~SsZye}a`f^a\b]aWw`~ghfb\z]y_{To]x[zggglqhjb[{kn\}`mibkd_|^deajh]^}lb`c\yZ{bfnted`~^kenmk^bfihicfhgcZ{OnTnacb~UtWrSsSu`oc^~_^~igddgkmali`^cQqYxWrYtZwc[vVtRp[yWxYs^xSscdik_~dgciwtoplitimkguyljehrpmuqjkirtvkVvUuUpMlJcH`F^G]MdAYyIgNmBW{StQfFZwRtI`YpJcTm\uUlIb]}^{db]zVuXt`yVsYv]wQhIcJdSogdkldZv^{I`G\Mf[uhjadLmRrfaX{ncXveX{[~^eduY~[hccilejdicnlaoofmngsecebdj^Y~lhncQldfbbhrbcinmgnrjl[{Vsbnep}kofYyadWwQn`e[{Wsb}Xw^Z~luidkbXwUy]^}aefbZ{cc`WwhfUveXxMlNpgLjOoUsTpQmXtaRoOk^|bSsJg_{ZuZvfba{bZzOoVwcNnWuQn\tOlQsJfXrPoE[}KfZyYwSpLkWxUtJhXvPg?TuE]OhBYzEY}FXwJaNkF]~EZ|ZyXtTmTsjrbYxg`|BX{BW{D^=RrBSvNcOcK^~DUwBUzSh;Ln9Hk@QrZoJ]>OrJdD[~4Ea;NlTl@SwJ^J[}QcQtOiYuOmQiNe`}WtYtOkKgRnTsRq]y\yVpNbRoQlF]HaMkQmXvQmLf[vUoVpSqRobQr]}pp]~VyPqbg`~kn_dc]zcjddnfbeohfZzf`fqnjeiqkerimg]}cvedacjmZz\yOoQpenjirukjbmmnnaZv^~b`rnb[mrffZ}_}_~Nmctr]{Z{_gfX|cswgac]~QracgZzte[zaZxXz[}c_Zy^`^~VrUrKgHbJdesbYwRtQtMkNj[zXxIfZvRpc^~Xve]{\{`ZySlPkOoNlNhG`DX}JaqJcF^_~dOlKfSn^vE\IeLdLbAUy=QrI_Ja>UtE[}]yXsQhgaTsb~xZxWu]uHeKkFbNfBWy=SrFWyE[|=Rr:Jl8Gh5Cc9HiHZ|GbSoEZ~I]CWzF]};NnOp=SrWuF`BTxFX~H\>Rt2=^F[zXrGaDUyBRpAUs@WwRhfXw]xVvay[x[yc|WvZw`~jgngc_]{[vd~efeb~c~[wMjSn]zRoYvTs\y`}cf^|h^hb^blqikhenndffhYzWuhnhTt`b\}e`}h\{Zyecmlc^}ejmrpiZy`~a|]yY{VwYuUsYxZwZ|cdc~Yw_~hecfhcfd~^~e[w\z]xgUx[zb~\{[_}oj_`_z`|RtfYxf\yRoedhegvymqqpuqorutjpldtqqurpfekpelabXyb~ZyTrNmRr[wKgVpgVsLl[tbUsJfTq`[w]y`~Soeg_yi]|__zcg`~ZzWwhojg\{TvfaWx\}`]}Rr[wb}_}[y^~[{^~\|ec_~[yrmjkc`a]|ZyYybgeZwlmbgQqfkTqSmQs`~]yJiF^RfDZ}E[}AVy?RuH]LeJbSjXpSjD\~H`czfZyPnPlUsQoYt_{XuWtQm\z`zNhGaOlSiTmSn]ycSnYvRrH\JcIfPjRj?Qv@SxTk[xX_}VtbnfdjZ|Uyh__jmiii_bhajecltrgbgdX|rrtpklpofkmfTy^pj`e_edQr^~_fwlccnY|mshhi]ea~OmLoVv[xjlTxffbjb^~o_RrRrckfgjkjbW}Y}`i`lfea_~^zbW~gka_Vse~^Tu`e[|^za}SqPlNlY{Uu]|]}mYvWv_|_|KgPoieRrNrXvYwf[xNp_NmYuQpIfIeBY{FYyH``yJbUsYxXs_|PlTmQgAWyKdG]}E\~CZ}?UuHZ~I];NnG_Mi`WxUuWvJePk\rc~Vrie`}\|]xE_J`K^H_>Qs6FeIZ~RhQj;Mn1>[DY~FV|G^G^8Fi?Sv=OrG_\rNb;NnI`IYzZuUtUrQqXuVr]{a`|WwXw_}elwrd`~`|]yYxWx[w^{fb|b~]yQoIfYs^yYxkff`~eijgifkoobrifjmgsqbiffb]{`b~`~b`Y{^hkefbhicc_}bke`_dgOmSs]{`|Wv_z\{Xza}e~c^zbbjg_Z|_}d\}Z{[xNlUqYuVzjh[|[|^~h\{ffb}c~]|Z{[{c|f^{[zk_~ondnt{xnelol_dijililbpnnkkoe^ebZy]|dVxTs[xVuLkUrWu^|UvNnQj]}]~dXtMkMlRmYtfLlTxl_{dfZxlpbphei[{^}hi`gUxfc^{Qpcb^}egb~daPqbjbTvaijkvfqed\|dmg]z^Xx_~WyXu`ze}lPqNpJie~b|E]JaPgF_Vn]xJaF]\uMdLc\xNlNlPn_|\ySnQmNmMiXuZwMlNkVsd]}PoLf`zXuLeIcVqTnVqUtTjCY}JgKcG^LcG]?Ru=PrHcZvX{[jlSxb[b^~_\}`e`dracg^Y{pabeelhojPt^ptw}rl_hid\}_Z~\~hitl^~[y\|^|Tr^~eil]~_`fnljr_baMkWwhcaUtWw[zY{_\zRp`f\{eZ{Tsccmmnjj`^b^}ajkrgjcf\[y]^ha\}YwOoSrUs[yj`{WwGaPptePp]~^}YxLlXtZtSpc~\{NpXyRuKi[ue~]{PpRs\xMhUsKgF_If>StLd^wUp[tRlMgPiSpPkWqMgC[|AYzG]Kb@WwBTxCY}CWxNgUrMi\|iWvOn\}RuSrYrd_}IdNhGcF`JhaF[~@Tv>Rt>Rt?SuBYz?Su?QsBZvDY}H\YpYqKbM_>Rt>QsH^@WwUs_yMZ~VsRpVs\zVsSmVsc~a|]|`[yTrbevfqjfZyNo[xZvVtVsTpSsUuRoZuUqSr`{hgga~df^ecbgchmpghrfdjjnfkg]z]}cfff_~W{fl_|dnom_bXza_ySr]{]{^|ee_{Rq`~]{Ws^{^~Xvf`fcVvehibXw]|cUueYwToSqMn]|f`c`\|bj`}Xvjs`_c~`icjchclis~}vopohmtocdponfrhfiofZ}eghd\}f^[{Xv_}PnZxaXw_\}Ss]~_]{cUw`ZxGaZyaSwaTpYtj\~`{hXylhin]XxcfmZ{Y{kfXwZx_|cUv[{ofhonb~aigc_Wz]hshkalrmd`|StZxdVu\xVp[tXqUqJgF`ZoIdYuXlJdH^MgPlJbRkSmBX{CV}jLlJjZx[uNhTpMjXtXuJcTnMlSpXpTpOnRn`xUuQtUrSoLgNiIcKgWqIaOlMdPhXmLeIcCY}CY|E\QpUx^}g_h_dd^`Zbhhd`imaX|\~clpa^elpkdlvpjotjmbW{kgWwWxcpficceMkdmXwgvnekioblmhbmmYxe^|Ywe`YyQs^f[{]}dSrcbn^nngefkbWyihVw`j`aii]la~Uw_l`}bRrdXyVvZz`|Zx]|PpWwmZyW{ia_LjIeWuZvUn\{Ux^}eYzWs\yMkPnOo^y^wSoIdVpWqF`?SvAWyMiZvUrZyJdWsIcJfToQk>St=NrNdMgJ_F_I_?RvPmOlPo_~wnf]}Mi`{MmJiKfCZ|KbL]DYzOgQg7FfF`RkH[;Kn>Rt?TuHa~NcOdRi;LnDZ}I\~M`NcDZ}H^MkFaShPpYuUrZx^{\vYwb}^wOnUtfoea`Zva~fsm\{_}_|Tt]z^yXwJj[u]xWuZyYsb[xa}`|ala^^fY|^}a}huskhod]~lg`fkrjdgean[{Wwh_XyflkTuej_}\xUr_zUpOm]{b}fb|XzStSnb|fWwTsgi`~ah_}eifSucegfYx^}a[xLk`}f]}`|`za~e_|Vs`|g_pp^`jjmmomfywx~vnlipvrgjfmgnjgjnfccOpdba[z`d`XxWr[zcd[{ag\}hd[zaaa~]}cd^|SwRp]uhdca^aadgfm]~Zz`}b~]~ToTs_ji`Yz\{aggkfacjgbphb\{Z}komh\|WvTrd^~Uq[uRlQnQnPlNf\tH_RmPfD^~RlgzF_ZqJdD\TnQjNfHbPiPiLcYo`zUmPiSpJeSlVqRiI`E]Xqaw>TsG^JaLbg~ZzTtamg\{DZCX|MeUmUnLgEYQlRmG_MiDX~?RuKgjgabidZ{ahc[}abgbdlffgnbacc`lVx^|liplgrflnwhm^{]zcbh_aaeWuXw]~YxTngvo`locaefn\or]a~`~\yYt[~ku_|OqNoW{_|XuWwZza^nkYwnj^{eajfibh]|aba]}digc^~c[{^a}\zQqSsRrSsVsKhKigWxkik_|PnKjRu\wQiTrTrQmUr_}e]}QoQm\{\vMiMkZvG`GaOiE[TlVq?QvGdkjLhJc;NnC[}D\LiWm@RwLfPj>StHZ}CTzUsVtMmbeUvRrkhkXy]}c~LhGb;Jn2?]NtH^MjIaWsHbE^`vii^|\ziUsMlLfSmZySoBW{UmYtCZ}McWpBV{CX|LdCZ}CZ}I`LeD\D^E[HaLgJfZu_y]}gSnH_@QwBX{JdSoSnPlVp[uRpE\Jeapfhpk[}clki`deai^\tljckec_\}Y}Y{XxsqnrhZ}[~qnf__}dpniincNmQnLhF^[v^}ngispwlcaf^|^|idbr_`hNo[y]}lb^}`~Qr\zQoTu\{eefer\g`_aVxbactad[{Xy^[{eZzVuSs]~^|_}RqKgiYwPn]vVsfebjaWuRoKhPjSn]z_{a}HdJhKiPmWuTsRq\zcVqIdUqRlAXz9Ij8IimYxTtXtUoNmMjgHaFaF]9HjAYyCWyMdLd?RvVmGaPiJdTrdp[zJeF`PlXuPqTsVt\xH`ZzPk4>a1=\7Ff@Qp7Fgcy]uI_Kb=Or:JlBTvL`SeBTu>Pt[o;PnG]J_:JlDSr]w[yZxTqRp_y[wNm]}h`~^{bs\~LlPqZyd~a_~Zx]xTsaZz^{_zVuYw[zcbdcWs\wZvXv`|c[y\y_~ia\~gjakbTt_fecerggag^|cbjikij`jjhlj^|[yZvMhUrXv\x_}`eYwWtTqXv^~ddfXv\w`}]z_~cjgieea}Rq^{ccYy`~c}gsjXz\zZvWucZz\{Ss^hoa|omkofhkpvuhjwlohggichijcb_da`Wwa~dcZ{ik[xQpZ|Zz`cgdhfdhidjfbf`deTvgd\~nugd[|fjdjfi`[}Z{eo`^cdha}\{_psnkongdkrcWv[{Uv[{aRpYx[uVn_}[|RlIeD]~RtE\Rndicerllvriad_}clf^ikj`}d^}b_~VtYz[w\zdlZxZzbhla\~ga`hf^\~nlalhZ{Ss\zj\{fYxd]zLkTrUrNmOnRkPi^~\~WxhwnaD\E\ToHfTsSrRoWvNlTr\zYvStTqQnGd\wMiNjNg?Op,3R@Xw[{ZuOpTsRqOnCZ}D\~a}QiJ[~>TtBXxLdSi;LnCVx@TwJdToQp_^_na~JeNjIf[yUqKfCY|PkMfK\Q\ERr5@b4?a>RqOs:Jl6De>SsF[}BRu=NqSt7Fg:Jma}aHaPlXt@UwBW{BX{G\}OhG_D\}CUxDYzYrE[{mRmUqYwNmXx]~hRlNhNlJgVwRkH^E^=RrBUwANo6HdF\zK_:Km4?aTtEYz:Om;LnL^~AWyWl\mRm^ya~]zXuZv^{]{[whWsa~ve]{m`|Xwlk\yNkYu^{ToXqYrVu^|_z^xRnQm]yMja|kc^{`]|RsZyjl_|[x[y]|g[|dlab`hb^zcVt_~inkkmrkjrlpc[ygdjRoWq\z[ud|XtXvTnQpSsYxhhYtWsOn`|bZ|afZx`~^}Y{e]{Yx_zjiVq^|ekbgi[~\xXuca~bl_Svlfkh^psonntypkjpqwkkqtlggicY{dbd}Vu_VrRlWv[z`]}cf^}_hn_\|\~WxeniqsgnigegpueaeoZzStftdmnciphji_\no]cehnpnj`mkekbWwWwjbWzYya|[yYu\wToE^JaThH`NbHbEaTlMc?RvI[O_DVy=OrN_BW{JbTmRoOkMhXu`g_obWxaZ|dh_e]}[z^{jNj?SvH_C[|>TtQi^{GaQkZwMhY{_SsOmTrPmQoLhCY}=LpHYI^ShWo[vKgLj\sSlVrLgQkNjPpKf\wofoplgfigcedj{nlmjhe`Rp[ybapsghrpsipacl`~aj_krpg^VvTpVsWoMhLhgfounigl[_eeYy\~qegpljt^Yzc^}[{Pq[wOp`hi]`]e]Ss^~]~akSpmidojZxfndUrQp]{`^}Rpc[zUsNo@WwIerbStOpaYyNnPo_SuXxVrVrJfQq[zYuPnNpPkVqWsOkWrNfG\BY{F]Ui]sDW|.2VF[~Lj\rRo>StIbQmD\~EWz>PtLbXo>PtRhXq?TvIfTqWqgOoQrLkId`{tya~HdF^OdVlE[}:LmAQrOrI_[pJa=PrPiTpMiLe?SuRlNaCUz=QqKaMa:Ol@WuCVxKeKi[vdjveLiIdTnQnXuRnGaD\~UnPg=Mq=LnBSu:Nl8Id:NlFZ{ZnUh:Km9Jj9DjH`PmCW}Qs4BaBWudQoLfE[LcVqRk6AeOgJ]DY{UqOg;Kn;SnMbHZ~D\zD_IfSo\|]~^xZvVsQhGbNlsdHc@TwBWyJ\>Np;Mn=Pq?Oq>Qr9Nk6FdReH_ATqN_Qh=SrK`StZpMkLgMha~Zy]zhXwVtcimgUu\z`}c]|ccbd`{RsQtd_xWud`~Wtb~bXxYyNmPmZxaZwUu_|hUvLmTtYyhkmbXy^{^z[x\|YxgeYuhanfccheece`bYvQufswk`~fWvVu]z`]{mgg\xKiQoZv[y`}_}Xve\tVs^zZxYv^|^{j_~Zx^yf`Nngekka}]|hjjkfjakv{gt~uslssppopstsro[|ftpgjh_ib__{VtNnPocTr[wb~lTw_dZ{cmceetkhnnkbirtjmcYzZzokmpkpvhjdk_\jggrjqvr__fjoifb[xXu]}Wv]~_TrNlJeNjLdPkQm^{VpGbXwToRiSmKgTofTsGaHeKhjWnZuTpUochZ{_|fVybogugcki\~`nRrUwd\{Wp\v`]{ZxXsQoUtYyRrXyn[|[}f]|_l]}XxRnOgMdF^JbLaF_G_PjTqNjUqNkTpRpYtRoPmXu_}\ynggnhUyilh``oipnsociitk^~aVuVyjvpioliYzcmvci{g_\zTq]}KiimaNmrppqkknqe_ea_~q_eec_YzirjZ}gdVtapc_|^}Qthb_hgTt_~`Yz_~bZzaa~YwNr[zafacYx^}cLjJgToIaTqVuRqeja[xNlUqZxYzMiSpTr\yLgHbUrZuqZwKgRqKiF`ToXq\uMd;On8IhJeRpMlKiOgUrHaWoE]?Tu:Kl?UvF^EZ{=NrTg@TwNaIcKeNhNkKgSqece~[wZw]|TrbYrNo7Hg7JgIbEY|7Hg?Qo=Or6EeLa}PfL_EYyE^F\}EWy?RuK]Uuay[x]zOp_}iidZxdoXx\x_}m_|XxbYs\yWu_{a~_\xYtWvXuZwWu]ymoeTrQnVvbZwWvac~[|cWw`b|^zhiihXu\z^|\z_}\y[wc~Zzc]x`~hkekmjb^xXtd`~`|emhhd`aZy\{c~Zvhvc~VtToZu[udc~`{aze`{Op_yb~_{\}]}c`}a~_|Z{Pod~Wt`~ha_|dcerrqnkurozyvnrpqnrrvnojnlgh`Nm^g[|hj\zc}`y_db~YxWsfe^Wwg]W{ih_mvlihhlkngf^ll`pif_jymjgktrg\~kffmigsrjqtjdY}\~l\yLh^{QpTt^yVqKhSo[vTnSmgLfKgZzVsMhTpSuHcRn^yce^~TqXplc|YsUqkkUuafld_ZzoanY|`anagfePrNmZySt[wh[xTt]}\zYycndig]}^cSu[~QrZwKbGaF`G^KfOeUpOjWqWsLhPnOoPn\zNjYu`{aXv^}XzkehopmrcbhqjhrpcgdlnlYzQuoeslijtlqeec[}wlca_}PnNlcylssPqTvbji_}ipeklk^}emfhjc\~aYx^}cfPsSsbeaog\ld[{Wxdm__~j_|dbgra{Qr^\{bYzcjb\{NlPoJeBW{Ldb~Uw[~RvTunNoF_RnUs_xcQrRqMjRkXu\y\zQm\xZzLjH`D\}NhLcUjRhGYzK\BT{Lf`OnUrKeF_D^~AStf|:Ll:MmCWzEZx=Or9IjQsGZWDVv:Dd8CbJ`Lm@Sq5CbBYzUoKhQpj`ng\zgH`H_^|lQi@UwQe>OnEXuSe;Gh.9V3A_5>_8DbCWx:Jl4Ca:Hk4?aFZwFYy8Ee=SpMe=PrNeM]~a}[{`|`|JhXwYxffndXw`zUtWxXwbYuTqXtYvZvWv\y_zUnToPlYuOkQlTqXrWr\{ZxTpXrWwTqVsemi`}cge_d[|ikdh\x]{Wu^{XtQnVta~VsUqbcYuYw_~ZwWqgti^|WsYsKj_|b{`x\v]{Zx`}b~gklc`be[wPp]|]wYwdgff]zZ{jqlNpVtZvYu\|Vv_|ghefcerilniuriloptesqjqikxynoqkcelcTtPq`calXxWwZzVwSt\|_~UvVxhdahgfgklklifjjlpehqaltjwrUyel`jrtgfvwvtkkwa^booTsTr[{Ywc~QmJiNoYxTtQp\y_QpUsUuSlSpZ{h`Z}lb^`Xx`jWu_zWsNjf^}[z^|Uz_bcarsiZ{]mg`bhivid_{Tobb~LhKg_}fkibaZzhjl{j\li^YyPnH_LeQkTtRpVqJbMeG`NfF^I_F\SsPlRkVw_|OjMj\vVtId]~pcflpmjng^{hpl\~thgekpg`tvj]gjkhnfjbajs`e[zMkZwuZxdtdggdspj_iillh]gsf]}`\Ww_^pVxMlajmStRv_~XwfhYvYzY{ic^}edcha~YtStRoIeYw_|[{UuKdNiSnXsLiD[J_YucGaTq_]|[wUqMiSqLjUn_z^|JfOgVsXtSnWs]tSkOfG_OiSlL]D[|CX{DUyMePlYuKgC\}UmPgIdQoI`Si`x>RtQr5Ac0>ZCXv:Ij:Ll5Bc5AbOgPd]xUs[xb}`~Zz^yc}Xweo]{^}ecYzWv_x_yLkVtUsUsUq`w`yWu_ZvWqYs]xRnQl[u]xb|gVwYsSoPlXu]yXthkkfha~]~`{]y`~YvVrVska~ZwJhVs^{Vu[xillc]{Wu^{d[yUwa|ayYwHeZt[vefYtc_yXx^ghfjkd\yb\w[vh[vcwpgWw\wiZwTwcXvOkYu]xijbc~iaeqnnvtpyplionkrphponttrqnj]~]~pfc[|VvX{__}d\zZz]}UtWrYyddZzf]jjnnjiehllgjgaehgeqphftpfnlo`hfnrqorz}vlike\|VxXvcStGaZtiSrZyLjUrYwSq\|]~UwYyVrZy_~`~StY|_hgVw^|kaLgPpSu[zVqPl`ri\|`lfimjcjmbf^Tv[{ckqh`{XqMjToMkMjRnRsZzfW}nkkglmghnVw`[zPnI`PiJgOkQoYsVnMjMhJdHaOgJdLiLjQmRmMk]xTpQtcqsochngfpqntX{eje^~ijfvwzl]~\}dfoeW|`k]}Z{kfUuhqmcVwmtQpF`_|fj|plrhpdTt^z[x[yUzfkjfofbfd]~^zSrXyimfXxVwdTwmh\{h\{a^Vy_ZwZz\{Zw[xhTqJeOpPpTqTt`}PlIbF_D^I`BTzGcMjQkHfTvYz\xWtSnTq[{IdRoMjYxNjMhMj\xzVrQi^xNjATz\pE]?RuCW|7Gg0>YQl]{c{Ql]zHa]4Ca5Cb;NnF^9Hi8HhBUuBYx?SuL[7GgPfSoRp_yVr[uZxWsd~XxWv]wTodjlfVv]ymUuJiYsQmazZr[wYx]}g]x[wZwYvQpTp_z`}[yXw^{^zZzWvKgRn[yl[zdlbY{_|faYvSoUsZwRpXs_|gPlRnUr]}jda~Y|_}d`~VrPqTo^w_zZuSl[w_y]ue~bXvZx[y_{hejjalkdf\y[zXzehrgb_{a}[|_}Rn\y_|[uc|e]~qncorohssktytqirrqwmlgkbosonjha[{UtVva^~Z{TtYv^e_~^}gXtVyoa|Zyimqkmmpsfdhmfgmtlnpnri_}ehqlovuppmoiuvjrvkoujciNqSq\zVuSp`|eZwea~WtQoZx_]|_`fchmYxb__iYza\z]}b}UuSwd[wUq]|i_}nnnppf[~ihidX}\dh]zTxXx`~^}dXx`}XtUxYzPpUuZyamqabonlejmcWwNmPiRkE\LgRnLg^yVtRpLgVqYtH_VpTrRlHcIgIcQjNkWuc_mkmspdjftxmfhpbkg]Zzcfhcnaejcmkop^\jfUudkcUt[|PsSrjnib]{grjibfkeXx[|abcjkXylnbUx_~da^}TuYxmk`fcZ~ihn_Wy\]}gaXzQqSnXwXuZxQnLiKgNkSpQqPmG`F_F\KZWpQrMjMiNlSsGaPk_{UqHeKjZwQmUsWtToNmLiVrXvUnXuOoH`E\VpLaG]CTx).MEYxLgE^Mh`}SoTmG^;Ln=PrH]D]~F]=OqCX{>Pt>StHcLfYu[zLg]x{ZvGaTpZv^|bJcIbYr\&*G/;Wc|TtEXyF^NbSgJ_=Pr:Jl9Jk\wLfQke]|MkUqQmZvb`}_~YwKgPkH_?QrZ?Jf8NhNa9Gh2?^:Ij;Kk>OkDXu?UuKb@Wu;OnLaShPb\xXrTq]|YxSpZxa\zRqOnTsa~Y{XwKgOi]u\y^v[t_|SrWq_zWtHg]yd|b{VrWt^{UrWuVsQqTsmvhm_}Rq^~`e]~gh`~WtiXwJnSp_|[x`{TqRpYu[vJfWrRpXt]|`aaz`|il[uQnSpJgJdWoTpMhJgRpSqTt]vnZ}Sq_y[xJgQjUr^x`z^{a|_ze`gwztod`}a|fbd`]~[yjakrrieqifoxzsrqljhnpurtyqnjbl`\{Zz\|[}Xzj]}[}[|[{Zz_y_y^}Xv]|jrgldcifhirjfcchopmcfafligokirqjptyvwwtpifnq^]\}WwPqaikf]{Wwmk\`hche``hhllheehkb[za~oWseePiNiKhpihkr^dmvseopdoniffmhgobdm]_fed\c_evuttfW{dVrJfLhRjI_IcLk^~XtWtIeHcKfKhQqRmYtXtH`I`WpH_MeYvVrQkUp[{XzYwnphrrhhnjgoql{lNjcoXyfg_lmj_hsl`hafqsmfd^TtKbIdPogf\yd_~g[~klYyPqOmjk_~^\|brib]~ddgqcMnOs_aridrpXyYyVv`ck[zRsdTuYxWx]|OmUvMkOjhMlKhPm\z^|J_E[@Uw?QuD[WsUtUtg^xZ}QuRnSkKgHbJeVtZz`UuQmQlNocb{QqSkFbQm]tF`NcK^=Nq>Rr@TwJcKbQl^|B[{AYzC[|MdLcOhAVvAVtJaDXzDX{QhK^GdtcvG]QrbSp=RrFaHcSjRkJaRh;Mn1@[&-G&-G-7T0=ZJ^}CUu9MkAWx8Hh',H/TtG]MdCY{LbEY{EY{B[{HcVpLlIcOfbz^_}OiF_UtWr@Uw9Ik>QsCVxKb^DVyAVx7If9Jj8HhAVtFX}>QsNh\m`}_{Zx_}acmPmMj^}SoXv_|ac~d\|TtWub~XrWpXqWrSnd~_}Rmb}^{VsTpVt^zYvPpWsUq`zee`}\zm_~\xTsYy`ZyXua}f`xWsSsc~[y_{VuPjHbC]}PmNkgv_}YxLhJhZx[wSnYtQgNhYwUmPjYp\vToIcZuJhRp]ySmJdJcMjKfVqVrZtNfQlPiIbUqYwcgcniclacpm_|jkojpmuurpdlfhijnopznint}q^eqpgtg\}eaSu]}ahl^~]{PoQnWw^~`Yve~]|dkelnijga`}^|fcetqZjnfcib`imtupmmroglilcfch[|\|j\zWtSrWxTtbdbmXx]~cegknh`gecmeYza]wUq_~eb~\xKeUjTqQo\wfRtWwsj]nollomijeqihkpslmpeidokkgggblmnppkehz{ylWtPjUpUvMjMlPrZw_~`bRrTrToNikWsQqWvMmG_KgE_WqQlLhQr`XwctwsulVywslgihaiedqvg`hfrgdojdjhdnhjpikmgX|SrWqPp?WvL`ZqKhYsSoTqWtGeHbVpLiIbWoOmNo]zWxRt[~Y{c\zYxTr\xd^ffb`yiac[|efd\|af_g^}VuLk^yVpIe[uZyQmNiNmPkVjRkDZ~J[GY}GaCX|E]a~\y]|QoVpOlJiUrMkTra{HcNmVtMkMk``zLhQqKfTqEcF^D[~AWxG^M\>Nt>Qt>PsLhJcJiZ{ZyAXy;Pn=QrCUy?QtRsKaXt[sYpQjLfJcLfJdQpZ{]zNic[~Su]~^NmVr`[wOn^~ipfZ}ephdgb^}eZ|PrTr\xbWxQpJeKgYwUqZtKgJfOjYtBX{E[~BY{BW{F_Yp_wQk^~NmNmRmOoNiRgVtOjQkVtMlSqOo[{WuTrXuWuJbQkF_D[~AYyIbDVx=NqBX{G]I^H`\9Ki0?ZTsB\{BX{WqNhD\|GVzEVxH\{AWzLeWpLhE_LghhmIbhFZ1:[4DaBYxCTsHZz6He.8V,7REUtFVq#)B).L5A]G\z8LhOb_r>Ss9LkK^I_|HXyc}`~Zzaf]~_z\y\zd]{Yz`|^w_}bVsHgQpZrZxbfVwZvRoOn^}^|_{Wu[x_}dZ}]y]yYya~dgmcfc`Yu]z[zXwOo_|]{XvWrSqPkUqc[vIgSmc}TsFb\xi\xHdMgXtWuXqIcE_~YoNiHhUjZtKjRkQjUrUoRpTnCZ|MgUpUgOfKhRmToUpKhVqRkWpRq_xKiMh]v_v\sMhD`Xq]y`|^xYwSojqvtuzvwufqnuuqmknmpuoppnqlkmlqh^~bZzdjjdiWwUpMmYv^{bkZxdkwnabnhjmhiddqtnpddlgjhdbjtrvg^gjgVsWwMlNka~cYybhX|dg_`_\hjfgvp`Z~_jgWza[wUoNlYu]xVr]tPpLjnTtYv^z^nvfjp^mpstppttoggjnjrkklwklvrvllqopaeqlpmnhlyik\~[{ktTvLlUoZtKePoMjVsZ{`Y{[}iVxdgY|YzRtMnPoPp[xOlMjuWoOnbPiIagixrlgmpio\~`kclhhiiffdqeeobfnoihkU}orb`cn[|Wu_|Yv@VxSn[v@Sw>XsPh@Qo9Ig>Kl;Fb1@[K`{=PjOaKa9KjATyRkSoRrjMjUr_}WsYyIgRrYzlhbcqlclZ{fiSumnSmOjZ|oYuPo\zPmGbIbNjJf]xRmHcE\?QuTpWva}VvWsWuH`Je\yWrGeYuPnSq[vVq^zMiKjLmb|`}hJfCY|JfWsF]McSg;Mn=NpH]YpSlTpKi?UvH_~WqJc:Ml@TwSmD_~CVz8Gi7Hf@WwMiQki\wHdOkJfTmXr\lSlMeSi-7T.6V?RpBVr8Fc4D_:IgCQo7Fd-9S1@ZSrJ\~;MlDWz>Mq=TrNaVq[uZx^ztja~b[xZxYxVuXr_wYvZwYxYu\y[uUsMhYsYwWt^{[x^{XtPn]x_|_}Yw[yel\}XyYwZx\yeohMlPob~`~gTsXrXrToSnb~YsQkJgZsJjNh]xaSqVrdSoF`YufNkUmJgNhRfLfC]|\q_wSoXod}]wJfJhXr]vUoIeQjD\~F_OhPhUoVqLid|\vXvOiOlFcZtTnUpHcD`H`XrMg]wfbhloww}v{yoqwtnqgpz{pyytrjgvnliepoglgPsTrd~XwYxc_}]~SqOrYwb{gmmnljnegmkjegm_ddgooboknpdglonjf^|dtfXwSpXxXuXv[}bmjdokb^mkbipql`a]|dRqTsZv[tJcJhOjKfKfax\zIec~riZ{_~illslhiddtumjmrtmjlljgrrtutrjhpvurrmlknhiipmsinli]~`QwHdWnPlLiOiMgXuYyd`cgc`^|Zyi_QsQp]|ZwJgHa^v_wRpkg[wd^]}s{wvncjlfrh_~a^fkarngtteZ|aXydnpvln\|]|gYzVw`_~mvjMiJfCY}SlZr?Rq;HiP^~9Bb.;V0=Y.7U6G`Nb}]=On:Lm/;X-8T8HeDTo=Qn?QsCVx@UwLfSqKjaa|JhYvgiSsPqWwOsmmhY~Wy_}`[{\z]{\zg_}[xgXtPlLiZvaJeLgE]MeKdE]IcPknPpQtl^|F^HaWs]yMhIcRrcNjOl\wZuLh[xOkBW{Jg^|]zSqHdKcH[~Ph?St:KlJeG]QnH`Oj\zF_AUwNbJbOeJ`=OqJ[UnRmYuOjjTsMjoxHaKhbZx^yI_CY{Ld>Or2?^2B^*3O%*E.6V5EbK]{FVu1;[G[{Oa1=[SsDWv8Fh>Lp4@a,6R;Jh?Tv>RtJdLkLjMkYv]y\y_}cXxdgfnf_jeeb_~_{VqXwcTpRlj]yXt^yXqMjXxF]ATzGcVsa|VsHcfnQrPpG^NiOjTpTs[xWuNl[vgMk^y`|RlNjIfYvVuVvRjLa?UvI^Ja@WxMeVpNjCW}^~hCZ|C[}>Rs1?[XmJa6Ge9KjBZxAYzH`HcXueOme~kaZ|fSoCX}JacZsIZ{8Jh2>^0;X4C]:Hh5Db-5S9@e9KjPdIZz4Ca5FcAVw@Ww?SuF_Zo`}Ll[uh[ze`{\v\w`eZuTpXuXva{TlOnYu]vWuLjWriTn_x[|TvPmNi\zMnUtdea~ZzUqOleb\y[zZxLkOnVtTpTqbaTqUp^z`|XvMiiLlTs^zUrYvazXrQkJfPnUp[uRnQnOhOjMgXqWoKfGeJ_NfTqXoUmVsRpYtPmIeSmYrRnWrOj]vfYrNeTkKgSlazd}SlSmVrTpJgUnLgTui`|Uqc~eQpYub{[uTqddws{}vrorvtsolmklnfjrlofgi]hb_fch`~[z[z[xpgZyUvc^}jki``oxj`jkhgibekk\`kjaqpaemma]~WuXvUsSnMkRrPo`Z{\|xnc]kpqsgZ{c`XxhjYwMmYtWmMiUsa|Vs]yPjIdJhWsZw`dwoehhtxw{unxxkrutplor}liuttgoyqomlnvtlnpmlnkshcqpgjr`csh_UuHcLhPjRmIgNo_~`Vs`b_]`nheaiha\~TuRmVsSqG`PlWsZugrbfinvtvokjkntl\|pg`frsorkVycnpha^~kl_[~fo^~Ww\cjljimmhRrUrQnPqJfIfcjRpZuSjBW{@Vw7Jg>Nn@Tv8Gi3?_AWy[w_xKiJi^z`}injdYwZzY|^gggidc`}QqTrbcLkOjWuTrSmKfKjIbPgAXyQlKdJgb\{Xtfl]{H`IcJfVuYxSpZxUqOr_|`|SoHdKjOiGbRoNnLgTkNgBW{BX{LcG[KfSoLfTuMjC[}Oi@WwG\{M`Wn?Wu:Mm6Ee:MmTsVtOlTrUrToucfyqNgZx`zE`K^Nn9Jj@Qq4<^Q^EVv2=]8JiRsJ]}Qt.6VReSqOnKeUmRoJhD]~>QtUqLe8Ih8GhB[{c}RlGa[zkYvr^~LfogkmRg?SuD]~AXzKegOg4@a6Fe9Cf3<]PsTnF_\woSwOpdaOsMlYx^~ancMm[{NmZzUqJfF_NkJfMhmcvZ|SrMhATyLgWuJg^yRnRmSsburOnHaF`JeXs^yUoWuYvQiKgTmNcTi9JjCY|`~CW|HaPm\vJcCYxPd>St@VwQf>RtC[{E^IbGbnlPnjfPgYthwnUqJgXt=SrE\|KdBXxVj9Kk@Vv:JlNcNd>Qs>On7FfRdGY~AXyAVxc{M_cf]~TpZuToQoMlYqVqMjIfHdOm^zQkHbNiOhLgVp^vPp[yXuToUpLfPjQnFfVq[uSpXsYtYsUr^}WtNiGfNjRqXwiWsTpXsRo`b~]xVrUsTrJgQlZub`}`}Vr\yVrSnXs\w[tZuNj@WwI`RlPiLbRlVpUmQjXr[vTnMjVrOfEaMjVsToQjMgWnQpLkHbF`NgQjJeD\NgWoYsRpQlYsTrLl\xWs_}^|b\tToZwXuVrUuVsXsYw_z]zUt]}e`TyQp^zb~Ss_{YrHeWqVrUqQiSokgqpddulfsgWyXybeiotnjhev{fc^~gifjefbtrgrfciw}^~ZwYvTqLkSqQmOjVr]u[u]|\xNldaWxlhiZ~a]{n^jfablkhcoohfimsy|mjrgfrtnq|vwtnypzvlw}w{yuqnvtxptxxwvtp|ujjjpu}y{zthmswlljbcjnv`iqigUw[{]{ToOhJdDZYsVxfrfX}c\|]agdkhgtiflkjdRsTs[zdWtXu{Uwhcgwsjttrhjos^jeqtrgj|wlrk_}`oyf`sVxgyditsvvvqsqhjmaPtg}nSt[ySpOoVupsWxWvdablne^b`wMeC\}LdbyVqYyTvfZzd_Zy\}WwWvhcVwYx[vSs_|]yWuRtRp_{_}ib`~YxNjJdPmTpmfPkIdYypa~_~hNjRmOk_{ZxGcKkOjJeJeNdTmF^IaPmG`NgHeKeIaF\azIa=NqJ^K`E[|SkLgGcXweLl]TrPjNgMiZw^yQqWy[zIbI_~7GfCYyNdPnAVv_|C[|?QuL^D[Hbd~ekXw]yb[yZuVpPlOkUpWtSpLkYu[vHePlXsTmHdMiKcE_KhQjMha~`|[wLgMgNjTmWs^|Srea~TrSpZ{c|a{VuWrTqNkUqUrSnVrVrQoPnWu\zVrNjeTsNj[xVvVrbbVuOjUnNjE`JbAWyBZ{SjH^D\~NeSlKcQiQlUpEaSnZqTiNhSkRlOiSpVrQmUrPoYvZvTmNg^xOlJeZsUpJfZrxd|XtUrNl^|_~ZxRn[veVuVq^yZwWvWt]z_~ghdZv`}]za}TtOnXt[xNlSq_{Zxd~i\}MkWtoltt^~bhtmgqn\~fpqqgcipkknl`gjjuvlpsmljd`}Yy\{hYxNjIdOeF^KgIf[rWs[zgfb^Rwgkcrpe[~iqgellgjqopopnjlrx}tsvxqrywvy~yorwuspjvvzwyvluywrrypywmjhpypv}pffsrpehhknc\bh]dUtYwLgIdToJbLe[wZzSwahimdga`dlgvtgchijmdXxSrRr\{npw{yokbcjptptnokcftvml^mwhhkwrd^bihu^cl|kyzlqsnrllglcZeacukOncYw\zpmk[w_jmw^ZdLkMhQi=Pq>Qt[qPlF`\u^f[~]~Z}\}kfaafZvMf^wEc]Y{X{hgVsZ{lKiJgSwUyGaIcdfTqQpcVvf`NoOoRm_zOoKidNkVsKc8Gh5BcTo^F^NfbNlD[8GiASvMdF`>QtQtHa>Rq2@^TtNe?RuI[~Yr>QsMcdg\xVp^yb{[uTnOnRpUoVrLnSpZt`zVnSpLkOlNkNjVpKhKgMhOi[t]z_}WsTn_xSpTsTqWwZyZxZxQpMlVpe|\ua{UtZyTs]wTnTpYvUrRmVsHeJeOlbz^zZxPmRr\uSo]yUvTsRnNkNkOgPfSoKdF^?VuBY{[q]v]sE`PiQiOiJgSjQj^vHaOfSlVpWpUpIeGcNi\v\uPjLkUqXpa{OjLgia}\y[y_}gYvTpXrSpPrXuE^Um]~QsZvib\ygi_z^~SqPn^Wv[w^zQnZyVtOoolgLl[xka_kqkghhnvhhncceyxagmgjloicjvyptypvol\zYz\{QjJfKgBW{axMlMlkUoSrea]af_kb_nwiojhlejlilaiputrnov{tsotrrtittllyp{yutjtlpvtpyrt{p}|yttwytvzxpkfslpplmrlfji]irj[cgt`_b\}LeJdRmPlE^Xt^zUyg`]|fql`d[hlctgir`dplhd[{Jedn`qtmdapruo_r}xn_lorwpukabqpiif[hqofhrply}nroktfdqi_e_StaZ}ihUu`VwWycrc]xh\Xztsj`Tt_zUpAYyNhH_B[{Qm_yKhTwpe]YwVulaTwWw`Iecea~a^}^hd^~\}RqPpRvNnSm_}QqNk_LjYyXrVtQrLiVtRqKgXqQjD^YuPjATv;KlBW{WsH`?UvIiVsQhE]6Be8HhE]z?XtB]yNiPjF_kcGdSsc}Sl\xyoIbG^E]=QqQgXlNhCVv7Ef:Ml=Pp@VvI]Rt=PqKbCZ{?Ru]zGaToj[zeUs^wNiE`VsJeUpZsUnZzWtMgMh[t[tSqTlPlLkNlSn^vOoWqYsNlLiVt^{b|MnTrMlHhQoWtbbUvSsUrVp`w^{Xv\z[t^xLlTr^w[sKgUoVqKjNkYufmfYtYrQmMkXtZtXsJhLhRiZtUnSoD`?WuC^}PlE`LbOfId[uOiKaGdIbLdOeYnVrUtNmNnHgTnVpQnMjPj[uLe_uayZsTnPnTt[xa|VqZsXtOn]w\yOmLhazPnNnZv[yVs[wRoJfefc\xWvUvQoVqSoUqRode^{PsOrh|h]flpnmxpnomirgrvptueampomqskovvntlZ}hdNlE]LiYvdOlUumn_rkUyVwhljhqienmikjlifsh_deglwxwyjpnmntrtrlv{omsnosux~~wtrsvsttruwlryvuporwtruqrtsiiojqvhijggnmdjjcopb`RsNkNibPjUt`}^yRoc_ifikqlkh`applplea_dhaZyee[|qpsywjjiqitqjsojcol]hrpxl_cdX~]}tfaqukqwslmu{slntrcnfarp[~b_~Rw\}[zicKiOp]}ikkggcejpj[zUxSvJcAXyLeIeSpJdQmeTs^{WyKhXt_~\zVrKgPjvnbb\{Y}SvNhVta]}Z~Wya{XwNmE`\uOlUtXs`|SqPnJeLjOoWrVqJeHcG`?SvEZ|PhD\F\IbYzHc>RtD`~Zm=Lm2A^5EcDXvRmNiSp]}NlQrkLfCX}esn_`d?Uv9KjYrQm=Po9JjRj=Nq6Cd;MlSgCUy9Hj?Qt>PtBRuMaOiYtgbWy^}cYwTqRpMkEaIcVpYqSkYwUqQnPmYuYvWqRmOmHhVp]wWv]wZvUrTnJgVrWpSq\{\xHfPl[v\xWsc`_{c~XvOmKhPl\uUq`Zx]yYsQkPlXtLiOlLjNki[xZu^xYvOjJeRjRk[wWs[uGcPlPjVqMiRmSnHbF_OiHfYuRjXnJhRkMhNhPkVpLgJgMi\x\wHeSrUtVo[tVpF_KeXrZuWt^z[uXtRn]w[yKkSk`wihPlLiVtPnQoVs_}RoKg\wXxgkWvOj^wTn^|b~[z^}cWrNmdoomhlnhmmn`dvkqvqy|dnt}tfbfdmwrnnqmkplddfSo\xdWtQq`df`\lplprjmqwlpwmidsqgkltlqlhjwpnspprstrtrqghkmnfahghjprvzppxqlwvpwvoyywrpyxptqnv}tnsuslnlottlghhekkdlbe`YxTqPp_z]|YwXsa}Xxhihihkhenjbcjlqmj\~\dQr[ykgfrjninrknspiptn^ga`tnjh`lormifjhg]~ep`ijr}tmwtwjkiqiov[^|rm_]}]Z{bcXxacZxUuWwuln`_i^fjccUpYrTnBZ{Ga^vZvTtNo^}aRt]{{LkIeGaLiVpLiSuc[xpeQrKeLi`~_}jWz]za~TtdNgSrQpLeXuMlTqTnLeWrJeLhNlHaRlSmD[~AZy^~F^E[^}Tq@Ux@Uu:LkARqG_@Tx=OrE]}WqWuVua`IeE]JdRoGb>Os^|iPm]uAYzNjJf9JjI`BY{Je[s?UuXxG`?PsXlJ_7Eg7Eg:KlOcdz\vQr_ZxTrVsYwPlVp^xLiHhMjMj\yZvKjQn\uTqOlPmQmQmRoJhZtXtdhXsTpSm^yYxYsYtWt[wXuOkIeOo^{b~WvYwQpRo]vQnKjic_{b}OlTqVsJfMjSqYvQoF`b}qeSlPjKdGcKh^wMkNj`yOiJfRm_zPmOiOiQoLgF^RjGeF`MfUtRmLfLfIcSmVpPiFbQnZvTmQjWr]xPmJgWtc~e~\w[va^xYtQoidzjyYwSm`{TsYvfaUtToRnYxZwYv\y\tiWuZwfXvWwjXsbtkXyffiprlmncY|mhpnkv}mvx}yrnjekhhwjqtcia\{VrMha}\zVs]{mceoihnyzvmlkovxsfprtgY~cnhotsrnm_irxsgjuprtiei\onlkjgel\~hnmspvwtnpw{ts}wvyy{{t}woo}tor}yjjslah{ih`gommpvf\xVuVtPscXx^|ejh_injhjjihidjhgpeh`gmj]|[yawurrnsnqrlqwqkfmlh]`gojclnlonkiugbhkvtowt|quvwpxll`dvo^idfoliTt[\g\z\y[|`\{ehfeec^glj^}QnLi@Vx>QtH_Ke]|ZzOmNkTuSvZx_{PmTmWr`r\KghjiVveTpJiWtTsXva~VvWwieXuQnKhMmVvMkIeOkPlLiMiQjC^|GdLdFabRpIaiOkLfJ\J[z4Ca9JjDYyPa;PnQmPn\yoWtLiVwCY|@TwDZVsPjN_RsYx^~>RsD^~OjOiE]zMc9JjK^]x\xZyTsSqHfFbIb`y]ySnNlXvUqGgUqSpOjayOoOoUpTmXpQpLlKiLhWr[uc~_y`|VoVpVqXsZyUu[yb}VsIgHgVsXr[y_~_|^{WtOkZt_~UrZuOp]|]|\t]t\y\{OlKfNi]w`}^yJeG_~KfEaQiLhVoUn_yJgSmXuSpHdRh^wMhEaMhQmGaNcMjQmXrRoTmRkMeOhUmC^}Kc[tSnMjRp\|VtUqPkSnLiTrOoZv`{[vne|SmZrdWsaxd]t^ze^}PnWq\|OoSpZud}Rpbea|TtYzdgjilcjofprii{pameakkozrl|tsns{egahhqnqd]|\yVsTmZuTsSnUsaljxlkinrtpwuhgnzrirvrinpkcgm{wrljjgqqimmniiwsrtqihnrrgnd_gkpmrz|qrx{ot~wryx}wvtstvtwpsolqppfaloilnhjgeliWrWsXwPqTrXukpmbahjliolhpmjfdmglmrojhof\|mpkxvrojpzqenqjdklvkpgrusj_elggjpngojtyr|oknmooplg`arjdjgmehb]~ieggm`bgaepocgY|_bc_zLiKdC\}9Kj=OoK`WsLjRug\wGda}_{[xNfHbXxv_]TwdPnQnhXxQkVv_{PtYy[{WtOkYs_}ndZzJgVuKjHeKfE^SnLeJcGZCYzBW{TpHeJcdyhLf?SuKe=Tr7Fg1;[FXx?VuGdMhNmNlgqlJeBZ{YuIaBX{Gc?VuAXwPk[wD_~9Kk3@`?Ni7Hd7FdFUvTmFaKbRlWsIg@WxH`ZrUkZvYr^yVs[xd|Oj?WuHbPlSnWm`zQnJhOjWsNkXrEaOl\v\vRoPmIeVmYqRlSkHfRpa}`y[tUrXrUrVvOod|fbeVsUoF_Xr^}YxaXs\x]zRrRrTs[yb~a|YvalUsKiXpOjMnQoLhMhRoHdC^}G\KbC\}JgYuYua~ZvRnQlVpVpKfJfMh\uUnNhIbPmFaVpSnD_~OkUmLgIfNhMiLhIeSpWu\vYsVqNkRlOkToXtRn`xLkVvTo^z[uXukljb^z`{femSoQmZvKjcqdhhkddpe^kfntimrpghrrtZz[zlrcltzzvigpuwlscfipidZx[zUpZxUrWrYtaevuhvxnltnt|yuortpqporstlipnnqlqormmjgrpnnqt{so}vonjnf^rjosggquvsypytovyvtv}wmnw{yrprvtrwrpfgrfrmbneijc^}dc_~RrJhYu[y^~ajndisnhennrpntpggflmldZ|fsjibt}wulonlnvvhfou`mqp{gqwmiusjhloeehnjfoy{yrwnaojrnY~dlogdd]bmmocckam`Wyf\~flf`elPtXvrbhKh?Tv5Ab7Bd6FeIfiZxJhVxaLiKhVq[sUsSrZzlthaVv[}UuOjTtaf[vUu`XwVrNlTmig\|RsWwPnSoNhPhEZ~H_SiEX|APtJcPnE]CW}RrSm2<]C[xG^~HTxSs8Gi/Ts?UuPfRtIaFbLkVpNgXu`YxZyPlNndPpHeWtb_UuXwel[z`]}\^~dNpQlUoDZKhWwJfMe>PtKc`|d{H[/=XZtH^>NqRkE[J\N]{aJ]PjOkUuKgRp\~MlLhUs`~cNmNnf}YuLjWva`cjc`WwdiVyUtXxLlCY|LhJdRoOlC[|@Tv\oRk>TsF_I`5DcA[wMlOd@Su;Ln0;Z)3M:Kd?RoE]GaTqPnJck^}baRmJgJick>VsSoSoVsLh=Nr6Ed4Aa9LjUlJ[}7Ff=Nm3?`=RrhWrJlfc}]wb[yYwSsVsPoSnKcWsZuUsKmIjLjKgRn\uSqVvZtZuQpLiVrPoJeTmh[wHhNkYsUpUqNhGgMjTpeZxWuZv`}RoZx\yJePnKeVrUqSnJdKeLfIeVr[xUqYxcTsdUoNjTqKiNgPfPkQlXpNeKbOhC]}Zu[vXtRkOjF`JdJgVpQkJeQm^|HfKgby^zZwRqMiZsWs\xRnVt_{b|UqWuKhOmd~[wJhXtWpazb~ZuNkYtea}_yVu^{eVuLkjXsUpcchwc~GfTr]{id|Zy[{`d]|^nibafdlqgbioigkrjfsjtuugitkkmbqppwyvvucihgqf`ilturwtuwwtnnyrx{rxsqvms|vnnuvunintpn|wrtvvrxnktswnsspurttjlnsvpnwmkpfjpou{uppmsyyulo}}v{jsqsvspjibgoZybjVtVra]|_~a^~hlgfqpimoplvrfqkiglrgilpe^gmnrgr}w{pjeilorwv|kegqrzwrusnlwr~zwmvsvjrzle}hsupdlnhglqnirgi`i[}iX{`qfaeb~VrSsxnUvWxRtc]~Zv\y[{b`TtNh4BaUs\sZvZx7Df3@_BUv=MoVtKeZtIeMh]xPlNgMgTqNhMgMiGdKhVt_wTnSsTrQjVs`|Wt]xSmSsRrc|[wKk^v^w\w[zUvWuZz_{WrQnPlQmVsPsUt[{Y}VvTsc~XvlfZrZu\yYyRpjY{]}mijnhbjemkdaicuprgksesteekjaptlsmltjls|pctqqvnssmumvtnqtkyvrvxvryqoyrtwpzv|plmnwwutrrrt|yptzwwotzxvtrzroytpuirxvrtprljmtqehgpqotd|~rwqtvelsklu}}rtyytsnnlemk_`Twjrb^jgjqrnnmriipvmlpvtktdnhovjeivplgltv|stztnlri_mvzzjkkmut|qegttrnvzquvvnvqljrlryknlji`Zy]}b_}hYY|hkddncj__~pl\}NkXvamYyQm\yk[x_{`|RoXvdC]|7Ig6Dc9Gh]x_gmiaRkToKjVy[xZvOpZ|bXxZymTsOoXzcYx`cIcYsZzKiJcF`G\VqVm;JnCVxFWYs6Ce7DfDZ8Jh5BbEXx\-6T(1J$-D^rdzE^b}Sr`}_}aNiPlYv=PrQj\yTmPlJib{3=_0?Z7HfF[}=KmG^|@XxHb?VuGYzVq^|Xw^arYwTrVsRnQmUmWqTnSpPnQnB^{ZsTpLgFaKgLjWqNhJfQkJfE`UpRlLfSmQnQnPhQhMeQgQkMj[zXu\w[wWwTtSqYujcUsYveZyXvXrWuWvSo^xf}PmSrcheSnWrStXtIeKgE`IaIaNiNiSiE\|KfGbD^OgJ`KcDaNgIbC^}LiUpLgGbSjWnOoTn`wYuUqQpIfWrPoPl]y[xPnLhUtVrb|nZyTsWtVqUsWqc|Pn^z[wd]yXrUsSrZuvYsUnYta~UoA[yXqvujTs\|l`~_~eifgahokhpfccadkllprjhocjrsl_kmqpib`bim`dmtw}tpqsy~wsylrvnqtvprzuy}txnyyupln{wsvytopzzvuxyvvttrqkotqvttvysrltunjrvvuvpelkiknc[{eushptsylnokottlptnpsojklejWwQueci]~Y{rtoinjjvplumjypwucfigrtfm]_ifbdpwylqtrmnxl|ztshq{ntnw|yplxqrprv}tuvz|truwqmwvlmmkfedpdgnqgdj\|[{kfammkgdknaWu^~]}^|gQr`WxhaRqZw[xcXvVu_]xJc;Qn:Ql;OnF^]{\}xqWwfYy`|pXx[}[{KjKhZslaRqf]^}c|QmJfTrFbSqSlIbQhBX{L`=PrRo0:Y;Lhg}'0H-(1G6C`TsIcKc\7IgLhXxWrF_@VwCY|FZ{2A]?Mj;Hc2?Y1@[1@\6Ge-8S4DaH`?SuH[{j^|HbLePsIa?VvGbAUzE^LlTxQqetmQsgxUqPiToVsNgQlTqPmXrRqPm[uKiQpToVqJhLlQl@\wPi_tSkFbEbYrQmHfNhOj@ZwC\|UnIgOiLiMmd}_z_w]yPoOjFaSsXr\tc[v^z_{ZuJh[v`z]xKkUog\{YuXwJjWpPkPlRiF^~IbSlH`C[}QhJcRpTq[qRkIdKeTray]w[vMgNhJe_{eUrQkRn[w\vSmMjLdNiHeVq^|LmWsh]{[uLl[zic_{SpUrdgQmNiXuTrXua~]yc}gTtZy`}Qn[xhKhNfQlMjNjWr\x\~h_{UynnjfX|Y|kpimjb]}jnprktfliaimnc`degegjahjYx^~ddcjrrkfvxlnntw{usnpwlx}yuqyuzytutupomtvtrst}{w}xznpvyqde`llehllprxrryytn}}rputqnoqlovsd]oa`rc]~YvRrTvgcakrlpmoonvliech\{XxbjvnhmmdlrrrrrrmlvrmsjprlnefoiiXy[bncmy{t}typknvt{wrnpxp|xy}vuvvyrvspv{ziiqtjsrrvnsupp`kicqk_ouhaloa`fdvqin_afkvt`gn`n]U{re[xNkZuToLjPqMmF_FaJe7Ff%,E-;S.9V.9U2B\F\xRjLfQqMmPo_|YwMjQtfiRpXsQpNpTqSrKh\yZuMiPlNiKh?UuMh_}CV{;Nn5Fc0:Y7JfTpF_E^}Kd>Ps/NrUrLiRjHjNnPmKhleYy\|hXuG_IcRmD]]x?Ru=QqKdH]LcYsXuOc?SsCWu7Gg3B_=Rn1>[:Db;Id0=Z2A]3B_BRu9KjK\Qf6Dd1@[3C_Of2?]Qgu0;Z$&D+3PH\yMe>SsC\}D]Sunw}lHcFcdqOmIgRia_z_zNiRmNmUtXtSsTpZsKiOn`ySkUoToLjTph}WvRqOlEcXtFdHfRpPpUqSk]xhb}Tr]zZx\wUqVuTpVqayRmOkXsWnYtKfSnXsWqE`UoJiTlLeMiDaVqb{XuWuaz`yOqTqTmVnPjB]xEaRmWpYqXtNhB\{OjOgPkMl[tRiD`FdFb[t_zYsTpPlXmQoGfD]~F_JdMlRqZwZvWtZxbe[uTrUwa|_zRrSr^uc{MlZtWsPn_`|TrWt`{VtZuTrPpPiUnMkPhDZ~D\}EbIfNi]|Uw`}VwSxki\|a~]|in[~[z_}chliiZ{dqpkpf\fnjahhoinYxSqRq`ykeeTqeheppjj`eznoqjb`xnhikt~}voy{}wqs{yvxtutnrurzwtwxnspuutttttrlllrwwutzuvxxpv~{ynqytoroptgfntfce[bvhef_immnl[~cmppjse__^W{Uvn{smtjqk_rahkommlwztnwpvlaelmie`t{wwrtt~vur{}w{ssxr{}y}roxwzswyz{w}čzpyllxrr{vnttllpglm\_qjfarqgomikaipdg]}[cteiddk_[xZxTwaog}f~sZvStQsLaLd]v6Ee4D_9Li0>ZGXt?Pl3B_@Ln6Ce>OrCRtAVw>Pr4Ca3D`:Lm9KjRkSo?UtE]yJ_~3?_4DaPeQoUoJfGbVtbjj`|Jic\yxo[xSsVsRnYwNkNiVq_zVtVu\wNmQmUpVqYvHgXlUnUpYuUrUqTnHgNlXqZsNkVqPpb}TpPnXv]xYwVrZyVu[yZt^vVrTlYrPmRkSnSqUpIbJhYwb{GeFbQlWrKhHcLiWtZtKfXrUpSkLeOkRnHbNhd}TlToRmFbNkYtSrVmZqOlSn[uUqKgMiVsJiRm^zIfOfOhE`FcUnYtax^zJhWv_}Wu`|dOkQl\yTpPm]yWtFdJfn]zYw\y`|WtRqeVsJhUnJgUqVkSoa|E`G^WpTqMmNpf\zbf~_[}jhe_]{]|`fjovbTyko^}ghheji_g`gqbfga]x[w\vj]|a[z_iqjk`jrfdxnijrdecupr{tw}}ytvsvqyt{trwwy|wwolxqsqlpw}yzrur{wsy}zwuystxywtvsvtlpu{iajrpiiX{jaUxjgbeZ|Zzlvvnelv_mim`hg\|yyjtvjpqlrkmmpmrpsyjiwyslend_`owrvyrtysqrwwtwwowzxxxvt}yxnrrlr{y~wy{trsxocjxxwnnecfgnl]hlajfijnvpl_fl[}cjffheijWw[}jmTsVwdIhFbD[~g[Rr3>`;Om\o3A`=He/9V-8T*3N*7N5D_0@ZFRqEVwSpGWwJ_D]JcEY|Jdb~WwNqQtLkG`SoXoF`Rk@UxH^?VvZ@PqFTy=Mp2>]3A_8Fe8HfG]|\s7Cf6JcBXyMdUoPdCTv=SqB[{GcYuwTsHdIeHbF_JfrlhLinQlEbKg]w]xTpUoVp^z`~\ygdQpPnPjSnQpTkWrOkZsXuUoVo_{\zQnUpQmNiLkSpIfKgWrXvRq\v^xZwQpOnZvXse}_x]|SrRoNmZuRlNjWshVvQkPl^yFcFcIePoGbD^~PjJbTmNgD^VnVlIcHbMfSlOlOlSn[uUrTpIdPmZxMhTmVqXrRnMjOlXu^{XqNhPnLfKfRnPmXqXvLkFdSqWtUvYvNeTm]|Lh[vZxVuFbQjTqRs[x_{[wXzeZxJgGaYuIdKaOkjnG`Zxa}GcJgb~i^}\yl^}`}cagdXwVw^~fhc^|ekj`kifhdb_dhde[{gqdZw^|^{_z`_hjhfarultpjckfieolelekvrwvrtyyr{x{zvu{wtxtwtoukttst~rptwwrout|wuwy{nvlv{yttsljpgnpmrglflne[|ffheZ{`\|mtrlmmjnpcX{a`\zonmŒ}nps|lrrgtpsrwrpwrnuhf]^otonp}{vwwpyxyvwxvzxutrp{suzorz}vusswy}{}vttvxwsssrlrqw{clrkro^f{hgjrlfp`]~fppkU{V{ndam_Y}ecYyVsMmRvYsOkWugnldIeD\~J_@Tw9Kk5Bc3@_-9R'0I,8R-5T?Op;Ml9Jf?Lk3B`?Ut>QsAStNa=Oq;Pn`v\~KmF^CY|PhXxHhI]PbH]}\wVs@Tx5Dc7Hf=Po5Ec5Ec5A^,8R-9T9He@TtAWzH[}Ob-5S8?a.7VJk=Lk7Jg4Aa/X6D`7Fd1A\>Jj>Ln7Kg3@`>LnF\yQeQsc[wCX|E^}9Lj2?^I[z3B`3B_9Ki%,E+4L0>Z:JlARz>PsPcW/;X,6R4Ca+6Q9GjEW|I`QhI^VqVrAVvV+8N8Gc:Gg-4T+2QI[ATy1<[>TqVnJ]{H[{H[{?Pq9HeM`F`BY{IcelE_WtgZwf]t;KnB[{gmjJgQlUoTlWvHg\{XpYtNmFcB[{PhMkRnHcQmFcGbNf]uXvPpWoNjXvYtKfUpOkWoZuTpKgQnQmUqVoKgMgPfMfOlLg[sToWqTpPoUqRoMgC_}LjSnMkYqZvQrLkOlUr_{f`|JiQnTmKiNk[uVqTnPiQkQnXqZuFeOjWsWtVsRnSlSnZxRoQnTpYvYy^|\uYsRmQm[wNkUp]zWsKhZxfTpMqLjVnYvVxWwQnZx^{WsVpJj\xRo\vYzVvZuZx^~RqQlE_UsToKf[xQoLi`{Xw\ygXw[zYw[v[y^dYx`f]|\wjdak^|ghclgdY|^{dZzb~_|aiokXvSsdcKeTrdSr\zeggjh[zdrlfjuytohgnrqeiwnu{ytkypoyxnpxw|~}}|v|}qpntrlrpuryskt{snvvnyzwyyxqtoionqllpsmflleijhnehh_at[{`figoage^TrRsnrngiihmpqnmltwrnnqpnyqnllogihquprtw{}tuyyt~{|qwsm{{ptywyrrptytsr|ws~|xtvvtl{up|tvx}{uslp|pl|oxpnswpr|ujr_ronmurbclbcmpa~[~_~[|avnfnmpjmf`bQqa`d]zfcXwd\}_bfRrXwSshWrMhF^F`JcEZ~6DdQpJdDZxFcF_NmVrJeOncTrPlHaDZ{6Jd1B\4Ba>Ll*1N,4O?Np?Rv=Mm5Cb.7V:KhFY{NeLg@Ur3A_]u^xKh\|TqVqPoTr^{laBXzATyC[}LjsWtVpLgKfKjHgWrbySqZxTrSiHaGfIgJhPiNkHfPhVoUmSlZrWtRqOl\wVqHeLd^{[vXtQnYwNlPlFcE`PjGdIgOjMeQlTnRkNkYsazHaMfOjYtJfKcVuaPoJeYqXtVsToLfJdPkMkPnOiXrRlGcKdJcHbGaFf\zUrLfTn[xOmNkVrRqMjKjNkYyTr[vPlRp]{\ySrc|`{_}TrSq`~`}JjVsqSpHeUnd}]{Vv]y`{RqSn[v]yZ}`WrPmUtOmZuRnYwWt[uSoGaOlZu[zZzgb}Rp\zcg^gZ{]|YzVwZt`Yy`}cXx[xhbUt^}f`bVvY{gnjaheZzhg_|IgGe]{f^[{_{el^^~`erksov{~}}xopgjip~yytivutsokjyyv}}{t}|vpv{xppvzvwspsrwptrpw||tuvprtvlkotpfjnrfbllpokif`\}anrnSv^jod`e]]zVvTt`uookukisixzmmtlrwpgnpntqllonswpyy|rsxxvvtvwx}xnvvqqtzw{xsqqtnt}sw}{wu}uyworwwzuryyqnqjrv||ntvptxrvspttqpprsqlrtfnpmtkY{`hi`Z}iwktghqiml`eqlhoibmb]ekbe[|]|Yx[e\XvFaNlMl]{IgRth^iYx\}]|So^|a~Lg>Ps>Qj5Gb,4R6>\?Hb1?[9JkAQrCNp=Kl9Hh0=Z;NkQl6Fe7IgOmToE_WuVpYtFcUp`]D_C\{n\zAWy=EeTrTkQkOkOjOnYrUmQoSr]xXsSmHePnJgJ_TnPlSnRpPkPgC]|VqRlWqXqWrHgQkQnMjSlZs^zRqNkLhSmZuGeLiNhIfMhKeI`KfWpPhJgC\}PkWrYrQiXt^|ZtMeSn^xVqJfToLfJ^RlRmQlRjTnToGaOeTkC_}JeUrZtNgMfLhKf`z[uUrWuVpOjMkSqQlUpOlRq^y^~_yYu_~Pn\w]y[xPo[wueSoZp_vOjD^~[xgdUtQqWzii\w\y[{YuPj[wXvHeNgYuWtMf_y^{bUrSpTr`~hZy]z^|fiYyWxk]}XvhStNqarcQo_|a^|d~ZzUvemdOs]|n`}Ww^w`TrTp[y\}_|a|lX{akgjlinpsvxv~yhdjspnlqsvpytkeoxpwwt}~}ywtnpr}vy}poppwyttrwwwnqrr{rnfjlekdmnnlnfslggY|bd^~jbiosneeeYybb\{dfhnpuikvdp}rsysrtuptqpqqolnlxvp~wopurt}tvyq{ysyuppuuv}ttvrsyvw{ōˆwuwuw{wyotwyqtt}vonvp|pt||t{upmytoppr}{zyrqtplonnmj\^nnlmyhpoZ|cokleiirrhfmj_ekfc_]Xx^~`{]VwRooQqKi^~d[zY{eeTqMlcd@SwIYwVh*8O-9T3@_3@^:Kl@Op19\APm8Gc1?[LnBPnCXx@RwASw;On]{d}^uiOm:Kl`~^|XsuIeGdk9FjBToTna{VsOjGcKjYqPg@ZwZqYrTpQlLgMjNkWo\vcTsKfLeOjOjWnToLgG_E_GaHcMgOmUsVqNiUoFaQlSmYsLgOkRmGfVsSpXt\sTsJjJhTmXrPkNrRqayjQsFaLiHcCZ|H_KcIaKgA[zAZyK`JcJfH_A[wG`VmSnOmQkLgC]}FaLgVp`{QoUoSkXuRlWsOlSlSjXuSnOmJhWu^y_{c^{PqQqYx`~XvYt^{eQnIfd^{PoXvJg_}TrYxRseni^}]{QqJfQn]x^zC[}NgWtLkYsZwe]~Rt_}WwQq\{XtrWyKiMlQp\xd\zTrb~lig\vd`dVu[xg^~^~`Xz]}kdOkWpXsVu^{QqZy_yPk]{cXxgb^|kijmptgqslpsgjijrwkRqa}ibhcamh{kmtry}}wv}wpw}yu{w~wmp}|}}ttruyvzwwwtvtgjjjrpgrafW{d]Zz\|njmjrqjprleiiilvlppked\}r~fWxbVuaihyrpqvzlhsnutyuqottonleeprswssywx{ttuywv}yvqt{uppstqvswtpvqptytvrnptl}u{v}zxwz}tulcwyrszqtv{vvv{srwwwhrpotw{vnmqvvnmstl{|hknjkntpfhadyspgY|be`prd[|Tt^]}WuNnNkhWuaSsbnlkjpTrE^{LgK`0?Z#'=""+=#,A4A^@Ts8Jh>Sn?No,4RPtUiPjRmNmNkKfLiXtXoNdKeOiVqQkIc[uWuNkFcZwd[uPhKiYsVlMjTk^wNlD]}H`QkJfOlKiMjSnNiOhE`LgJfMiVoNjYuNiRoVoSpYvTqYtNhRm]wYqTn[zPqVpNjNkRlD]}A[zBYxIbD^}F`}I`MgJeH_G`LeLaFaQpOgKeOkGbIdG`Vq\ySmRlZuPlNkMkUoKgNi_{SqOiTpYv_|XtQnZzYx]zPnPoPlPm`}TqMkZwYv\{clXvWvdTtbgbRrUu[|bTqOjE_PjYtUs\yZuSnYx]}acTsNlXwYwbbYyb}Wv]{c_~TrOjTq[w^zkYwRs^~bWu^}_}bhf]Zyc^yZuHfZuUpWv_{b~]yWtTq\zfdhaeXxdl`inrelsrrjX|Yymld\y`~ifhbqojpmlrvtwxt|vxyvwrz}~wrnjfjw}xtrwyxqyw~unpqjkjgjjinabSt_icgmhqigorlhqgivhltttlxoc[|ila_ilnkotvmfurpqrxwytmlolhjwyruwvryuswutnwyvzzzrpswwwmxuuvwptrxsw~plplr{vnzrj~qoyyxrytunryx{zzyuyytw|ns{x|rtrrssnrsuuv}slnpvyphgpfkrpolnjcekqxjnmigfmhea_}b}]}ZvXtMkTveSqVveibgRoB\z@Vv=Pm1>X)-E"''$+@:B`2>\/=X4Ss>Qq:Ll+8Q07N)1F&*>)&'$)D+3Q/Om9Dd6DeDZ|8DhG[ToAWz9Gi6GeJ_>TtXsdIa=QqVu]yIc\v5Dc3@_^sOl^va{NhE`MhJ`J`C\}NgJdD^~OjSnYuUoOjTo]yZv]vhd~c|d}UsNmMjSlD`~IdIcKd[vQmLgD^~IcYsa}MmPmWsTtMhVqPlSlMgQjHcKfVrVsMiHdOkRpOhKdLiRoPjYtNiNhLfUpB`{=TrMeNhPjTnNhMgVtXsQoPkWqTpNjWrPlIdYpLkFcVr^{eYvSr\wSpTqZw_~fcTuQpPpZye[yf\|MlMiXuYwYva~MlIeprPmQqZz[xQmKiNnQlMeMiYt_|QkLgRp^wVnQmdRpNm^w\z[|MjYuVv]{fcUtYxjo`}PmMjZwTuXwcgQnal`{dahgembYvFcGdWoRlPiIcToSpQoVs[yNnJiVsVskiTtSra~Ut`}eiamil]{clVxTr`}ddmg[wWvfaloppqprtvljtlnekpp}}t|t}ty{si]zlvrb\wNjLjRqhcjkc^|ejlodigeflnfggdmngmusrbcvtknntkeutgnb\zb^}fdbnmjlrxojlqrymgnrrrhpwtsv}}vqx{{{}~{{vyyt}sry}{tqx|vy~y|pwttvuquuw|w{tyvt~vpvwvxqtzswvvyyturrprtwwynxqjgxtwtwquxtt`dmpsrwrmvvtvsvqlhlp}nff[yYvdRpHbIdF\YvHfJbIeUsSo?Vu0TtE[~CXwBYw7Gf2@\5B^0>ZEZy)1M)4H8Ii8Fh;NlMhEZ_@SwNhI_QkSsUlJ`?Xv?TvTtiXn:IlBZ{OeMeMgYwSn=QqJ]}QmOjOnLeMeXqNiIdMn^|^yPlUpZt`|lica|UoGbHcIdVpVsIdGaD_~F_~C[zPlWuPlGdIdSoLiLiKfLhOnOhNfQkQlWqHfQrVpOiIdOjNh\xj\v\wd[yVqFaHbJdIcHbG]}K]~Pf=Op[9Fc5B^J[z>Sq?PtLaQgOeRjKe>Nt>Pt?TuPj_tDW{=QpJ`eWxJbPkSn]v:Lm7IfYr`|>PrMal\vYsG`JbKdE_~RkLiQnZrYw^yVpSq]{c{YvXu[v]{UsGeD^~LeRoUtFdIcRiJdFcJeJgSmLkOmJcPkMjMlOjSmYtRpHeHeQmb}VpNhOjVsTnMjOj_{ceTnRmTnOhJeLeATs8IhDXxI]EZ{^(.K3!4%.B7@Z0Qr>RtMg]zI_L_;LnfiE_\r5Cc:NkD]{FZy^t_|^x^wKhA\yHcGaYoG\LgJcSpfb}TtVuc{KhPoUrb}bYwLfD[|NjVrE]|D]yWqXrKdOkOmEaNjMjMdNgXsTrUqTqNiUtLjVpOiLhKgWqOjPkD]~PnXsJfNmZtUnHeIeQkOlLeDZv=Rm9KjI`Tk@Zv?WuH`QiPiB\zQjQiMfFaIcG]zD\}ZvGc=RrD]~LfTlSpWt[sPmUrZtPoPo[y\|YuYxNmTrTs]zleSu[y[v_{\~VtJdRrUpUoRpXu\vTq_VyUt\~[{XsKhZxPpSpGbVnYsZu]|i^zZvjmaPpWt_zPjTraVuUoYtbk\zNmUqbRmLhc]|Npblbigehpni^y]yaRpOiOjVsYtWpOnWv[x]zf`KkTqTme_{Pm^{c^~gik]zRoQpVqQmccnoUv_|b~`|kka}Qr^{c[wevhcnmbaqpjbqrnnwyqtÁy}}kiqnrlkvtkajrwzznspjoxqr}twykecqbd{d^cbipolprfj`]gjkmhrffWx^nnkprspjkrypppqynst|{ytyzptrvw}ywvx{wr{zrtv|}w{z|y|yutow{rwwqswwxpn{zyuzs|w|tsx{vyrrztrghrnlkirsvauvgvujhknf{vilswvuljdsxslllesqlc\~kd]{XwpVwF`JcSmKhIbIbLd@UxDXyBTs0=X'+D&-B&/C+8O%)E2=\?OqOpWsPjd|G^DUxH^@WwUt\tXpQhC_}LjRoHaHdOfLgE_B]{FeUrUoMdLgNhQmEeRmC^|D_\qUmYuZtSqZuLgHfOkE_RjOg>VsG_{G_|;NmK]{PeGb@WsG[zIaB[yKeOiSlVpKgE`C_}PhSnF`{GaPhPnJhTpYt[vUnWq_w`}Wv`{Vs_yd|fQuVyQlNlYxil]|]|`|^wIg^{YuXtWtQpQrZy\{^w]yXwZ|UtXsSpHf^yPkCZ}Qkk_}\x]z^zUr]{cakTpPm[uWwSrUma|lePqSppYyRp\waRrQoWu_}a~fd\}iogga}fbUqUsLhSnXv\w_}QqQnee_yj`Uq]|QoJeOpfc`cqWwciegUsIkZvg^fiea}ea^}eeb~aa`Vyjvghnaentphnwy{r}ÈÇ}}ipswhnvzpor|vt{txttvjmrlqytkiovdi~xllb_fsokivuogekZzWwTw_cjhd_hhipopwmmorpvywyzsy{}}xt}zwv|yv}|swywy}rw{x|}t{{vqy~yrkosrvqmo||srvuwxwwvvx}{zxtny~yuvtuzwlqspswmqkmwnirhsrrh^qmkpkkjw}thrmjprrpfjqjeYySsMkTqiVugeB\{GcLdMfG^J_>Ss;Mn0=Z%)E)3I#*A'0H6A[1>[6CdG[FUwJZ}KdHbSiK]}LaBZ{>RsLfdzGc>RtWtLj@VxC[}SkATw>Rs@VwGWz2>]ZtOjKfLiB]yH`~NeQiGgSmJeRmNfNkYuToLiVpWqYv^{MgIbYtKhMgQgOdKc=SqD^}AYyH_WsUpTpRkB]{JcD^D^AZy?WuD\WoVpE\{WoXvZxSoJcQlIfJgFbXsYuRoQoHeIhHbRkTlIbE[{AXuPsL^F]~VnDW{ARt3A`^wTlF_BZ{Pq^|?UvD]~SjGZ|Oo5Cb?RuZtQjE`MhMdOfPmXvNgH`KfXrWw[yZvPo]yLkDaZu\{XqKeGdKdOdKdKcG_MhIbC\xYpVpLfLdPkQjC\zBZz\qUnE`OkJdF`~VoXuXtKeHbOgRnZyXvSrXsHfYxUtSnNiIdIdB\{=Tr8Li@VsJeJaGZwDZ{B[{AVvKaD]~OlLfKbQlHcKgPkXvNkC]}E`^xTnD_~KhRkJd[v`{IjLhVoYvYvTo]}]yedTs_}`}VvQj[t^}XxRlVuZzJhQm`|_}UqUnVta_~Zvf^{KgQmVr[uNiToJdHdXte~k^}\zWr]yWuTpf^zTrIhXv_{bZvfh\x^|ddcg^}\}Tu]wfgllohdeWsWtYwGcKfC^}D_[sa{Xt_}^~Zyck[vRiTqNmVqTrVsVrZw^zoh[wa~pcOmQoKfPmTpRnVsUqWuWuWu[wWue^[x[{f^}hnrpjrna\}vtiu{trpqtmgjlginmo]ggip}ynirouqwrv{}}wwxrqtrtvrprngtyvlotos{rhntjjnqstn``_Wwg`WxYzrgboqnnnonntuw|~olxzx~xvuvy|}qttn{~~xw}y~v{}{y{vrywwtywxvrw}}rpptr{utvx||yrpvy}rmrrouwrynkinqnqvqrt|lksfgz|y{}wsuvxwuvv{{trttre^ijsme\zUrYwOmJdC[|VrhIdD]AWzOh[tG]}7Jf)3L:FeOd=Rr>RsBW{TldRnE]|NiJdCZ|Le?SuJaIdJbVp`yhD\?StGZ|RsTkJ\@UwNiYqOmIgPiWnUoSmUoIcLgSn_w[xSsVu_|NmNlMlJh[uZsOjRoIfG_}KhFaE_~D`|HdIc@Wu?UvLfIeRld|NjDaRiJaC]|OjYrFbLgWuYwQkOjTmTo^y_y[wVuRrVtNjKjUrPmJeHbD]{K_?Tr@XvH]~NcG`~B]{F`@WxA\xJbF^QiPkSmLnFdFaMiIbSqOlSqHgMkWsMmOkOhIhNmPjTm_xYuQrQn[vf]|Zw\zWvSpa~\zTqYqXs[{aKhPjPkUp^yXw`a[{Xv]|NmMiZrYqVrPiHfHfLjVs[w^|gd^|Yy[xdZxTqdXwSmcc[ynb~Rq_|kYvQq]|Z~Wyla|\ZyivoffRpMjNmToToHaAZyJgMmLl[xcb\|XwdSnWxRoKeToc~hUscofVw_}lfXtUrhIgVsZvPnZyXvVsZ{VwKibot]|\|obhsqjy{bgtrnoont}wxtifhkpp_cpe`dkprtwpjlsvmuxwopsptrx~wvprswvtnmvwq{}rm{ywpk]rnjkhni]aRtOpb}b~[~\zho_kmfurjurkq{ww~zrwyt{}rtrzwr}yyvy{{wv}xt}{w|zr}}xyrt}{xztvsvpvsp|vw{uurxtnjx{vvnw}wzr{plyyrwokkrqmemxwx{yuwqtimw{zsuwrwxwqrwt{qqvys{yrencWvYvSrSph^}cZyAVy>Tt9Ok6Fe/9X;Hf=Rr>Ts>RrF]G`RnNfPhXvPkD]IbVoRmXr>PtF[}G`E_ZsTmCZzFZ|>Mp8LiBVu=OrE^ntUqSmOlG_IeKbC[yNfZu\uOgMg[y]|UtXsZxf^{EcF^SlGdE_WmKkIe?UuUtAYwQjMhG^|I^~PhQlE^SkTtVtTlTlWmLh\xEbRn`{JeUqTrUpVuQlNiXq^v]yTtOjaxb~[wVudUsaXxWsXuSpMgZte^{Vtjf\z[zWwVuTtZzUtLhXsNgSnUtVtJi^ygXxQtHfWra~_|^~gQoPra~^YzXr`~fUsgnOpZzl[y[yj]}ahb`h`|bkki]|SoNkOhF`^tXqLcOnRrWt]yg^|``]Xx]yYvWrUqYx_eluXz_|keZxNjRoYv]zYxVrYxeeaZ}[w[w^XwXw^}nmXx\{gfismttqljospjhs{vjqjjoifgknkdbcjjmqmmplmsyoyyqvvppusppp{yuuronlnyvmqvqhoxytkifnfPrWzPmZv^{[{_bceslkqotngvpir{}~v{vwzyvqsw{o}{rwzrp}{~vty}xw}y}ywy~vvwsm{|~simnonusnwvqt{vwlg{t}ptqsy{qupeivtp}wpytysrs}}rpvuqqyvvtsyjv|wmVxqgQmoUt[xb~[xkmHeQq*3O4Da:Mm9Jj=MoF\~XoNgAVy=SrOnWvWvMiIaIcIaYo=PqAWyBZ{JYRgFcKaGUv:Km6GdAYxc`eVmRiTqHeD]~LbH_|QiPk[uRlMe^wZyUuHcOihjLnYr\sIiIbI_HbOkLeF^~JaD_OgLeKhSpHcBZwOn@Vw@UxSoHbI^AVy>TtC[}CX{AXyD\~@RwJ_PmUtNdVoHfHeOgKaNhTpNfGcGbWp`zSpKeLeOgb~KlHfGaOiUqXwQp]x[xQrXw]|nlfUtVri_zSnVtdPkSoYxLjNiWtjhmg]|ZZ}VrOi]zRqOnNkC_}PlWtIgOjXrg\z`~Ut^`}Ztd~dWvVpTq_~WwQrPpWupcdkf[{\}[{lg_}dgjloTqTwRsJhXpGb9Kj>Pr:LlH^TmTr\|_~RtKkYv^~Tt]{mQtflOp_~oj^dlhWw_[{fbzOr`~VvWr^ffcwteWx]{g]bfbg^Xx_|``}jcVxllmrnpthmmqqjdnjjklrvyqqrvimpyshorolqutnvvgn|nipmp}xxnp|rmyrn{rltxk^fnvihlfZ{RsjTsLjbkedkojmrmowpr~tx{oy|{{z{z{xtt|{~{v}t}wzuvxyz{z{{vyxvpyxuvw{}}pwvr~}}wuy}{xwsvvrttxnw}|ywywty{wuvp{yz|{ts}|zw|rjynahcjwuchfnepRtTq[uYx^}cLi?SvOgDWw0=Z5HcMcFZ|G\E\Nb>PsIXzLpUeG[~KeRrG[~9HkXqE]|JbKdIcHa~YsPjLeC[yXrSoYt]xWpYx_}TrLhTpUtOkHaMcNhNjPjOiTlNhIfRjSjG`C]{PhHa@Zv@WwKd_vQjF]|?WvOhEaQiQgRkHdMhJfTrUsIfIgJiGcSmJgHdKcUmQkPlLhKdOiHdNa;Pn8NhNeHe@WwLaHbJjQoC]|LdPkOlKhJePjVpXoQmD`~Gd_{RqMkPlNiOjOiNmRoYuXvYtJhOp]{VssnSo^{yZzYvTtPkZt`~^}[vlg[|Z|dZx`e`zF`PmcTrQiYub~YuYtWtPpJg]vWtQmhWuNgkiY{ZwUr_~RuYxXw_}]{UtYyd`}Xyaeo\}Zxjgnht]zZyf\zjp@YwI`AYw?Wv=Tr@XxL`F^Tp[ua|RrRqXuWvPubiXw]{[xiicnbZzMkZxb]}[zadjZxanqlrtrvggopgllionnfbgfdZ}\svljsptmlnmlrqpryxsv|rdmxutqnnpjnplhmchytnlw{prpr{}spvshvsruutqf\Zz]kXvciXyaicdea\|hhmtoikxwrx|psrx~xu{{||w~w{wwwy}{yy}vvry||tmxv{ytz{pzhwyx~v|woxrpvtz{w{vytr||zruqt~wxxrtutr~vq|~w}ynnvvzwy~ssy{twturuvynahhm`~paVv]}df\|i}mYyLj]}RpCY}@Ut,7R/;XPfJ_VtC]zOgOgKcF^|JbNiE]WlPiJgKeOjTsXvUrLjMlTrZtGeFbI_\uGdCZvMbI^D]~IhXpRj?[uLdYuSmLdLhUrQnE`OjPjMjMkB\{WoSoVoMgLlUsRp[ycQnJeIcOjYu\xPlSpc{ZyVwMl^{d_yVr[xb}_}ZpIc^wUoVq`~hWrSnXyXz[xXva~bZuOlVrfKjLeRlQqNl`{eMmXsXpMiVtWu[y_|_{eXzci]{fpVrWwa`~\{bfZ{Oqhia`~\zVwiko`}QrhdToH`D_}KdiWrKd?TuLk\s9Lj=Qr3?`F[|SkI\5CcFZ{CUyI]Wk9If6HdF^TqC\}Da~e\uHcLeF^OgAZyF^}JcJgDaMjTpLiAZyC^}QhXtYrUsZwb}VpJgGeD]{BZy@Ww>Ts>Tp:JgAYyVmKdA\yNfMkMjWnMgC]yOhD_NhNgQkQlJeOjQoJfLcZrQmPnWrTnGdecSqGcMiIfKjLfJcF^QjMhE`}NgRlPjQkKfHdOibyRkSnLjVuTqIfKcWnQmD_IgQpXwZv\u\vTqTp]vd~`|^xOlRo`zaf\{nYxKhUrZyVsWoUoPoTmVo[uWuOmSqWrcb`~Zx[xj\xD^E]c}cFdQhLlYu\{dXv]w[wkVuWtYuNn[x\xdc~Vtc}}|eQsdi`|escUv[zifk`amejSqWuj_}RoD\~D]}HbQibzuOhJdH`LbQkEa]wXrOl\t^tYu\zpgihbQph`[x`|h__}ljVwXzlnqslnwyorunrstorrqlcknmsrtn]cdswimtlomkdnpsxepfmtmmpjptiy{``thlsqnjgqwiw~vyz|t}urtwwtroowiUtVuOmgeXuZwbNmigrqec]fiuutnwsr}vnqzz{wpw|v}}ut{y~ryut}x}{vur{z{y{{y{zosyujv{spz{wyrnswyyw~vyy{v|vr{tprt{}orvorwrrw}zprszywvzvy}vu}ttrtpjdhtrii\lm``jcZyRrUpnXyHaNhTpKa;Pn6Fb>Jk6Ed3A_2<[8GhC[|Vm3B_2C]?Ru+4Q6D_GbTtWwSw[sA[wH`~NeC\{F`|H^PjIdF^SoUmQmUrQnTnPkB^{LbVm\vYs\w`zHaE\|BY{KfH`~F[yKcLdD]zF]{JbE_JfWoRlOgVpQsGaRjSoVlOhWwRqKfIdQiJfMk]zMdToQr^}ZwIgUuLkFaLgC]{LgKdKcD`zD`}E_NeHbIdD_Mg]rQkSlVqTqIeNi?YvIdXwMjIaIiIeMh[vYsZuXvcc}fdSrTqNkPnRrhtcPo[zh\xa{OoPsUpMjYvWqMlPnTra}ebZy[u[zWzKiF^TnPkMgJdTsXtTr`~eSoUoUsac_{KhQneg\zOmZt_|][{XvguljPpJi_^|Zuj`~a~emaiUtUs^{[xFcUjJdIeNg>RtJbRkHdE_TjFaE]L`RiFdVs]uWv`y_{pyoTw\{]YzUubi^~]yk\]|ebagxopslmylirtrtmigpifoqsrnsp`~ikvhlnlsmkrfihfllkkptnrernkomqkVzgofpllnitqlkppwwoppv{wzvozoq}ugok_]}VvKjbsajajblnilnb_mtuvv}wuwwpwqswxyukrrtw{}uw||wwy{ttxyy{}{{uvwpyx}zy{nuv|prwutftskyyvx|{{zrt{uxwrrvty{mvdtxu|wr}rts~tp{{wut}{yvx|yrni\cqomrjbe[{ov^|qhYzZxD]@UwF]~7Gf4D_CXw>Vt-4T8FfVtE`I`IZ~2<]BW{e~BX{B[{Sjn`byAXwC[{E\}AYw>VtLeE`}KdKcNhNfJdUoLn]{UsOnMgQiE_D^XqOiOjG_~OgGcKeE\zJdE^}=TrD]zG`HbHePjVnMdOgIhRlVoKfOfRkRoax[wRpWqNlSqQpNfe}[{]{KgKg[sbVrLgC\{KcLfIaB^{MkDaKaMhPjA[yLgQhF`LdPiQkJdIbNhUpMiSnZrQlQlTn[uNjVoMiXv[vXuUtZxTr\y^{TsYxQpZw]}^}d~f[wZyHgRm^|SrVrZuQmWv[xWtVwXxXs\z_RoTo\yWrLgGbOiWq[vge`|YwY{W{[wToFbPqo`}Wv\zjdXxiWtVsbjb~LmSrdacddOoffc`YyJhUtdToOgH`KfG`D]}HbSnGbPjJcNgJcJ^IcIhQsYtMlWuWsNm]{epwhgg`WwPo_}a~\z_l`ehfpliponoqmerstwrlplikggsijtn_hpkonpjimrhmti_Z}fnqlmmmqkmnukbk^}]{j[|b~inoolipnyvqqmurtsuynrrwqrnmmg_UuWwTrgWy^|tldbikijp~rryypyut|rrtv~ynnyvwr|tv}~zrvuu{~|}~yvu|vqwwyvyu{uz{w{towrxjnotuusvsvxv}zwtuvrwplsyyptyuv{w}zwy{stut{|ysxus{yruoiokhY{[{eebm`~^}VscUs]yka~YrCZ}5Dc9Oj:JjBTuVi6EeIaBW{@Rw=Np0?YSkQj=Pq6HeTi^2<^>Sr;QnAXw`tIaQt@Vx\qXuRp`~YwkqdeefbXvZwQp]|`}_|neefish^enegpkamnjapvtgipnsnnqbgfb`}^}gvxmjrsvlprvhgq\owpldlmnj\^}i[|qonc`ql`mrkryuv{xovvjw~swqslrwtecw^}YyWwOmifcecltn`_ntvyz{}y~}z~w|xv~tt~y}vunxytx}vv}yt~wy~}{y||v|ylowyvrsx}|tonqnmvsvpr}|wrvxuliv~wwrpvvtqrvtywypjt{w{wtzwprrvw{wtvrphnfdpvsa[|ufHbNnb{Rl_z^yEbUtAWzF`Qf7HgHZ{8Kg:Ll:Ll:Gh=LrD\|Og9Ij3B_:LmFY{HZzF[zVj[m9GkOa6Ce;Knd~VtMlOhGaBZ{H]VrhOkRkOfOfPmIcD\}ToJfNkXqNgZsSqD^LhYtTtb}lUoPnPkPmEbMeMf?ZuLeTmD_~LfLfNiIbLbH^A[wPcQiIdGaQjD^{SnIfD\|E_PkSnVlPiOmMjUjToPpQnLjMlTqRqIdHc[sPkC^}H`zIcMhI`D[{SkOhOkIfIdPgZogWqTtUsUpD_KeJfQmNjQmLgKgPnRqTpZtSqOlRnMi[vXq_xWu`|Ztb|kjiQnJfZvUra|a{HfIdTp_|QpKh^yRqUpVrZxUr]zelc}QmNlPmOiWqNmUsNi\zUsUr]|Zv_~a~__~gkZ{KjZweljYuWv```}cqc~PsYx]zYy\yipomeWucqb~GbJhYq\qRjGbLnc{UpKhNjXqH`NdLeG]PaUjHaIeUnIdNjdfkjfka~\y`{OnWtl^zekbfo`lhjiYzei[~ifjbokfoph`mkpsmkovmjg[{b~dkifslpxfovinrkhnjcmsfbfbLn[}heupnuocmtopky{uyvnttvwlw{kbomqe^rboLg\yileSwelihnwvnkr}}{{sv}}y~w}xzyrwynyywy{|tr}}z}}{{{wwzyrvvp{wruvvst{jmwstqtuntptyvvtuxunr}}nozxqwyiv{tu{zyzutrpxxw{{}uoyx}rtupnlc_]~fp]{TtnodJiWpMiRoYtGdE_WsC[z6GdKbEY|5Fa2@^;Jn6Cc>Pq=Sr1>\0@Y5FbNb9GiCQoEUt8FhWsBXwOgMgJbH_FbNgOfRmF`JdToOhGbMjLhJcSkVrRnRqZx[yLhJeHcNgRmD`}G^}LeHfMfBYyE^|OhNjEcMfKbSiJc[ue]zUn[v\uEcOkb}SnJdSnZuSoZud~SpWs^wSmRnb|UqPqYya|\zfim\zOjVqZt]vc~ZxNlB[{Rpg_|YxPlVrQoZw_yQlUtf|eVp\vUtQlQnQmHe^z`|UrSr\{LlKfYu`Pu\wmcZy]{a~dhTsLo\{UsVvkhfTxdopf[{\{ikhKkUr`zUoIdAZy^vavEZoHgHbToPnXtb|YsNhJdF`CY}MdLiHbQiDZ~HaUp^}\wbnf[z_zToGfYrd~^{_|pmhr`~b\|a`cfWvX|`hefo_^jonmdmmmmjgpwzlp\y[z^|jlrjhveeogigpeijebeecfigj]Wt]{gejrelqqpor{}yvt|pv{sjortyrkjUzJfgct}Yyb\X{dhd_iwyvvlny{qypp{nj}~}}ux}{z~{w{|}zyt|syv}t|umx}vr|twxrtprwy{tp~{srwwurltyxvyrowrprn{yxvu{xywppwrw|}zntrwvqxss~|{towyopylqlStd`}cdfqiRnTt]}UqSmNhJfF_4EaVnEX~+4PDXuCY|GVu6FdBWxQsOcG_~IeKbWqTnD]IcLd@YvA]yRmUpayd}_yXsPkOkJgJfYs[sc{Um?ZuE]RmHeE\yTmJhNhFbPiUoB[yH_E]~F^H_}C\{QjXqTlVrNlOiKjOoEcCZyG_LiLhHbLdXs[vb|a}YuNhHcLiKgJ`?StHaUmPmPjTkNhJhHbRmQiEbGc^zb{SoUrazZxOkNmRkPhGg[xXtHgWuSn`{UqUpSnazQoPrYxd_|]{SqUs^}c}`zbYsYrKhKlDa~Pmc~VtHe^za~Uxf_zTqVtZuE^KcPjMmGdIgXp]xTpYuWtVuZz_|XudYxWwPoYvh`QoVsigQrNq_~ZyfdVxOoWtRl_~s]~Xyc^dlXuPo]yNkGdKdLdNhZsNhQn\sOiKhOnIfQmWrSnJaJaPkOgLcIaOhPhIb[wf_|]d]{a}a~JgRlRoUsKl`~hchtma_}]|^}[x_]}ch_djb\~injjleltlkws_ilqwpUwnlgnmg\`cjchtdX{]lg]e]}aigtjjl[}jkfaeidhwywxzknnsqky~uv`]}anlcTvYyu`\|ojidlnp~v{{xnzyky}p{xx~{wr}sx|v|}|wsy{syz{ysxz{}}vstv}|{uvqywrzqsuryxrts|y|{rur~xrsupjpywpv}u{{wvrxry|wy}zzwyywttvspwv{ucokeiraXwffZ{[zaTsvXxIfXr\vNiAXy8LiEZ~DY}3@_:LkI_M_BTr9IkF]>Pt+2PGY|I]@Rq[uPscfKhMfJeXvVr[x[yFcF^UqGZ>PnNeHWzHdD]~LbE`SpWqKiGgNjEbIdLfKdLeYt\vUqWtQmPlLhF`RjXp=UrE]NdBXvAUt>VtA]zSjFbNjIbPh@VwPjH`NfC]{AYzQjUoWqGeNhOlMmXvLcE_RoJjC]|OgOgIeYtOiToUoRpPlSnAXvRt05Z9JkMiNkUj6CeQdZsCZ}QknbHdIbHdPnNiUpeNm>Os:MlQhH\Ur=SrC\{B\{BZzLcIb?VuOaE_~A]yLgKcQiC]|H_LeJdE]xC^}OgWmIg\vazQoKgRmUpOjGeJgSlVpIhD_IaJd]wQpToMfF]yJbNfBZxH`B[zDZzH`JhYsNkC^}XtVvQpWrOkKkPjQoWvSpD_~RnXvHeSm_|UpWoXq[xXvTm`x[xWtUnMlTv^}cb~VvKjIcUoj\wi`~Rq^y\wZw[wZtTrYyPsVsRpSocWu^xYx\x\wUtVu\xKhRleWvTpTpPoTrYxceXv[|dc[{a|[{Zy^yi`d_}ZyUs`~[x]Z{dglzrp^RrVvVrUmBY{E[{PjC^}LfXsIgQkc~Wtb}VrE_NgOg[tSpKgMcKbHbJbayLkRn\uQpWqrgcfdZuZuaXvSsYyYuSp^|deg]~aecWwOplthkhbmiaa_mwriokwt{vgZyoecejlphknX{c[~ehhppbaeg_Rp^{Y|djmglmttotigre`mzkjljdbcksmgsvqhbWta\c\}a^~_}eSu[ziv|ortr{wxqvv~vp{t{}nnyqy|v~wwr|yuytrt}vyw}wquvwqgpv}rtryzpttswvvtuntxuy}tqkv|mvmqwm~lywn|{}wtttsu|y{tv}wx~vwmxrUsUtenwoc^}VuVuGb_}q[xVvaRpMedJf3E`PrDXvG\|>Pt=PqI]|KdHa~YsPhNgZtPkJeUlOiMiMjMkJiPlOjWsXqKcC\|NiPmOjOkNgG`D^}KcSjRpC]zJdIbG`}?XvF]|KgLhF\~ATxAXyA\yIcH_JbH`~NiRoLiXtaOkOjMhMlQoRoRpNmMiYpMgGcNjUmH`LfLhF`OfTlAZyA[zEcLgNeDa~HdZva~SrSrUqSpGe\x]yE`~Sn[xRlLfRmNkOnRoSoTqUrQmg^}PnQj]xc}_{Yy]|^wMgKhTqPnPjMjZs`xXxToXr[xSqZx^|f}LgfcRnD^}GbKjYtc~dXu\w_{^zZwTtPp^|dJlLm\v^{_[y[u[xeZb_|]|\|nnbWwOsdc`bfUsfwpkbcKjKbLdJb=RrRpZxSrRqKfGbIgVqOl[uSpC[}GcWsGbQhSiUoNjJdUpUs_|XtZt\w^{gs]Y{KhPn`~`zpt[{[{LlQoZtYwUwicWuc}]~keehtmloihppmnnnopo}pje[{dk_~dn\~Yx\zgbb]}Ywamrk\be_~[|de^|Wu\fyurbpwmij`ZisrjbipnqnfuywqwurW{Ywgd\re\{Yy_tpisx}~nhpyolptr}wwu|yz~~wvw{xrw~wy{snuxpz|wlet~xvyutv{}zyuqonsuyxvt}wjpnwwvtr}wuwzyzsursnlakq{vtqtv}wryxuspytwx{styy{}{vyojbIhZ|fhl`n\|ZwSsLgMge^~WuLfPmPjF[|7Fd:Jh-:T+3K[!#>3=VCZy=Pr5@c3=_>RsI^@TuOc9Hj5Ec>Mm+4P5@bK];On8Ii3A_TsUtOlWr\uYxd]|Zx_Yy\{b^|\ykdRt[wjj]x]{[yZ|Z|_}fft`}`~`|ZwWv`~npeg[{Mk[xnVr?VuI^\pD]}PmPmHeUumVs\wTqE_c|SqE]AVxPhF`H`KeRjJd]vVpXuSqPm_~ibhvlqm^{GcJhSo^{WvWtYt`~^{QnJcZu]{a|Li\tbv[wVsQnZvr_aeY{didlqmhjnl`caNlKgQnJfRnb^xPr`^{[}ndha`[^~\zihLle\{bjuccrientkksnhmfendUwo^|tiXv`oaq}nlgspvpcTvfjvwyroxtw}z|wvysy~ow{ww{ntt}{tyqv{q{}z~vtzwjqtoqwu{yuu}v|ynjusvxl{pwttvyxvs}ys}{}wttv}wmrv}}{wtvyzw{r{twyttuuzz{zpz{wwtmlxibhwnaXz`~^{vqb~k`}Utg_~Nl[{YvQjE_;Pj4Fa.8V9Mj0=Z=PqK`C[}NiATz3>_=QqSj.7U1<[:FeVtLeB^{D]}MeRkToYv]yMgEbGb?UsF\|LiJgJfJfOjYsSnGeOgSkNhD_\tPhHcPkGb;RnB[yKcQjG^H_KcE_~OdMdFaUqOjNhQjPjRpUoLhKfD^QkPlKgVs\z_{LdYrRjEaJgJb>VsKaQjF_}KfJbQfYrIfMjRnOiWoUqQqa~UqIgMlUqVrKfLgVsRoSmRmXtLhGcMhWr\vZsSoPoXre[|Hf[y[ya}UqKj^|WuLh[s_{UqcJiWoVqVr\uRq[u]xSrWvWqMhYwPnCYyOiNqZtPhNlZubxZt_ypm`z\y^|KkRsea~bkfPp^|c~VuZyjXx_|egWr_Wxc`[ha}ddfm^|`QlG_@WvEXyHZy;PmRhXmUiYuZvca{MiNkTlHeHeQrLjNiayOfG`HcLeHcIbVqZyNlQmdi`}frrinyoaa~NmPmSsUrh~d~TsNoLk^}ePrVua]}KgQm`|YyUt^|t^}cbjhtnhhccdfVxSsXtPjIfJcPkVsSqQoXtZzUy`a`}jZ{Sr^{j\}pqnhhinsmrqlrmrr[~e]}UvdaSsXveRpZy^{rglnvmisqeaZ{kaY{qrqvy{r{sspy{wuzrtsztw|}y{w}}tsswyttvztvőĘȕƌ}{|xvqstsut{wtsw|zqwytu{w|wnrjq|uw|xputz{ntvmk}tvww|q|}|yvx}wr}w|lpnnuywwqaen`be\|Z{j]|]{XuieamWvhigWxXsD\3@`QlSp@Sx]uOb?TuOf=QrOfOgBYzE\~=PrE[E`G^KaMbLiaXwRvPrD]Qq_lujafG^}LbLiGdE\}QhHfGcMhToYsTp]zb|KeDaMfKfKfNiD_DZ}E_B]zWnRiIdI`~@ZwLfYqKb>XtA\xOhHa>TtEaD\}C[|CZ|G[~HdPkHdNiJcOjUqUpHfKgMfXuZwSnRmJjYsUnF_PhOlGhE]};Pm=UqIaRnA]zGaIaQhIeOgVoOlC]|LiXuJhayQkVrTpNiSlLhUoc|PkQoWu]xMhGbWtTqOjZwXvTq\z_}Ro]zYvSnZv\{kYwC]}Nf]xSqWuPnXtVsYwa}XtQoTtYwQoRnXt[zKkCZ|LeVtQiAZyC]}YuOmPp[xa|]{uo[zZyNpYxa\|fhUtYwdcUt]{b~^|[z`zVrXw]{XsGaWqq_~YvbcVvQmXueYsKf>UtCUu?VsDZ{I]NeE^HdZyfSnZv\wUpPnHdLgJcG`ZrVsB[{QjVqToYvLhUq]|]}cb^ltjpunnrikdOmb~gc_~[{eYxVv`}c_|WyYwa}VuOnZ{he^|akibqplqhlafddXuRrOlMlUr]\z`z\{VvXxbXv\}Z{Qqlre]}o}hbrddrrrwolmdrt[}amMmLkMk]|Trc]|TrWvQqgdokronigcY{hvpliry{}srwwxvvq~ysn}u|{ywvs||vwuzrtvuwpvjqr{ÎÁytypxpzy~wptv}w{vttty}vwxqiewxwwvv{ztuyovpwy|wz~rxz|{z{vvxsxyv}vqqvoioljuifmlkZ{KlWuq\uRo[yTs\zbmWw[y_~iF`4Caa_GaIhPlNlAWyI^~B[yF]IaGaYq?TvC_|u`HdLhG`[xpeeZ~\]{Tuhb]yKcIaIfRlTlRnGgQm>UtNfSiC]|QlfTrMjYmF_JcHdC]|J_Nd>Wt?TrRgNhAYy>VsH^{McMeAYvRjXqIbJc[z]wJaE]KcF\F^KgPlMfE`Ti[vXuSmQnKiFdHeLdHhRnRlSnQkNkLiNfIaC]yE_}WpQlHdC[}JcD^~E[yG`D_~NkXuMiJcFaRkQlUpYwPkEbJcVnSrRqPoTqUqUoYvSrIgRoPiTs[{[wLiSp\yhWqWriUtYu`z`}WsNiWv^RpSqXrTs\xZyhRnOmXv\}UwHdRnNgPiEcHbXsMlHgJhZwQp`~mXwXy[yZwigW{^{d`|YymYuYxe^}WyVsecRmLjLjTnZrgUtVtp_~NlD_TnUqSo@Xx>TtD\{C[{KbQkOhToHgOmQnWsUsZy`}IeD]~bzSmEaC\}E`SmSpHeHdZsYuc~\yZyldilkmsprovppib_eXs]lkVuXx^}gfd_|gZvPoVu[~b~a~dc]}lho~{hn^~]|]}h`~YyXz^|ZyZyWvgjkc[w`~_TtXwijaiimvmmojhgnwhkjkphm\{c]|SqXtQnMmkWsSsQv`}\zchjppipi]gimplpvw|vv}jmzw}~xx{ztyt{vntprt|trxstr~wzvryy~}~{nor}~yvumslqtwxuztr{~uy{utsv|w{znls}xwwyzst}}v{q{}{yyywuw}}y{yrsphlmnv`l^Prq``ma}afbYw\~TwHfRoNnSoXr?SrG^{OmLfPo]|]}LfF]>VsBW{CWxJcMl^zHdGePoWwWv``nicmY|`}[zVxanHbD\}ToNiQkNhA]zOgXpHbMe@XwEaOkPnYrUjRnNhYuD`Qf]vUq:PmDZy?XuCY|E]~DVwShF`E^|AYwKcWoMgc}ZvTkMhLgJaQjNjKiOiHaTkZtA[zSm\wKfKhPlQkOnVt]xPjPkPkIcLcUlJdNj]t\uMiD`OgOiKc?Uu>TtLdXrHfOjOiSlOhNiRqHeRkGcOjTrMkKiQp]{QlMkXuRmOkb{[{Ts`yPmWtcbWsWp\ySsTqeWvMjRn^xPp\{ecYvb~Xs[vWvZxWuYwWuXtXqXqZuGeIfJeSoTnLiZvbPo[ze\xVs_~`_~Zza~b}c_[uTu^}ZvXwRqUviePmWvcVtIgZxYvWu_igJhSnKgD^C]|G]}I_QhKdOjUnYtQkPkZy\wNiJiRo^yJhNjRnGbKbLcKfFaTqXsSmWqWq^ypoifmg^mjmtyrqmttjekic^e^~_}[vYx]c[v_Z|]]|^|Wu]{c`eijijro][zcTsUuckZyRsTthfimg]|UuUug\z[y\jhieoqxnfwejzhfpeafLhtw\|Xu`KkYs[vTuY}b}jQpQrYzlvsi[{gy}tfjqytpsrwttvrwwxnz|w~yqyt{vxwvvz{vwuzv{jht}wyuxwyttyzz|lrinw||{vpvpyywu{ywl{wwqmgspsu}v{|pttu~}zty}}~vvrvyq}mvrrotnnamfZzbjkMo^yf\zRsc^~MiYuPm@Tw:IhTiPj?RuLhPn^~eJ`G_?Uv:LmC]{QpQpVtRnLiOmdvn[zd`}Wv_~Zy[|vavYpCZ}XmFaD_UmJbUmIcOjPiD\zAZzJdMfOgSlKgToPlD^=TpE`ZvIbRtHbIaC[}PkQnLiZs_xJhEcUnTnOjTnVqHcRlay\vZwYtEbFeQnPkOiSlNdOfWnGbC]|NcRhIeQmVk[uZwQjSkVlXrE`IcToF`E]~JbEcDa~OiOnIeSo[wLlSqb_ySp_zRlYs[xXvWqWrWs\za~^}LiPk\xXwNkOoXvTrYuf}FcJf`z`}]{bVx[|dYwYuXtVuMiPhb~kVtLh]yTpJhXw`yb\|Vva~gdcfb~\|e_z[{gYxUx[xZv\ya}WuQpXu]|Vv^yNjUv^[z\x`gaPpVrc~WqHc=QqAUtKbQlMiPjSnToVqWyb|`xUs[yQkJhKjTmHcLc^rMhNfUnKfGaPjYsia~^|ekelpnkZ{fjhprlxplmupiipgcUvQvdhjrn`cbja]~^~]~X{bijarhm^~TuSo\whWx[}RrNmUvhcTueoabopeZ~a^lni`pwjhqcYx^|j`E_a~ag_]}^~]{Zt]zk[{TpkiLmNoRqenrot|vvwrzsrsortqt}vjuryruxoz}}|x|~{vwvzvvwupvwx}x~}|{wyvwztvwwprv|rxvqnpprt|}tuvwustqmrw{rptp|yr{nhysr}{y{tw~v|}{xu{~}}vnttxyruwrotpppjpda{nse\~ZyVuTpUtgCY|XqQn*3N5EcZuFaKhPlSrY{[sUnKk?WuIeFad}m`SrXveac_ijWuVwe^~_}j[uTnD]Sn@\xB[{WpWrKeLfTnNiD_B]{C^}H`MfKgLiQmSlB\{JbQiHa?YvG`XnHbPeG[zF]}JfOeK_?Su@[vB\{@Vu@ZvJdRkVnVqNlFcH_OkPmYrRnMkHb~NiPlZr\u`|OlPnC^}NjUnKfGdJeB^zLbMdPgAXwJdQgXp`zWpF`^w]xWrJfHeWqHhKfLiJec{]{\tXpXwOnVsQm\wd~RrZuQnRqSmRnOn]yWuZvVtPo_|ZzSqgSrUrVsXw[wVqUqUoNiPoQpZzibc`}^|Z~TqGaYsa{SnIcRl`{WuUs[w`|UsYx\zSugnVva}kgTsZy^}d]^z_{\|Us\w\y^y[x]zQnWsiVsLlc~^}ldTrVofQlE^AXxL_DYzD\~UnLhMlYvVuTu`~aWt[wWsPmJfRnKgC\}TlLgSjI]F`RnPi[v]yYyWxiogqnqnplZ~`[|lpmeooovqt|mrl_}]xTpf{lemipi^ci`]{_}]zddmgQv\`}ic~^}Xxb}SvRsVqOnSu^~iiadgnka_~kjYyWvjjnioQrTwWr^u[x^|_SpVoQqkkca[{hiRpTua{YvRq^|_~Xzihvyorw}{{usv{ytmrxv}nmwsv~|{xoztt}{}zrr}|pl{z|yt{xzy{~xztwuovsrwyp||t|rr}~rwvhtrtvvovwmpzuqo{{frƊt}vrywttrw}vwvsqwtpptidrokeemkadnka[koXtdLkBZ{@Uw>Ts1C[:KhRlG`Uts_X{NlRlUrTvMmPmSpnpff_[}\}a^Xxpje`}YxlvFaSpWqB\{C_|H\}C[{B\{QgOfKhGdWsSnLiRjH^@VwC_{JeMhNgJbTkRkAZxB\{C\}OiE_}:SmF_HbOhG^|Kb~UnD`=Rq7Jf=Qr@UxMdLdE`MgLeC^}IdVpVtHeNgOlRoSmOj\xiUsMiFaNkKjEbPjQhJf>XtKbPjSmNcIdEbJgLi[tVrSnRqQqZxNnLlGcD^~NfKfPkZtNkRnVtPn\wZv\ySpPocdb}]{WrZtPoNm^{_{VvVsYqSqVqSlPnUrMiZub}TpSo[w_~Xt[{Zz^|a~diYtQiSkRpLjPjKiUqZu\veWtMm]|__~_}UvWuf`]~bZw\zd~f\{^zQrLk`~a`}ZxQlOhMj]~Lo^xbbfZyQn\z]ySmK`@TrF]{F^~IaQjUkI`\xYuMje[v^vfWuLiTlUoUqJcFbIcLeVoUqLiE^Og\{X{_~m^~nlibgwwnpmjodckkhmuvuxtljgXu`~_}b}qwtkekijdj[}b^~Oo\}Z{WwlaVtXySqMk^~[yLgMjc_ZzbccdigY}ga~XyTtOqMjSpIe]|\x^|PrZvRqJiZx`\{OkOpMkie\zfa~WuUtUtUqTp^z_~ogaezuowz{{tsw|uvunrxwzjvywnwyuwsv}w|yywuwwy}wvy|}}|}u~ry{pp|z~}wwvt{spyvvxs~|rspt{nxy{wtxrqtsvwvrvtwy{rrps~ymw}{|ppr~vvmpvxgln\i_{emZxdfIgfvSsVxg_gwwdUvWw`w7Ef&,G:NlPjOkUrZxcj\{=PrKaTmPkYu\wMjTtVtokVxSoYtpr[zMnVwOlOm[{uQkGeRnE_}E`SfTk@Zw>UsIaGbE[{Rg`zIhIbXoUnOk@ZwGbMgLdF_~JcKcD_~D`}UqSo=WrE^}Jc@Ww;RnF]|JcHcF[yI^|LbH`NcHaHcJdJd\tHbQlNkF`OhYuiWsGcUobdVsTqPpNlSmPdBY{FcB]zA[yQkSmNeJdHfSnPlTpIfNiKkWpd}UmVpRmIdPiNhEbRl^xa}Ts^z]xOmIfYuUsSq]{a|\{kl[zOpOmXu_~ceXuOkUmeE`E``}^z\wTo]x_}Zv_{Z{\zWsffPmPkXqRoNlKeTpUr\wUs\xNkWubb\{Zy\}fiZ{Qta}WvNqXyRqTrYuPpTvTqUtWuUrb}]xQmTuQsYu^|lfZyTsMiZvQnI`BWvNdVnG`JcI^CWzPiYtNlGdWtcYuTpXtXsWpVrNhJeHcJbD\~C\}YxVpVm\xNoRoZydpslVxafmripmlvvspgfkmhutrxkg]{QpVtWsjhagildd`if^~aPrcPnZ{]}ZyRp\yJgJePkQmRnLjJeQoZvlr]}[|cfkgVt]xMlNiKfToAYzIbOkTs[vLlZ{`|UsLlldKjVs`{XvRr]{`[yJhdp^}bXxbogjw{ry{utztpytuvywy{vttvrrnv|ytsvwtvxtt{pt}y{|urwtrn{}nsvmwrqyz|vyppw}vywmrt{usvyyvu{svtu~{syyv{||ko}v}wsvw|qsttlqw]}rjmnk_Nh^xXx]{kb``~\~g`~gmTs]xpWxUqccYtUqUtBWuJ`KeC_|F]{IcLjMeIcZrf~OmLhUoZqRkTnZwUrd~]|mNnSpcZxWqMhPiKePkMhD_}\rQmGdMe^ug}LnJiQqNhPkQm[rHcJhIdOkMhKgYrYrYwc_wWuZwOjYvg\xHfPlJhXuecZ|aRpVu^yVuWw\{b|]{RqE`TnZxYwWtWt[|a`z]{cVsZvcQqPpXs]zZxJcJeSnUr]|TrTqfb~a|^|VwelW{Y}iVr[wTtdVy]|RnRpkfQqFaYvMlTpYva}_`~^yjml^zUqUsMjD]~I^>RsLdPlSlLbDZ}MhRmYvLkGeLkWrYsb|VtE_FaRjSjHaSkIcC]}Jg\y\wWrWvlYzNolh_~oicf]}[v`z`lrrjsvypebdkutckhfbRrNoSueic[zelki`_ggXvYxSsNpOpWpb~]|OiF_RnNjJdG_F_QlVrXwVthl`\xf|_~[wRlLgKgYsgXuSnOmXqSue]vSpPs]|g^}NpMlUrMnSpKkWtQoa~l][~ppnlrilmr|yyy}yyt}wtxwws{yrwyyvnttv{{quzstrp{{xvy}{nrwytqyytryppvzuyynyxvy{w}{w~}xÅlluzpvvy{}xtrtysqy~{uvtyy~osvewurxwotvz}vpqjpyod^attfRq\uZxVufl`~cb_yiddmNnRq``^}fbKj=SqXoF`:PmFbZx[xMh=QrF`}MfI^L_~OeTpE^~?QuDYz@TxQfOd>QtYqY{]{ZyPpnsqgfOfG_JdIaE[|>VsMgOjH`JaVrMlE\}BZyC]zJdPgPhJdIdTpLgIeJgRkNfJbD]xJaK`PcIcKgOhUlE\~C[yE]zJ]~BUxE^~?Yu?XuC\|I`SnOnVlXsKjKeYs]yMhQjSnRnSnWudSq]xcd\xTrJgIcSlYrYqMhSmUnGbMe_uLmMj]yZvTnGgQnPmEaJeNfJf[uZsVpOn\yfZuQo[z]ug_}VvNj]tWsPnTod}_~Uw[xUtMl[zUqa{dfmNlPlZwXvSp]{aWuPoXv_|Xv]{]{HeSnRoVtUoHfIgRlVs\{PoZydi`_~b}d_UtgfNma|_}^e\xWta}[yPodeXuJiMjVqa{d[yRuel_{[v[yLlPkG_BUu@UtJcToIdXphWuTsWu^RtNhOkRrPo^{MhMcH^Kb[qToPoTmLhUpWsIg`{iWvKkdXw[{vodc`ycyl[hp^hltpofhhcrtwtjf]~UxYz^~^z[xNm_~]}g`fi^~^{a}Ml]wXtQlLkQoSoG`]vSsRsYvYxNlMiF^JdMeYrQlNmOmLhTqKf[vJhUmVn_}ZxKk`|`RuYtWqf[{Zyc|XvZzbc~UtRoNnKhTqIfRo_prmbhljhntxtpstwzs}xuvtwyxrx~uswptposu}wxy}vu}v{vpv{w}|y}yzysru|ppsxwrtrzryzyws}zq{w~xmrvvqvsvztnuljd}sr{njr~w{rhpttvyomyuqnqlohprZxgfqkeWvZyggZurwRp_e_[y`lRpWtZxeGe9MjMeWrRnf^~NnYsUo;MnCWy@Vv4Ca.;V7Ig>QkI\u;Pj8Gi0?Z&-F+6POer_Y{ba}Z}gp{UlNhGbB\{G^}GaB[{E]|G_H`~LgEaHaOiSm\rOjIcMgRkJdKeC[|E_LhUlKeD]{NgMgH]|HaMhH_B[zRkLjC^}UtD\|Ib@WvB\{SoXnVmSqa{]yZxYuLhMjUsTpJhPnZwUo_{WuVq`zVsQjMgJdUmEaMhRnJjRlVoKeUlMfVs_yTrIeHdNjNhIdRnTqNhTpJkNk`zQoNmWw`yazfYvUsXr[y`~WsRlHfRtc]~dYvSqF`Li_|\zOlMm]|g[vNlSqcithRr^z[yHeF`Ga\v^xWtYu[xUsSsZy^~Vuf^ah]{^}\zYt^}Xtc|YwYw\zMgWrWu]{Jj[|ide\}RpXrZvOm]zaoka~Zv\xOlC]|I\}EZyXoMhGeFaTo\zd]{[{^~`}VuPpMkGbLh[tVpKd@TxQiHeXucSn^{fdj]w\|lUw\}dd]}aflka^mbUwZ{lsnoryepzrxwni`RsWv\yef[yWwLjOojwRtStgTrMjRk[tKgGcPjWxTrJjNl^x]zZwTpTrSiJ^@UwD[ZuLiE_OlWq\wVsWsUoVtZw[{b~cRt[yUt[uhNnQmRoKi_|`|^{MjKi\zhPpbjenrrdisilrivwvqtvwywwwwuttuy{lp~wwzyt|pjuptykv}wz{yw|ytu{~|suy|ykv{qyxrgxtrxvtvpvyrvztvwo}urv{xvw{yeltnz~yrgznmjqy~}yrvjkqxtvumqimjrllbrjj`hdf`_~`|ejj\~_\yPo[yt`_yPnRrfG]Nd[uZu[wPlUtJfMiRk>OrI\z=PmK_TtJdiPqJc?RvLdPc:Om`sVhWn>Tq?PqAVtCUl5B_9Fe+1P*/NLaSof{ngwC^|D]}MeQkNjMkKgNdLhVoSnHcJeJfVoFaTnZtNgBZzIaHcD]WoOkMeUnHgAWzB\zHdB\{>WtCZwH_C[{KeOgHdOmTpToF`D^~MhXtUoIdJfFcXqRoFcNfKhSnRnPnZw_|MkIdYuXtGbIdE]BZxAZwD]}JbVnRlHcKdTkMiLmGeZt]tE`KgG`GdVnOgPjLgNhTra~WuRrfeYuJhQnMk\vVsXtStUra|`}bYxg^zHeQoSs`ojSoOmTlGdUsUnUn_|_|[wXx_}gZ{`~c~g[zRqVtPpGdOjZt[y`|f[}db~WxYvYwJjOndaXxWtYs`w^x\zgSocZzYw\xSoSoXtIg]{_}OlQmb}YzbbUuPoPmYuIfKdOfF]C[{OcQhKfSsZw`}Zx`~[{Zw^|VsRoNkRjPfC]|EbQlNhUqIfTnQnZxXyYyibWzndSuOo`}^`ZvSr_a[xirohri\}ormstedihsowpPrLjPnXuUr^v\zXuHcD[RmQj[sXqPkIcI_LbD]}OjUsZw[vMiYxVuMiHdLjNq]yRmTrHeJeRnMmNoQlNnba|`|QmWrUt_~[|UvZwWt\xa}\|TmRmJhKiQkWtbpbjrvrtps_pwpp|vvwy|zxy}z{vx{tysl{yvtvyynpqnyspwrwvwrqtt}xuuy{zpy|wv{rrxrq}}vuyxytyrtyqrysknotvruyvouwptwz~ysy~wnr~zmmqvpq}tlktiaeY~]{dc\xdmndgqeqgihc`~YzWuXrXtPs[wh?VuKgG`E^DZ@SxhjmOgHcQjFVxH[uh}ohxuZmI_dxUkSg8JhF[v8Kh1>[>Pt?NuASzF^D[XqIeE\}QhMfEaE_KgSkD_NfOjVqPjFcJdGf`ygQkNgYqOiC^}>TsB^{UmQjXuWoC^}PjNgF`~@Xw>TsE^|J`;PnKc]vIcXrMjD_MhYrPhKfQr^zUpHdSoXrb|[s]wFaWr[xVsMiSr]zToHfOgTlAZx@WwMbD\zG]H]~F[|UjSlNiRqUoSiSkGbHcIfRlRlRlOj\vUs]v^|XvUs[v\wWwHf\zhTo`zWvQmWoVth_}^x_zVuUqOo]}zbEcd{WsKhMjWrRoZy^{]bdaYxfnYvMpXwSpUt\xVqHd`}tf\{i^~``RrTsh_zUtTrLjZt[xLjVr[xei\zQlYwcZySqa}QpSoPo]z_`efTtNm_zVr@Xw@VvMcSlB[{KeHeEaUrZuTo^zeef_|Mi\ubzMdKeSpOmUrSoMkWsSpbcZzKjUw]~nmY{WuodYwhUtKk`}dYxgdWzdkklv]klipmgljhninjOnJdRjLhKeMkPgBV{NiOiRiD_MeXq`wWnQoLmNma}eYyWu_yHeKhQpXvHeIg]{a~_PsZ|VpXvVuXvWv[w_yTrJfTqMkSoOlIcZvSsYu[vJfHdKd\xloVy`wpqs{kihdiqrrpmpyv}yt|{t{~tq}u|x}trzzmqqrvry{qu~~}{powvwxs}rjx}stvrtywvvwyyrs{}wssuztnrppwwwtpqwww{{}mryyuqsw|vpru}{urtnnp{~phskppch``ZyVx`affhnl\{eol[ypkgLnF_Nk^wAZzGeJcTiGYz>TtPp5@cWt8Nh>RtJ_Ga~RfPm]xPnMiVnKfIfTsGgMhNhXuVoazYuTp\y]xVuFdSpVrWsLjLdOhFbA[xJaIa~F]}@WwPfVmPkIeQkLgQgF`NpNnQnHdRoWoPl\zQnPiPkUrPpRnYuVsb[yKgLfSkZun]yHf`}oc}^yhc~ZxWtUqKjMi\vno\xWs_|RsYvehna}[zcdgkKjOkKcOjToYv^}hb}SrYzinfiecdc~dXtVt_|SsRpfKgIh\xZw_|]|aYvRmYvPnWrUu\zYxZyhfe`~Uq_}MlA[yK`VlLhKgWrTpE`]wZqUs[yZvWu\{c~a}JiLiLgWs`{SrVrTq_~]}Zvc}]zc^}a^{Wtaosi`gprYzVwLjOo`a}Wvhe_pcjimjripkie`mxjjf]{UsZyZuKdHcD\G`Hd\xTtZz^|Ut]}Mn[x[y^|_y`eaTtMkMjGbYu`}Y{[zfe^}_TtMkNjXtaSm\wQoGaNmPjIbPkPlF_LePl_z[zVvfhpshcglqnlyppf]fqfdsrpuxtzum}wuyy|onnxrxw~yuvvzw{yxvnw{~|vygowv}pntsttwsvnpwv{nxvp||lv}rvvytrmqwwvry{pqsttytw{yki{vj}xvvxt{}utwookiwejjfip]Z|hb[y[yVsma\|e_f\ya_{i^k^~Jf^sc{?Wu4C_2>Z2B^.;V*1O;Khn_sd|8Hi?QuD\}(-K0=Zi{Qa8Jh3G`:Kc5@X,7R,@R\m6FYPfvSb{ &<8H\Ua}PjQkNhNh_{OjJcMfOiLdOfQkSmJgIdD[{GcUoRmLgIcOhZrMmOjHbRiD\~=UrH_J`C]{GaNjRlFZ{FaKfKa>WsKcL]lo~P[i2EQWkTh}+StRjC[{E^}KdCZ{B[xRjMhB[{H_EaMjQjD^z?XuD^|D]}BWxAYyMfQjPkKfSmSoD^HdMjGcOjOnKiYsQlQkZuGdMkTq[xSobceaMjPlSrTmNhRmFbJaF_?VvHbPlRmOjSlPjEaKdGeNjMjMiVm[uLhQkKfWs`|SpWrWqXuQnaRnPlVsb~WsNnRpPl`}a]yVteaTqVufgQoHeJi[w_|[zQmMhKjZyZuZwjeVwfYu[zY|fjSsFcD]\wUqf}j^yF`F`UtJgIffaegdUtPlcbeXvUr]zOsZw^{WsJg^|WuMjg^|Tsg_{mhg[wfmhofWwa|RoC\}F[|FZ|^x]yHebeZyg]zOmLkHeNiNjE]~F^PkHdNkMiUp^|a}]~^OpRoZxba}Tw]}hUscrdnjcTta`Zfja~RrUr`\|Lja}^|_bkq[zJfMkMpOkMgKi\yPkNlXuUpSqYvSma|WuLgPjeVxSq[xUsZya~TsYxTvNpPp_}[{YyUwQnMjLka{Wt\z`}HdF`a}SoMjPjOmLjUtQoSkG_]y`~]~Vxba~inntlrtdfmqrtlTxmr^}fmk\|UvWxlsrihtnkoofrprwvu{wtooryzwrouvwy{|y{{ulu{nlr{nenwpxicsppwley{qstmoz{wtzrmuy{wlppkkyopttxjvu~{ry{ttrlitx}qmusxxqolqrrkbn^|Pnn\~^sxvelZ|KlnYvfqa|\wE^PiRoPk]{XvJeXr_wo~dyjaw`r\oUk?SufgUtk|}]za}pynaSqKdSqD[VoLdJcOfE]~E\~IdHbD_~B]{PkE_B\{D[|NiIgJcD]|CZ|HaRmF`>St@ZxRlQjGbIaFcGgGd@YxA[yOiNfNdF`~NeF_HbIaHdHeSlFcSmUrHeLkOmMkHaZt\zTtNlPkUt]zYw\w\yXwSrSrTrQlUoUrA\yNhUmOgLdMjGdIfQkPiHcLfKiLf]yPkMg]w^zLiC^}Kf[u^yKeNkWt^zZyQlSlWqa{^zWwXr[uVsXtUrb}^|deQnf_|_z^{RoYrMhSrVqXrhWvIfQnMi[vWxecg]WwmZ|FaVqZvOkCZ{QgSnPk[tdQr`~b}MkYyfSqOnZx\wYv^{Rp`~h_b]{d_{]~WsSmUuXxQnPma}b~`}hugcfbkeZz^}Tp?RuAVwIcRmJfNhWsNpYx`}f[z\xJfGbNeLeHfOlGcNj]xPlXuTscgfVtVs]{Os[xodYv^~cUuXwfcmiUwRuib\}_|SsRp]}jXvKhNoH`Voi^xF`NkPjF_QkHaQkQpHfNiOlh[tGbIeKhc}\wOqMl`~bZzSqGdSq]Pr\z[z_Rr\{\xTrJhMiPlUrLhQnMlPmZsE]SkOlPoSoF]>OsOl_}]zZzVwb`~kmllhhvykmuoclshnkb~llg\{_~Z|Vucgokhpymkfkmwxrmw{{vjhvxpvvyty{{x|}wrpv{tsq|yplvntwpjrxhlsqyxlmuvvw}nvxrq{szrsv`frrvspwozwnqwsmrtwyrzvyvppcqsvoollgurl]~Xzb~gSyavrwkbIgWtu]yStgHgGd]x]sE`sQeOcQcVipl~ZqSpLhOhJa_}iJelvw{wrfwxehrynJbLimJaE[|>VsQkJcD]~FdKfCXz>UsF^LeGa|AXxKgD\}BYw?WuMfEb=UrG^G_~JeRkE`LgRmLjD_}JbG_G`~G`JfEaKbLfSmLhFdJh_xNlTmLgRq\yIeD^~GbOlKiNjVnYtTr_}\yXq`{_VvNlYu[vPmJhDb~HbF_KbMfIdNhYt[tD\}TnVt\uQiOhJbKhUoVrLgRmUo]z\yPiNiUsth]wQk[wSnJiKjTnb{bSrKkSsgWwUpPlIgPoa}\xTr_zVqVqQo_wWqUpQp[`}]uRpbdlbZxlgPmF`ia{NjFaJcPkd~d~Zy`}ecYyfh_Uu[xVuLjYvXy]x^|^}YvXwelkcXxLlQkdPoQlf]^zfjh]fpY{Uu[{Li?VvC[}D[IcRmZr[wDaNk^}k\uWsKiLc`uHdQmToUpWtRlLgde\~gafvbZt_zafapZz]x^|Suied_}Z{QqekZ{_{l`~OlVoMkJdD[RkLeE^LdIbMeF[~AVzOeJeFcRpWqKcPq`OmZyWsNlQtWxfOlRpf[xSsUwMo`~WuLjVtTqUt^}XxXvGaJfQkOmLjRoWsRmH`JfNjMbASzIeVxXvKhYxddhocjoecfslvwkactqhlcVwqtc^|bj`~modjkllkpipdY}tuusxzvjprvx{z}wkns}{|zvywnsscjlqxwujvvsytnpvjq|tzv{tr{sxsjuypw}vlkpmpw|{xqmvytv{qdp~vuww{{ckvinqfcqogb]}]|nhbmbPjmZ|Z|jij]zip]}_~XubIcBZ{RjAXzHaWl=Sr>UtmvSsefsa{a~u}s|tepzoinrecVvWuwTsUlC\{G^}GaJcRoLhFbSlJ_NeNgNhB]zE\~D_~MfLaD\|IdC]|QmKcC]|IbC]}C_}LeQgXpKjKcOiJcFaIcPjH_~KbPkLiOlIg[t[xIcLbMgXuYrYqNkNmUtToXqUo\v[zQpOkYwfbTpUo`}]zHhFcXqMgE^IdF_~E[}[rJdGbLhSpQkQhMkVnQjMhJeHaSmSnTr[wf~\xIh`{kaz[teXrOlKm`zUnToZwVwUsl^|Mn[x`~Nn_{_{IgQo\vVqTr`yMjVoZy^`~`|b\{^y^{Ss[zhmXuFagd}PlC]|[uUqToXrTtRsa}`a~_|esXt]zggVtOsJjUsRmYvWsWt_}XyQpa~]y^~]{Ki`b_~\}b~kbhgnfMmNlPmOjLeAXzId\uHcIfJfLhVp_{WtWoHgD]~I`?UuCZz_uRqMminZw_}YxSpYya}a~UvYx_z]}li_}ml`ZxZySsZwfWwOpQq^{[{_`{PmUpazMjHfKfF`C[|PdBXz@TwE[|CXzNcKbIdFaQnZuSpNoXwZx_~ZwUtVvod~Sr^~Zv^{Zy^z[~OoOnPmZuVrMkUp[zOoTrKiIbGbIeHaKkHcRlNkBZ{XLdlmmjncnymktlpsnwiki\|ZxHaJeYvRn\{e`eRkNjMkMfTjZt^yYtIiC[|QkHeVrVpMfNjMfE`LkVlMeEdHbRmMjXuQoNiC_}IfTmQkOe\uWuUqF_~OgMhGbMgE\|K^FaDcRo]yIhPlVqa{[uLjPmYvSpSoWt]|Zw]x[xbfNkKhSmTpNiNcUqFcLeOjSrNgPjVnPiKf]wTsFcSlUqUsD`~OjQmVt[wIe_{dSrQoa~^~UsUoVr`yXsHfE`YuYuPnUoTpTr\yTrLhSof}\y]z[zMjab}TqFe[w^wGcVsthNnYvgVvZy^zMnUxOiZpWtIdgToF`Lj``}]|Uq_{`~`~YvXwXuVteSsUv\yUqRpQq]{bgZ{b}_}Vt]{a`yb|]~YviOr[{blbffjo[}[|Y}IfCZ}RiZr^xYtQoTsZwOmUsToJjZw]yKiPlD]>UtKfB[{GdUtLiTnQlZtSoUs\|VtPmQtVwZw`dYxgs]aPrTrLgXqZx^|ZxSrQpKhSpRpRpLfF^SjRkE\OiWqRhLfXsFaLiZwRn[xUrPo[y\zUrOkKhWwLkeYwWv[ymeC`|TkYrSrLjWuKiKiVrSlKgZxPlRmKgPlQlGcQkOg@VwD]_~PrKiMiNmXzmnflkpjlpgX}gu_bftic`_gg_~cpl^}dike_~enjcguckkfgocWwrlmqtrvxxsutry{ynvwvtsqprstntqvulhxorryvoptttzxrjRv^usokpwsqtpcixrumw{wwlkrrqqx{prpuy{s{y{}wuijj]lk{{khMlIgRmdb[sbXwYw_|i`|`zTt\y]z@WwRhCZ|[u{a|]yoohltsqvdcvxyhgbJfB\{I`H]~]7Ig9Kk;Mn5FcJYzRk_{OjIcJeOfQnRmPfPgMjUmGdE`Rm_{Md>UtGcHcBZ{LcYuIhRkZuZzGdKcSjPoIiIhF`QjQkSjRnF`PiIeFdOi[uXxQqYqe`}VqSsYs_yZw[y^|[{Wt^wMmRqYtXsbVtUpYtUoSsTmF]{DaVqOiLgPjKkNjGeJfYsUmSlKiPlVpNlYsHhXoWqQqg]|YuSu_}a|^wQoQmVsPoYtOjWlKeRmUpIf]{[yUv[zRna{SvgfcRlXt`zRnVrTqa}Zr\xa^~[u]yfbYv]}pgWwNmVqaSsAZyE`XtZvib~Ws\wXv\weUxSvba|b|Uteqh\ya[zWs]y[yRr[{aXwae^~`~[yidY}_mekphe[{XyUv\wJgC\|I`NeOkOnQpNnNmQoKgNlTqPiZt\yHgVr]vFbB\{\tMeH_Hc^yKeAYzWtQkOj]{SrTsXtIgKiYuWwXvVt[xRsNmOmJhFdPkMeHbBX{PiWuIhVrYuTlMkYySpZu`|NnOma}azNjHeJjTsVtPqQp^yKgJeQkUrOnfTmYvRjG`]vXtGcH`KgGfG`NgYp^vUrTrRoNiH`F\NlWtSpVtWulgejlgdtkgqjjcc_giffY~PshbmfQo\y\}On^|^~`|aj__fianfbkddSwgl^|dtjhoiiyvxtyyr}ppwovrprsprqlyomywuspvwrptnywtksstvtnslx~wuvhkeotjryrrkwwrywid{wtwpxqvrtnmmprwyvvtguksbzztkk[~llafYv^zMjIcSnD^UqF^MkTt5EcSohOoMm]{cgmgi`d}aGaXucTnJgUt^{UoPiE]8Dh,6R;IhAUrBVt?Nn5Db?SrAUu8JiESsEaRnToQnVtGaE`NjOgQkNiKgC_}D_KeJiVp_yNhHcPiRkOiC^}JeNhXuYuQmTmOhPoOlKfHbF`C]}KeLgLfE_DaFbOjKeWsTnOmOo`~WuSpLhYub~b|Yv]x`}VwZy_|`{VuLnQlRlZu`zFcHfPkWoMhAZyKdXuIdFaAZyGaOmFaWqRmRlPl\wSlIdSpUrSo`{hTsYwfXwYwPjPk\wWsJgPkMmQlQjQnRlZuRr_~a~QkMobg_~fXuPkXv\yNhLiNhXr_}^z_}[z^|Uv`}]{\y]^zZtWoigPnFaGcNk]zZz`}a}af`}aYy]{NnHgZw[y^|^yfe``}_|^~^}_~a`~cb`YwZxaeOpfjnlejfglPqNjUqC\}D]~OiNjEbOkZwe_yPmFbMiPl_{[xJiUrWsYvSqPlRmPjC]}IeNhB[{AXyGaQjSoUu[yd|MkPnToSpD\C\|QjXtKiQiZt_|NhQkSqQnKiNkSq\w^yTpQqZ}gNkYvhMkXtn^yNlWqYtTqJe^xb~\yZvHcF`Uq^vMjNlQlVrWuUsTpSnXvIgGbG^F]FbSoHeIbMdGbKlbbZz]}glrahla}dvffcfm`he]~cl^}\|^|imeQr^|qfZz^PpZwfoplfbRv]nri[}fdeaZ~jphkslrp{sonvvytq|yrpuvrtfqyggqlnpntosyjjjuypdfrs{wtxlozyvqimledit}wwovrin}pvxukprv{sqynrtwtlrpmutb]hsseZ}v}onaaiPo\ziXuZwazJgEbDZF`H`8LiVodzJhkprihjdXweIeHbKf@UwG]}IcNhLbAWuQkhl_z=QrTt=Qn6Ce0;Y5Ea7Fd9Gj]ug_~gD\:LlMcJ_WnQiJ\{awToAYyde]|_}RoHeFbTrKeOfQjMeGcBY{GdC^|G`PiKdGbHaE`GdOkFaMeOmF`OkXoIgKfIgQmQj[vYvWqTmRnIh[uUpXqPkPhXr\w^~\wWrTp_}_|HfNjWsUrOrVsRnVuWwQpOlKeKeH`:PmE[zFaPmRkAXyOjOhOgPgNjXtQkNgMhIiHkLgRmTpg~ZxPlUnYw^}Xv[yc~TvPp\xMjVuZuTrZvWtXvYu\xc`z[tYxa_zZx\|RpglTw``}Zw[x]z]zXwYxTuYyb~e]z]}Tvhj\yWtXtXtZtYw^{cca~`]z\{^}[x[zigafddPt\{g]y[|aYw`}c]{dhac]]~m\zQqXsYuTrltjhfflshNhFcC^|=NqTd\tKgWqcVvNhSo_~TpF`RmSpMiWs[vWua}Z{`z`yMkGb_wFe@UwJ]KbAYy?Uu@UwXtTlRmKjOmIeNfMiC\}Hc\t`|VrRn`}Xs[yc~_yYzNra}gMq\yUtOm\yaRpPkOnVwa~\vWsCY}D]QjZt{pUpE_KiLkLg]uTrKhTqYxbZsNjMlPlRhG\KglobdhbX{ggfgeimi__ejmoplci`QpWwifcUvX{[z_|dhietm\{Lknf^~pehiPrmdTr]zRl^~vl\pqpgjhundurjous}ljv~kkyouhghol]ctuontt~wjprngiloghw}vln^mpmrei{tjis{ltujipno{qtpvtyz}vyvzuorrsdcfbdc\zgacdhXxac}_zTqVrQkGcLe`}mLiN_3C]9MjKiF]JccZ~XpWxUsD[PeNjC[}G`C[|8Ii1<[6GeBQrETt:Ki,6R0RqKeVoSrVrSnMkWvWtKhC[}QjNhG`OjUsXuKgb~hHgNoYwTsKcE\PmKfD\~@UwIdMkJiMiToZwKhLgQoGeWqKfPlQmYvPpSsYugmSvNnTs[]|^|QoZye}]yMjIcTqYvRoOlNiTpGaF`VnMf]z{ZvNlKf_wMmMkXvKkKiVoQmJiRkRjSo[yfbZ{yiipbsm`odfnhWwb_Vtgll_epVrYzg\{\wOq^}[tXxbhgafd_dlkc]~pffaYyXu\}Zw[xa]zhehuwinunqwncvSu_}nojuulyuapumpfqriwtrssuvvvttwpvvmlpxqlgdr{dmj`tnsuqtuv{swvnvywlrsqmnstv}xtyy}y{wpsupha`}ZxgfVs^qeXvUtRpnWvOlHbMgVrHfXtXuD\NbGXzAZzPkFWz=PrMgUwV}NnToF^KdKbBZ{MhGb~EWxAPsOfFb;Ln8Gh2?]2?]H\HY}:Nl]zlX|WxLhBY{SjE\~E\~Id_wtqdSpRlHfTrRmD^|FaFaQkRjIcNhTnGaIdC\|MgTpLgOgUlXtLjMkOjYqMhVnWoJdVnQhSrQnF`SlOiNlToLjRqk\xZwZuWtJhUrNjPm`zQoNn\yd~Vt\zcTqNgPhNhOiD]|F\y;Pn@Vv?WuG_~C[|>VtNfRnSlD^GaLhIdH`WpOlTpe~VsKgVujSrRpZt[xXtUsYwZyVt[xYvVsRnZtUrbXvQo^{b~Wui`\{\{Vq_}e[w[xkj`}ZzMkMme`}]|fa}PrWvfb~Zy\~Z|]{a~[{`~UtazUqRr]}jcpg\xjk_|Wv^~i\z_{dPq^~[zYydjcixhohiVt\ygaWwVtXzTs[z^}dkiqrlspQtRsKj@Ww>RsF`~B\{LaUoUpLiYqWoLeJcKfUnSnKjD^G`He\t[yPoGcSn\xgZvPlQlHaD^RoEbOiSlHdWtZvMjNlMiRnRpPnUqa}PqKia|e~JhPo[xZxWvPnSq]zWsUuOoJf^xRnF_HeYvZwLlKiIdF^SnUqa}ug[zPnNmaRnUpZvQiIdFaUr_}\|UuZxektfqsbig\~cegvvkj\{fTtXy]{ZzSt[xackffeYwebb_}UschaTumh[|]|gg]d\~WxZtZx[{]{iebxc`tlqww^Z}pnrr^}Y|r`_~rppukjlfdpklqgrr{yyvltwvprtyvwtxtmbnpjfizmqdbnnrlyur|t{qfp}wwvlfprijnwusr}w{ywlnmtnga`~XweZvUwpr\zjm\xSq]{VsLfD^FeRmMd8Hh:PjBZx]xTjAWvLiHb\yPsKiCY}Ul>RtBW{G]}9Ij2>\CQpTbI^Rl@VwZm9JkASpI_;In7IgG^|QkPqi^~LcHYzSmJcD]~KdZukh]{RlE`GdSoLeTnVoPjE`OgG`C[|MgJfQkF`UsKjMhMeMhUqJfE`[uNlWo^wYrRjTlTrSqFbRkYuOqKgIcXuQiLfYse\|NnRr\yTsQja~KjKii`}SsdUsKfUnRjKdDaC[|DZzCWvJcF_~@XxD]{NhRmQfGbLgJdToUpSmOjSnE`Wuc}\v^vXuOjJddldWtUsbaWuYvRoLiMhZtOnRqPo[ye\y\x[z[z^z\y\zWtWsehRoicXw`}cRq]ya|SrVtb}_|Vu[ycha}dfQpOlKeHdYxhlglbfwhWz_b\zdm`chdbqJhNhf]ahdPp\xiXxUtnlg^bkggkoprsoaW|QmH`B[{G`BVxJaD]GaVlUjIcHcVoTnOhLlE_TlYt^xOjQlNgPiUsNpTqVqa~VuWvRoFbKfGbFaJeMkQl`z\z\zXuIeQnHbJfMk[wUqKgiiMgMjNmNkRnOmKiOpPmOiWsXuMkIeKiPqXyJgIfSoLhOmQkYvY}Ts^y^{HbLcSjVq[xgOqUvY{c]|`okmfmjec^[xRqZzhc~Oqi{obZz[v[x]Z{_~_QsZxZvofhi_bd`rnhhUuPs_dc`]|ZzTvXsUqXyMk^|^|f{kewpjpttcdhjreclZ{_vosnogckgfnnmlj{xltwlgmoov}sopl{xoemqmmefkopijytolztpuppwvwunjpwlipnomtunilyv}yurvptkVrRrth_yc|Vt`_|_fhkMkNkUoIgOmUnOjJ_9JjC[x8LhRmnF^@[wTocgLhXvTmAXzQg@VxGZz9Gf1=[7Id8GhCUxTtKbMa1?[7HdNf3B_2?]:KlGZzI\{?Rs>StOjMo[uEY~F^TkUtMgTi=Oq]zQl=MqUtQmSnA\zB\wPjVpIhMhE_TkOmQoZvOlHdLfa}PjC\|NfH^KbJhE]K_C[|EaAZyHcVs]zYye~e\w`y_|dVv\xZxXuUp\{^xXwTu`{TqSo\zOnHcMgLeMjFb@ZxLeWlNeDZ|>UtF_~JaHbIeFcVnYtTs[sOkNkXqXuQpOnOlUsKjHfHdNkbxhRqPmRlKgRl[wLmUqQnYuUrLj[u\v_{_zUsZy_[zZylUwPoTpSr[yFbKcYuZvVtWtTsb}jkmc~Roa{}hWsmbLl`{dtj_}bb[z]}di^zWue]RpWtZw\vVtdfZ{]{fdfinacd_~]|e`Yz]|^~Z|e_~gjXynyvjjd[|bVsWqOk>St8HhCWyG_MdJ^}J`KdBYyJ`JdE_>RtG`E_F^C\|f~c{F`PhKfQoSoJh\s[vPoOjRoOkQoTr^yWrSpKic~SrKjXviVqNlVw]_~_`ZvdZyStJhdcc}ZwZu^y_zNoPnUq[xNnMjQjJfHebsZyLjWsYxfcfckha\{\{cbpW{^dSqVsag]yPnTqXsPlg`~Pp\~ocSscahihmheY{jhgna_~beSvesahf\{Tr^{LhOpVvUwaWzegndmj_mijnRrflSp]{cc^bfVw_r]|epVx]c^~]srcfhmemsUudjdephflslln]ahpvqi]akiqpvttmjfpqmroitpmnqwyogqwsf{tvtxsirrrrqqpgdoqimfTvoPp^}cdh_~WtNjPnMiPkNjSoKb7GgF[}OeMf`wNkTvXwD]RoLkGeE]PlJfDbKeTlVsXp:Km8GhKeUmOpEUwH_E\|F[}C]|F_H`MfGaNhB[{AWyVmQmI_IdJhLhIdYqQjPoFaOkHcKgMkOkKhMjQofXuSs`~[v_zZxQpSrej_vYu]ySn\|`~SqYuXqRodTrWrTqJgQmG`[xKhPi\vXyedYxRsaaejqgdkc^|Yu_~a\y_Z{dXxZvSn^zRoNkQmWvSmZpRqLl]}el^|_[|\xhxlbdjWvcnnguq^RsWvcbtkVwcXuSrSsekYz`beee_cajk`\{lsr\{ged]|lcZ{dSt]zh_UvnnNnY|m^|enlhicjntkhfimdlbeidf`migiytcbXzeltyxvtllotlqrxkowllrmnvonqirvitqqpsxppfiniblhffdkoOmSpXvalY~\}PrIfF_NlOkE^Og;KiHZ|J]=NrHbStfMl\{PmD\LjIeIdJeLe?SvAXyaD\JhvSm9Jj;KmMcKdNbTl?TuH\~CXzOabv9JkQnWqJcJeOfLjG_PfSoRpVmOjQoLhHcPjOiF`B[xAWyLh^sPiIgOkLfF_GbQkWpRlNfTmRmWqGcE`IeQhbc~PqYwmPjXtQqMlSoPmLiTpTpOlLkYtMn\wi]|WvXtZwUtNlRmVuSoVpTrZvTlPlNfZqKd>Xt>TsBVwE`MgF^{@XwOfQiOiSnSqOo`zUpSpLiQoYuNjPmYuXs]wb_~d[vGfHjYvd}YwYxQpOn\wYsUrhe[yWsXuOrRsZtob\yazVnZtVu`e~b~UtIaIcJgOiMhGaPkLgTm_zTso{riedea}Tr]{c\widd[|ekfdd^~heRtY{hWwPqkhXzabVzfdfa^~rb_~bi^_]|]za]{\{ghajolrdjneck\~ZzKd>TtE[}H_CYz@Tw@\vNfSkNiKdKgLfJdTmGcH_IaF`FaKeD_FaF`MkLiGcVq\v_yHfLjLiWuYu[zYy]{ZvVt\wh]{WwWqRs]xh~MiPlRoF_LfTrVqLkc{UqUrLiMiF]KeKgUmVuQoYt^za~`ikOnZyWw]xfg^zf]{OrMlgqXw`aHeGdQoWrMkNni\vIfTqYvTqVukg\|maWwcma~apwf[z\qdekebVwa|Sq]}mTr^~nsd_ipckpfcbZxWws]ygn]|illwh[{nlmmgZwgYy\wbVyQtbjfjf`aq^^\osk]svhgpidsiaOqbgcelorUwOnkrxswt^bkltrolpplbotspjktvoljonkrofbmonkhmnnja{d_}]wYvSv^}rqLo`hSrDbGbKeBSw?Nm9Jk:Il8IhNgIf_{Mj^|UqSm\xVsMkD[|PtL`I\WtSo^wOkUqZub}UvaWwZvIgWvfSqOlPmIgJfhySp[u[vKjOlcv_~RpPnKiGeIaTlMgJdD]~A[yQjRlKgIcG`~H_~TkPiMiC\}Qkb}VsRrSp^v^xOmNm`zXuXv[vb|`hXvSsXwQnSk]y_}Kk^yTnHeFdWvg^z^zZ|RtYuPnUu]za{ZvPmQmXs^yQnIhVt_|IiRk\v`z[tTq]w]ya}Uo]{rg]}gb~gYyRq_}Zw]~bkdVvacfmk_m^|Llf[|Iie~p^\zei]uXude`jYvZxcXvbe^z\ydi\yMoVv_cpgrfelcajheeQsKfG`BZ{?UuK]~FX{LcLgNgLgMfPkMhRjVqPlIbPkPkFaBY{OeJcKePkF_RjZrQlMjVoPm^yVpHfVv\yQoXtcQlKkTqZvLkUp[vOiQmHeQkQkFbIeWlMdC]|KhPkKeVsToE\IhRm\yWrh^^}b~aVv`|dRsNrYxaZwXsXwkibiZw\zNlLfXwdSlMiJhMlRqQqPoXxYtZv]}mf[{jab~W|ci\}^veePpcnjY{VrKhZxTrNnWwmygccmvndcqenbZwZvVufifigcc^|Sufj[zeebj`VxnkocRs[zmhaipndkcNrdiihhbqqidivnik\ySt\dotamh[polvlosmgdlrmmijvrmrclhnqnpqqwmmjniipokvogkjla~dZx_}Qn]yUpQsegTqMjPlVrAVw1B\9Lk5Ac8Ki>NrKc`|Op]{YuTrVoH_RrUqKecJa>RsdXvPoYy]|PnVtF\|QiXoVnIaIcIdJeTpQmOkHcGcNhVnHaOiJiTrNiXsZvSm^z`|b|XsVt[w]~Yt^|[{_~`~ZvOlUsXvWrb~WuNk\yMlHeUq\vXtRpRp]w_{[xk_SqSpXuHcQoYtVoVt^zivthtr_}Y|]lk]gc`d^zVrWvWyWvjifa`dbialk_b~hdWsadeaXyb]|]zaecVv^]}`VwWw]}[y[xb~^~VwPnRqTvemjmglfbgjlbXZ~RoJdGa=Pq9JkH\IcC[|OdMeKhOiLdVqYtOiPlVoPkE]G^NeE_F`IfC]}MfSoOkNkPoRnPlLkQoRrSrTsNlFcHdJdHdVtPmIdNjOgJfTpTlHbSnMeSkNiSoH`[v^|bcVsVq\|[y\zZx_|^zc^|Om^|XxMnMkLkQnUsYzNkTpaUt_}ia|QkQoGbOhniRqbZw_|f\{LjMmfg`i^~^d`~ecWqgf^|YtUr[{bKgqF_Lkm^}bZzcnrpoebnXx]}iu^zTrePnWrajcZxZ{geb~WsKidja]{lgdfa`dZ{]}ffgsrlrd\kc_sedlie`flpboiX}cagttpiftbiynnm`jstuqrjcqsjgpskelfjwvtkbmnpkdejsvaX{[~jrlUuNlYu[vLk[xZveCX}CZ}Ld@Xu5I`L_BY{5Dc=QqJgHeRv[LjdJdJeYvE][v_c}XtD^PmXteMmMlToJeC\|Rt@Yw^|BX{?RuJ\~;Nn:Nm3A`8IhNbkdbWuTpB\{BZyQiMgD[}E]}OiWuC`|D^~JcSgC^|MmYrQmNmQoVoHcMjOiNiJhLl`}ZxNj`{ZxKhYsmaJcKdYuTpVo[x[uF_Hf\w[uMhNjhl^}TpNlSmWnRoZyUuYvSlF_WrKhRmMkMkKhE`D`D]}>WtBWvJ]~FZzE[zI`XoMgKfPmMjOiGbKhKhPhXr\xPnJcUnEbSkXuXuRnUq[y]{XtZvWtWu^yTvcf{TpTsd~[sYuckeecUq\x_~[v[tWvid[`}`QpRpQmVtJg[ua{Zxb~crzmhprm^`~eYxYwQpZsj]}biee`gkodZ|hlZzXw_iloeop\|UsXxgn\}ke^ggaehcbf_~tadQoUsWwZ{qlsrckplkordjjTtC]|@TwAUz>QtTs@UwVoLaOlXvOjC\}Ie`zYsE]NiQmOlSkPj>Tt>PsM_D\~>Rs:ImQjJ_@Tu[nc{tqOiVpE`E\{IdJhRmG\|]vNlB\{JaXsD]|C\}UnWqPlMkTqLfToTrIeJdMiPnSq\xZuUrnidZuZsMhGb^xZtZwPlTpJfUpVt`~QoE`Tm^yc[wTrVrUoNnFdMkUsWqQkWtVuSoc{KhIfWnJfEaF_|CXwI^~@Ts>Pp>VtLaMbG`GcXuKe[s\xOjMgIg\x`{QmQm^{ToOlPoWrHeKiSp`ySlOlWu_zMpLlXrXpTsYuWsSn`|^}WxXvIhUs^}Xyhj]z]{YyNoQn[u_~_{[xMiOoRnVpciUu]a`~lphql^bfhTqXsZyUvTw^|dd`b]mjdchdYvStWw`zXwfvo`[|\}\{\x`fdph`~Y|W|_j_}jg_`d`|aZ|Jj_x^zeijejrmmnnpirmZ}a~G_AWzB[{?Su7Ff8Ih@Pr@WwBUxMaNeH^QjMfOdMbDZ~LeD^~GbIdPl[uQkJbQjPlQhCY}E_LbF_LfAYzBX{HaE^[rgZz^{[w\y\}bUw_{Yw\|b^}gh^}ejaaf_UzXzhUuWsOo[y]zJgSrja{\xaWtg{KlIfq]{SwghUrTpLiZv^zKibp`~OmneRqtiTt_}a~Yw^~\zWrTkRnRpXsSmSuLkOolgUwemgsnmq]Sqof_mkQoio^yZyma}jRrQpSrWsfqTuh_~SsfhX}Y}StVuYx\~_c]\~e[x^}dgq^fkggaieen\}`Y~`rpdg^}h^rbbfW{b^~dkhnnhorlhoimpehfabervqlsfprphwnevjfqpqkpeci}a}MmQoUqjfZuLjKjBX{?Tv:Kl6De=Rm7Hg2=]$*D2@^G^?Ou:LlE]D]~EZ|@Qs6Fe2=^AWyc|CX|[t[qF]JcToH^G`VxJfGbKc>Mq9Gj?SuK`YlH`BX{>OtMbNeZukNhWpH`@Ww@VuNhKdD_zF_E^~GdVnUr\yWoLbQiNeRhHcD`HdXsOjOi\ueUtKhToZub{c}MkOiXpTqVoZqVp`zOkLg_|^xUqQqaSmLh[wUsRo_yc\{XvLiXqPoNiEbKiLkTq\uWuJiJ_ZtIcH_~Gc?WuH`K_JcLcHaEbB[{F]H^Qh_wTpTrIhUp\vQp]xcicXvXtPoNlOlXr[wQoQm`|UsQoUqXq^}ToMjXsWqXtUsWuJgMlTsUuZy]{]{]{Ruba}PnHfSl\x_zWvKi]xcdXzStiba}efgiqc[zsiUrOn\|Z|af\|ac_[|ec]~ioiYyZz]xXw\zdj`lZzesa~_~hck`]gk[{gc^~UuUya~[x_|`aXq]zWx]{f]itvtvslnlgigfiX{QpHcC_}BW{?RuATy7Fg9KjH_?SuE[|LcAXzE[~AVyE]~CZ|E\~E[~D_~PhH`LfIfc|IcHcE_C\}E^E]TnQkJeQkUoLjPmkiei_ckqaZ{]|MmTsYzZz_Xw\ypoRm_}^}ZvJiJh^zZxSpb_}RqRrg\zRoTtmn^{QqQmXvgeaefKjVqlYvSqg{eelZ{Ki_vlcUsXu[sJfVuFbCZ|VuXzUtPplaVvjugkmdckpWuRtZx_zb[{o`|]yo^}Turg_bRpljSvc[{abdUw`~[|Vz`acbX{_cVxMma~kgr`uk_bnld`_\{a~[{aonbkkkfmrkcY|Mnblikop`m{hhjjhjl]b\]wvicet}rccpmordh_bahvy^VxYx_{_{rbXsxQoCZ}TgBSu6Gd8G^!'=/SoBVx@RwCY{CTp/:X3=_@QtNcTmBX{Vrh@UwAUyPeYvOiC]}PhZreIa;Kn8Gh?TuOf\nOeIbKfHbOlE_JbE]?XuPeg}_|B[{BZzPjKeFaRnPjLeGbSmPiQlMiLeHaOjVoF`OhQlOlWqYsXqYtGdNlXtSoSjXme}WqHcXt`{c{XrMmWu`y^z^}QrToVnVtVv[vWpl]zLiGbWolYzJhJhUpRkLhKdKeC\}BY{CXwAVvK]RiKfKhNjGbJdC[}NdXqRrGd[uYsOnVoXsQoXwecjgUsWsYyVuNiRr`[tLgOmSrZrJdUnUoVq]wXrLeZu]{RpWqKiLiWtXztlVuWuRoIfHcFb_|ng_|_fn_`e_~Z{`lc]~dhTsVrhZzff`ifebckl^~cbc_~a}VuOnXs_{`k\|]|b_}_}ecmnjngdjcf^~[|[y\\zq`}\yh[}Ro[ybjpkirkmtopph[}ngiifhafTtC^}DYF`AWzLfMfF^PiYrFaKhWmF_GaRnJeLjgck[~[}TqMjXsrKi]xRoKgQschajm`affqr_\~XxVuUqKiQpf[tUlSpg_cUpHdGdQkKgKkNmWva|Sp`i^{Qn`wXqNmZya^~ig^}]{YvWu^{l`|`|ijj^zYvc}RpHfVs[ufi;MnTskPoTtXyi]~^zkY}foeal]|higeXwY|Tve^|h`Rt^}aaj`bhZ`f]}cc[zsrllf[xi_diRrPqOmSn\}bwvafndkfjkee^{Vv_]|b[|\jihjyf[wben\}prpmktlbkjmcmoe`ejhmshcm_gqmg]joZycgedejggcn^{LiJgmSoNi^zDY;NnCYs>Pj!7)4I;KbNc8Ih:Gh9Hk7GgNeZqJcFZzPsAXwLfUoPmKjMfHdHcPhHgNkG_XrPpPjRlSpRoTo`x]x`df^~VtUsSt[ygVtTsTrSoQiLgJcRiPkTnSoSl^ySmRpTsWsWrVuYwSqZzf\yXuWtFcKePjPnRp`|ojbgradgrm\~]}d_Vs\zgXxUv`ngb_b[}kl^~]~bcZxWvZ{ccUwUsf\{WvYxUuPl`}jlb`jljlbpiec]gWt\zZzc^|VuXwjicbfiqmltkef[~XylldYydaehn]aWwSrRpUsY|[|W{Vwb{VtbPpLib~]|]z^htcZ{ZzTtgspeaZ|Xz_za[pWy[z]{]zimp_}^yNpMna}bVtWr\zUqfVqRqaMgFaIgKi[xJh\z_}Wt[x\{YxdfXvRoIgZv^yTthfWzQppnKhLjTtcpdSuMlKiE^TnYwQnTpWxStroWsoWxbvd`beeXxUwY{cikpj_ja~boqkfVyUv\{[}kb_cdk^~Yy`kt`kdWw]}iesb`lOnOqn]|fpZ|Yyacbcci]~^~Qt\|a~Lj\Z~]~ghdt_Wzd[zb{eUybjrrrdaptlmof]pq`]pqnec`dvkfheliewb\{pkJjqkbmIcF_SpHeD]}F_I^~+7P(6J6Ha!%='2H:JfG]|4Ea7GfHZNcGa@Rw8FgL`C[{6IeF]|6Fe;Ii4Ba@XwRmKdLgHaQlPk@Sv9JkG]F^OhE\}Qn;Nl>UrJcUoJd@Pu>QtCZ|>Sr@Xt_w>PoRtNfQhMbZpLcAXz8HiIY|9Kk3B_J_K]J_ZxQm=NqJf_NmNlZ{UqD]>QtRjNoEXyJ[OcUlTjKe:Jl17\L^9Mk3A`RdRpHd`z^{PoJf[sWqF^TrZuVnXt>TsBVwE`MgF^{@XwOfQiOiSnSqOo`zUpSpLiQoYuNjPmYuXs]wb_~d[vGfHjYvd}YwYxQpOn\wYsUrhe[yWsXuOrRsZtob\yazVnZtVu`e~b~UtIaIcJgOiMhGaPkLgTm_zTso{riedea}Tr]{c\widd[|ekfdd^~heRtY{hWwPqkhXzabVzfdfa^~rb_~bi^_]|]za]{\{ghajolrdjneck\~ZzKd>TtE[}H_CYz@Tw@\vNfSkNiKdKgLfJdTmGcH_IaF`FaKeD_FaF`MkLiGcVq\v_yHfLjLiWuYu[zYy]{ZvVt\wh]{WwWqRs]xh~MiPlRoF_LfTrVqLkc{UqUrLiMiF]KeKgUmVuQoYt^za~`ikOnZyWw]xfg^zf]{OrMlgqXw`aHeGdQoWrMkNni\vIfTqYvTqVukg\|maWwcma~apwf[z\qdekebVwa|Sq]}mTr^~nsd_ipckpfcbZxWws]ygn]|illwh[{nlmmgZwgYy\wbVyQtbjfjfh]XuYxm~AVzF[dtȄQoXvovlfZyUuTpKjKk^~i\}bbek[{VykHbbzeTslcofbiaRrfg]drogejbhcdmtf]gnth^}mbdnxr{rehSnBV{VoKb0:Y=OmEZx8JhBYw2AX8FcTlHZ0=Z3@`;NlHXw9Fi6Bd6Ge4Ba6DeFY`/;X>Ppa|E]Lf[}VuLeIaZxTnQpHd9GjYqE\:KmJcM]JdE[vB[zKeZuOlLkKjIeB[{F_TkQmC_}SjIc@XxF_~I`D^~F\~MeMjRiXrYsNgHbYq`xNhWpXqLf>WtSo^wOkUqZub}UvaWwZvIgWvfSqOlPmIgJfhySp[u[vKjOlcv_~RpPnKiGeIaTlMgJdD]~A[yQjRlKgIcG`~H_~TkPiMiC\}Qkb}VsRrSp^v^xOmNm`zXuXv[vb|`hXvSsXwQnSk]y_}Kk^yTnHeFdWvg^z^zZ|RtYuPnUu]za{ZvPmQmXs^yQnIhVt_|IiRk\v`z[tTq]w]ya}Uo]{rg]}gb~gYyRq_}Zw]~bkdVvacfmk_m^|Llf[|Iie~p^\zei]uXude`jYvZxcXvbe^z\ydi\yMoVv_cpgrfelcajheeQsKfG`BZ{?UuK]~FX{LcLgNgLgMfPkMhRjVqPlIbPkPkFaBY{OeJcKePkF_RjZrQlMjVoPm^yVpHfVv\yQoXtcQlKkTqZvLkUp[vOiQmHeQkQkFbIeWlMdC]|KhPkKeVsToE\IhRm\yWrh^^}b~aVv`|dRsNrYxaZwXsXwkibiZw\zNlLfXwdSlMiJhMlRqQqPoXxYtZv]}mf[{jab~W|ci\}^veePpcnjY{VrKhZxTrNnWwmygccmvndcqenbZwZvVufifigcc^|Sufj[zeebj`VxnkocRs[zmhak\XvWv[|VureXrZzÞ˕Tq?NuJalmm\d[yOr\yh\zRqhgedOrPoTrQnlrecf^yOpgk[~hik__~\{Wz]iiUyhb`dg^eu^ehmi\~aibYyv{vWxTuLhGa3E_,5R-7T.>V'2I(5JBSuLb@Oo3@`DZ|I^EX{8GhDX{@Vw@Rv8Ei7Ig;Nn;Mn6De@SpK`FWy5Dc3B_7Fg?SuF^JcMlSs_{VlVsOkLfKcI_?Nu>MrDYzNf_uPjC\xIeOgKcLfTqHhJeKhLeRkIcA[yJaG`HcJdDZ{G_E^~UoXqSjJdMgNhA]zOj_yRm[wc~`yHdIfXqHeFdMiUmLjUskf^|[yf]yYy`~ZwQoaxXtJiVr]ytb{WrTsWvd~heIi>VtF\|QiXoVnIaIcIdJeTpQmOkHcGcNhVnHaOiJiTrNiXsZvSm^z`|b|XsVt[w]~Yt^|[{_~`~ZvOlUsXvWrb~WuNk\yMlHeUq\vXtRpRp]w_{[xk_SqSpXuHcQoYtVoVt^zivthtr_}Y|]lk]gc`d^zVrWvWyWvjifa`dbialk_b~hdWsadeaXyb]|]zaecVv^]}`VwWw]}[y[xb~^~VwPnRqTvemjmglfbgjlbXZ~RoJdGa=Pq9JkH\IcC[|OdMeKhOiLdVqYtOiPlVoPkE]G^NeE_F`IfC]}MfSoOkNkPoRnPlLkQoRrSrTsNlFcHdJdHdVtPmIdNjOgJfTpTlHbSnMeSkNiSoH`[v^|bcVsVq\|[y\zZx_|^zc^|Om^|XxMnMkLkQnUsYzNkTpaUt_}ia|QkQoGbOhniRqbZw_|f\{LjMmfg`i^~^d`~ecWqgf^|YtUr[{bKgqF_Lkm^}bZzcnrpoebnXx]}iu^zTrePnWrajcZxZ{geb~WsKidja]{lgdfa`dZ{]}fffp_Vv\~jn\xIegi|ŨОHeCY}NmMhgr`hii[|^}[x[}aksbZvXxRsXy[zX{nl^Qs]xkthX{_fcbYxZyacaVwbcUuGe_znlecdY}jg]SsggXx`y}vi`}VwC[|>Sr:Gj4A`-4N/6Ge>RtPs[tUmXnOeBWz`wOjAYy@YwPhKcE[~IbGcNiKhWrWoJeSkNgIeRlFaHaF`IbHgD^MdLgVng^GfPmSnDb~Ge`x`{UrSnIgNlQmYqUpC[}Ja[wTt_z]va}eZxTpUtgeUoUrHga{kWsFcIf]wZsUsdgE[}CY|OfLdJbD[}D]~KcNj^|SqKhDaQiYoUnMhIfNhUqPlTnYrQlQn\t`|Tu`~[z]z]x^|`c_~VqXteXrZu[zma}XxNoOjXqc|_}YwWq`{faXy]}\}StWtMlMiOkTnaLjVsZyYxl}|{nghdf\{eja~YvXx^{g[ybjedhf^~cbd`koog\{bkVwXwcna~b~pacXxae[}_~em[zZz_bWs_|VxPoa}gkdlpmiccpfiqlQrHdD\}?Su?UvCZzDY{DUwNdBY{G`RkNfIaJfYrTpQpSnJgJfG_MhHfPkWrOlRnJgLiOlNlRpWsNkLgOoJgQjG`NhYtSoJgJgSmJeHcRjSnTpXrJeNjVrRmUsVw_|UuapYyWxij_|\|^|Tr[{ZwaTtcYvUrOmVuPnRoSrPnNjdjRnLmMiMgOnVu]}n]y]yWu[|Yy`ma^{Wv_oa}]xRq_d~XtVx^OqPmNl^|Li\wd|KgWwkMk[~\cpejp_lgVrfm_|VtfUqRlSq]ze^{k[|Yxo\z\xXw`^xZt[y^}a`^|kojVvVw^[zepeefMiQqz]znZvfЮӒĂD[z?RuIcSohgZyq}a_~g`}`}tkeVwXySsKictr`Y{h[|\zcStY{go`z]|de^}diiRqFbHdB\{Vslg^efrw\|nUwKifLkVwTtiwtPs^[zUnBZ{.8U#6RgQj9Cg7Fd?Su@Sw:Im=Jn8Bf9HkK[BWy?UuK^CV}6DeGX|StF]:Lm>MkWkRg=LqG[~cJhHdWuQrOhC\}IgKi>TtWtBWvJ]~FZzE[zI`XoMgKfPmMjOiGbKhKhPhXr\xPnJcUnEbSkXuXuRnUq[y]{XtZvWtWu^yTvcf{TpTsd~[sYuckeecUq\x_~[v[tWvid[`}`QpRpQmVtJg[ua{Zxb~crzmhprm^`~eYxYwQpZsj]}biee`gkodZ|hlZzXw_iloeop\|UsXxgn\}ke^ggaehcbf_~tadQoUsWwZ{qlsrckplkordjjTtC]|@TwAUz>QtQtH^RgMeB[{E^Roo_{QkNf@XwBZ{D_~:JlGZ{]vMfVpE`E\{IdJhRmG\|]vNlB\{JaXsD]|C\}UnWqPlMkTqLfToTrIeJdMiPnSq\xZuUrnidZuZsMhGb^xZtZwPlTpJfUpVt`~QoE`Tm^yc[wTrVrUoNnFdMkUsWqQkWtVuSoc{KhIfWnJfEaF_|CXwI^~@Ts>Pp>VtLaMbG`GcXuKe[s\xOjMgIg\x`{QmQm^{ToOlPoWrHeKiSp`ySlOlWu_zMpLlXrXpTsYuWsSn`|^}WxXvIhUs^}Xyhj]z]{YyNoQn[u_~_{[xMiOoRnVpciUu]a`~lphql^bfhTqXsZyUvTw^|dd`b]mjdchdYvStWw`zXwfvo`[|\}\{\x`fdph`~Y|W|_j_}jg_`d`|aZ|Jj_x^zeijejrmmnnpirmZ}a~G_AWzB[{?Su7Ff8Ih@Pr@WwBUxMaNeH^QjMfOdMbDZ~LeD^~GbIdPl[uQkJbQjPlQhCY}E_LbF_LfAYzBX{HaE^[rgZz^{[w\y\}bUw_{Yw\|b^}gh^}ejaaf_UzXzhUuWsOo[y]zJgSrja{\xaWtg{KlIfq]{SwghUrTpLiZv^zKibp`~OmneRqtiTt_}a~Yw^~\zWrTkRnRpXsSmSuLkOolgUwemgsnmq]Sqof_mkQoio^yZyma}jRrQpSrWsfqTuh_~SsfhX}Y}StVuYx\~_c]\~e[x^}dgq^fl`OmEZFa^|pWu_~sƦϞuUsE_VvNnOpXw]cUrStb~Yu]zkdbnNn`|c|c}_xfXuVrm`HfLkUuTw\z_{^}QpVuMlWtrZ{ofOmHeLiMoMlOoTwWxOqsndrjpWyXxkZsCY|JcVq9Jk.9T2C^1>[,3Q)0I$*C+8P(2I"'?:Hd.:V.7S7Ca8Dg3@`AWwMdPbGZ7Gg1;[BWx7Hf:LkSsNjOjUqMkG`MgTpAWzfZoKcc}HX|HYzXqLfWpH`@Ww@VuNhKdD_zF_E^~GdVnUr\yWoLbQiNeRhHcD`HdXsOjOi\ueUtKhToZub{c}MkOiXpTqVoZqVp`zOkLg_|^xUqQqaSmLh[wUsRo_yc\{XvLiXqPoNiEbKiLkTq\uWuJiJ_ZtIcH_~Gc?WuH`K_JcLcHaEbB[{F]H^Qh_wTpTrIhUp\vQp]xcicXvXtPoNlOlXr[wQoQm`|UsQoUqXq^}ToMjXsWqXtUsWuJgMlTsUuZy]{]{]{Ruba}PnHfSl\x_zWvKi]xcdXzStiba}efgiqc[zsiUrOn\|Z|af\|ac_[|ec]~ioiYyZz]xXw\zdj`lZzesa~_~hck`]gk[{gc^~UuUya~[x_|`aXq]zWx]{f]itvtvslnlgigfiX{QpHcC_}BW{?RuATy7Fg9KjH_?SuE[|LcAXzE[~AVyE]~CZ|E\~E[~D_~PhH`LfIfc|IcHcE_C\}E^E]TnQkJeQkUoLjPmkiei_ckqaZ{]|MmTsYzZz_Xw\ypoRm_}^}ZvJiJh^zZxSpb_}RqRrg\zRoTtmn^{QqQmXvgeaefKjVqlYvSqg{eelZ{Ki_vlcUsXu[sJfVuFbCZ|VuXzUtPplaVvjugkmdckpWuRtZx_zb[{o`|]yo^}Turg_bRpljSvc[{abdUw`~[|Vz`acbX{_cVxMma~kgr]}^}n[zJfHbHab~azOinw_z_sk}vKhk^yGbNnVuVsQpUqCZ}E^QpJfSn]yLh\xYtF`QmVnFaOkx[wUuWtPpMoLjjh]y^zRtOmb}_Vv[xWw^|UrRqUqiNkNjgYvNoUqYxWxsqlWwYwjId=RrK_3A]3C\FcXtJ`7Ff@Qs:Lk*2N*3M/:X+1P0;V3B\5Bc2<\9Ki8Gh8Eh[pAYz9HfJ`;Jn=Qp]~MjF`MkWuWsOhIgc}GaPiD^G_DW{?UtUkQnE_JbE]?XuPeg}_|B[{BZzPjKeFaRnPjLeGbSmPiQlMiLeHaOjVoF`OhQlOlWqYsXqYtGdNlXtSoSjXme}WqHcXt`{c{XrMmWu`y^z^}QrToVnVtVv[vWpl]zLiGbWolYzJhJhUpRkLhKdKeC\}BY{CXwAVvK]RiKfKhNjGbJdC[}NdXqRrGd[uYsOnVoXsQoXwecjgUsWsYyVuNiRr`[tLgOmSrZrJdUnUoVq]wXrLeZu]{RpWqKiLiWtXztlVuWuRoIfHcFb_|ng_|_fn_`e_~Z{`lc]~dhTsVrhZzff`ifebckl^~cbc_~a}VuOnXs_{`k\|]|b_}_}ecmnjngdjcf^~[|[y\\zq`}\yh[}Ro[ybjpkirkmtopph[}ngiifhafTtC^}DYF`AWzLfMfF^PiYrFaKhWmF_GaRnJeLjgck[~[}TqMjXsrKi]xRoKgQschajm`affqr_\~XxVuUqKiQpf[tUlSpg_cUpHdGdQkKgKkNmWva|Sp`i^{Qn`wXqNmZya^~ig^}]{YvWu^{l`|`|ijj^zYvc}RpHfVs[ufi;MnTskPoTtXyi]~^zkY}foeal]|higeXwY|Tve^|h`Rt^}aaj`bhZ`f]}cc[zsrllf[xi_diRrPqOmSn\}bwvadogMnJePkd\vNi_}eeSgl~}tMe6Ed=NqKj^yXpUpYuPjQkTq?Uu@TwE_MjPkMlKjBX{G`C]}@XxC[}HfQoSnTp\{NmF`KjWvJf``KhTsSnUu_PtUqZt_~Sn\tOm\yMkLogb|]zTu[z^zGb[yXwZzI_-8T%-ECTqIcLfOiOgI_SgET{M`0:Y3=^COp6JcOcEWz/;XDXx9Lk9MjJgIfKc_w:KlHcCZ}TpbbcC[}F`_{=PrJgRrMf@WwLgUia}YxQmKgC]|I^Zp^{PkZspc|NjD\|E_~MiGcKjOmXsWrPjNkNiD]~C]}KcLhXsUnLe\wUqNmHeHeJgPiPhTmQjHcNjXq[qJgSo`zlcOmOmZw^y\zQn[vOiWo]z^{RnG`Toa\zKj]yYuFdD^NiDZ|DY|Ma=Om>PsAXwLfUoPmKjMfHdHcPhHgNkG_XrPpPjRlSpRoTo`x]x`df^~VtUsSt[ygVtTsTrSoQiLgJcRiPkTnSoSl^ySmRpTsWsWrVuYwSqZzf\yXuWtFcKePjPnRp`|ojbgradgrm\~]}d_Vs\zgXxUv`ngb_b[}kl^~]~bcZxWvZ{ccUwUsf\{WvYxUuPl`}jlb`jljlbpiec]gWt\zZzc^|VuXwjicbfiqmltkef[~XylldYydaehn]aWwSrRpUsY|[|W{Vwb{VtbPpLib~]|]z^htcZ{ZzTtgspeaZ|Xz_za[pWy[z]{]zimp_}^yNpMna}bVtWr\zUqfVqRqaMgFaIgKi[xJh\z_}Wt[x\{YxdfXvRoIgZv^yTthfWzQppnKhLjTtcpdSuMlKiE^TnYwQnTpWxStroWsoWxbvd`beeXxUwY{cikpj_ja~boqkfVyUv\{[}kb_cdk^~Yy`kt`kdWw]}iesb`lOnOqn]|fpZ|Yyacb^|UtTq]wXvYwSrwzh|LayspIdRoqG_OkdZwgOkOmXqFaXwOlPp_~RsLlOmGcJgOiIgJeHdQpHaCY|HbIeE_BX{KfQlHaRlXv]~UxIgPk\|JiKhdc`TuJh[xqtlRnHeKgLiHcAVv0?Y")@DVx]tN_>PsOcZsOg=Kr3>_;Kk=Np5Cb1?[1=[7Hg;PmOf;Qn6Ie?SuSo@TwCWyNfF^G^E`GbSlWtJiPnKgJ_KeNkMc@WxLd^nLeNmTqWsFcH`G]MhPjTmJc]wkj~XrNmPlH`OiLkFbHdMlNjQkQmWrKfIdXqRlVpMjVuUpMhUoRlD^KeQmGbC\}F^XnNkHcYsYtSqOjNgZy]{\y_z[wQnQjOl]z]xOgA\zXsVsPlOkdQoHfFcKeQlGbAZwH\{CXx:PlB[{F`H]NeUtLlNhNlRm[sRoLlPkNhQkOiPiXp[uSqYwfZxVt[{Y}YuXsQqXw^|b[vSnG_G`SpYs_yLiEaWsOmNl[w]xRq^}_|`|WtSqYv\zOlIcPjMiMlYqYsbj]ya~bfdgmp_`^}^}Xw[x\z\{jka\c_\`cgcdp^zSsY|^|WuWw]|VuipUvRt[uUsKkUt`}bWx`c}kTrWqluLlOsZw_~d\zVv^~Yx\{haUyW{ohnmhkgaig[jf]Z}`bZ|e^Wm^Uzd_[}gnniemefbjdgkmc\}\~^~]yYzfujcdcgdb|NrQqYvLkOpQp^xa_\~f^{TrYu\wQmJfc}RnKiMmc~b|GaKhQoJgLjUvVpQo^}VwPpeRm_}_}b|[wMmZwjd|Qk]ziVvNmWycKfKgEa_xfLhF_F`?UuMgroOnno_{Äq}f`vfdldrcWwZ{efglmUuct`lto_~baf^~bZziQs]|sZ|a~ibYzae`cXy\~okqTw_}[zPq\}Z}jUrWwhZy[}XyKfHaLhfHbuv~nK\yϨHeXvr@UxYyjVugdlca^}Ooh[}RwgbSsWtIfTuQnLi^yTlRlKgRn>Qs7Ff=SrDWyBXyAYzFW|AWwF`Wr6Ge@XwMmlYuZ{oSpSq`{`}SrqnTuG_Z?Sq7Cf8FhBXz:LmLcTtUmMgIeLeVrVuVuVv?TvE[{E]Sj>StRtG]?TuBZz8Jh-8T7@e,7R5'+D(/J8Gi/7W>SnPiPf=QqF]DUyCVuQmTqAVyFeJi=OqQlRoE^UnD]Ga\vIcUoZsPlTokWuHcF`IfWpKeUoSoIeKhJgF`D]}VmMcGcKeUqTrMiSlQjKeRkXtKjMlOjWr[vUoKeSmPnSpUsZuSnWo]xXvWp]zbPn]wcYxWqQnOoQlWoLiMkYt]z\yVr\xWrJeUnZyQnPmSrTnGbXqPkGbF]}FXxHbOgTkNeJbLdMdKaF`LfJcRlXtWu]z]x\{^}c{ToWtZvPoHcbg_|`~]z]yVpYv]y[vWsNkLiVp^xMlLjYrOjOkcq[{YwejbZwc[{bXvXu_yNjIhToYpQmTrXub}iVt_z`~`}faadi_fStVs\zdfbfnchfafpf`dabg^~SnUsYyPmUqYt]wUrRqTqKgRnWsYuWu[xQoYx[zUtWwcUqVta}ZxVt^|a}[zg^~\}b\{^~]_`}Xv_}ph`gc^|Zxbefgdbf_g\z[{`ida~`jbPpUtc[yWua}c]{\wYvYyla^}d`z\xTt^{ja^|b]|Vw\{b`~c]{^TpRq_yZuVqQn^ydQm^y^zKh^zSpZt_{^{TpJe[v[x[wRl[waZxXsg_|Vv_{]wRn]xqjUuVqe]yUp_{PhQk]{_}ZvYvSoQmJeToRmmeMhSsb[yqsg_plXvin\y`~XwMkkWrUveg`}mgajh_Yxib]{goqiZ|epgYzbocmnleYxbi`}deebdfhfof[zef\yYxZwRlHcJceZvYpWpXqQgSluSlc~nǩЅjkzsab~mlgsj\yda|Zw_{i_{`|lZy`h]yc~Yu_{Yt\w\xQiWnXnN_BJon x+1: raise 'Argument of factorial must be an integer' return fact def combin(x, y): # combin(x,y) = factorial(x)/[factorial(y)*factorial(x-y)] z = x-y num = 1.0 if y > z: y,z = z,y nn = int(z+1.) while nn <= x: num = num*nn nn = nn+1. if nn <> x+1: raise 'Illegal arguments for combin function' return num/factorial(y) if __name__ == '__main__': print 'factorial(6) = 6! =', factorial(6) print 'combin(6,2) = 6!/(2!(6-2)!) =', combin(6,2) visual-5.12_release/site-packages/visual/site_settings.py0000644000175000017500000000130311065536752020655 00000000000000# This file may be modified by the user (or site administrator, in a # multi-user environment) to change settings or modify VPython to work # around local configuration issues. from visual import * ## Disabling shaders may be necessary on some systems where Visual fails ## to detect that the video hardware or drivers are incapable of competently ## rendering the shaders used to implement certain materials. This will ## revert all objects to legacy rendering regardless of what material is ## chosen: #display.enable_shaders = False ## Alternatively, it might be possible to fix some systems by disabling ## only some materials, remapping them to ones that work: #materials.rough = materials.diffuse visual-5.12_release/site-packages/visual/turbulence3.tga0000644000175000017500000300002211101051072020321 00000000000000 ^P5Qa*G(A@7?0J{ENe)Pr Qs2dWEyiR|CY|;NcFOl#Hd0dE.F80U9:`2Fh$YP3cYB=8yU3O447sERR:`Ed^,kR6d4N[4L[,]]WO)BG.<_*"e.%y6${PUdYnniktxMLvPPQRvFZP/YAi*!Fp@8^]I`sB[hU4EA{>k\=[2kD}=d>2Rf+eq3cGSZlLGmIx0'?qL?f4C,4-++/8AB>eA4_<9N4WP;P=ALAe/^t(cu1|.om'Zn.ON9N.9F71-+'N.*jC1d3Yf_djW&_E'`,7Y=MF/A\SK$YC'X>+=.077;! EH,^(@jDRnYOjjLWzNPO(P@] 02@SoXeInSjC bDOBI=,CM>\KEbMVcUjJyBD_mbZyG{pJCE/>M43-!>+H#P-'M8SLOg+oe,rs|+|_!vV9R2GR.MG"8;+<<%#L R:Y>Z;R@1&U'L%.39(H3-M?)9D3&'1(; A: ANH2(S<=d@NVJTCMo5At%t"-aE9 @4!H,-O$+K 9CG?R/W &D/'=&+K004&9$$#%G0Y 9L*J.(b$/Q"O')Q+,P9ED3R<3UNIH2>g5'}40;|?VP0>NC2S%B4A:W]M_|P}GOmKIFW`XwwCis6N`3?t68[F-8O88>8/H:5=ZS$gX)|S:L-O/]&V'%J(9'5E?# $)%2!D5TO?-d/1a1W"Z!O,$K5)62:;'1BL&^,| &, zBYc8]<-WL,WC<>Od[s@vvk6ln'erH^gODjY/RJ**O*I-9e6C=hG%g?*k;3zL0O)=P1GKB)0U-.Z$9c5,WAX@7M15C,%3>6-13:%%=;4HFCcS;h=5m7#p4\.O*,[23V/+H !6*&+00*-IDL9]4l3g)8Y%1I!)M#;(@ *C"";&P+4^>GW1T' g %Y?/OY/Hf=g'EN-VL;AO5D?5D7.QH3Fr3P^25H@7TXHWUQaMLJV6` 4L MAA>0!87$CS"V&W:6L>AP>*F1,>43./,%;23AU@NtGBC(u2k;`3)i,)x(2r)%a$;##)(!?#M1C*4d:r/u.,i(0L<9-/6.<6L?3HEC;8OJ G9 A1J+ I;8-UL5`*J]:G_9EK;C`L:Q4%T-4\?Z8E/#9A?V!;f6JR*[+#j ?ZFE#%*($)/52 L@O-0H01M3.\-?U07?&(!6';27@Q3aSC_RAcF4[:=[0CbPIJ<(4&<00Q+*_+V'P*0R+=T0 -4BR(b2.d,4R,06.:"$</DCLh_cfJiP G N#R"F:QH[=zQi-|[8nE._NMTF=:L3%K*:5,@.37(0<)1%X""!"-2r.Oe1>[3HPA0 J$.5;4/%5+%3<,5!X41pBBd:@j;?o'=jAO 5O >2),/-$**7"0?23;/587/53( 9>:TEbRhg k{2\Df=TMX(Ao=2jMRGvZgue!Ze8OWN6O@!8R@C7-A/"A ,E2)8//)2)0E!4A 32(:4!L21991087/F7F,7&,Z.B[:D^5;k'@g!,[()=+%"9&"B*&$+.(*9!89'<9;+4:#1/%U2^?-mV:l B]\^&ie"bj8mv?`z6AqI-e_ pX"jh0__ER^H9OT75BV:U-H/#+8..2%4<2>:R@HWP>=oI;rN1x7f( S8:J.F93I;A$53.Q/5D4?(5D&A*G 00< EW-?W:Af0Bb/(M$C.4H%K'/#(54-6/43/05038/991N#8UHOYY^k\ {X*y\BaLuq;l|CCfXYT)jW-RL==IC6+AB'(e3^ J.*!1$&37A5:R?OYQQRsUHuUC)7@54G/S5X/F-,4 6*O.8K:J+XK?VJZSbSITKN_QHR;*@   5/.9>.4D/*P1L3+A/ 0!*"):)$G..N7H>>I6&J%#, ,, )R'Z&1_327;1<20 5;#G/@H,A4L)9V&RN'\I6rE1<:H?R,WW=Wb>UEH3)OG'7];I 8046EjJEj;0P(;8'@R* ]81gCGSXW6dO8YK?WFFSGCH&; 233#0> 6D)70:2?&@6.%0D3;U.6<3-9=&76-:1445:15G5JL6^Tc5%j8iD1/G7NI/[BfL(q:2n2qB'q>2vE.d%?;(>5$4B/Cd5,j<_3$h*f;'m=>e&,J,8'5=8;B5(D^;EtHNk>Oh6S?5)5P)M)J+T';[9LLJd6[Z;\F97G)A$2%3#5(*776B?./5"+9$#?( ,.18%6=2O;1a2)f32~=$*?6&:B.?R;0M;L6b3[( Q.8H(4&=)):B-AM&OR._`@E\,Ue(188!+GI g"2Y%?j%Ah(FMFW8KB;.+A=%V3 I1%G0@2-[88Z->J"*N,G(FA', 6$#-$;3E<60'#%%/"2 ;&-4(?0/38)$4##!'( (28;F7@c%!\E 0!7(4-!-,6+90$O',E- 6#4 #8 - $!#'( &!3(A0)0%%,'3,!%''93!59*.A;8>C/3%"2%:# Q+.\7;H"CJ@@=(920.C48N%;M*e#3N.2a=?Q8NG %2),3@",4-)(33J'@,+.=A),E&$T^ [JOH!-$( /$&!!)#4++3,>&M$a,"m-#,&$*#"&61'50696<:!8>&0B- #+3% :)<*U.Y H:0$F%#P+b&:V/?Y,HH&JD'f+(W4>/%;39-A"3/-.%)+, ,*4+*&?/&=D,AF'+,:48"@,@"4@--U1#P-,M30N4D@3@1$Q4-R+!HJ*-"0,()6#0%$$#D"<7&K9"G<F<2I Z!e*[@XHWM!OM2;&/ !2 1  ,"0++&:57'KC#T4&g&@'(<70.$%!9) 8+/@;JA?!:@ -9-"!:$: /,20:8%I5F4>.)Q*)K1A-B1-?51,(0S:=I$G)9&*9! <8!/0<7A0M3Q2 IH &RQ*UA\I#^U)[U%DGB<7<76*3)#  3 %7:B$X1.b1!`/$I'(N**=('/*8(,888>?(;=.;B47;'B$32!3#B,*)$!7-6267/T\,F 6.*&2B"58K5.J;7J8'6$'0.+A. @061 2'7(!J(K%H-CB H C% QBWZ[XO[NWI?GB?@09+.8$+% &'62'T,,f"#A)I)&I0=%+"-!.7*&B5D8?7)@=,RG%Q G D0!4-<588$3 )=$ RS'7 &."&341*;/D4.E?,=C26*-;)2,9 *592B%A#D1C); ,7G NJ3MNFUH[IYWKZKHI 6KAQ9I$75+&$&B"U!$B' J'I&D),%0<&:1'@;&5!*D*,? L)ZZA#*-77+M#CF7$$BI:$&+*0&=%E1(G@)AD6:=':"-08K3,_,0cJ D%=01((67.6!LM(L@IU?]KcQXOO?O;TK\IQ+BE.,A$ ;'  #%<L,(N7$I;I+"/$417*<1N(W ISV;MCL7XK_-W- P@ $/8@> 9(#'.CF/ Q;(\FCC,&1!>$"J,>c8R)E-50HEUF"K8'A'6%$;G40_"0.555IBTV,\T1S;9>(<"<9B+E?2K/AW"AY&1Q*=P.HX_ MeX^ fWjHt.iH5%"( ( "!)$5<QJWK,[?-2E 84'!!($.,/. 367?:"GG,TU?NP6MK>88>-F DKKH"A8%Q/(Y0!S41M?=1K;,L63 ?!$F >&0J,(K&5GCCA; .H"H'8#&)"6+.&##+"2$4%#9#1C 6I %5B#-=C> ?I NG s=!x<(c/P7*:2%%&, $$!*"&0$&;,,D?E$*G+?;2:FH?OL&K@%V?%g=^- UVI!C)@>=6)(*(2*9@(:N7C <'8;=32+*:-5&''&*/0)$%$'-' /1=3 8@?7[5Z4T?&"+($ -)4!%(9.'?;788J@4M4,*1+6=#79!E1>]>DJG9J>)NS& X4V4 LFkHyE v1]#X "Z"!D%3 !2)"$-046565;!24-0<49'9*5-4-(2&,0$'/! *#% ++ 03+: 9=H2R"H"&"#+0$#%&*3( 2#/5 0C,5@*JK*P<.E+(3$.195?3!33/BA6BZ1 X%Z R'Z5z>~/s"c/V$,X#K:!)$( ,-((,:/:% "$'/(8%:)$6!/"4'>+C0?7+ &)&2E J#1/!1&6,#$=. ;9 1!#++0;+7B0<$E9(XF']&U&2&F% *%(%3/>6- 5G8R>aU+_/3j98q0Ax'.V3,C0%K(I%G'3-!"/('.,'18"$?7/+&.,25<+;"5>(E (D =)!>(11?5BC1A./?)- "*#-= V, GC:O+>>-' &%*15%T'&a0P$O!M&K)01$*:9H5J5L(E,GA Y8.Q#CQ4LU1S]:[_[NA^9DC3F&F$D 1) 5,=..=6%8>)@D 4!(#&)=A2 G!< 6::- ;3R<J<R; L<=5B- 8( -361I(:?-U0$N?)1"-/!J ZV%W,^*%k)S0641/H6PA[8 [##L!E0I34C'FD5VKB`Ccj?tR@gI8SC,/=+)' 4)?8&D>2;>*&JB9#0?/D4I$@ 4+ $&(1*/ .3OCXFmIkM`5 Q3 CC51 -4) !/,=$+F1 # ' 5M Y+L,p)/z)n''S?(=E,>?%I@MEL1KGJI-$F&2D5EKCOAZPBpXBnQ5KV5+H'*-*%$61'>E0@J-+E)>#.% 5 ;-$@6>)5+ ! (4/C AL IMYYiXoWiMa?CA 63 %!"#.)*"%, <2L8W?.a4#v)&l:(Q+0K3&S./K#)F"&E$;&1< DL-:+A9BL3@]6S_8M[CA`BHJF0:4 !%$1*/35%G9#D3@2*% !+**,!7*2( 2)%%!.8(2OERRUccvdtb]X PI:704 -# $%%'&".%,:CDUIO(+V-6K'-T ;S.?V!4Y.A4, ?7-4 1!-.3,H70\RCTYHJYKHURIMT7ML.?!%%*A9I;T+9O$+1$ 11((2-$! 2$$8)75; CI[c!kumjpml\ ^D ,>1% !1!#" )"& *!$ +4B<M6!5!&?%Y*a3SE_ AX*1>+@[K)?(8$$! E!OA8[VDaSDRRQDPY3TU,CD"/2$7*",/.'235533"-;.($'$%*&"'+ >9 NHVR{f yhok \XDW%S? -98-A%:/8'0%,! ' 6'%6 @) &3/-E,[&U22YB(NH%.;+#(!*@&+\H2ZQ@]SZIVgB\AE3/'#"-+'2-039( 8$%>)..3$.2 *-%#%'&*3,, .I'L<]E!|X~cvZIV$^*U+#PDETH'Y6#J%J_P$ PP BI=2?R5896<8OF'J1=E,QEI:"KKW)L9SRK\MVL763&/3&*,1.7(28-7(3&-5-(.0/7;0)). 1*)48'81#2"#;%B8,YFySnYgU 0I1g8<`8NYRFUM(\F,SEM6 ^XYGb'^('D76s!)^'D0%::*9MK\K_*LK0Q%PB"MPOFJ~HQIG;9"9&+"#2'C.I>QIXJPDHO#P.*B3%76%E;I6;&<1 17*2?"0,#4*6%+6/5?"^GVCO3 YT!K+ W1-gB b?!Yd!Kz)3};t,(HO5h(>m!Lh*O\:D'CMNDMHJA#K4$E7&N&1L'%408)P@W;]C\N@"H3)@4AG E?B:L5=)$680A;670"+(+ ,,6819.8?&:U2T&N#D')&14;$C &@ ,OGIn9&.-|$5c'$\.J7=" B'A..e,(_=3U>+fS!ii$`~">u =j57OcCFwC@ C0 :? O7=7KFGJB]/ED3T/0c/RQ-A9-D )]*^/XBE11"(7)'2)82'I+G, =2KAT:=%-+ 8.*5&H?0L;?E/DK**a+(T!P5&/(7>?:8Y2&k--n/@l?i,[,>1.,10J4f4'c?-SP4mg.yv/s^`eH\EWI?ZP]FWJSJ?I!G4G>$IQPFR3(m+/q//v3S@+@ Q("R0S4E&,:&!)018/C&7?=N97/*3<1%>,(A'?B+TF.G14M94`'2ML C--D%$H=N8P0)V/0^!3XEn 6m$"U9J9 (?@HJeA&VBBFO5ZU/]P+06*><JAUBW9f0x)&A)e=@>+"A4>'>5A192#(43?: 5J)M04OJ5JC'">$K>QB?,88:-.@'8Q &H $3 P3e'%Y2_24W9?V:"W"+[1U L(JHOI :3 /: :5F8+QF;># V9 qFnL{UdAk,k' g&m8bP@`:;T@9T;5-)85V2_7d*"y;&z; n>Q;4/,!*00'3,)6-'+!+!>0D3=%T1+\=)S:#/>C F 7,C!.697*;C"B1"8+ S7\ a"+[%7U<'<$/!.#);'=02\,`8\4 S:8F$E29+<& 7H'0T/3Z#,O'L"X(a 6]0G[M4U=M-EDC% 39 CF 93+)C+ C2K1G1;7M!%O+2V1CN,&9'^1!k' qmkm+S7$89 ! !%#>% A!C 5" 4(440+JYf=_<Q7&A2.&7> 83@F$HjD?52v# e^#Z7P(?O3C%MJ*=D: HJ7-!OA)WFTOXaZV HON\#@.C}?@T]NQ\W6=\"d4&a:.e?/KN:2]9'X82D0t-})v$0`#U &K?%4& ',":8?I.J'<"&!-)!%;/A2!6F4?TA0W=V4#N4**?A=9&>[+Lu>A1w jUQ"XD04 352=#0913 >>X@{C~B\MN`HxM&H,G99ABtET[CW=@U@]87_?CqDReND=NR+FE4=;L("f"k-m--h$?R"/E!8$4/'8&!FBSFCD)<*.5:9'H/$M/$T26SE5AG=C4=' -/0/:4A8XF:xIE0|b K83 5,?7:BY3F 94 _Ds39;aU ;h K>2:87D5[=[BhS3\i.6d6*RL3Rh=bdFMP8P51OB*GH:Z%d/dQ8NMM>K]85c,)I(0T-G3+>5<7D,3?#H !;*U(I=JLA`O4m=XJgOP<7,$,7)e$w9%!RD4+JM52OK9NOOCPc2+i<3_;.v(*hB2aL?ME@,D4I Me1f;[CRVT\R[]`dHP#39//16A#DG;J7B:GCFFPFaR_E OIK>E*\-%R1hJcb3'Ih%,SL;O)JN"I&F#/F6 .8C"J3.GC5MNIVWVoSKg=7iA4o?.m.3nKOiWQ[NQ7SH!Z0n,8pNqL_ISHWF[Ch@z)1_@8LUPDO]4VO;R(-.<* c9&a@=i1_Ri^,gc.vM+v<8;=.MJN[S`IM]5FH/E?*F1BC A7B.'C4F$ V*'j5IsRhe^t[qoex`]x?Zv1Uf!dK"k1s6p!8XA&oe fi>UI>?iH9W7O,VAw2A,K>#C)%kEo.Xo?QCJwF`g@yt-mTPmQfNbvAhY{RdRy:G]87W%409- ? =#N('1=#+S+9eLTnddXrzZwiQM4)G7`vIsZ<>uE_+*ZDZ_0mn@nVM_nSAj6v2/Pv`{D?N824!)K:*g78r5>7aC[`9kPEp=>k$~>>Tpta{?jte[ZT;N LR#HgIcYP\jd\]szLAIgy~r^`9cB8HN&*/EL0=$*C=`G.lT3v]3yYxP+pT.rRP],UF$X=6J6K "S"ODR%Ee!;v&?P:MR>9C!3/A%THWQ#EB)5*#E,L5@+T<#R))O%6\;P_=eI&'-%6#*51' =-Q"@UOA-c:0f14f%&T$H#L0$--14)DP2_511 -G/aYh 8_2j5^AH7^YMmcwFAaoMu?{~BbL^:LG6J'cP&?Pe*(\C1CY1(U2h-*c+&c2X#)?09#+)7=+"F;"OL'MDRO+WP$CH!$V$I 3$-)"!*&(4 57;1<6I G?X-7c?+n8,aN ? :'32F,:V?TW3h8h7fMLl8l4'=>.6!51 2*/0F:G3?R,;\A2W9#M+!I%G4$+%*-(4.$R;A`F `=F-J/H9,,T75iJ(:C2)O;)@JTc'dk(Q|&.v:a<[7j&#b%,^/L.163(#. D5J"@)9[%4k.0nD&S-,C8@"2.-#-<7G?0OSNAbPQ@5'0.,/9.NRf*b6&iG1fEDgR(o>oIw;T -`3dDcQ5lP;\V82o:8r;>_=>L+3)!()/7==*>J"T;0Z05='=9$>C7G(7M*5K2-CFRY)V/@*';l0]+#p)1n$9f!2V*A$(%5/ 71=&,`+n*%f6'[%@=/$3&6GPVEU,;_JQhCO "A !( +$%;?"X[(y1zIjU*U`.ef/de/p23g7PG0J.+>:,AGB:HO"KO&?V$7[*@_4>N"-* 8&a03]14V[QUQ$EC1:&;E)>;0G (F#A*?R*?h&(}-%1.v6,j#*b2q#:k%0Q'%="2&+4!44%8"U \&)_0I"02*%)/8ATKQSDn!KnLH 'A,9 H.-JH5m<(Zy.sp5ch/QU>P&K7G+S0D08/1U (p!$(1x /m/b,Z1]&G#)=/'<4-;.+,$/0E(8F.47:+2+$$2-S4^5 \Wdm[4LBK RQ WGGW'-B,:D%5>&(7(N-i3i"3k1j1]%L = <+@,HB.')&,!): 37,1?&+"8!Eb)k<(pX4f MU\VySl\jb>O^1IQI6\e!v_le4X^HW\XSPT6-UQ?M5C7*(#C2LAC"\N,Pd47p2'+& b2'R-?P&;G8?/36(F3+M9;E-G8?5*F(#?1:OCV9X#6b$)Q+J B 9!E"K$L-*,)*2%2$,)&5&.&*" <1(J!!T8W2[c\_ia `}R+FOqL2\Q;DJP%VSTS+MNCPJP>6OB>0g=&a/+=!/ ' !/1AD:M6IC)RF:G.6N5N&7LA,FF76<_?TB!T1&50"B<1M5k2IX?MMSS?YX3Md7=^6/_--K.7*,(.+421E71JCW7R*!H/-" #1/%A9.E:74.9"*> !1!8K+1\.4:340;5B%> ? ;/=/A="OFU3Y,8M0> KT*`N jK"<09,~9qN3_IF]-?O$L,#P,M)8[#H>OD4VN2D?(-K+R1R >c E{4Xv?_c=_OETC=Q9=`>JF259<&( *+"@K(O1a0P1<*F$ A1-)-11*?*7-)G#"=/#/&(E?;V==C02670<#(D3 !=)AG8JJ.HRa=%n..r8$3?#FN(HN&[G(h5)e% YF(qC-k$0X:1&L)5`3DP&CH GXR^ZQZHFB?*.U'Y:ZHq/fv9(D 7 * 8+(5E:/A?!5@"9;4@)>K4@O/RG*j<(~&*.1--7,G;Q?X6)a*\2$c+9`2J/.8B>9H>K>1K9CYVaQEXRAI9H*0^?VEXIa(UZ>u[CBVg9WFDK?>CMH7/6'0?"!>( 8,:#5G0GM2VI,e8<.+;A8>94G'?D!O:&[*!R4,I(KA BA1DL75P,AO#RO;UR!UAEF*K ,Y/O .\5\Kh+dX9mKHXGO>><1==1H4E+67947E<:D1`#Q`"5l4/HM>$R- O$)P=W'Dp?n >b#Da,@K34;(C/E16&B.8>6F:-?D4D/,9#728 )0",3$)(#-#0#!$ " %)%"/.474(+0+%,)6( 1/-37=9F>73I71TEF#49G W0,^A=T)QE(XK/`2.Q+Y#B8 7TF_DgAs)+e2IA3F':. ?.:Y5;m6=g(*c)N(7'%*!4+"3(7'8&28&?7%=74$()#!'0#,"%&  ...* &-"*!!," (%$3-!F03;8=)?B7 4B/;R(.Z/!\E3^,X\)OW(C;D/B%B.!@O.Dc70N75[+RG"7"(,($0$*/(*( 3!-5<&0- )!0!0!'* !#" ' +0 *+&)'("&)8.((*)02,*?< ?< 7+&f/4]18Z+9A<. K!*P".B=/?I.;N22U9%J8C1#<4;2361&.756+F.8E#L>+1/9<(3<2#.#!B,?#2# = -% *0# 30"02!%" *)& &#-$6-L$S)%+*,"$ !5@(52$.6-,.@) --,5E:6FT43n>(l%"q,-]/?K*M2R#Y*X955=E$2G(;B.N'L*B97# (*"'/";($)"(*%005/5(!A8/O4-X=*(0 * 11!,'($)($:-%F(:366!!' 9=1?EP2:d>+`#5V"9L0>:,_+#X&\>T6H=5L1%A'"1($)+/D.D$,,$#+&00.-'G9&IV#NUSP3_\!'E%F-:=!+8!%9 (()$+ *+)'2>-'B>7KE>Y9)6-%4$3$3 04?!,,5;=:E3GA:9.!+( %+38*@2+I7/T0D&3F+;:,Q."U+T,-K/?> E:B"2&(0(@1=".895$+;,  ,(>./G1 KS[KIX9X-R&H5&P>)?M.9L$,4&*+&  *%%$2-$E;0OA=Y:'39'7F'#?&."06+39.E*AB.;5-'J#U%/L#,E0L +N,4,#&&.94>)]4]BTC >J'S$^9-\L9IZ8@T%9E2.#)+ &   ),4%M<-^6*;;!:<BF+-=$/!,-$,22057/<6&?B1BO+@ "3"#- ' $1!.(97'@:@S/T&L6;!0*,*@(!N"N6N.L!C &>',&E%HF^'W. O47B#O%Q35RD/K],D\+6C4/!28(93"(!. #  #12(H8+P0!=6%A6BO ?H(@#&3+)240(B?#6>,<8'=/)= > /+(+ /8 :.+".5&:A&X #P)55!%3E'G<O5G:"K/7 % 3H&J FP!N&G19(+&1'F"$H"/N=(IK!FJ?HN=JA:K)F6B5?*5!  /#'@2-?5(F9 JD GC1E3/-.,0(1&,A-%@$D#AM &AA0N$QR@/$3,5#@E"N*03!0 FY.P6`6b1@&)*&E'P&`ZG*93,<&-8&,->&KO/AJ@T#EW*LIPG8P,O:O8G2?5. !3)'DD+HF(@?*B =$3!040L3M%V NO(V APM8c1g)fO?B!4 C(B$54-("-Q^0X6e)-`.G'2$#3B+UeK )/-(#C8S>O=C766*; .18M!BB(FHLI 8M*T5S"6K /M%@%3.!'"$ "*,*/C--H$H 7=6 @/EI5G"OR*T7V LK]D!Dz>m, \KB34''-$8!5%(,"'F+!\6#e8@`DBV,7C!"% ( 6+$;$!8().+.60K8WQjX]LP).<# ,<;$L@S2S$#R,9Q1?X;-h15:3B'+6-'%)4#I#%I<= @=;-)4$FX\ :UQNbYjPw?j3V<:!*"# *8> 1'#!8-1^N4iONXBP98@-0+ $%+"9 )//0>BTHP%Xe.Zh/AZ50?=+% (42161B7Q/^$-U,#B2&H6.L'5;B9>G61*/- . -1%:3!/','#1$"6,)&8%K(Z 3QV\cagRj5$f#J)&6-!#)/!3(',;98QRDSTO=CD$A52&+#->>#*- <#F7PQb$gY1MT=DNF-DK1F-765%+%((%),(9"F$*O)#L$.@94F187/-# #*)&!!%%!'*!4'2%"2.#; -K 4MPMcJl>t0i'-?*"%+&(,.!''%+81>8D?@B5D1'L'6%%9(J;\&Pk:]]CRLL;?A/!N%HA HD %1$*#CO%G"$F**D'7B53 25;5 "  #$ !181&42 &,: A)/)"*! 3$'/#06=86@7T=%V2->7+3$(=)6I5MQ=GT<:>9G1G#?1>(N;l4n8 j*ZL WN#+1&,) $'$!$-&)6"-B1@4-+( 1,&3!-%!4*-.+/& '#31 (&&2 %9*,<%B; #%,A+93&=4*(A.,,.0#=8!FB$H9![7Q/#D+(.*5&%/94D:L"BBR8M7 L. IHV!"z%{k]'D,MJ2 %'#.!')!/(*0)5-6+"?$(:0 +$/0!5*:" '0- !23 -"% +&&!,'649D$(/$5"4-&'+1>:C0Q=k2R9M63:-8)B#A(E!98C5QCLAJ3%E6R&;m*>l#+i/&T5!I4'IJ>(&& #' "+*24)9"A<7%6(7>; + -&/+<801') - + (*68;A4DC(C.2;#2!)'6,)4&@T!i"]#@?/H-L+> =C4F5364BBI@*AABO.DS-ZQ9^NKSHfM?a9L9:I(K$E1 '#(%%(+. '))(3#3 = J";+-")1.'#((/3 A9IHP? K4 N' ; ,68"@B4298$!Q4!D@1#;& ' 52JbY(1[<S;&EG02C':@ HCF9H< H+";4?,)54GG+[EFZ:OfBgI@sSJfHOC=D#15*#+" (&2(;."&/$"-7& + 5AN" A 5"#+5 <"510G@eBdGcB W1U' G" 93;>+$ 5#">,5 %,('* 5*NQ#S-b+p9&i:4\DF=N?3D/:9B:A1&G? <;)':-259<-OH6hV6<3:)!,& ' 1)8.21151-"+:!A%>0$ #5G)L;PVE!lI$yHqKiGc4K+7-.-  $!&!4)8!/4D.@3%A-*p<(p1.d=AQ;C>@BH1,J)A' @ 58 6C%B2.04A0AM8O\GSQ?NPBDLQID;?0.((! $*&-/)06$>-8,&#!,'!+,% 3/>;ZL_$nP)|TyLtD fN f7R 9!$ *##0$2!37#-7>E9PK,h-6\3;D$JG+.I,/N)A9*$&*66"#1=<6C:5JH;O+0< &%((349B&65-4$!. 4 )1' '! &'66GDZPs`{iaX qLYEN?7"&#) * "?<,$28BAI9:D, J*'F"1O6]#;^3C&$131(($ 1"!5 7)P@5K3>R HG(K56@145+2[,0k)/]0M,&8/,;HK P]ler] _OI?D,?(,%%0--,&%1 +! 521:=8<*&4,6.(-*..(-)!8+D P T![=pKv_nZAA-+I43AK;(VB&DI V@RA<.P"F CJ,T#\ O!'FX0#I%*3&:32?W66c#EhTZ4LD?D?FA>5b38>1@0I$%2;I+K>dOp am!__ZLN6K3!;3!?-";* ;!6(8A)5A/8+!5,2(83<(4=)4=,G0J::H0MA-i=cTDVL%1*/i.+0l#4KH,RL!M?$:7.-,!%J4$GJ/L+0k(Y:9I[@&`$E='8@I7d8R$Cd8EBKLAO,@4!T="H0B B.!$4L7ZCdKoShXWS:*BF%4891H7 G&:)&>7:.=",1.+'1,+.)J7"X7$U,&V%`+[#4L 99$CK9C= %G FA2'u!/9w8p,5]9%J;-2 &AA<*Z:+\@6]9=t;/aJ6Uc2EX"JD186]8@-0 22 =& I'<1M)F*B3f5+Q*RO#H?%A 4N@_ AdIdRV#G828/8$0(;7G3 E+8(K5#D4*5+2%6)2< VD_K$a3+a8&r)e.Z$&C,&*$4#5.AK;4Y#7k'!KCB/S7 G)G2f%j"]n1rOdN O@K2 Y,#_#A,)+4!?/=*$>+2V2S1W!3Y7*UT`QJ5 6>6=?B)?092 PO dL^SgQ#iBm&h# ~!v, d8X?$^8/K53F3+B*X!&o7a#k8pPoQRC'A#D 9.)6)A!%8&$* -4 %L#2M(4R51J<47@C? -D4BI56Q..K6/256+ &!:?)I"B'H#%S.+O)X'UK[A^S C3 5%.+ ')/<J8Y>YIVDh5gm|r!X8QF*`?=\7?^:.@0O)n$i% d(r@f>TH$.96&*%-"-3+''#!, 9 9,W&-a/,Z:*RD$"D"+=,59E36D1>R/4[& F"Q#H D,U/"N$%L,C LM(\? [@ 82 0&4824/@>QTVZ;Pb*bH&b=4m)+]h$><15!1&(*,*!90+'#,%N3#`?]A(WD,SE7?"+@.8*?J$Cd8Ei,gaXQIAP P)1=BAD;7, >G $@';&#-J?V c07l5i 6p-8y;8ZMG-OM2XQ*JBQ72i1"c6!e1'_.5T%2P")<$6."+AL#C<-135&B%Q+F+%Q(-L5;8;H)QEO4815(-C6/4P9{9#{ o$ d+ N-$ JP]K,% 89=,Z4$]7OjHC ::5:)<4@PmGT_LP@Y.2`+,YH9H%RATE%_4>P&4X'+>)"(2$B>&6+9&5R3T$RP!\$,[51DD/.5/;'2*&3B>KGb?h9h7].V&C.* "8#W$(Z* S(-. 55C$O "^;og&]n 3 $ -"'U8RJq]HU\=KPD=Y90X3&YC&XC6f2*i.&q-"e==:9?.:M+PD6N-0D$-#%&2.$0.;6K84]+3o%)g,$m*%r!&g6m5)_Q)=]#J@H"70599E8O6T@EBC5(,)'&;&*C*+N43QG7R 85 94 > Nc>jRQX&&'0<*VB{cYPoUHfO=wG y?"h=1k9}.q&q)$[*&R0.C(7+6=20@?.)) -2/5@=.7+0CIOM@g:7z]1)Q!C(?$$R2E?; @MRT!HK#EJ+6S6*->-/8EHGHLT5L@-DD3Y(;J=I 87A2!Q#I=3KC+BD3B2-$7:P9ohJSjYJqN/PLx:1}5{g!j+b2=`-ZG.f9/R1-050"08:-:C'/3+GD6cUAlG7MC]/V)(T4&DV>UgeBWkNY`kXDdN4V?&Z9*e"RG(9Q1?EbAZ]IzTYxNJbR4A=5=-!0(5$%O#.K42P&TJ8dZ@cY=k[3y>(857IyE[mL][ZbKKZE,VebZKh;RrB^]OmD[p]ghhfUYW>OO6F(88E=.V>9V5JN/dX&xrnp(ph#u\.w(G-^9LjUR?RU&T('K:@XSOQfb?lnFuZdr?adgQ w65tClYg;&eG%dHNQON;f9!C(Q80D7'6(pJ53o2$81J0L+@C8TCdiWg\[]TkDV~BozRseU}SV~2Am$LX+ZY:QQR=>dBK^0e^kecli\kBBu4>1U|'\W8Y:<`1\*/>5$2G87C/6/N;DKPVEbYAkm:lg.s8Dw^p?eG[^QOQiT1f2|8p3nG@8/=W?"\^11\IoB$u24.<4\EO[$RPdPhUaJ'_5Lk-Rg!>pLY\Ib3 Z,= :%0*;5 F+9-$>3DYDa_8mdOl=Ck<%t#7{$Ty>soT5O'Mx2Cx 9c)1]':eOO_PAWtaV|u^AĖKbtw@ku;Vn7DA<:=_)h+-_0)b6 ]dln/da;pcCoXCS=P>w9Wn$niJaJRO5V&7f.;cI\!P^3IU=KQ-SJ3d1IYHHF?YD"eA\(2<-&31JM<(MC$69%U(Fr5fY=qVG\>3a$k-n7JjP|YhctUm$J\Jc$En*MV7XdNVmgdavqfVy`7}m%Re0;QB8)G'IJ6<1XN$f]&oQ0sV3}E>K-C>{4\c<_JLW/I14[&U%9S"Lc!>e-0h1>:0:5!SS%TQ5Q63;6%'S6YEH-AH/?;1Y"Aa\S*g<5J.(KZ$'TI>B`O(}\zmrZUWAi:Z.CV-AiFB_^f[qtzjro|ux{avQnj?UI/P?576A!36%CG:8eJ8nF1K+zB/r7-n*'3:=7 )$90*=N)BG55+21 M))b+g%G[.KE,TC2N!.ME<G,/7$< <>._9mK&P LUvf2m/]+/f#2_7N+/hK8u4 5R(VkCy(j T?O"`UKWHOlS]QSQ`sE~UDpINIGT1}R0W\6]XCQC2PZ'&\, ]8v%%`1O 2+#41!8-.9@E#TO1TC*^Cb>':9*15$3 !!7(4164 46%4)"G,Z @X6RC-Z8+^5[.K)0 + 2%'U,Cc4b3`,]:NL*;g#^/^FrNk Y[!GU-iTMrR[pGdpP]TEZDjG\Bsi1Pn%8@3X8[C(E;0JUY+` 6Q4(%< 4@442*JKVQ"eY#p[\Z#:J1)D*D0C#!;+)&,<-9.&4'6:93 G53J74K7.TA$O-#H&@'%"'B,&V9Jj> f0F!A+:L%Q1X1\:g-It%Ds!1o)Hq*`p0/[,=oGERDaL`PkAj`>@i7?Z4VZIA|DP$3N5Q*4\.6Q:_HV[!Sl#Js,j4],)^%(d!$V;R+>% $#<;A<?@55'[*#c-]/"D@->2/#!>5G8=M8<^PET28*("!">2PH?f32lU*X^fj{p1Z@7d.E<%?@>6+6)@/[Cn@r3p(/a8a.U2.?H5+S1\-Z>G4Q;G^"#x)|*!t$(S-H'Z JA$--+3$45"05&4!+(-.48)B$3/17.3+G&Z'X##d5LT"L6XFKR@^=;)$7+!FT:3o]"qo;hsCIoM<`Y/6R+GQ20j(7R*0:2 =1"53=*E.A8K._.j9z)s(q&,\%8`"8W,5?::X7U*&M?1F@9- -A"%c"!g)!^,Y/X#L>4 87"?$!G$E+0&"-)'+&(/$&2 '@,_ %fVVA6_ZdaRkT dD_8Q2%3D40PN`_&d_0IlFLWU:JS&FGI<@=9E<#39+*(,&"E21H(=D9N/V+."| y,g)4V,9V59O7"3>5*Q9 F?1@*76:1+0"D#^/:U4K7J&A9% 4D K Y "R(.+ *.$&*%/"/3#)R-"M. N/*Q&DN!ZR(lLnRpL#:i.,L%927MKO&TV-@N?@\L4HNS<6h:6J%,*L>(T)3:!,:>N3JLIX6KH(\nUy*-h+hT-K)0L%0>0:*A%6?;D'77 D8-M-./%++"*M.6L.?/F!@54*,1C!P#^+1'/.6%'18( ! 4(0'3-)7-=<(ID4HOE&fJ$mFk4"o;&q0d9,L66-?/)N=Y3e-$J=R8ClG(S6"=C&#U- P#N!2YJc.[aFeTP`@T\9Ob55i.["D+!:!1=40 4<& C=H@O7 O- D& 3$!+3&1;%79%+9+;4,..%6"I-)T76--1/:,7'4 .*$(0*6/G.R3 X37Q6A#P?%WJ%a@#n6"l+,i`.(P-DN ;7L &\:d#4TB'M7-X)*_(`'T7L.83C"9X#>YDMD?%GN`GPX8@0)YIe`],beX},y-wDvZHW?>D7BFH=MM+C8)2.56-&=_"c!f$'`$)S9IC92 /+4#:=-C7(0<9 ! &-*8A>LG:5?//A!/H48),94A4>KYH$aGz@u5-+'@1(>3?13952D0-L'+^&4a9N<@:/>P?*LV+[Q+[2TKFeM0W*D="bGiZ`!iY$fe ud:x[FxNS`>ZMCR3#6*%1#" 0+3G36F,33$521 ) "#'-.A*AK-VQ(hJ{@'9,-(E-L,F/,;/A3*F.4G5A>!AHLQ?MSW=KZ8*`IFW5KL2Q8-C%K0,Y6]$NN/LV$Yb)UZ5gHCoQPZ;U9?P(R?+T6!I7<:26*4--,68.B?1P%?=)#@5$8 //(02$.%"*) #$B26430,.%$&$&+7/?Q8L\+gD%wDF63E)*[($d0-W0-D35@6CADK*JVRM.YOG;Ad4e3<\=MU$9L>14P'!\/F;K)7a%Qt.Ic#MU6P@H@9C,2CV:"S/ H671.-/8.;;$9*+?%'E$;%-"'0+*'!3!# #% :#;&"4&$*&$  )&(,81EE?C5KA.bG$D4$9G/2^+&d.hH]8=Q:FN?J;DP+GQE;N8*jAj"Jb3>^3,L6(4TO%F$C)/d'Ka*=a0-U6>B<:;>)5?;4?-67 0)3*)4(-'!((4$,!&# (('(#&&  *$4'-#+2-#"!")$18/?67@;:)FF"M9%OO!?[.#s; nP$t>;f=@N;;:57 -+8+/P8h5U-'\2"B8,G,*C:2A3.C**@(4X(:_0*L(#G2050&3;26--)#.5101%(*"(*'+& 4;-%;"7$ ! " .%!'!$&7 )"$! "*."&! 0!<& =.&+9(*-)A:O.*NE*Hp:2@#z5z=(rG9`9;I,H>+I1>,;78C6J+%8-)2716>=<4F=/0&=$*G.G B*D33/5=:=74/,'=3,15"*+'5%$(  ( E%K3F1!1&!) +516%80-=1*$ "%+))!4"H% E* /. 8%'"$07<,7MF+Qe8@J"{6+q9-jM4Y5J?%P,OM ):&34)#0$%" 9%H.3V<5F;(&+"+&A!$>5":*61<=D=GD-:"4?3.!'+#8+89.CB1?/"#'2)7A)F_5CqG+g+2b2-^B:I1Q,(X,V"'G$=2*A#/",&*93:<&/7!)%*!) $*%8:BUFWB=?A (@"?'5# 0'",3#5!2/ 8. 4)$!6)6@=$'>MJLVHKC66G Q" ?2&082&'..B"O)O>CD 6 (-+?"5<19Y89V$4U*-L2@B-N8&N<=6)5:9547&>"5#K.>$9&78"-/!)0 &/'46@RPMTH=F8C0C*C+29:-647*""$ &$#*"!  .!6(2=@7LV?,N1.C0\ *V A,>'C:'2=3+:*/;52JK*?$= -:'H',D0E"-Q)R&2H9H@<?9*>/:0/:&&2-Q1%W$W+V:O%I7&$#('*.2'%O7a7S>IIB@ K6>.7-  !*$4..79='C>?F/I3>2+".#2"N.U)^(&d`O O(9(0(& 9B 3(Q)*Q)N3&?D$;?4H:G5FHK5H5&82%--'%!+ &  #&".3)J<28A3CKFhBh(V&2?)&(3#(63+7108 -60.:&6 (- :'!-&*&#, ;@'D $/$!;!L S0]9\0a+N O. 02(?D9#>%-K2E7:(5/>72=)7=':E"7D8(L;(<;';6-2--A0"8$$#*&'*)=B=7J:4P'M`Gd,Y4> 0),3)@#(:%$<-4 7(8 6.LN J; *  4#DH")B$,$;#; O$[*`:,`R+C9'$*"B%#H'R@8*4E/E+"A./;'9<%=7.K$/>+"EG(F>+?=<< ;8 <$B%3/) , '*)&D3@T7?`-"R! V S I" ;+;@2B%3H&$B =K= D5"D@:<;>+DKC ID 4'!() &'F57Z02m( cOK D D+H;:F'2G'G @ (ONKd=%j7$r.q$\,1-)9%33#;$'= ".7&D +Z/8h+Z[#TFH/-#//@-?14550-  ?!/\-]6iKc0[&%?$)3 >-CC0PC]Wg!Mf2,nD$V9!8(C2BP>T9G0($6&I"D6,6#$?0)4$(,!! < UUQ"G> !1 3 01!:*K *T2^P]\SjZ$^?!P+%9 '& &"$&1-%-1$/ :"(6.KM@>F)==36 &71'.?D"["U"G0$4@#Q4dGp'Xh6O]8<0=+"LDB;! J-,;1#!&1F!F.%:+!0040&!,(", # #+".%'  1 2*#214C 8D @@V5P-L"?#(9*18)A3);%;;)A.'P31K/;F-(K*5S>8-3$9/GB#]B#V7K7-EZ%"3+"?/93.H/"P+ ZELLG%+97. 036;,$1.&4"$5)(-*(-&" )& "(* 2#:+3124:+A (B8" #):&<45!C&/H7;=$!K/" 7 G+&Q+,L4(M:!\0.^==-5#2??F#PJ.N!1C09 .( A 1!7'G,b4c h GY LT'$7.1&0 &,5"'"&&%".A'6 1"$'!)')%$#*$,(.%) 9+%! !,' #*#(!( 0//='ER"@=*=*6B?2@**?E$7"?$6,N5[1_"R)'D0&4F&N8RCAH?F@B/ 4=P!o#p` J$TJI('- ! "*!"'(.'1$4. 8-/)&56#*-).1'0)#$#$"&% #)#%""-'21LGXL,3.4*73"-#@" J!U3rh2 X=LE)BIL1OC5 DAMLF=!>+)= 2M!4 :C#.<,!59 -:B Xo`-HN+1R'+G$(A )K"G00;7 W=P:4?BA@2JD)ZG:OF@I@DHO<&V&*W(";,',!$#!,% " !!&,*41*& 3 ;:?"7($#'(#. ;-C7KI=D1J+ F,<$"D<)AN3: -8%#B,,,933+')6'SV&f "e(>5&PC1@F7A38Z=4]3@U;R92]B;aEGJ=P01RF(JF#,1(+"+%$%&+!0%%- 97&<6!(%1:-2 93%?G)PH#]?X= ^5D B9,)0;!44<$*8*07GD4C&#T.\BW=F/:@I):L)1>)- !#" % '%"$  *"!2, &" (5#H2F!HG'PE'h<oDkF]@]/"\D+))"% #("'6(=R*8[;MRAQ>7F8+1:*/!+ 2:?7/!=2&/:<2;D8OHFOEKU?=7=GH2DJ>;?,3*$ %5*%'%"% !"'/.4EFTLZcO G}Q wFe>j< `D,  ! #%/2 8%$>!6@.6!73"5>HR OA1WFAK@%E*,?5&6)302-:9+38.G&(K+>E?[TEORGY;>eE=ZL@Y?1@+!& &,"5$&( -'## !" $ ( >2 RM]S|S U` |M d: d9])A# ''&* #%,8 F7&6*%C CX;D@>?6*<:.C(6=(/=08#&2*!,1#2&;H2D0L@@SI=jP8qE6iLFwE0_)8!''+) &"- ''-,$!27KT.bCpPTQPi9X1N-,.+**7+-0, ,+!$,&7%9O GH >)23FM3OB8B.CG5:$G>432 -!1-&29*$41 $:$IF<_\Ek`mSzSwG^:= %$)) !.&30-/ 6-7'; #+&+0+@*T `[b6PXwJa=P* U-&$!&64H:!@31#3,,") 2*:4J8A83B0"-:79F;=M":@?;/K-9P2<;#0,)C(%S2Y-$B*):

"DJ!K#%O%RD<5,.$ $%#%%'(& $(./&+7# F,#(&&2! 2#53:7&/!/<&#9:7@#%52'&4O%]+W#&P&O) GB >1'"% $-%'$. * +"(%&&!"-+&8*-#$7;!#+(6-!-028@7531E0HZ$Cg#Da*AP?:@H68;"-B 4D5'B356-5(+!'& )*5%*D=+K@,K:5G=-47$%.$&-3270$D$A#3%!%-ER*$[2%Q=(R<Y&G B :$"#  (!-"!*)%"!%*"2#(0;$" .*)2"0C'*C-5/$4* >5!4>8*@K%Hc@Q]FIMGI=T??B=$D4$NECW+K"D $@)=7.N-^-\6'P'+>')!' $.",,':#>*++ )'<$#B<*GF)GJ UM"T=&J"=?0' &)&"! %!) ') 2#J$1 ,)@,L9P6A1/318+=,%=C.?Q>DRP>8YV,]_)9HN@LJ(8Y$c(X V!&FC=X;f&G%8"!&+*(*$& !!(, : $#%*370,G,KR VM&G+"<%>!=1  , .$,*!(##)#!2  *3," E1U.QI*/1!'+# 6%8@"3I5(BFG5\`/5b-DOGB GF7(_-4p'e a(>ZII4Q;*C*$@$%#$6%$%5!-(+3A*/!),:-%?'=G!A9"7-((.&$40$.,!))) ((!+  (8*!<3E&O"'B#5#"&81%8'C60FQF-YP=U5N8F53==8J83h4h(;d*@[%LLAG5>.*9% 1 *+/1.?-.-##&!.'- 72$;)*3$/-&'1)"*$%)!)*'*%"+,9 >60'+$.$ +%%$'*$&: 1N75,) +! B'!??+BEB#S=QRFM,HA:/<24J0&[9e&=b(CK2@;D/+?!0B/707+5*5<25&( 05#7$#:*-:/413"!+#!%'"  (-3$&72+%!$5"6! G%S)G ,B8=(!  3 *,74@* 2)". ! '"3!#7+#'69O8GA9?3>(-6!.B'-N*1P@P'9>D9,K-.F7D,:44(=)0@'278#6#=+3)0(%+-,!* )!$ 0%<18(!+)*'".13 *! %4 <)J.X""R&0@=0 )/#  #+!1'-&&-8& 7@ !K5'C3.41!11%,@F)N..A*>C'9::=771'=1#A*K'K%>*/,#= E#A*21",%"'"!##(&.$.!)(1,,/2"2=(6713395':-'3%+!-!#>T*V&9N-F22 &'#) - )-)(!1*+//+4/&.>");1>,&D1"7):04@*FG3S@@G:4=*)7,8.%8#@!"G#E ?,1 4* 9!B@,2.,,%$15!0/0=7#%2+3=2:::=3E<3G>6234&*-%%)";S!/P!6I).:'0+0"& * 3 % + .'5-@"417&+D'!@5%<<-23"0,.066+I"RL&OHD9>$81-)4-C J<(5 :'76"1!+$#.%"((%0613C"A,%87/015:/<13=>6BB.:D&-9+#( 1&;/; :1)7'-8$$2) &!"   7C3;&0)5'4>-2H0,<.$,56+72CKS<U8%O>'N1V(Y$C%28'<4:7.+;#$@1&+&$" %*#.'"6=9#2!H>+!B3'9,(7.0:/1<76A&9H8?801+ &"1+4 6%7'"((* #&<@ %1')=1(EE5C23,-2,*80;.?A[LEX:9Z;A[$8m>j?f, W5"[A8@?0;+=0?.!?+ ($%! +..!!!0KH/51>K$"F!$4"18'88)<2=<C=:'5),&,!,"*( 2 6 )!)#'2 ;<JN*G$1I6C>%/% .0,=-'<4/0BL)OFHU;R[-K%/|9$yB"jE\MS\-C\*1F-@9;;.9 )5#08&!03)3)6!32(*)+#-2GXNZW(E,@#(C+*)8$ L*>(#=3?1@K@FBFK4Ae?v0(R+wS/bQPd&La&9c')O2 >A->', 0 0%%"+5#> *C6@,09**9 ,:%.()2+53::"@$BCA D-%::(-6*23$! --- +/ %& -"P X _"Y#KJ%3&'*.?.O!I &>(725G5B29[%+f#.u7(p]3a`)W` BI)D( A,'7205963 (#$!$!0)'8( # DP]$)c4/X.&H8*%$&"4#2.,3-+5,;'V!*b?0mM.]^%"a if'];^DQN=?8:("75.('+ 1274!8J 6F .'(8,9/H 0P!3a06T4>HI3?K93K+:5$# &$ &$))0*/0/9#43>8CN?6MB@EAB61A#30!! (1/6#=69!-6AE=F3H0R'R0U=_IVB$GO):V$4R)*;6&5"0"+%"#-#)?.N.R#/^<5QO=OZ;CX84M0!K($> (!,%*",%.2..0"$4'4'-5,;*3+1,-3*0F1,,105$(D,+GB+?L1AH-FL.@O$CL2<&*&+*@ ?!//6 ?*:? :!6&@5#IC'XE'FI,5]29V21N,*/2'&9!@ $ ,&0"=+O>U5@Y>0XS,JX61>',",+2!2+!(8 4).).&%.%#89!HK)B)4!)-!8+>:#"-102'!/-# &(/>A*JLKQ@&B-DB4=-?%S H :$" !' +)7:8Q;B5+K"0;17)0<67I#L #A+7/2$%%*',1!!> C-K%3\,(`9QN4OOE1:1 % "!#%="OP$M>OKP#:"!#)*:#/L+S*P)@+D5<E0C6<7C. 8)''(,?B*DCF>@2&8*/'$<4:;(. -)&+$ 3,>3>$4)+'/7A%H,S<GD"7M#O'="&2 -!)  ,H!]`V*%L90K+4'&,;#6M( T N*G4= 20?4715/$( ,'.,$/,087YVFS5>7502;218#-/&4&' '*'%F.F1C- A00; (". +)5,@4>3.;7 #/%-"$+"""&,   %% 8*Sb f _/G6>'7)*2/-@BD#@49(,;+9# ."E)6J=::#;<-GK(KM 4F+; #45@4>=94#*0$/-(*1B(!S4 @7A. 677>$/ (##'*,,4.B0H"9!-?&-5!1,".")      2$L-d )a+d 1J 54 -) 5.-7.5,&71*3#'-(5-073I)=L3ET1`U.gC)AY%` U'-6,9"T-V.: 7%6$$)5< ;/M<T6N @(('# ,6):!E B,#A(#>&$: /<23"0%   (&;.G4Z .Z(P '56) >%G"C:;</?8 7/"038*6A/!"#+,%E;$JG3hd0v[-`Q+:ae'P72;=E2,V([I@)&:1"1A)S@J!`` [,L A-? 39"?% H >>(L$"S"'< 63)&+514:+C 2> 916 AG+A@"@35-6210  'A;%ZJ8jQ:pZ,lZ*\U+e x3+`PJFPX9<_'!h R'M4D=:D0I,B+D)^ZV1<D'AC16:A8D&0 P#U+Y#I 3<A5 &!&$*+.%63B H+&C:$2A;@-H#=#4+01-*, )7+RB'aV7q_#sccWSg p9&[=ENTe@Sm(~+}8p2#Z@PBI?4J2G*( )E!O,N +1 A*C1 8,.6/765 4)GU*K'B'<# EB=$" %  $&(!6 K%GB4#6% E3@=8F'Q*N1 E,8,'7.':C +A'NAYRWc!WgOH;a&"WELYN_Cy0#0y;zFlS TN=F*6-!).!&)= ;' 2!2(!.6 .0 :A)7%,; CG 7 /(%**/54&D&/P +R"I=! A( 978H'8O,1]0Z5@-!C)%?'3 ? 3?%N#PF#KYDS?E0F='L"EIN9[3v=:%<QmXJf0Y5A-+# '5'**)4< 9/%$& %,3+"! "& )&4# :. <=CN6c#2S&G>5* 9-<<&3D,-K;1A;$E3'N*!B<9#"3(7@%#KD1JK?K7AF)T*DLR;S<eA~W%{L cOVe Ka6Y0H$%/$4,#*(" . "6!9F*R0M+E+.+'##''3**0)$;.L*G3AH 8W4X%WI(5.*+'3) 4<4"1>5882N4'Q00<#1F#*9(' 6% K,P?IP1OE!M"0TE@JD^a _h)_^+UG$`Veb GO,!))%$$5!,8,%8&3(93O8\AgV_UJC5$:&!-'"! $(%",$7! 5&7./7*+I#-W1/S/,S.(EA -M P K!0$53'$%+1)%24(904N(7D3..E&K&:;17 :"L$OD!KU'I]!+X*&P0C_DVMHTd"Nh0@Q@PT8`TjS*V8,+/&''&: -44180277B"0K<` W^ j[kQh>&[4/J/A,5#&)>7)>7@*7*D2$J4)?>$6N56W9D^.FY/72J+ JAEe)Oi24`4%](7RKR.ZX#OW@b0N ;OUG(b<%K6 ;1$!/)<+5!23#B@!8N"7S$9YHeeqq`uXoK+`9:]"0?/.<%(-+)4&B) 7*$.!6'>(/':-W-O;K-.F&\* P9EQ14d5)U:&Y!*V%DhOW?E?X-S#O"9B3F@+J=0C<#2H$H(>.D$6Z:)a8*g#NkXl&km}W ]%lQ9|8DtB^!BFB3W6(_'\3F'=E"9T3,`CYP"T+/N2DK'FS+.520%:%&B=B>G"*5!&!'!(32 !,+#351 A>$Vc5kZ faWdJX(Iw )aK.+\1._)H15-0!0@&*Q).p$+t,z!"W=T>S8T+.`Fj1Xc2u]!wS=!y;"g',U6IB=4D^<>z0M{6MuH,`MNJ8B=1O:-N=EN1_N%gIj1 `!&[*#M?4BD@!c6n:#c2"]T#E0902.J"'U*5eI[#QX9]b1Mk,YX)QJ&A9%7 M\%(b1Y!D%"$#%.9,"2.:6N2oAO3R90:TAKMgUatGjz\VXd?Q_#JR8:HI-9>+58A@![CT@>%$>134"4R%,h9v7 r, q#Y J &@"71$3.*4?09S=QMR/kO*pT0jl1o^,jT.XG/?? 8 L()YM:#&! 17)";<5-+=7=X%HkBImI2oN;^c6MZ/0b=!M(OU<CP!4l&/]G(SX7VpCdqWijaqVQiEHj$JONE TL?A&?1<<G?G2K,7"+0C0Z6f){*r!h [0I4F1A:4/++1($L >UQ;8l=*z9.f8)uA2kE1]BHA!HK>B*:%$, 7($J$Q'(D@,,?.BA(MQ8LW7RUR[^T^@aP4lV)_;$E":2*7K89X;&^\cb)_r4rh-kg6rLDrMBq4Hd'PDO,&X"4O/9-3F#V(=,/*S4"_+)j-g [%Y*M2P#?A1<9"@0#'%:;9.V";a1$h8,g4#d!(b+$U.H6"8@FL&V,R@83/L5U5?EDK+OUKOS=/b?8\T[m_cxZZ`#wE7`$;C8//C+BE*OU)X&nuxmqxtfpK"NN?D:ADS%a$W 6O7N$<61#;"!+-22M*:]&@b7e0d/c#A 4QCB'K:7('# C Q.+^=-t<+n84f05b1)\6-@?(L H/ O0Q5< + +@'5N>J;VZ']`ON `N!hK4bRJiU[bH[cM78]&M> 6-@/?F3VN,Y^@P[TTSOXHTe&PR ID$J=0?1;@Y<b38o-?s5JV)9H#('%'5, @METTX PNCP$:P3N*E8'72 6%#$"!) +1*Ua(/p"0q$4m)EW)BQ $K/"<2!+AA)`V!fS(U$@ .),$$CDF^/ja/El*]R3bM9kY@lN3Q8kL=v@9 H27YRKT[=\OWt6^sNspUaS?NM=j3(MQ3:XY cc,Kh?:s+4m!Ft(Kz'5rJOzZMYVCDK? ,5'=&C0,B8@ /=*>P6BA:=@93&G#J!'Q)(G6#(1('&#,#2$( .';%!>"<,/981:5 G1O,L,O"0\$:Z/,[7/T7N9H3048E232/; N-Y7[C bB'gX>jWLX}@obMIH9H#%f,=-D8M<1ZQEI`65c;2o08v*7gD6jZCjjEX{G>g?*G5<=5F1)!6/@5A36K-E*MDFP4L+M$)I!C& G@)CJ1FK,IF#M5@5*'2"/9 =9W+ e+c5(j:+oOAqdYy^Sr^c8@1JJ?99[<*g=#i-f-`I`O/P_;SmB8lL V9b@T="E0*+$-+18>B,=E.5I9@W08K+1*"+02G0]*_,Z9e#9n=UtMji]XQ]N1Wh.Sb=FQ+H1G+ @C A31O'J7#O^!`L!XYYw ;~)<++44)6J+L/E2 D&2)'+ " "*,(8(%D>-J0LW#U"G!-G3+C9'7=,(W,&R3!K5.A)+9+D&C%<DBU1HF0W_1^`4^YC`CML/F?'C4'C&5D0D9S?$^6 Q6(<8')E$K<*81Z2*{:#/@wD%X.U?EA17/4*E!+-!,$?0E6 J1=2),')%&' $)6>#1N&KGQ'@!4?7387/078 O4#Q9&@I4>R4!N> o-Kw&MgLQ 6c!j!Y 'K6P>6t&G=g38Z>5]8-V-0;A0795B-6(#*,67-,'%--$:-!+.,7=5 61$*?LK F'+9,;( );%E'B%.G6@)J3Bi)F'S#h 6W46X8(fI%^P2\\3]S_Q;H1+/'+L7Y8/=T4W.Bj+_#b7dA7^8@>=Z3GfOc^>#[5-;94:;3I+71"8)%<'.61 -6%)#*2$((/2#"'3!:%><@F,E:3:,%!@;<1 .5*2$&3 ",0 ,&1,%/(9: P!W#.J"#c8d8_K bP#hCiIP>9/ #$7N,6g0ay0^4P0Eg)#m%.V1S 7&'#5!&$"$",-%0)) )(DR J3>:3A'M#^P'J?,J&"$$ 5+%#5&.:+8(87- ' $5&1"4A)#E)6WK=X'3k*/i0-O%"M-&J495'/;N%?o(?k+Vk&Oj*Hh&7[6%V/CH7L:A%(K+f$xp.T:I")#+&4*21*#'"& &$ 7L!R!4K1@6;G-M @;/3@+& !%!4&645+<8,B3%S&!J%%6'," ,#)/&C*.V&?R<1]4c/t*bK =!",34/=Q0Dl?Ui1Tg"Mi.Hi*6gU"C6>H3B0G 0`e\ K#!3% %7 $:$5.0*!%*$%>LV,T*F6B:;7%7@"3) 1**:-361G4/L/([**A#)5* 0<3%"+8$I")K0S.f#+i4h %N 3;*M8,EO(Kg7Lj*NtOw?t8k!#Z&K1M1H7 29 -O^!R8C@ 71 !>#9!*40,-D.$=0 '8:%I &O)G )B+9 2$6 ; !6+)&$6$9+%6094(@/(E%19!06 ) *9(7$ 9>+2=2X5R5R .K *;.))!0#314 .*'!+-2302+/C7B8I D % .-7)?+14&5B)4>=#FJET=L!?51M>,IO56F$)[,[#5GB/Y*.T)+G$!863>35<.$5656(+7%%/!7'(9!,0/49E :E@@#2-,!1,5 D)%E8!F;?4 4V 3N 0G+E ,:%0'# '''636/).,))6'/5"3D8Q.P"$2/0*076B2,8)5K BJRN HC #3@7P<6CE-84 (P-&I6)6G1:J>=7'<$"0+9(%&**98#B?@I8:-0 0-3088:A65199/8?)H &F"K& N, H9<*7-.. (*4:$, ) 1+!$..:/ ,1-@0G, %'+'*,%05-2, .4);@";%HCLB!@A*3%)&$/)(415@.;*1C99A<NY$TTG' M(KB! 3%'( 2  "!2! 4&# 46# 5-,'4#/I!# )*;&$*!&-%299GB\E`$3^1%DC-+J$#0)4%):+A&<#9#$!12 1* L=%U>%KK(<4/3*10$+(,&0%'3!/.); !36#/@#Q+W&V! ["X0^[T 4(,  %0# &# #) 5 7$,"( +,; * ""6  $$+*67#2RJ\#Ye#>e<.YB66M3B&"B&8298)-)1*(4+%,34 @T/\2-C919)32#/#$..- @&D('!.%%'4 @#B'P+Q4Y>X'_Y" M!8#1 %#$&&"(0( 1#%22,*/*' (,9+3'%*1424%<>#FM,IaC=[L:MI<4S7#G*=,M@):Q%H*E013,.+K!bW"O!;!)55)32:31?(!0..!.*%1(#<+(M7%XH^RV1I,F# 5&)-'$ #!#()*.!,&)&+$' 1%$=)C 3" $3&"A:*DB9@[ND\]9B[9+6H<< N-MJ37R0#^++W-K.::9 W/L'; '% +1 ,+"8-<08)*2*45;&)(*&14-H@'RP\QO=@?58 *& %  &# &!$(!*(& & # $&(!$5'F!%B2' -#-/D=6=I=7CX1-g8' -4& !((#$!%!/%>%6)%!&#$"92E'6*(#!(*/+1J"*UG(8V))\-#G1M= D=:8<)1?%50!$*'4-"?-%E$.F19")9,5,9-=>$1-!  %"!*&+(# $%-(60+72A2<+)%1 ',"2)2/239!2"+.-+G. J9)F("h)"Q1C4,@9>6>94=4-a+0x*1w/8X27?2-?:!5: *A*FC-*I5 7A;4$7!7(-3$30&1&(/$'-!+53 E @ &/ ) )!$.4("4))+2189;8;;44-7&5-'!# +& ,* 8< !2(**(#."K!_#(N3#C68=':?,B4U6+Z/2S13D>2;@+1M T'K'):13 ,<&< >6 ;9&2%+/#-#5!!1& 597 1,#$>,8,--)!',#6"=#<&%+16AA<8&@:/B715(7',  !!"")) +32 /.%0&(&),&B*'I"0U-2N,,=8/:4=!'=)H79N9?88:->% IIN(F.C*32' /=C :*6)*)%+/. !'#&.3/&7>?< B;127B',;$6'F!B%-4'&K8.G0+B.66%7(+ !  1 +- :4 ,$!,0'+6&'/&0(:-:@)7J)3N*-<(,64#.9@H>?6A*:3.5'/$B@K P#= $-4+=#5@2;(8'%/ !"$ !%%1 2.?,<=+D?A5=P145.73(3*,, )2#K7'H8+=6400C(6*-9   *1!$$0/-8/-,E%,>'4;//K>$=B/8(44#15)8DEM!HA%;65%'/$*->!F E:'2,&4%5660-1'!+, *  )*&6 &926412*4:55193=<5C4-@ :) ,A) :)(,0/'7)=%+ '$"!* %&21/+.19>>B'4F--<.-2,)54,/B,,I?0J<6I4-L0M T!O"<(21+;.8$6/<+'<.#.8-C#<-,,$ +4 0$7'9%+<.*80*5:393->1)C0&<$ A .  *!0-"7"7%2$,6447"18)54*+,%# "$ ,#%.1+9*1 2$=$ ,*# )0$=E'(6*=,'=&A">%$A.(=258$-'+4156+=:-@E@@EWYKBXc&J}&+ s6^?PQ*;V03M00:A+#T=@E*E4%"%( "!1!#:">&<#',84+9#;#;'/5'/4 3446+3 $/ 3,%+ 1()356>( 49 0'!4#9% I&K$P/&_&#U W J!A@ @&%(6 "L-O4*`4;S:UI?PGQ!+A(0727"3/+8= /2F>>;<[/bf"V!DB 60)(/(#P&Q',Q.DL2MG804T /i3m?!lY`_'RX*9W+cAa=SCF@;@/9& '/."";D#F$H ,F5B&-5'./+)-)*%"$-# $."2 7 6>C'@&360306.#(+ +&-)- 5 ,##E]p h$N"<<!  #!!)0!:.D9#5408/4K[*!ZF$&\g^&T;$ZG'dV)RZ(NQ$G=58&-" """-+%*?*R7V0_/W6F,3?2&41"", (%, ! # -+5#8&>+%;)2300"/+'*'#+(&)" 2 M"[+T.A"631+ %6 "68>$$.2821E-:!R%T]&X-\H,eV+Yg+Pk+I^#EB4<+6*!!,-(A-S*\/b7]89Y?3ND,F>&!3)  " ! +%"/(>*#7-+%1*'3 ) .+6)#8) %!#+--2#2G(.?-4.(@ @681*& ><96#.+H*J+T+?O-.9(F$!H&4 42">$ J;B/78>'B/,AA/@W4Jp??q?Hb1EQ>: 11%()!* #(#$4&B.P6[(;d41\G,WR,F;!H6-0!&),"$%)'% (&"&3/% ,$?2 ?@8+&*+3,/@%:F:L8P-Z,35.Q?N4#R-?/ "*0?& = ,=+J6I3A;BF2YD*pE1|=6\06B!6+.% !#-", !#)$9 0H9V)Cc.1e6U3:862$$-7 1)%.($! "$!)3)K(I$A5#IE&G1-,0?FED+>(<,9087+93[;^4O(.%$%$4=5 2*: K'1B.A9G>-I=&Ud" e)D$.2%#+'&$,%',1$-&2&=0U#,^.g5\4D5!+ - ;7,% &)*I, [ZE4&H<3J+4)# !#:!!D' L (M@?B@!F86:8%K&Q C +)7/8:)66)9/DM&3?*CCU B-!#"<*E8E*<. #47"%6 K[*V1N/G.*+/30%)1-   $2/ W( d m$\7C0E)6*./>2?SB(J:E5D190*1!0! *5(J2 C:)CD?E,)()%.'31-0 5"7(%&>.O; L5L: 5D 6$ - 8 J)L!G *? 9/:$2,"')%'' !  #*:5 S]f #Z+B/= &2'+ ,*16%?D D4K.>(4 )-!,4 $@$=29N3)OF-L=%GL!6Q"4#1=.4)'41):8G @3 TA H9 CH:D$.  # '"62 ,1764<=-6/7036+6    # 6M"f&_'Z&>'9 +4 /#1,(1)7.:9 @E:!+"&21':%=E+RF4aT7WE8UD2IN 2M$B(*?77$&,.#:GB&M- _7T R N 2 ) %)1* >(?'@.'E2<#,H7><0.' &  '2 %H'\%b#M)7-( ;>.98.G&? %/!</(".$ $3",6&KI*YV2fZDYOETZ4$1(1,("?LA O4c] ^&M26)!% - 9( 8(7@*%Y34N)=#9=5#!($ %4&<2P/S4J:/1 ?J:"FC$A> 5:3D,>30' "!5/&@M / % +*-!.&?#'A->2& <55B"@=@BGR6M&H6% (( (J?+d^gi,mb.h`/Xb& l) g'1Z=NCj(n*b/!`5![>?2%E M"$K#3@)1@D"7-.-.$'! &'2"/7(K*M*B-/&3EE/,2*0&&! "$&%3(&@8 ?'8<*G(5A2P(8^#,h/(d.)N%@/ 40 " 1\;%]d5ZjBgn/aa7Rg09f&],N)U_Qr71: mA(`NEK6J 0>*)-((%.( '$" (",/*.6:."/* '4> B.!!%(%$)$, 2$,05G.N(@$5+I7S<A@#5`&+]-%q5f1C'H$*(/$$0I(PHWe2Xc+`e6Od &W'GBB9@X=c9GyKuNh[ Ma 3N1!.$-%3-!/$!'$$ *39<$1$ ('(,)%', !)&*) (&7$;*A= @Z 7])R=& =1EADM#1S&-S1-[<"E=F:R?1'#27"O<VS SX![`FW)R*HLF"[=F>WJtXoW kGbaF`#3P'.6#"5; 3?"74""%'1 0#4&@:M;K3B-/30%1*%1!/"'0&" 3.!C.L/D?FK?^ +UIC* ;9.<,6A!(?+!6;%>?"R:W-> )/5 2% C(M8TBRW @_%]P!ELQ6JMTfYg&Rp)NP4UR2MW>4G8*.*&*<'#;"4#=)1+.<3<=CDW\WYG$Z@0V=+F*35)3"''/3:"13!+@.,G+,SC&I:I8AK&QKI& ?.5:6*;%,"75I7"XD+5*I@5:/=(N'UDV[Qc4\&#T'P*L"=^Ed@g:Pb4WHRR%cN+7/6%69%--25*9++?3'82.;?EAGPR YPgQwB/u=;n)>O?F08$*&)+.&1&:3,;8(7A#9O*1R.1d'5c71]:*H-E#4=% I029% 3;Q>3 &D4Q0@42"J" J0Q=YZ *)S! D+D'%R/ W*:\Pc_]rU!T)JAy5Sp [e \[#PJ6<2@6(>9/0)1J.7*,A8ARBHAC8Z.4h1`"M Q,S15g+Po iiqZP"F'DB{'Kf"`W:bPVf'm6hJZC"EV3]u:He>$K(>"R@?"0!2O.>J2@^133w/c1%]*S<R"+dFh']h#s_~S.3/>k%O]BeVRc:ZS'b@0l-\ =@C6R6CE)Xjd9U+GPASI>O=69.'?**(2?%M6I(/B.);3#2$%!)M(7B%P3/X$-M0r>|B}[|N qg;wR#aJ$KP+8[+P*@#-.?!DE5Q]&[W|3AvH)bH*NLA-@,F0>Q+I_ZOmOz*'g1b5G^@PONW7iSx;!s&'k!O8:@1!59 !@T*]DU-UK3UO6ZA*_<&f.'K$!!.F#K((S0$O8#F%!%! $6!=3-N25V%6X1;g6<|J{O HwWnM"W<'OX:4e="YP8@(211=+JA-^^0kl9glRV^\+Sh*TZN."59D72ABJISJ`/M *F!I;9Q80hC$}7%|/vc W#%@&1)'A*,..'97CID0W?+l=,kJ/{=/f<2S.)932BM$W1(>7+1++3*8'786@0PO&Ic2PhBA~C5T:wR0fL-OP,KD#4G8#PJBY CT+-Z?'BS55iHUrQ]qIYSYh5Zo)`dO2 D=A:*GAL>S<E(F@0A$W/y''$z'wb/Z&0I4A;57)63$' 594F5&\(&k#&,556j=$`4 H4/CG)@)N:.MI3>?6?H!.S(AC<>(OV-RO3W`I[tHS|N\XUXWJO;I=P?&D"3F0L#,_D Z_!X\)Ks?hv>\gDkUZe?X_`TZ'Q"G/B>3A1+H* V!C,)!M(,W)g.w,n$p!*],#g/9K=4>-5(*#"!%2'7H#1Y%m)u2p0r%*b/'V;DE H-K3S:H:&*,-.;.+D?%=T3D]8Q\#Vq Zu"_[%_B5: 9EHYNY^>Ic,_XdOm^#rm;uaQnQXkj3DZ59#35>D1HP<]*!Q%O;;8/(8A/-:/#)I&S))a6c1Z?bDX0@$#>/5=<(ZU5ei-R 7R'<%+" 34IH)mX+Kb$[[0vW-jr=rgChd8bqYl&R]&IA7D,--,?$=?'IFQ]([VqP(fBGV5@G4A)'3$@:MD:`DTb+MLE9;>"3 !")*9@+HB,D>#MH!GN$8M$E'?=)(=7#2>92C ?4!8E%H-[!X]Fzd5va1fJ.gIDUOZ@CR*NHS$PQM^UgUW3SQ8MXA:78) &)8>=J%M@CKGCAN2(P1%;4-IG()C4!>>JF=D#*>!C&25+.25&-1:/B"?0$A1G))E W$:i(Jd/2m$&b3 Z4R9;KNTK>48G+< A1 4+$16*E@>T99D+(UZ(I4"=9%(-&)6616'%&..($"%(&4373%,A<'L/H!O"W*V01^69ijJRoNZ^=tUHORNA:7vA?15\0XJ5:f?q1%i+/bG&SQ#RY&^u4E5+g.E+ D$$:%2 ,"$1<60=D1L2&E-G'FG? '/?)>(6!2!!$"'!)-#4/?=2\J' CQ (LI+$Q2/UE:MN+MN%DG;:&*2+ 0 (1X5VF ;D<-[LC_P_cWeLKk7WuQDrVIKGz#E""8&8(7@B3&Q(^]&]FPWGj Ml&E|25w+h1I+ ?% /'#/$60 >5O-A*D: ;-0-*,)9(F3?$$#!(*(62=G)[E*N YZ F+-K>6CT7AY08U&5E+-,*3*9;'B9="NDAI)MKAjIWr1Wm/WT9TWPSVRO8*F"4C$#J181,VU(O?)LUDn8qDl$;!z3 h5 T,8'!"!50)4.:),?!#K"I!9.513./ .3 !!&0)(?0><$O&(` +a bN+1B?.=\3)l, f+(a&+F/0-:"?#;>,/Z6)=C LIUK%aKDu5_tMS-_C0_G1I,7H:+(N?J-3=-8*B&5}8)7.w4'/#v, f,S&//%(!,)$-+3J$Q,$Q0@# 71 6/+.'+( $&9,:">CN_&WU/'Q,;F>)=K,"i7l2$R7>030+6'; @)3U<4F[HCL+'\>-b@_Dg1'c7A@: E+,N'8+O4Y?#OA*?P*R)$?%J=.sL{R C{:,oE)m+ ]%#?--&5-(1*,(&%(#3D#V3S5F.7%)$&'"+#')-+#/,8=LD N P!C+5A0B6G,-V,#[=\;ME,>MD59<.9I&(Z=&gX5TT*8l*-w-'n l*%^$-R%8)%.2&Z VXQ?$DR.7^,_+U?L`ErE4zB.l?3j;-b-*[',>$82/8*594/ *!+0 6#F"G*"="+'$/,/( $.!&&+/&365FO WK<$256B0I"$U&)T/"M9%AJ/7\0;.K! J,R6 ]E!gI)OO#EjKqEr-q8a/H!+1L$n:Cs(Ia4Fj?,m&s'b9I,\96mB,;!/#"%##%'+/$#8,4- 4>#=0%HPV?/8'3632D$L%J&&<<+.;,;+@(C/I._?p=l> dQ`X^Wbc8O]?2@)6,;N,DwEI8BwE+}){"m$'q5KWDJC>X5;]'DN@/CA'37(&<,%-7-422%;#+ %!+'34 <(2+4*" #"- %0%M*O=AO .I#!'5?=(35?%>>0008$./6)5J&:?D0 A/^-{5#u>0aI,`K&fC1n0q+3u7b4$];6OC=AJI4WO,YAS5R7/&&(8/,,$$1 , /1)2/', 8CC)71"/ A0V(,TCAO0V!) )'**.$585>21:'=#1$7D>85*#@*$W 8f:@m/>g;5UA3Q1HY+%`6%e:&M-=0$0$",&(0!/--$&0EV M 'K073%A#R"G29G(M'## *&-,0<7+8:H5 C)=5 3% 4-9 3 0 '19I)G]EOR.H`2Ag.=P >B 8B6/(/;E1G|8FzFWn)!(#-1!.  %!-; IY0`(<19 =.&@738+(!('$0)2/,7/.@9#L; P*.F )>$3#$ !%%&.&E4*HCJLHU)=c4] 6I?12>4!=Y.Ss6%'7'?!;3!#5!$*%)# !, IJP,S(B.@75 210!!8&& #+!"213@>6:>L6,P2(L'1F(;3# 6),-1D(.D/C;3N 7ZHc 7;+ 66)-F"';%&(  (?SR!)U(N"E)= .'5)-%3.**!08)$A96A7>('C0F6J3@3  ))#)!%!15798+ 5/9 GL VQC@3,!@$!^?%TK:QCc@a1d9l?b"-I*%:27$ 2#2-(:&@/"9@3U'\H.?6BI++ 0'/-J;QAE8+""B&Q3$HF2/N*)V-S0[:iMX'2@2$/'"#+''!##)2%2-0I%UR N,@9$AC'GC*@@%?+$)"'!)@"9<6E+@)L (Q M B(@"5-%@!=%<9?8'+0+13&< 2M6S+ + "# @G! @*4%$4AEL?A9.&/?%N5-PC@+EB#J(4B?39=$6 5 =,+- AE6% ,(&1":(/3*B2R& )&8$?4'/#.71J=J:F-#JI D2'UC:24=0<4<%0-'<'3='%/$ /('65C7F:&0@+4#$+ )%"?(D(97 -5+-G0/?;&KP OVT(W1^N-71&21 ) 6DH@ / /? %/$(2%+I('"/- % 14;L2i,X- RN02Z6N0"4",1 /,((4" 22"$$2 8/$A/S-"I3(30--2)"1-(22&:(+6*+2(8,"-=1O7R5T.^&b+"m 'nZF+:/   / < B8!.&/5#1$2'%4-&  +(#2=+S3[)9X10X81Q@9&K/ 7 @$#00*%#6!'&-&+'.*5=;L#S%$I")2!5)<-C8 .-3!,%)!/'>. R9[<T9X7a0h)f*Y!H$ 0   &7*&! % 4 743&2)*"#&#"%)-5*B27G:=TC8QH.KV1-6)9?/!760%?722+:3:391,9H U K# +9 CS?7&6(3$)7-;A?KH4GX$7\8.<%-!;607M@)M>)J18Q&2@'2--.,1%-!%0%.#;)$D'/?3A(6%"50%=/8;> A='WC"XGcHXXTYJG;+ &!   "!'" *%'.5*"+ )-*9//0 &$%(!),5.07;9>F*8X%0b/D%;38;/+9G(HD2V0W,9c/f8%_4+E5!7-A< 6.$3,:(L- CA%3D4!+9! 0"+ 0/4$6,15%%72"(QS *EK8552<;;746*Q1)b "i90P?+5N%>E'9N&292.7H$F7=@(G0-<8?6.+'5!247$$3(8(:,C"N T O ;* .(+" !&5%A#($"%9.A@S'7S6X1P %;#!'"$.-0:3., ,+3%"4-,10%-&.($W!-T#0Q#>3 A@46K@9#$A8I@1O0/7=&%R &Q"R$1@0*+9*('8"C$)J(D6>78($,(0)6%/0<K EEC'"65'&<)+5*,,%0!;*<,.'%;$5D=A'8I*2G(.=)%?% "1 )2'5$+ 0'8/ "(-%/,"-(2*J//U;@Z64P24C0!?A@D/9):4.?93*<2%; "SUO*?#0<')8#2$;$>,"C6'<4&2)'5&,*,2;52 6;/'406'F5B>.+?B37,7&@)7,+$*!5+%85/5E&6<&9A4+>-) '*- , #%+*$%$/&0- 2*66B05J9;R48J86D2#H:75:82J4C(444+*BRVI">$9&-!#' 3*2--1/75)4.&11&,)1/"0#0 $0"!#)0&-67;":C:,?2,A161/,"# (#!)&"/*2-9/.?+.@,*4;? 9    )-#'-.*7,%91 >,)<-8E@AD3E60?.-@+,F-4N:;6&95,73!304*5=<$@ 5 / %($*(48,;;)B.0B%1E'3 0. %-# /*"%#'5+(,7&,?6)=4);5$;/;$ < % '!&),*(04"7>! 8A< = %)..237'5.)H) A.);-,>13-29(2<".=+,?+,K=2BE5@@+J3(T$&P!;2&&/$&>7;$$=*+-4)6+ C7+Q$8Q-S!/; <!) 1- 1 $/14$(6'-51-8+3=/>(7$9-  (#? >&'A,<'F:( #&;"<&!<'.6(/3,D*R-E.$:8*11--89>@1D),@00DNNHORWC:k2!qj$T(/53<--.*$>+'H1&H@9DLC&V._*['"## ( 2 50$1(7$(5*?+#7%'@!6-3)3)   4)?)?##2*6- E ;%*?"G'L2,M*@C,<-0'8)=&';)&6!',)'&>6#I@%LG1GGADF[NRWHlP1~""} %p+&V6/><<6E/%;A&G,T3@B .N3,#-('"!**79'60:-9%4-9+5*9 %213 .% (.%8%> +4 0 :+ D&6$-9#J M",P.JS%RB&K+F%"9>55/,@ #D1P6-_F;_PTT8ONVHOq76~ }0,hD/MH09B11W2N9:K 3N&C3&3 1* *02<8#?#+91-8+4$* 0...)(+-%/-+ "02/62*.>.2/8$H;-+;C!T=F RHa?^&K7>0!,!'8+(:!+@%5L1=U;PQ:C?D/8\ 0kp@YQ*9S8P:%_9$HHCKA** !!1%)F$,P'Q$S,Q1R/Q&&=%!% ,)"( "" '% ,6>/37+043" #%'!" /.& ( 8 BG ; -,3!(0 "0/$6 ;4()%)($-3 BL'K1II&O_2Xe+Kk0Ua.KO,MF?:4)#!2!(?++R!(c.i#0c+.]0-R.&=+#* #' "!* )$:20$+ %'# !*'$/ $   "(%3-34'4!,<&C, &-=&$<#4(")2 7 73 6!:"0&>,'BA'ON"Mb%Xd3Nj8Xc9UO'JF(=8!1!)/*/#:+P 'c+t%(k//f3)[7&?$!*("% ! " !$#%+' $%/$ (:$"0/ 62$=A%2K!-X&1?%H D"0'' 4-9 C'#E" 7"+"1<)1=A4HN-Oo3C};@m)",&!%*$+3)A0T)_+h#'`2#]9 P5?%+# *& " !$"!$%"( #8#922  $!8!*2')7)$G&#F'.(+=&U3W8X6A. 3AA6"-$/<&<8><4N6.k9,yA2q7;S!675-7" $!$% ##+,,=(1O,Z*W"a)I&<+4"##0%(#2#%! 2>'E*A(G. 6%.&20I5+17,=.:,3'!H9 \HYBN7=/(-6";!6+$+8)<5<<5D"dhd!K"" #/<$/!.0$4+64,G)R(X] W!C#)))'-!3$ !'! &#'+ C(Q!Z+Q'G$B*13=/<=3G2A6#:/=.%I4$G(8.*! 6 2''F$1D.3 5(+<EH RL 7  * IW. O0<9 &H=.0"5QPL"O.Q72?A '6-) !#-!$)/2M8 ]-`",U+?)C"4!()0#2:30;>B8C8>=&04.1+3&P2/I /`2*L"!< ! $'+;!@. ,'(" .O% Z; V9QD 7N!=/9 <H /F%B9@@8@5)&(*%#$%!%"-!5!U #da&WI A/# . '+&- !0;?5<4?;D*+,#(0-/-4$.Y$0b1/]1.`3-R2(2)%"&"&0$'4 #("!0%;!"HAO*WDXFRODP- "+#*16 @B71:<>3@-16502%*  ,;!S &_ \!T*E&8-# -,;)8,8 (; 0 .!:(1''3.0,10$9=0WD6w>;s?>n:3dB+A=$5!"-(%*1// /#?)PL!N-&M)U T D ) &&) .$ <=I7 ;'?/;:K3.U'8?85&    %; J T V (I36436+!+H&"H@@ 1 03". #$0'>64OI6kU9xUGsZKnQ7VR%4J&:)!*+# 1#*&+/- ;I> *C5O(LSA))""2(:@/@361D/)Q:92M2@"@1" !  ' 4F O'T&@ %3.8C0%9A/=C9@0B$7(2 ') $+!&?8*LWJSRJpH<}YEvWAhM8Cb!-R&L#)=53$59!9 ;%>*%4G!]-Z2C:I,TC!2#$ %1!+'1 3+@,$G-)^?L85/ >'6 .!!&$ + +( %:'C$J,7 4)1 .877<ENIaHQ3K+B 1! "3//GO5UfHUnVk`:t[9nMa"#[+P79F3Q&P&L2H8+7JZ#$_$0C*1)!$1$1,$.!!,*-# #)'2%&A(%<0161.;$< (#('1 3#+ #&$6!'8."?!F+B/2=1Y!>g&Dn*=]&6J%@1/0# ;% NL7VjG[rSQy7RsF ,5 ?1M)2919 > 0,+""2,%#'"%#-#,#,.!6%5 )$! %."5 $,--# -4#93A G0 LA. :1,&"0 . DA(KVANr/Mt2\r7Vm0_,f%T'+[+-KE7%`RbPTCHPFS*9)B0%C (M+>),,2&!%1#) (. %2!"$&%1,6 .)-& &,,&*/&=:19= 6F>? I5DE6W+,_"(d2!Y7@AF5J31'2* :)MLJc"Xd Zl Mk (g[ ;I+DI L) @:2D:3>$*,27DB KL-5!77I#C%?H)I=UJ">f#$c-V5&A-3L/C_Bd>p2H_;B&8E,34260@08C2:5(6/5/B? 51 ;-71NAPJMI'f@1z58o7AbHH!FH=?#6&04-5!$! $)+(0 (D%.F *T*&[!Z-"< @ 9 4+8/6,3)/#3 ? !F:#9(0D<4;1L!Q2 K1QDGR?*WAKG%G10[-g!'H',B5BBIIEXA,z9@=Cm-ObVTOS@M-4031,0(#0 40/4>45B1,.H /G"1X!9b%*j8)6&4+%36 2"97 7  - 5+$'0(F'XBQP6"M%R'G-E5*@F92HB/Q6\1)Y,8R'(V,I1D >DB<5VI>W>BSC>I;E>I) B+K&#V',O!>QJFZP+nB1z9B~,Ur!Zd]\_J%TE/I'6<,/-;61C89FBADE60@GEQ3Q9(**/6%)( ,"6-+6!7$;"%/ 9#*.$%*D:`NW!_4'`-V A+)B/(1/'5=6%2+12'H91S:@I??J @#='9*4218"14 *#$$05#24*<,7.,#-660)%' +(D#5Y VM'c64`0U%S:[+$OA-IJ8]YMFeM=O;'347'5070/):8BG9LCnJF|,4j+4Y(T&)R(-V0M BRPZfO$t>-}%Gr$Pf)WW;dBLd*L\)VE'X,!A+:>2F/B8%6?FE#);6845A.6A2C -3&6&5(=33*-A8+6;*6$#" *+Q9V-aE,p8'o2&Z4`3g-h>'cYBW5aJ2L97/B3-<#'%.13GE4^T#brQn#^%7x04?"s55sF4e32S694MH,C<,>*-$77C@jQ_vx8AcB"[?$h=%a$;D'_HcN]HSE2L'6N [2$P:25N93f<#s8w!'m+Z%-I3+5.82*?$".) 0+B*Z(+f'1l#%y/0c)N"6( &&0:%&D6-A;17I14?)?4 56&9?>HNH]?JcHGZ-F/1',{9'iF0b%,[*H;?2>V"6V)V.#FC-+J)*_;+tK7iZMCkTmR!hU'U0=R0c>iB_I$\9&=&'<97/@#$R"7g)6w"{+x#1c-3T2289?,/9!-3%!"('J!a*n3y'~,3g-Y #G(2($@*.G6)LI8SX#5: 3%$=%\!m&0j,.m5g1R3E*'FA>.KH0YT,Y BT DF1?!;W>F1W[1Q_%ak"oaot-e3rw@xLnqQQ/.)D@3E<6?AS+5H-+74.b3j#1Y5V*CQE&B+@,2JE:YVZaEdT6TN:E.84#$#%%>5JE:&8>A($>G,C/%N&l2$]00^)4a&0S=F(:)'-56L1Mr7K-JE5((B:.V30CT$Y].gc9u^.zl9Yw9T|LMi=QRLP-^(#?376+K+"H->B"\6h4)o!6a-/B)** :%6E/IBNSJTPBN>H6,D&0#-9(E7D?LM:W":U%K#96++=>8><1J"T$#9' I$W&M%4a;_2[*K#(;':+/6FV2B3?(=#1+ +.(*7A>/[^6]\L~cJ|c=s[:_gQ?D4eBNB&W6(93+=0$N2 >; E?[<%^2*V42@87%))1%?A5=@K7CL&@1B!05BAE%>5D7$=9-#:(;)0$5#1=&<< )L#G3'?/?$"L$U!+`!7b%0j)X%*T#D*+6:I<15ML(7 3$%-+5/?I+`Q0[hBhOC}Y?SN|B=r)K_5SK 5-(;(.H#'>#9%&@+/35(';GJ?/.#,(.&6:7.& .',33$%!);"4D&>;$I(H #P#X*W":U57Y5(O6%V1=*!/9:)63%5!+(,7,;%+-1?J8[O;hT2eM;vhKXH}IKmCH=T$SL EF$.D%6Q38O9&F<86:e 6k'4k#W>J0%7?E3),7/38 5'C .N-$= :),C A,6,"'!.$"%(4"?7T>-72E%H%T-P/3FK7AD.IG9:>4713-&'0!40-1&'.4&"K9Mv@L~5<{FPR`KoR[r]VX-R!9B3%0P_'P+1BBCR!=`1U5e,"(dB'W7 B. 508%4#&/3&'B&*.1?E;8":*4"9 >&A)# $$$(A6!"/6 I.YU(U2/W@,HX3-^2)W*)=''1,3/(5;?)'2>#$,)E2Z@>h;@}$O|%Mi3NOLaEPg<\ <*!!,HW +P/9EC(6_62g31[/p#{$h2!`>$O1+ *,$-*)2% "M&P[J844+74*5$$!'#,I*$F*S_f+P3'RA'K^*6o/)f)"X-A>-<4"D @;#@_04:+K,\)k%:{D\mYC1V<4Y4(>'$3(&9-2G+9J:67ZA0]O4uF'o? _0't)n, N18'$, *%' '4"KZ#"_O(A "A&<+(4)08,1&" 0/F2FUY*]/O?(DH?c'8p3/w2]5GI33>.%P(#ID$EZ3:D7W%Y& Z#g/f);I!I>F( H1#/9 =-N8"(S$\*NKQT]Pv\#[L(Y=0g*&\*N#6*!,7:0$ +(%$5&JT Y*L&<;#)4&986 59"F0>+1 .1 ?,7>% D0K:DF38N$*e(.i3 r? Z<=A19%BT+QDU^DPPf Gb'hh8(T$$O-,?,/R&:J"TT*GX9#a'&c$>XNLTVT`-UD2X:9\ 8](3L$#9"&2(*-3+%* %!%#2FA"=.%-016 *:4.+?2*?%(78,6BB<$$=4#D42E#]"'X$T6F?>)4")DH) ]8 YC^CINPaIb3@q:,iHk@#X(:%=%R+HN6QW=/nF)2u5cII$QT=P?=M>KJ6GD6K,J+'5$.$)?438.*. *"'01 7 ;"4$.,#74,*/(1:6?.E #B"9<B$8+:!6@0;@ K!G""68!0? 5#9:$D<bFpHf>%VG!JV.N[ER^H7YX%J>$3!-) #D"7_@ToNAcR1|?#~+p4gBX@JLFS:=H%O;(F*4= 8#!033?-8=)- &1,22&3'./ 1, 20!; ,!$7&,G7)BH!=T(S&#'+2:)10?$DC1$:-$*.%1-?I: ;8.+NA9Y@,yD3v48a9DIH;LEFO;cD3]/#*",+14+IGGeYArV;fS#nDm;r<a.2]F@V@UCHN.N?">6"3 /$-%"/.#9"-/#2".*!%5!'*2+$*1 !BM+>20&,!94J<5@Q)3Z(W'$,&'%8++7&6>8?=:=)9$(A!C:A9-(<4D=EU8P[#Pg.PY2EU7C;2Z8!b;;8!(#0>0OH:WbWe^Tb]8`U.]9(fI_>P= [B+U@6JU74J32=5'99":'/(%7.3'=!77-"+-!=FN!S$ 7*2"!=->(38E*2N#))!*<)/&3#<62G>0D<"H9G#;$8=% 8:5('-(MBYORQ%KQ&:M!HObGG%$)07!;?,W_9qfTZhO9bH"Y>VF-RQ@G!?;K7M;"8R#7P#6BA/6H5)AG ; //,-.-8,-9!:GYb71/7#&8/-)9&('7<%/45@;=L71G3 P2W!$G)> $7#  1)K!#O3KBFI)MHNLA= ++'+6+RRrj9jjN^u>.o5\6 KNPG9BG&14:1 @9/U)(S0/?*8&E:D1E+A =#$/",&#+" 7A;DLT A*?48 1&+&! ( !4(:0*<;@9EK402./ #.?9K"PTL(M$D 8 !"'$2 86$<1+;6?01=!3G7P/Z *KB! ( 1(%! A="=-:)P'I>"7A!YCI`)1c dd'P780C&,"%;%@>+N'X*^!O/>9>G'HD*C957'&$%6JRX$W K A!@ #0+"8"<#;B@$2((,.8(2F2K2]5]  )'&9A ; .2)@*-1!2E&&C912871D-"X P+!X.h /N.?/4,!!  *($'C"\]](M.:0E=#N<9C+7<%..&$"'$) !CIV [E =9" 14$?&B$E$E,A.&3'/0* .<&A*S.`  " 3 A > 1 ) 214'%& 3!";(#?1>;9I&A?">-"A*6B#81D)8-& ,( &) /"B/T#(G0!35 *@ E/02%6?# J)I.G1 9/15'4,$FU$&1 < : % , 3<5C+'.7$"E3M(;@8N.3M039;21L12@.&1+!,--%% 02!#'-4 2>"60+$/0/=#3=%2664*>8)>1,@.-7=" 7S\"Y!$NF>2B#<"2*2>G#T4F."@# $-7+7#'/15:$! %0 ) "1%L4X )C5'3O8Z0'@5=/,@-1:<&8@:0"*9':+'(",#+"%$* =+5E*K/5'#35=7,1B81%0-%4-'/*-2$ C.D8 N:`*f"!o#f[% H-.4" !- 5 HP C8)- .'=!3.(8 ,"#%&  . '4$T#J*L5E?/-E)&&):+#375%1(&/ 7&?8=/...-9#?*2;;*ELF"7#1+&&##":/DC MI OD_@j3o/m/^*M'-$ $ 0 8?;/"##0(22*/%!/%!  +, &  !##"<"B3&DB,FA$DM+6I$"-&$'125.5@"/@*(E4)A-.4!"1805<,L.R# OB3/2,- 5?@MKVRS [S]Lh?jB[5 A1&1)+*&3 /#")+ #((&6#.4$.+(,%*"4#/% ) %$(%+1=&9B08I%:K!6M*C/"'//IME>/0*4'$5-0A.&/$ *#$#100#>3@*E::- **';!2F(TK=)-4-)H1=?<3,@$,A: 85(&'%/'.$!/$3,J.E!/.!<'%>$>*7")*"',4.AAIFQ B]"BW!9\(?_ =Q29 %)%$*<".*&1 +B+@)?(6'50;"11$17.8(:/9"14( !+$4*2-41E-.M%@@8&/&40 =90;9D'*M% D1=C)>(:1:#4)65#A'"C"A0,.8:+7=7= /:+--+"+!#1 31>?BL5W(*[0,S*+U''H &  +#%(+/H*<7F-Q+P&L!O "61=:=(A);6=9=37490:5-7 '1'"@.88$A4!G!@@8,38.2%)0A,!F!E66D D "S%*Q)9980$@%B4!5?,)L1-G:?@-A*6')+.&&!!7.D6N)b,Z-M,D > $ '$$102051/#C!0G/S+3[$-^MP. +472)?'2C7< 2;:6>,39:8 ?!!=$E9#L1"S0-B;%K<P7*;653&@2?5**-"+R!.T!Y"$Q-)84+.0--A7&7K1 R7ID =@6C1B$):%/#+"?!K"ON& P K=)2/-2# 2+$1*1'73:1>A06G!1S)%YR(,1)$>.:'C #;266# /"=6 &5";7BM(IE/R66SL,GO0\M$S<?>.A %=!*;42B2*-:*KW R/,?7'35$850+)A+F:EE"=K)>@#08#+1+,$A%DC C!GAC(!/<.7B&!?* ?>06*%45(=)?02&=4-2?.;W,.W&,/ =0*$- 5%-, $ +%-&",'7";%,?);CDJ'HH3HG-KN%X=&M/@?%;<7B.F,+87%23-O O& O)(@* 3/',#% #3",:8/87-4C.0<2*@1%07'7$ 0?'6))+(1'04:2D-@'H/5*"(/+ &2). &%&3+04502E)#L8?@>=   ##$40+2/+D"J L(&A&/P =N3JE0HC9H17N.2H6:BE!:G 3D$4:3/+.9"G%J$7+##%("20/A/6G15G)7C'97$+2%)( &) 4 )'. *(65< /?*$L,A. 21+,%($$ "%'**/0#;/(8AI EA= #$-8 94&A,*A""D+#M-"B$(E"36(H11F-?F%CF2F?E(JX+=M"LO"R@%F!&,4,2%(9;5%6$,5(3)O*.Y&>U5e()@2+&-*'* 975)435.=+,=(';-:$ 6%)" %  &9'!8-*6/<%HF"/$?"<-H"#E->!B0Q.E4B18(9*128>,AF&9@+H?2CJWMJi:R\ ]Aj$Y =?2%0"&1,>$B&(?2(4C%IU#^,b(/'!64& & 23$5(0440@$#6%@$#7"7+! $ 0A%;'5':2K G4% :#N2]/1_07T#3E%2,=-5(;"!6%"2(&';6$J@CK+EF@CB_DK`8]Vn9t,f6M)8:*:)+.-C.C,-H'$:<(252 #9*)6 8)'+( # 57,C#6%,.4+8#6 )2 0.%* , 0 7#2(/-?6B/I$97 (G$U*-b3C_6FR(C;$614"1,, ):'%?+D;*KH5KTHBA<:;+8:585A/A$B,-: 3' (& "7>= 3 =$6&<%1&--..1%45 1/"& %)/%5((4&8-@';(/;&"F'$N*;TEX OQE9?2 3&' &!"#,!&3!'=+.F87K2CE.D.7:*Q)i&e3*MC<E;$>A'7="9E%/B%,='>"15 ) "5%FC >DK'B*9("9/.6& >0 ;.'<:1'%'*)6")3')0 (.211,/8)C2@=@@D ?>7- /+/"#$$*$ '4(-;:#0C*;4,8 /0 -" I. F.G8)@C2?T%@f.@P0@I&>G44$ "%8""O$MC 'M'J,K+;$6/ ?%@"9*(8 0 "* & -#05'2"'&"!&#%)#2"/-+5,7* .&4)1/.)")'1$. 0*9*/#6 ";8  , =3AJAL*@Z5Mh(Il%IZ,EI)CC+;4 6)!!!6*%E$(S*]+X'1W'/I$)B$4( 3 ?$4& &$ &.$? 4"$!%!'+ % !! %, ;/5 +#4!B!-)-00+(* -# 1:)*'+2912X'Fb Nk!Hl#Gc,PQ&KR!ED'C-0*,$! $(8#I-X3f2a(4e3*N!:,( ) +*  , 9 . &%"-$     # .0@9'4%#?(#M+0(+6'>+2+,%0#,+%$%%!*!82,\0;a.Gb,7j6=\,CJ,BF+><B(/%!",< H'_-f2`#/^"K4"#' " ,.&!"*+#($* ! #,!%"(9.,B2//+.$'E4D.?</'( .1)$!/28<">8'R3+g4.e8&U'@)6$+0&  . ))%:.+H! TbYG=!1&""/)''(! !%!%"54"3'6(1  -"2%') 6+:9.+D=RCJCBO:+R.ZPA@ 5''& + -#&$42:32' 5&2&05:!#=';0@2V",^*%P"E(%% $7>;G2?+,*-*5%&>"%N"l,^=Q"-G"=,3&/3B9C,<AL I@C,9 3, #))1( (<$EXV]G7 .);$40#5 )/(4>+C49 $#+#=:DD"3M(0T ,]!4q5.Z+'G(6(!' (#%+720833>(J"'K)R!^7 LS)FO(H) $#'.% @= LB >7 94><BB=%+-+)(2 ('   -) !4 (F.W!U N'C*23!%'7&:(@ >#4 #0'9 *1"#'%&:))I84N69jD?uKBj>=uI-T3N. @: /,&,06:83M7$R#/T1U-G+L'N:: $&-"9" G1 M9D?:.77I<+Q31;!0('&. 6 E$P#N.I29;!:3%&8-8"FB!> $( %% #$+"#5($A54D;;`G;yRIZQyK?nA(B<91%=9.%#"$$.8 0?+F7D9G 9A /@E7-"/%;E# D/6>!F5>7A;GB8-/0&%%)  !#5@M K ?$1%(!,)!-,<32A+<1<'8)#$&/5D0(IACQ>UuPF[GWIrS;GD 4S93'*/*+!#&$ $-<- L U 0D @B=20=!. -"&*(#* ?6'=*'B1*H6#'3')#:5?:2PKF[YXjFCxPLu]A][:>K#;N)F4;9.(/ ++ #6?@ H V7O)G8)<#'0'+)#'$* $*$/"4!"5# 47 1D<;@..&!2523 $ %2$* 6 ;>'@9 /B$3M)7i.Et.UaARP4IU85`(T"V'K.-?01;040+C34#H3M/G7 G#:9 7&*$(1 " %3&0!7- 2+# ,42;*)" $! 0> OJ(@C /J1/T,:h44j1.Z)(E2.<&&2+<&E<4P[^Tg.Tk-CpOb?]'j-V*\9 M;0 5= 8>?:6>#%:+!(0)"E.,O&-T*.I()D; 2 !#!&$(&$"(+&&"$(!(, %4%1'+" -302# . 6.:2+: M&R.E7$-M78Z((]5 Z9H3#O0"?=((,2J O+S?PLHgB|1'9)+8&-)03 1<2'(&"0! ' # !$ #))',43-A)!.+ 6*D2 >+8:(4S;3]%)J:KCS<[.#@*)/,B!G X](K<>? ?p =}.-x5\22QHK:J%T0k#/3B"4e3%j: SI#L11B1'O)$[ 1cFT=H,2,<)<)B .J%C5-;-7=36/<>=8?+N/<9-H79a*Af-Jb#KUEEMGFK*/56,%),#$""$077#2C&H#I+H#'-.5- 6401421*"(+'83.*2#;.78HBE1U$ Z% :+ 5*(+;)--/*/5/4#+*!.5"'<%P*^"h &$:.:(8#JE&4$ -28/4C**@*-&"G>^4;R=$W.5W' ? 4?((1$ K?K4+b74`=@X(RR G?,=--=/B/>$1;B?W=%^,=k(Tv#VbYVSU$NJ!L.*M;+214!A0=T Q7(!+2.55M9b*BU4QT$T=R9E4!B5)6%2!(9DKL5MMQA RC6A"%!*->6'T-2g.D_6TO0]D%MB(J2,N*,N"<>D@KBe< w*@m#OoYePS6RMAWA7N.5C >-$882K.L* @##1#"# #%!+0 .(9I"L82> J!C,7"2*,$&& ;+P#3c/IV7gJj;g0 ]$J%P)7H2:U]KLYHCOK5JL 1@*.*0=8(MIBSASX3`=3^7&\>(Y*0UEIUHW= QFa<+n%5g$QoO]1PVBU@GY+@F)>4&7 )9 44!+=+7..'!&4#?*288+N E-03=%.8#651=)$>/* &23N%@F79bTAa[1Dd.0b55],-UD[XaiKgPgMa7.Y!:e9X#LS5OFG@?QJ,S:O'(E 5F09"""428*!3%*1F!H $S[7"I?!.C 3.$<(;?68/69/0:30 (0Q#9/)37982),';# R-`!4h+$j,W0%D;"/ .E*3;9C87E:AG*D;2%0=%@W@Ta;gUC}FD79x 7G3r+Gs!Ah?L!SA.D>+S %J1"#Q%T6cFbK$T`!({0*n0.d=S!ON)D,N!|>5p41N"376?5)==<.< 1)5=O+j"5l..a.0U'.F'#> 0%/12:DB2BP1V:QGCH.31%2G;?ZBiXQ}%(> U)#^7,g(2n):\/;J$*C-+#>'6A>IC4\KcKS@:!;?*+4?48GXNV`2juXA&M$Nv-;|7@\2 8.@@4UF;FM+BN)9I)8J-SBK;*FP7'a1l"j+7N.KVNMKLVA8NC5N5<8/-"&62FIMF]Ih7e!.j2^8P>(5=(%:#8<(6"%,3 R+"d:7g21`&>^2GG'50'-=+EE-EX;X Jl@b%0?#'C5&0AF"JZ*Wjpbw'X,U0S{/Xd#di2e)U:BI9=K59=+ $",9C3> 8D 1J.?!47'7.-/A-D@$T]'Rb3jx=k~;IsL9g'W\DAb3X0)G4MF'R=(L/M)-V(7[.f\;"4.3B5/_<0XK@RTEHG'9*39$$-59;>:R EK=D%$O#J!2$-"(B D=J/$S_7".!C%(N3*c59P)AK.8K!8I56"%1.?2C2K A 6%" =!*D?K(Jg0SZ6\kEagBgbRJgg13ZF$OCK$!RE3P)Y'H &J!!S1^*I:*$?*S(#V9/NJ"=:?4+(%$< /%/+<3A94:$!;;!*3%E2AD!#R R*&*& 4 B)P2M ?I 3I4H-B/ &$-44+B<1!' &)';C%^V(VJ#MJ7k]Rxd[tBPY'KL'];7T&3DJ, U2T(>+*1,.G&1@%(E*30'862&@+L*D$6%4(,+1),/1$2%"01(%=+E2&*/(3,#E(L H.1.03%< B6:@:/A*?*5#08&9!/)"4(/-** !' ' 0?7'W5%h8 nD*ZYDjYGgNNZ1N(3b 9U2GH6I,(J 43<+2?+*>+4?)A"*P/?<)>;-K%MA#18;#);-#140"3$)( 3(6,!+% 4! 8)-3:%+16262%EU")H+,676.0'33#'*9."5!,5(@%B9#%"2 A'<_45{$9w/9i?P`UgMD^P6d>1D/<3G;5?18D=(BF:2%@/X["1U.BC/.EJ1>T5.@%!//%56'E.8 ,6B/T /K--,."<V)*d4=8Qo4]K=gC?t?$Q@*;&1<9BH<5S)JA=9A62U&!fZ($U1*O4-F,@!6(4(&,+,2 2S(`TF7". #(4">!2* $.!$#"$:/5'@QX0Q+(VJ#E`&?a8+g(/K/+,;0@86&9'$I4T:8JR>'>%$A(X-\ 8p&5%NfgP]6)Z2.% # #$!139)E2!S:/FK&MPU=_-Y T-9'/%/$+'%(" ! #$)/!&G'SZM;="7&(&1.8041,+&26"5AT)]BL@PBCe,;h14n;$V4>=-6'7#="&L$4F=19S07>6K'+V6N4W7/XD9I2QBL04""#8,-3 >'??@&?QN\@hSU X;WU##K$ * //6 '. $% *&+&; DP #C#:%@,5*0 :9!@>&F6 E)#1$3)"+9) B<OKQD F:2[&+b4dCTD9748#N'*N4,>6=G%GQ=GW<5`8$Y>GLFA31!(1 92+=;/0M2"E4i;&c>GHN>b&Hm7OM8W2;I$1K-;*(%$2%4-4)&. %%$+8 ':&:#4149*.9;<I<.N:*H5.?(H! 31*<,>9*E@+S9 76 %MN+#O=;R 1:$1?+R1Q=B8"BC:KS=PA7ONZS$nD b!:\MRAK1EO?=<@B/>>"&:3();%%;3##. ('))5 50-- 2+ G("K(,<,A0-N*1R),K!N$*4%1'9*,G)-D#>@)A7 *--<42)!<: M=+XW1]80V=7HJEAN`=Wh(R_HE;%1,!+1,BNFMUS8Ua*hc%fA%k#0gGO'AE=? !)#%)%!*!*+3) # ,)-!,*2"/!+ (!#<G?+195/+6A)2R,/W"!S*+2&,9,?5F#+=+(- -!$45!/ + 3+Uc\Tk<f*_"0_5=`?DL6=5;60;#&) '#0-$3-!>, <*3& ,. $%)1((&()/ &,)3<0A#:.+1'+/=65O0+b1&5# 73)92>:;8@A4=/"1 5!2 !#)*23.DD9BEXT'WN)VB,`C+_Cd'I.+)5!7;-POIOZY:`b/W[/XI&aA#XJT?&X5*f21Y9/99:.7&!5)$06<9A+*?@+8# )#)1%+.2,$5L1 B=1=22/1+42+N0_! */ ,1 43&*@1A<7O;3H7U* S!M !G%-' %!(5 N )P%O)J1/Z<(Z@i3W%5$2.-S2-SM?hWGSeQ6RS#KD HD4DT44X$JFU6P-$GG-I<5B*<4F2C-284=370 <#0 +"$)6&53 BU'O/#505/#4+(#"<!E  1:&@.-9>B>AL6;T,-Y) g$`%U"5  # " %) < N 9 R($X,"V3V-(?)0I/"X;(rK$kRMU\?*[MG9LT5FT/8O)%93+@19:+87,4.3:!L+Q#C'=0A.2$,'*!.199#5!@M H/<$/)(48)!;2'G;D:=K.2Q%0`&k'f(V!$8 !! !)*$&4-/ 8!N+O"2O-3=*;4A#C \&j;"YI>KQ ^+M95U*7X0,G%/*%+*#)6++A$"E&D.H%I-G-#@7%;4$"()""1 "- >2C O MQY $G >&'++:> <(J4(6.8./G,:X3]*f!Y! (%$ )1&.+C"AJ'+7.+1?( B#&6#.V*(V?>L *ZYO&/:C1 D' <""*!#%",<P$[-R0#T2#=1.48$5603,00.* 0 ) ;TWTY*L"?-.0 %2 <CF)I' 31--7:(3K/U'^"%Y + ,"+4# 7/4/0&/#6.1"41+#/4*.' &"# '++-H.9 "@F?)73!%B$@%P,J1H9B0 )'*)!+<K+0*   +5 0!' )!&,1,/$1+O%*W4X1=:@07O5.E#*B*;523$''21)  /2:<)J71<31->0.8'%3.8-84);;685:$,%-97?L)!N:4-=&D/(7!!=!HLN2F*=#*/1*+,%'8: 0 *! ') .6@.7)"/69(7&K#$H1%B@*=G3H&@>@5):>5-/+9( 340%;I'&O$*5--1B*42<9>7$41/8+/7.0#,#"2/B2J,X)!\` Q"40&9!=><B SR%5+0'5(+. 2B<:7" 3@ M(!E(1;,"?(.#@,@48<F::B'K>*GH04=((*2+#),5= <'6%@!B ?-8%%)*)*&.#/ ++=6CJCY@d>`2a*U$@%',!723=DI ; &)*' 1#-+*).,9<:!6 $(,$63B5*79=I%R1 %""'!6$"D2(=)6.@A&JA(H<0, '/ . 1/<3C&>&,'& ):3O"<\ IVUO]LaD]=N6:2!"./23 ):!#B!)?"2'!/$-#+1-%#/&'1-">* 9/4+1$   ).%/32B"0D4C7J Q 7$+9+%L,0<#'6$41#H8P<.( #6'$3,.0-617&",(',-((+:4R=W!BWG^N\OZLG@;-23+*/#!7)27#3.$9=B" ='$05'290,57&5712+%. #!)'66-)D6*G30E!,J<<,"%!>'"D"E,0,/-$691- *$!(%):4="+L'<'.1$<0(?)//+(!  5056M0S!=[:Y%@a)E`7M0;!7& 0!:/")$1*.4.-#4<8130 ?)/3(((+2*57">87?<)=<852/ -'%&.(5"+4+3&-7' 14*@)>&%4"()-8*9(J%?& :,19/3-*1+0231,0!%((+,,0B-L"/Y'/Y,2Z30P!&E8 & '5,6,+));!28.E#^ [a`*D!;C0CG7F.6?F=J953 6. B 1!6'4!68"-J$3Q8B '8-5-+-)=%$G&Y ])!Z,!V2JA-#-:$= "@ )6?+)A)Q$)aR]] *6=9"I@+L30E3K4D0887=&?)2(#4)>'?M)=SDEC=A>N6Q3<4), (*#0 71(C"FN# B:+0>%(2$,A9*1M0!J8U7KD=O 4B4C638+G)#IR R%W)QG <"+)*.*)= .L%F(@1*1#4:&1K&b$e61$2/$=0/E+DE -@543.3" = ;84DF.?X7NX*DG$:G UO*ZH+Q;B$/7&<198*G4%41'?R#L.<9!/<160%+?*O4E8L;#>@'1>,;:+6(;&>'"JRH$C#K#6!-!!: ; 8.*2&?))J!J@8%&);0+0F)1a(],84!.;' :))34.+ */(">A%E!2F*9Y3I_'BF.;U:Ka6\@0d'T18:>+5E-E'+C8(32/AK%L+C13,(!1! 74(4851;/2;.7C,3<21$)* -%5#6#1 5 -%&(0 &;A> 93/%; @;,! ((/16<3*P6"W: (<#>% D&1$ " (0+(<)*E#J.G8$O9)W;6M@;VFG $BC9!-%.#5 - #*$/),4(22"8: C GD"7 $4!9 75&=/#E+J?BCJ?$LC/H=@8IC,KFMF%REK:GZ#J\?P@B>$*+-(//&1"!.))#&' +#D(L-*Q)/P(0K'(<,((("# /4/#2 *1*;->!A <5 &(  !-"2$3$ = 9 H G$A('$ ;/D)O!M"0L%@9!D.BH7I E?A=)8?7)@7?ARA,PH`?Fg%BlM]S@)N.=1/,/"(-*$,.-21+' <*Q ^&`#,3/(.*0<4" ' -%5#;.2':+C?= ?$!!$(!.-%-6@7F"BC.:,7*4*%I3X5#X2)Y*N 5985789A;928&(:6D7ED+LCALG^:5l,BbUD` .Z?M;9"+.)1)250--=*+1&'""0:50!'!3=#2*!,&%.27;)4)4 >8= 3 3')$ %)/ 3550D1B-B--433-B,T7!^<+^/3T /F*81.:) 6+&&3((7-A;'MG/IDN*;..=04 136417&*.9:%!+&-;!$B!9%1 2 24 9(64-.6373 -$:.+&$#$ & )'%+$079CC7B*,6;6(D0*R'4[,:[&8R(.G-8,.)% '(3)!22'D86B:H<,:(*L@@I5"E#6;B:B%2H*64 :'B& A) -736)" $*&##%1'1-0985"31(,2"#>*4Q)/T*1G,.G+5E08,$"!* 0#3(.$#/%59 B3!A 8 7!3/*/B1>=!,I-CD"@>":A0/A): (&-*) 1GKD@AH&>/250F* F" B, )079+!" %$ +. - 2%'!-+%7-=&<*>6;I4@%-') / %+&- -' 5"9#C9$$/.C!3J.N>N.?O"FV?P4M3619 .. "" !5"D E "J I E)@,1'' /!<F%9*!$*)  8 :*  + / !)' %3."01+;D):"!%2, 3*5@"&0'*, 56 65-()H,-Y-5[!=ZB_>_7'+ !3',% ! "/-1$ 7" / 1/#01,;9L,C8<93$6/('0.6ADB 9/"*#$&)91 -'!#4!1&,)E PIJC()13- 2,#-!"$&" ! "##"!*%'.3%4#5!=(/3%#  (  "%')5.('+61A;25 +2 670@#$>(@":A'24 ; -@!F5+%(2)4)0!(@NP>*40'5'!='!0"6&EME,F:67#,&0    %.+(",!*133@J F=4 !("&!4) #%)%.$+#.-$9.*@#'H):046 1T.Z!)F, G-//#.36:368)5')7%8:5>1-H X%W4!DB8:*+A,8-#&+2E2M,B7C8?;8 2*. /    !&-67 !DSO@$)#& & !)+4*3)4 # (, * (!*.@>J TQ3S4E/R4[6/TZ.'=43,-%8-B;EM? BA"LE.K.,N/S+"DB$=(7,0 1.8%=:?AC;:16:2G;4-&,3 !!$!"$75C#N V"*C%-(( !,!317#9*2%( , '1#I1b(2]3;R3@fBJ`8BbA1X1 W0 I90.""*&1,:?? @>O=QH1P5V5K @ >9'1& 1<H(C1 GBEE ;>:A>B4+ 3% + $!"-(4 @"D%.C"290%('!+#20& 9%?.;$9"!+ - ;@,C(7OA?QJ@`PWnERtE?f@0OB!H63;+B$+."" %3. B?I(E3F9G18#6<+#$3: ?>)86C?<54< 2? *6* /&$ )*" # 3 >@%:*7+#!%'.)7$4-1)&2 "/-#/'8"#=&)F42Q?DZOGhaMmQJzC5PC-@59/277? 97 1' )8%<?'9-8>= C8!9"$-!& !) 83!>;"?-@/<0 3> +8 50$,*) %($(+'" ( 1- '$)*2(9/5K4,O,0A /8!&$# # +1*<7-CDES3B$8F9N64!C8A<1! #+!3'.3D->H<Q5';+9,' %  #++2-@(6* .#2- 0>)5 '2 +*#&', 1-" ,0 /$!-(79%E21N86W2.O,#G/0/+ 4,/&6;6BTXUK:\EGO9*6O 9P&AR'2D!=:3()2-"+$#*35=3 H1#;$ 88<'# $- -/# ,'=&* !"..!-"$-+ 1 5%<%>/"005!@@%M3+R3.S3)N4?7%(@6(/#5 =$A55D>]QQ-LM9X"FW#?N)]%3S!=L)+L''8 (4 /=!*%+''*'($5"C4+[5,N0/F-!C'>'( !*/$! % &%.++)/#$$#&%*%4!;.E2'I1 953.>E*R4'O6K2?+">5%;C00>">KE.M)P2EJ7X%*e))k1(c,+`>E%8=0'B!)G,C$%71%!A#B%@3 3F6&NA!X=!K=S;K-. *5'2 )$&-*-", ".'1#%($#)' """'"#*"4#-&,0.6! 3- 11A9;2$;1.9A.5S2%K2$>6%E1J/:(3!7"6DNI T(D608X)'f,t@!^5Z,A'90K$.D2B<-3D27 7!B/41%8 )II&<# )"5DLT! Y2F/'2)$Y4#^FDQ <<73+A 3?7?(*-2D D'B/F+/?;%E50;3;9CGCQDQ!7UCAMC"AC"+< ))##&.%9)01*;'41 6/ //+%35'68J7?+-57&5-1 )9+.0/ 9)73"A1 F-R. B2A<;7&29CN,/:)$#7 56>:2'(*B-T$,d 7UBU+GI::J95F63E74-?6B&?#C3ECT E] OJHDZB^=$Q?!:I/?#,-*/#%!!4$*0*E"GJ #/ /!1#6+9,>"M$=!-= =84L 4I+P)Ea&DZNI#JQWCP:C<<9%13-;2 346*2"" #(4%8 132#AT$_@ '* 6$9< $X).V13['8Y7B D@/?)?-59!9)??5W:*V44R6;#)&-'544I+A[:W^.Hg!H\(BY:RU8NA=N5D1O<J'N#.Z(6^#RUQG$ZK\B4U.-=!)?VB;S'+S+@:+*"4;8@4=O+M]:aX+ZP'^D4e6(j<l9_2 N#&[#4S(GL TB W@-\7B\:?8(0 3!/.$/ 06 ;4   #*,3./IZQ.A;. D)O 3D-<; >/ ( ,CA^%Db":]%ZWl@f0gV"6La.Ph El-V]!pBz5o8`*+N$6V"@ML=+*87:+I:?.C/0.0(0+*' 1:":#$8" *1 6&H69K.SS=...K/P%:?,@9$>0',"/F5_5d'Kd3`Z#oC&5"t!o&$_6JBE$M6=g#Qb*S_%Wi\XrO'B#51e1.D/&S &N-(9-:3>68E(5?D#E00<-/<;<6*6.':4$:'!,,6?##N2#TD%EBCM*/P E0))G":P9B?0R4. /& )(S"8e:Uj1`V6{J9(,)JB;n'Yl.ma4XM*HV7=0);&&=S"R6B?&NH:/_*4n%B_P]TZpY,qI0I;=;y70O4(B*(B$%:E,7I%LHO>3?*1>580>=)F=H6(D3(A/&@+%/+)-F'I&#Z<*ZC/[S5=J+%G &: '+);#6B.=73J/@ 4;2(* /9%.TIGm8a];zEN6G166 <HH>:;9:91 K!M/$D7JJ1]#ls@YGN:bJDoGK{HLw6Hj;?J00F+%A'*@M1\a!QSTL!GK+4V68?:&2I'H,D2#I4F!)6:0-H.?9VE.bLE\2>A (5+*4)6]PdWV N`LU/1_5&T69B%CG#FA(@!(6+-I6^H6^C:_BEN:GA=5)3!!&(8@24R;I 6T8Q 67+-.3,./18JI:SYdpX V64K6{U5|"ex/l:-m;Hm#Q_'KJ)A5)R1Q2C1755'8(C-WYeW9o[:rb6iZ3<[&4A7# "*!0A<[ J`HJDD0@"": %)88H34G&.S.P*%5;IBbF%`NBQGN>=?2C97* -(8;$:L,C?2E%+:-#/;%L!.G?Q!S\"Bs%Jj6JuK.t~Z.J-<>13=0(3*%+.<"L*85#2#2!((#B##4a}1g4$D(wC7i"9T1Y>j<W.K#1N)\%,M$A#+&!3(=,'E0f1iJ/OF&E1-3)  #5(:,94/CC2()4E)6(K1*V%P2#59'P#M#?A(K-#9*#9-1 03;03&')'-4!*$()%/<'ED)QK<^AGGGRZG`]6> `=/cA5N=Z@k6k!Z&>%23$/C0?%)31 $11?C7U0Q,1M5*G.%:$!3' "!"*8!/$ &484;$:="&0#D%%R"3 7 !=-7:B!2A*23) 7*+,(>"B!4"$6%)7".;$$65*$-,+ 4K>)f;)r43Z=KO@NU7\L/_*-[,6H-TM"]/,b (U3%-8*#7)/+!2*6'-;>4U@#EP9S)P#='3921! "*!&" $#)-/E-A92/@< %G &F(-:B'D$$B#19D$-#6,=1E2*<$4E;M"@?@>#"9," 2!Q'"m%"{5g6N@2YO4O@:P=L#@?>@([ 8a!8:8*C#7),A.C/@(FD3UI>KK(7N-I-16&(('.)>#$: ? ;#0$#3H$D%A0"&!7!J+K)93#@,R$6O6%CE,;3@0*.&0-'M71F 34,B;LLSXD0V'(94"D!$P!-j 5|#CiLC(]<>dB,F::"? .>>*&GM6@B)14=9)S/F7 H08>7@5,$=(73E $OI;, 15:(:, 9L*%Z0(L@F^(1N;,J6++&0D4AF?CRC'`84I(58>D22M=)KE0\E*o6Bg&NHF(!W7!)--&0%&<%9K34>B:UKGK; I621%*"*1,-&2#&. + !!& ,%.#*71C(?$8):#.#-'%<%@ 3C ,5'+&(%8"% )B:NCIA L8@N%,Y:$RG"AE36D;G9>54C L:+R5-=@A?FQ?9MM"WL3NU1DI1Q;563*E!2&?%. '2%"1+04)CH6V7b&HX$D6;';!*+ %;!(<(7! ")##+,/82$)8"+7!,+10#34$?B?B727+:!'-5:ODNOKH? /I"M6GK7e&-78;3A98B=:(AB1?@=G>JI1SN1XJ"ZKNK-2;03-E'"59(HD4,A354B9"C91= 1O0X%9h9 6!!"%#%3 ";4*!317 .1*@&1C??'OG%PAK5F&J!,*')6:*9H"GB%R@?1/:G+BB9f;4?554;>"0>6BB1?@;H.CR.QL"eM`UGG@2"9%G&$JE1J^Ao#8m#KL J5.Q;Q>J,23&9:(%""*(*45"..,'!  $$&!5'3%-.1>#I/P"9E"A0I,S1[&3/.(*/87/?/B/4$+."$))*(+' #%/':A9<965.E8(J82U27^50h#2W)+C!"$(.8@6/J@RHCc3?b)@` CU F-S.U/O 1H'02$# %#)(2*5# !1&8++;/>-N-'R(&Y@!d7 aN,$/$;+O''=>:B>S8Ge8Ae-=[7ABFE4$T%V(O$&A"!0#& -*1$?="K8U LL",( )7-,-,/3 2$7:/I"I)=('#C+)^+h)#*%+9-'=0C9,U20J(&]bVO-/. ,7?:AW.]&[-_'"L7:30`"AY?6R<9@6Q>9e:;cBK8B"3D'2#6& D#O "/""."'62+??A?AO18O!.f+e!c*!Z7&D%&'&-,.. ;*K'%`#]+[+Z"*: )9;/(K+]5-Q8C<@@98M!;F>[-2R-1P(N%,1" )(-:$=2:,>Q[)(*1.+,(<4MR$$L3.?N4<4=9)J.M.)I+>"!/ 0F#>;%$F-.G65C5?0/3+.,"#-%&)$/.2:.5 #HH KP$VJ9(3 / 1 <$A/C./B163>M2JQ(AU"-b%&X%*).,!*.1 E!: .T7EB1/;,15.;/.#,#$"1@:B&?'3=)>,D,.+* 7&90-@)(3- 0"=AK1)M,0C(5;/28<2$/!#"")&1*. )4!@IO Xa N 5-+5ED@!D.H0.:C.1N60KJ!?O$)R,&S. "&'$). >%2 "@)4((-%',)*'(&)''>&B&G-0$8 :5@<.%;"%<'8)'#213&.;$"I90N%4HC44;4)=#-7$.#0!$!!  '5FHE IF ?65G$OF"L&M+A?9?,;&%;11=-#H1#C." $!' .3+-+ .!('"7()1%!!- DNW &@-5+9/@0-K$0C#2A,44*@2<0 6$(:16>08>310<3)2'%1*$+0!0.4*$,(!)"-:@ ??*C4*>#I!*P% ^'M+C07-)3!&("1-.;$9 & 11& $+' !4'E"U1H19K;09I%8Q2=)4D*66*,4B#-<0  /)&@/2B-4=+<*33&1, *,'!-)/6*43(%430#, .0.$(0)*';%*?/*!@,J*$W/V0F;6 ($!%9HE3  '!($%0&&,!#  *!2C'J)/H;?D)AS&>B9E99G>"58=,;@!3+ 2&@!(@3;+>,.7+=*=!9%*4#-8$"40 )'6%A! HCA : !')$.4-1J8P(O#DE+E? $'#&"*DKF =+  #)!0)36 70#5+<>!1 B =6I4A46F8KREKQM-;;-&%/ .%" 0G)C ,6$%+"-0 ?;3$2-/4#01A4C5FDI$G?$50.37"G7G%J'K)$R#%E&%6(!., ".'$-#=VH8#"(&+#*##$%,'")3'.;0&5(:K;"'<'D+N/<-6?.JNBHB790.&/!2 '"#/.,6=,!6/1'%24$< /#! !(" =$+-1 -F )S#A%3( $$  "9+(&,0$3D 6!+'5-AL( 7*,:5;;2?8%77+%!'-!C$/;+/ -:+,2+3%(5"&*!#1H%6W&@P"AXEU?O ;E19'2""4"-$/6 6*'4(,6(7)@ERN( 54'49)99/,/1-( %% )1*63&0A80;<(>0?'7*;1+00 .C>%;0&%0,/*#/&+.' 9B)A!#@+5#43:4+?5*5-2(") #1$!A,K5U%9['9`6R*L/:!4",16$1& 2&%/$4);P^ ca&B'&=11;4=+=7B13*1 % &.(-732A6$9:"(2B*@A8>7=?D5H2 .)0!#);&2;#??%:A$>L(KF#2=7;;27$ !&$$ !0!0: *0(>"!BG9%>9)8J&2=&+2(.*+/+)3#%*2&DLN!Z ^&P C=(./7CE:$0:% K#H\ g>*;:C%M?0R2M2E3@/.2))!-%3$,6E;$;J:R :T1H)@I'OF9N+,9 "+!+,0+** 4 <,72 %4#9=4 0A'+P*.K/%@0083680:.4;90B&E"O&ROC 8'&( -'8$&F&PK F!> #*:$J^e?(749$@,$N$I#C(3'-/%(,&1=;=H(CX*Ga&0[,8Q:KNIT?PS'0=)'07-8$!F2549'C<&"39$&7 (5,#>!B !>)710>76;7!<)+@03<%= HHC*;' &-$1"/8+L! YL IC(,*6'.E/&^#j$@,%3-3")9:1& ! $$) <A.A 9P)Ca1Ab/6`<7QNJEXW0[^BL#65>,> ,L,7L3/86$ >I *?")<)'#/#, .)4("83<8#94!-76&%3!.(&-8@#3 /4(6 &< 3 52:*@!IC4'0009)>9&Q2!a33C E2>;+/+ !$ *" /+E- B#S1&R4"X9$`D.dI8PYH2WR+FV3L5E%A(102' 4-%0-.1$)&$ 9-!G1&J0)B3,?-*8*" , +%$)-'40@#H F8*1'))# $ 2"8.9( BEN $I-5#3!''80F+U,-Q5F?>>-;9CI$KKHP$?S32L3C8SC5WC]2IlJp6_%?;,D78 19.G.@,<*;22$F$Y#'1!)+),"*"& 95( %!&- 1+?%A< ?0+# # )" $-$33F,GDC 68'@%5-F7X7b6&Y*L8?*046@FCGAG0K$G/D4$I&?'1 #) 1!22, +/ $6 ;9 ;4"5)+((# + '"3,37E6>,"<17=/A#D4U;d9(k7^&+N,E.2 I7:20=9OA6R)*d 0_'EB(I%;Q@J:?6'3$. 5$<':'0'-=#B$ &.+/7'"(+ & & '..43 /<*8(1 <%@( +,* &1+5'4B7C:<+3:?->:J9-I.&Y2+h62Z41S-)D$-'4.* #&63!':,':78G0E=7ET G48'03 4B+>$@=C,7 3/?-9)'*&(3!3! !!-"BI)6%*$&1%0;3E5 D;82(,38# /(, & +.2"':*>.4++><%=4,I0/W/$V;)U:9Q(=C,60'($,03*7'.+1<+?)$: >"H/:/-:6?(>+A=J!4G0H):''&&/%  2DK*;& * /3.&,?9M5C, 8' '# 7< % $ *,'-#7 75#;21$+F$M+"C0.?)==%DA(;F"2+ %&&+-'-1 2> A6 ;%1+"B2#P-%M>EBL IL2O3@,3.2""$ "5?7 9=5 - !+6)9$=-4#%* (  +"#&'/ 1)'))05"5+2&<6FB9@*$ $  7" 05/!)* ' 1 40.3 +.##:(M0P5,F+@,4*1,$) -&5"@ NM83/#'!)+!"$ "!6 '6!''458%  ' -)#, +&-2*4 (0&9A=++-!))1.*2C *12%7!E)F8"E0>O!C[H=)!- !3 &) -+!  #!))/,4)%73**8!A09)M PK&B!<$,5 ,5 63 @#4 !2$.6!-41#'*).+)+,#: D?# @0E0$B@#&/%(#%% " ,#"&'%,(!;";- ?'?!24 4+ 0)&#&$ $ ")% 47%:07+AK# Q011(!A 15(@/@52!9= D=#<#3/!=)A/.&*(/6.0%0"0%C#A"6%> -3.+ &$! '(*,!9 ; C;A07-!/ ,!.%+#!& %"(!2=/'C%#@+)1D1'?"F*8!!B+:3,.$/+.8 -= '>*J+P>K$74:'6!#5$03+="388,(2?#2;,='127-4($   ##)/!7@>D(H/35)"& - &$'&*($, $ '   $:!5H *T.O#3<282L6#?$A$<78C( >=@ Q1J076=857 C )< +$% #,%796->''C'-E.75:#!-!#+"'30240 31&'+* 03#>4R@^%8M#D;#FL":R?G,D.<915!)%&-#-)4 <@ 9OILE"I >B<!<418'=? J%\'G98FE3<0E 0I 'A$'#$ ! #,#2&',/$,(+B.E*-=%+6'# .+0>?'7; ;*"-A ?".K ?])7^2IW>SW'DW@U"=B)G5<>!.E%76@ >,+6?(E)C/:+3 "2 -+&#&7! : @J=7,B<8B!=B ?+#% +'5 ; 2#+)!2!:!/&(-6 )5 -?3;+8"(+4!2/* %#%1$3F$6V/@H4JS?JX5/64.#&)$. 4-?5>: (88.)*!$'&# $' !9J@' "!! (2%> :?K<%H;)5(!*",!)/4,& 3'8(;;@'9K8KMHHK>@L696<"8KBL >/F7J* H#:-5,H, G$";E@1/<'-2+$'%0%-,:(E* ="9. 13 $1-!!" )(&$(" $"( "".:7 -  * $&!&29G@;$N99N=5C/6* $#+)1#6 6=%8;GF&9@0IA0C?/2A7!4K>F!RH/R@&8/&I+?* 7#5"FE!H>,;>#;7!<5-,&*% $$ %/- . +17'"%$#3",(*8 1 + %#0%)/"-,F;G&?>(L:3I="C=?<:86?!B 75 7'D<'GG0H4?H%%O*:M,W5P.LQ6NL*71?(S&A /!;G?+C:%D;/D<0BD22,$"!( 3"8"",40* .($#16#*"" '-/92'-7+008:3@*L@)P;A8#>8.L9(@ 40>.@: 59K4H4B@#([$\$c4'W$3=/:;*,7+G+K*C!)6>57;1@,'<7$G:%G<H8:90%$# 3!98" "./)%)7<)*40'%%&,&1+>((:-642I6;EE=%K;<4!E1 I>&?"05>:1<B0@/$3*!%E'Z3\8V#4+4.''B&)X!"N(11+8.":5)=C25F.9G,:F5 C2E#?#,'#+!-)$"'#*$%,- 1+ 6* 1*)&&'"*!&-3,(3.,2,'+.*;03<3CB@J98A?':A K!P!6$; 6%+,$,6<=7 :='4%5, I5 =W9J7 3 K9.07'@E%%M33FJ9IR9IY/;=*2>4#L&K%5!2- *,/C,6>5C?.B>@;=533&+#*)(2= .!#, 30 9:06 5@ QHFB=T-A'8 -(A!%2! #"*+00&9";8 6E0>75%#1+,A (52,"+(&,9."/9D>Z;V CT2?PCLKNGNK5L@.41#&%<#8& , . ( "#+!+ ' 3) '<8>?F7K8?I0=%&)+) :-A5,0 ;+D89L'G).@@$2F&1"!A )="8! ",'6:@0FO>XV3L[:]8HWLGWL4Q98FCC7V(%E7!6+C4B#@I"=60LD"[@"O+"9,63",0.2:2-++ )/56 &3.E4DM/T#F'0""'"8'>/)S+7@=E 76 +?)G(/E660A%J. [RR8'$$47;?PI;]PBXY!Or(Hn%?\OPTSGV5&W7%H* /%+0"#,0):&!--* .,) 2# 2 B@38N2U/Q+Q3>/<*! $ K'W(/TDOIB1F3>)06)39@;Y>\8W0MKX!'7&'/)=BIC@IO0[iA[e+To%M[McWP`XDMFNC5U6'V3'P',F%.FAJ#I7I5OA'K0/T)$.2&&2%,%A("9+; (*+-3.5< TZ,=C,Q#)\-O">=6<;,>3/Y<5e1b#E)(2H'JJ+J=6K1#&(%*1"/)4'+) .$*2&2,A%0B*27$' 3-=45A#]cU"D!2;6Q(2X9J"7?"F"C1 4B5l;f12c5U W?r7o6.o?Bq?Gc*WZ&uM/_PBc4+W#J2%:/=O'IE5;?6F.8J;RK8ZPVYI\n5jd?gU5wH(}@$n;-f7!D/)L1E)2(/2'4-5228$=&:,*;65!5.%<*#>*,A1,4%'*"(/ =.<<5K 5X)VZQ26(E'3V#0~6%J2U=D7}@]m4vND_TL`IAK283=/=<)S2+I85H=;;H>%OI2P9KE@`d:Zl6r^5L:y>K|@Dd>)N87A(@5 6/76;)8+/<<3G*!O,(U#7A%'4 ,442+C5 #48,8U3]IEj1SM.hEE;:75N?M(9[xSOi^ZZQHZ`@6@C83)9#V'!R,'I=44B4/\$b&)Y6?>5d_?xE^x:aw:LtDPh@Hh/=w*K.FL+K"UDcAs7CaFK[CIO"FE$E.'S)L5"=)3*2!$(*83D@E"M6 D3 ,'& +ě)JK%GS?X5#%NJVbM.WFGCBY(NA TH#VL.R;E>%RLJ 9$*'-:O&/-3L1.(8??.FGCO7)AA@Y3(P6CJ@N%FAOJUT+9A;17SP60#5('+#58,$219D9FT1:X;&2:*%7#%093!&;(A9&9*7<+!@+=(76*D7?c24b.;O>D;)N9!eP>U9JV3QN'rN-s$1q'W9%4AD4@( >',..(#<2'QF&IL%KTMD8141"2+,,!#.1/ & *)++?0*N&-L'=.#$-7,*DK#B*0/$< *;%?:' H4:9@A'*,0%&"*A*R)T&&N;*.(A C&D &4*9)C,I'6+6( G" B#<&,L0/K2<4D HA%dA)y0.g'N47?5:/!Y9.^./J=<B/(B66."C&.J+>!J )J* :G@/-?)5&*8!9-5$/C;0M=FDE2B$7 (#*6.3:- 62/%,+(' 1* %:RY!Z$H ?--3%5 .*. /"<"%J, L-8>&+5;(=&>02I <=MB#PEGE_Cz+&l4;L,HD%EQ*@N.=D0V>,M650,B,-O"..&#:";$$$3 I&B%>7Q%6I:95&2&! +<+8%/$%4&7 /8-+)0 -;*)&*&%&( )+-(&)BIME%=31'*3-  -1# 82B@'HGC<;C#A<5M4H A D6 R.N<H=_=/h>,OB?K2OT'QN,VN0UO6>T?4?7//K4B!1.-+;#>)!"-(231(!?,2Y(:W922$8+)(+8!E%;(, 0).,+!1() $.-'5($/%33 -5+7-/?+91>8A96?7<+,(1=%9?!>TKL C?9CC;>L0a#9C< L- SFQNE50N1'C31`0Lh&TfWS`D#LS1<5;301(*,8598E1,D*C3 /'$+8 : ? -U-0B(05+4+/%6JH$C!;#''&0" !/#6.3)(.%4)(5-1B#7K4F=MCI O8V%H %'&((050->5BE%N9F. ;6#3%3D.Z4)>7&E.K:?;=0'M.:b*GjL\WOPO J@,/'$/'B*D1?NN8/HA'L?52.+9 8 $A<#&A"'=%#"##5 B* G EA*! # $ *%6!(-('#7&@!2J2Q8DMOOH Z+d "40 .!./#;3-CF*A'B*(4, 3(.!3,+<M4=;>63O+9W.-Y'>]@Q>Z1K &1(I$@P3JU?N0JT.BM8F,1A$)H7"2$"1! %'", +&@(J 5 6"  $$!#%+*""-'> J0T@C SHN3Y$]$:40"+,49 /=/A35 /)$$ !&  06?!G+#R.R (e-$\$g#R#A#&&'2 C>L4DN:P<8Z&=b6N)6J'N!=$:!%#5*+$)*:**?++X2PB ; +#,((# !+#.('F IM *A A5K%Z(f'=2 &0+'.8:I9B)=%=; 60-/"' 2##BX PU^&[d Q'3/>63?15!7D(MI1\>/e%D/R9[.9d:+b+2B&6'8$.4+:1I?Y NSUW-M<7K82<7 ?(#?221??$.E$6)9-B(9+$?A'S$6M*+>(")8 < /%7;:B?1J?9[+.I'5" %-,&,,967/ &3C P M P C/& -9AC,G0O&!D>.,O4+RD(NS47]7)S(2#963*6--)6!C(] .a7U+9M0:7548(6=;-194B;9>+)/ 2)&*:%3>"%10,'<+C<,<2#-#"$/. #/28C>*H39I"=3.$ '#3), .6)2GYWZ=5,#>KK MR!H+% B0(.7+',H30K<2K-,H+.?<1F76*( &#.0$(409$3(#4 3$6,*+#)"# &'%0A(9)C$72"';$H*S+Z0R" P B(27($ !*7 @ 2& '"#""!'%", 0) * %&"#'.<>C !<4'1E-3J8BJ64G.6>6";G;>.,#(#:0B#33)80";!346 -+$7*,5+&4".! "$1(+12(<41>C8O4W7X/W LA/! 1A B:) 353$74%( +5> A%;6 :9#FK/F4@L847E2+HD#;C&*$ +"A0;;4 A*#71<2!6$#8%%4#7!!%'--#''(!1)?+4CBDR:X2U$"K(?0())".DNJ 3"-9)="<'A80##0*&6*:*?/G1(F51Q<9OG8BH+8A=-8 (- #!$/:'>(/:"4,479 5*5(2&&%'(/-2101"1#- 8<6NEML? H2D6&J5<*&., 49 ,)1%B'GE2(#7,3<#3B0)<8$?680 +*)+2-@/C+S/?>+GG?H?9D=-$<'(#"+(#4:/2!"72%;(&/)!)3,-9/2.-!&0(;'2>%2D.?&:3>48<%(>?K>K<>=/!A:+A5#:".'>A GC!12&/9#560!!!# >,?-#,=,,1F09B72:#/!-..;O&R+87(9L7F@)>3-&'/*0,591>34 012+4& 9(1*)(-%## $'?1!N4$G$%M-Y)K(G)>1+!6.18693=4 A/,>..)#4DOX_$;)!2*.#1-4&, ##'7&0&),/782:80A(166./%0+""3&J ;-16%+@*<4#3! (!-!+$ 4A#>$9'1(/4391 5-'&+# %&>+Q-#S"$T)a !Y =7!*0$:%<&K% @0!6*#-(0$'B(O ^ gi D-(.20,?;#G8<'5!$,-"1+4333/3:$<;G3'-5*1 0%!20&($3/!" & + ''6<A&ED#'<',=07.,5*/%*'  %8"O"%Va_L E>( <CAK ;$.$') ;!%G)S c pA)$.).25;/G?MA5?4: 1%#%,2-5/2(-;9<&7F .E0D":1!*5""$('+)$6>=A G!H.87'B2/6/40,+$/&-!'*#!3CT\PM#> =$3DD C >7),-):( 7HYh2+/"=.)E35D/B"(F!B0 ) #$$4-(:;"BH FB$<'% 5!E!ZW.*08,F&E'= @)2 +!, $-%8/>?O:T"4\!.[/=UJ@GHK=S;+90#(!'($123>! 4-3&-66''64('5#+6+,1-%/$ 2$.( 4)8';"!1(&/ 19:$9'40/11.4)<$FLEC @)$)4%$D-N*\*0+(5$?3DGC1& #% * 9.7%.="6K-\&3a0"_H/[\>KeG0`C>9%,10*?/C'68=4";-A #1 (5'*'#4#(/)/6,6+:,,/1'5!;0#"( 19.,) / .72?*9:-C" ED A 1 +#)80<B68>& 5: /@ !@ 7("&&+18:<:2H)$S*`5bT.c_;U`ACbC/W>?4*38@*.L6L$=65(H =.67+7!:$/( -<GD = =@(62+' % %"!2%"60;+ T7]MZS.V\4K[37W8,I;-D7C.9Y1T4R#6A5=7<3&$59$5%7.$ /#09(*A01+(:+%1$) * '  )#2A E?8$0%()$  $2'E"B!G%L"D !1)*3%. D4L/#P'0X*:%: 66%!89;F<Q8*Z5.['+N)@'976K@JHBJ"@Q!0J(J'3D7262X+'`"a$0F38.;@5:342B+)B.@%!&+*5%&3"(!" -$'"! ).4 ;':= !1!-$ #' &!#5,<14)8$+,+6 80L;T=&_?.^5,Q++J$)B$/;2=-5=4B--: A,?27E(HC+U&'\4YG;:/?+8D"BD3%26*3$0!15#-+.0* 4* '$(*!=.$ ) !%/( 348>3:'4(3!*"!'. -"/+=4)2'51&6>F7R6-P5&YD*`;8U2-P)0=%4-/,$ +$45#417!4;0A;&>3*R#O(I6/766%DD)=785..,@%:)0 ),)"0&" 5,86*"+)  !"'+96E> CB 84 +,0 )# &!'64 0! 1.+!!1.%:=E6%M9%T:UC0M/;R18R,4=+9-# &/ 11-)!6')8,B P%L+=1 <4$1: !C%B4EO3>L32# 83$8=),E,G6 E9%H)GXOQ@T+2D*(8 %&*+"/""0'53/)$4H"67&-2&;$%E,J/%A)AM*E[;P.=0-($#% (6% B% E F07#-+ ..(##,"-*'47'$313 $/( '$& #9-8+'#&#"1(:%/'$#"2(**1$5#2 !<$F)L!([%J#4-2%CH+8 ,H /M1E-0!)(&*$$$# 6 ?CD5! ;5?8)7,3"(+-+(*!5(!. =#2) !) (,2240.))* %+#&"+,%71*%=D;R\ ^ Q!N6 /7"73, 3#(<--22,"2 :<5$(+25%,&( !(8B:#7/?8A%)""" ( #! * !&"(#1'944 !2 (1 .(/'7-+*!!&*"*"(% &- ".8B%=(MXZ&K#7*( ..7&1(?"D" :DJ'?$1,$23&$1(,"0&0&0%;'3#&;<-4+"   ! )0 5 69 )?./1)-2+*" 52 %("' $& $1*(9,"43#.?(E% 14-( ' "$$8A=!D/X1R6B#7-15$01#3&5 =:+-'0''-0$02 ,&.(  $!*+ 48?"=,7-9+(.)1'3#-+.&+ -,$ ,!@%(V.-V+20-5#820'@27+$ $ * "(;*'9%?/N6b :^AD&;:;"<7J.GG H>" G+D*.$,('6 ;>6!($(! $$$$.**6 ;;&< (=%D 4? 6,+08/.(1$8 >1"= 7*2!) 6 ,P&4\+8L*<6 =6&>7@10/!/0!'5";+E">'(1,>#/F57:8);1+A)H!@#M$A R,T, =15(?.-- $K LE:( $!"& '$%4#@-C;+>/").!7'*B()80'(C2%G.=AD) "(/6?1-#-C=T!X/N3 D+$1305!## &"8'4.:)@&B*H/ H/G)> =5 /8"5 C?4 '*2.,*B#K%O):'!#1)+43.=%I/)?%"F3F(;. '3%-6(+$-,8 6D?E"JGKKKB!D/8,7/?'M;K> Z:k'X1C*4(;*=)9$ $""%-%>&G# K'F7'8=) /9( / )#),*+. .22%-B)OL!>'*& ")-.#3" ?3A?DB9#,'%&!7)'0 30?)HB !49<":D)D;L9;3*3:D @?%I3[;X4U- b[(@Q K C@3(*-9;7,;'=>93 -:;'%)'  ,'34"6&1$08#8!(5 &FG <("+%1 (* 1 70?6?H=#P="9.1$&6B&<-9FA#6*'C.5/$F1I"1"B"(G!:H"MA&Z0/X)QXPOS Z J@-6@1D.L'G04.&-36-$'"&+' ) !'17="$2/'-/1%.'$4F ? 6'#&&$%,!1?3F'=F+A@ D=!A326'/;)?"$5' %+C%/*&-4*J!N (T"<(4,4:'=/+6 @>*$$)1,62),:=6>3AB'DQ967:1#1%%(-33G#3/38 "1/ 3M3<0)+ F ?!H+,:-;*2964NB>ZIHNVFGZF:\60;%&B"E>.*(%6$I*%?>/.?(B)4,#6"$2)!)/* #+# &- (1 4 ((!))%68<LO NONT1D1- #5"+0-,514!/%/6#23!->'5:9>*5C;3(+7/-!(6?8 10"01/,D26Y3?b/=W4=TQQGWPNU@BI*3D(H E7# $&*%,603@?36M6!D6!B-6&$7)0-#' 67&#- )  -##(%8"IAHLQA\=H=70"!$!$2&2$'6(&",'5,@$.D;/JM>4495$E:<(@(,D(31,10-BKBP]9[e+Fg1J[3Q\GPVMDN@AIC56PB84'0#*6+/80B2,L@(MG+E4!8'0)-%,1.(-/ )!"&$" !+9 ?'C=HCO2S=BK,#< +3"4* $,2-*3./)7,-)05#.?/$58+*D%I$c"1M#87 M.>*'"8A/T[D_c5`b!ZnNo5JgEGTR>]9>PN<@P, G"=? ";*<25"?;Q:*Q=-@1!1$' '.',1 30" !$7#J)I#O 1R1H5HH-+P)G%;4)<%% 2"4&5=3I33576'%&142G2(T8`.d9)]2+Z(KM F%1 3A*DFY3Ne7N`.TxUg2CXTI\TAPK?ESGBQB2XBQ7%L#.;$<:E<9>B<&G1 %-', ,(#1#&>5>.2$ #":%D!TL%P&P-C ;9%X(#`!+G#F>*/**.(6 0G-L">HH6>349$C17C5SJZP%aE)a<.S;8]%8WC-;?.A@)C?8V5?h+O_VWKfS[bGeOGcGC[Q:jM;]=/H5)E(:8<-,,'!*$(("),!2&00$7/D&5<(3 ! *(& $61>&K!XQ%Z%N67R6)Z'-E/?A!%22*=*]!.Q1DHBDOC H:'nT>aIYQ(]CbUEgJDLA >"05=N?H\;P@3G88J;EJ?HbO^f_`Nw\UsMIjHBeE3`B-d=+G6=9 6'=+1 (%%(+:(#-3+17-42*:#/6!4-40&6%( 8.6B0I'Z YY,Q:@ J7'Q,,H:B8 '+!/9 &^ Z2,Q76T2lE(uLC~WU7Uo4bZPXQ^O:[X3VK+@6!H-<.EE:OE<=;6,8<(DO2Ea>OlWYT]_IzHEs@>3@WAR>JC"B=_*.5%;@TH=Jz=ZrzXRw[E{\9eA6K-6A*&%G2&A7$C6346*J,C>,FLQJOnKWt=Ts8Uu@P ?IAB"D?*22B 4U'9i/9kA(iF-Z6%Q/1O3=DE: T)/JS(L*!?DI<C@$E8/M)2c")k,5:,FAI@NHq:`C.<0+M$A18?1*2;?2?e:Ov/Qr5hb2mU;cY<@Y.EM&<37 .-'< 9Z QNN<K#?'1"$,19C@K@G!EF+4 S IZVZ/KbM/[N'N<%\:&V65K+G? M0-H&G$=!(8#306=/!%."1FD[")m(9J4I#rh/]>9A(11@.Uo%`TQ@F!B :(*  ?2TPGP"bP0lU@bO)U?1HJ5180--,5);7,#<( N B -'!#6"8"G"\6T8O@*C)J 6NAI;ALF*TNaGhb.i^?kOMX?Q1V?I##-,;/ 6*+A*4U23Z6 `L ca%^l5Ur;9.@u#F| Ve[e-iU`5&M!%G-J2;%#'7(3I),T44c@8uOB]J3*4}K8$C:2M Z1UC13.C.F=,<@.!PGGY5V47SCKL'?'*/' ,$-*3 $F->#2?/E8AK)KJ9OI;e) t0J/l\NcSuC<%2E"HC+HP3UO1S?/:+$13,2;!I,4!% (A+F<?D,0=="7<"C*: 5 4/0I/;7$-!+@ *K#G0E)%M.**!+ /9*-."16/B M +S?=,G BQFZ,UU)V1 W5oNQ[KiT;l34*3!#r#Y$L?H3E6 H, =?%;3-NH(SJ*dO$k9I+!>5$/9'AA!G'A#(' $4'2-FD-GK'@Q>E-"042@!CO<#*576$(/+=9 ? 7@,$+:6#O7*P-H\-?Q'F*U1;)B$-P >K LPE0M(=_FP;)SB<<;+44 E V Z (\%-K*-;)0'%'*+(/2 2#&8.@(/.#1!-;18&33>?5"MEMJ cG+k+$p:0U,CVHN0DD1IB&;?4,5H'3J(=G'3C8=&5I"3N".6.O4 ?;+5"$5$,8&/<./#)/#;"8%%H*F/>-914:&>5#7;6F$=P!-=&0"1:HNO#/D+34-'.!&' -6 >+7C$:> <> 0>%-0(0@/1G(3 //J;&PHRJ]F$n1&Y41lRpTURR"SM+=<82;E+2I".:"81($H-M7.353: 5$ #&-,4E8A,<7 3C D ,=2D;8+<+775=(-7(/E)&P589%-B,$?'%<"=,ABD%B7(C1(6-";#&5)0.&%,&6,4(.A%$E$1D0I0G?LKJ^4f!107)-/8,7B1DD6M9I1?- ($#E'A(? A)N/LB#NEQ<U8-f64p&Jm'FVDF1<)0>'.;*6:49D!=L+DV!0I4%%  +$ +&15K-S1&T#?*580:(!($%%&%!.!2#$@,L0O;GELTFh)j7/ (*0):1=<D3&F.98"%!''3."?<4H8M2!Z4.c:$^,)`*V 0O17'('58E I9%T1?Y*?Y$*OA!03## $4*-45+7+T% F#77,3""" &'#"("3#L(P4AJD[/]#h&9*/"%",.41&+<-35&>2( , +(,- A>"I#Z $b,W" c[L5,#/(!'4B=R ^H`?,e$!m0^"F.*"14"',2#&8!=0/">'*K 0N!D$H6*'# & 0)#>>!J2?!;6"P)!V,_(6!+3"$'(*3:*.:-78(*9.4 5*4!($3,*-/'= >VN^V T ZN)>;2=6<*;D KM!eJa5b0&fZK(-%$-$&,+$#09&.$4#'B 'GPC50**$%%+#$044$0<H*E$4)3Q(:[,7+(&))5'+#/%(1&2)+@,D)A,K(+R?.'15@>$;2<2/;2M:W9 W3[WS'Q%66-N:8/&K<RB&SJ"[GW+X ]#J#8$" #,+0!9:"2"41#=,CA G>!-!'!1%9!&*!(&- 2%'=D;&# ,<#1M-&"&"!&+& 422/.8$1C3@0E)*R4,P5;#"QKA(>$<0B GW O`MUM=%F1!D !E%?%/7-62633"U$)W;k<[0?$1"8';,2+;*2$7,O(`U P;%%(!'"3!"2&+&,(-340826&%&!%,%+%60<1 499)G<&F@"JM:=T5+^0A!"W%JM$ <%=*S 8cDk"C\'6F+9D<=C+!N/?69F785=-);A;K2)<$+K#:ZIJH' (<=!A$"N$G$8;01J2/Y;/RO7BVC3P5:'@$-A->-;/3>!/= #5+9"F3C>OH!?K'B:8;6))5(& ("  )))$+-&:+77)> 5%'!%.(! )8!GQG +D)3%+3'F$S ]S[#L+-9%*E!$?.,)+. 0 !( 9 6 85 )4- ,)3.$4<29()6 :(<<9'@9AD-EK*LM+>I+;<5846-%"" " .%.30=* >1- %+!64+&   #"4&@G'>';33&;#83F9N5N'LN G 4!& !!. 6 (( -#  '! % !($"&''.+-. %9>0=@=67@5I>JJCBO89F2:3%@=876 ,( #!(103.A-E<? 7%,1*4#+7*$6#$1"-"# #-!(28$D#*J>D@DQ= Z6Y(R>-% *<<, %     +6,-4+)2 5C#/9%1B25E2MU0A'>742%/.(/"314. 2)!!!  &". ? J 2UARHM V=[:"Y2IB18 ( ( !! 6 DC 4#!")>A)?,<7/+,=$G1&?3.A'&MD7T58R<7L<;?<1%@3#5)%*%(!/+0;."B+(9..!/,.%)()+ %, "%&7# **("" /$@!N2Z=S IJO;PE'J2@%&?778#: 5&3%8 6 /!& + (%'.04<(J1*J?3>1%91 !.")65"B1#<;-H?ABE!B=&;*7:*G+%GL C# -/&+!()) - )2$;-86%G*;F<8A9#*)"!*''%.!;,?< 32*&804C6.>294#.$17-%-$&;5".0(,6,29.70/-#318-2.'/,. ,8&0&;+/%5- 6,,- -,#! #6.L-@'DL !G<<)!?.M4U/Q-NB?;#9/653G*8Q#*M'\2"4.&663*B4F3<( 4% #63!.$8"+@',9 :/,:>B#/A*5 &7&3%"*)&$+,+#)759;##;0*<339.+$'!" "!.( > EN J E?" 71IV_S*E575#/*5$*K,MVQ0"/,314>-E>G:8: ,A:1/%)#&6!,,$C?I/3H'4K1E9*"( +$ #' !73# $,-955/!A4(=CBA8,0.)A(BE C G E<'%.4FP$)1->,E+GJE /<-2'/*%-4)&- ,E.1P-.\1*\0-W@'QG8FG',@"(+$"#<'=9-:#*$3,%#$ 7+!2)'1(-1#7 %1%1'% *0/,$$9:89!A,#0&(3)+D I?J =8#)&+ 6'K,'##51;)> FD $< &5".!)204/.%9++J/,Z+`2_:,XQ1XZ;F[+#C'%7$24%0+();3 ?2C('%2- *"!/$%!/"7,/ /%*$#$&11,'%'*!)&!(,/$38,.6,B&F @4 41*!%+./C75#01 &8>@: 1 $$$",*</>2<:7I1"Z.]=&ZQ,[Y5Nh63V)<35+723726 3%4< 8;1&$1**+ /"4-+.((/&3$()() $"(.*0 #& +)(:",A&)A"1*7%2'#)&!'' *!29=";( 0,'1* +)'%!(&8 )I .X-O:@I0K. Q@&LV(HZ'6X'%J,,193$&@.D0F52/A<184*/9(;:$-% (++*"2""$ $ ##,2.$+ 4$ (-,?$DD2 7,&#!$%..$+#/*+":*?&C+56) - )6/"=)'C&B+>&J -S 0?B#E1@G:I9S,(H'-F&25%A!!\*Q"'@A.)G//-&37-&D;!F:<472, 3$ '+0*%#).&(+.($'-=2JH B4$/' . 50&#4$.#&*2)7)6!4#,2!)//>9(E1,E#)I#+A&;'57-C"=/8;5=0H$'A9<=.L'[1Q1%931!@(;4 .7/&:BDEE/ .&* ,3( !%,0-$" '6 @(=#8&6 1% #% %"+(")-,3/0*&##'#306 <6GA*K4-O*,F&+=!"54+'0'3 31#.> &A2<89 I1Q0`?KM%2>,%A(D:3* @"D&=$&#,(. )& '! 5$,$-$' 7!.!$$"!(&3*4/ +3+0#,!$'' $")!*#$ )/ 1(($ "%+/6 <.B3M<'I=*J12H,8J(+@0!(#.( 7234.28+<0B*P2$W3 CC G4 I15& 2=3++)  "))(&.+)-)& #$ /$?6 <:3:,*%*,(!"!,/. 1!/)& $83?@5R4'X?.T:0R30N5@N*3@+: -( &+.1 *+5#8,F/`5%R0&<9%7E$*B#G@7DI8G;5( .00+* , ( &% 0&*(+%.;, " ''8=6C/<*-)",/-'"#0 9$: = .$#'3 , =%O2%Q7%]2'L/3O04R3*F3$C/! !!&2DRV?)QM1@J/6@-*E& <( <5K?@A5++, (%(.$-/&&. ) '"2-/)1"$!&$$4(8(& "/!24 '/)) *4 > 74'!0%A6L5I. D4"E6/E9)G; AB%   >M'K*$>@2AE3@J*?K)'J- <& E#;MAJ8B)(&!##.+)*&3+ ,+&&!6 #>)= )& #)"$*!& *1 8$21)!&:= 7!  $'):<24+ 54 9<"89-? ,>!+! &#'"5#81;.+3/1:D5=9))BA @%B++F"2T 58#'##$# +9CNC/!0*%)/0")# !!# * '$2/## / /"!#')(+'3 1+$#'"$.)3.- !# %*0! #-748+F*=*)C$C-=+5CB8)>2>)7(%*6%0 ., #/"@ <"H8.$9-5,"0. #" % '' -, #  ##$%" 15$ 5)6&603&+0(% +%4#) %*$?A N!N!J&A1943 $0 &<3'/%(('3 ; %?"='-%(!.+("!'8<<$2%$2/4$ 2)%!$ #,  !$+. $0 .7 2'9*5&#10*'0&( +, 70 %0A P#R"J) E'*14. (% ( .-7& 9"?&K#PJ$";)#7$3+2&:,(%,1+'55 /+#!"   /*  +/ #4&410 4(0"3%"5,!22-44&!=& !  %(+33:20DF$ K*C57:&'#2/$) &$9'D&/D%-U)g /Z3'AF*5K%79@7&(0/***'/+( )%%&/ % (% , 23=#:&@-B35$3'):#((1*72101.(7-**$$  ! !* '(A(%G1(J7:=;J54@%4!%( ( 6 411$+@1P%f*h',#7$L%N$!PM JD$ 9461:///*-*2 ;!=#-#1$!(%$$ +-1%&8/1/'22 8#1(54;(763<-AC'1145)34"'+'/%4%/ $"&1&)5'*DD6=7E 0D">A(*D!9 ')8-F,N)E0>!=&& & * '5O Y "W&J%M @*@3?382+**#') 6 :#@1&$)&()-7&-9(0D-H06-.$$,,1)251<3EC.S;.?)-?+6) '>9 +$#%3) !$,!28C/:'(*$;1+;-+D&E)!C!)?#7 +)@(TFCC!k@6`%E:2B,$)%86E)4"<7<3?'L S#D+0, - #"$0&$&3(5.+9C @7<.KU<2 +"*#=*5.4#904@)6E(F20!" &55+&>*"E 34"%/(;,B& U";:6.C&8E$T;(nB&bRZ7b(Z&P hZB/*5A8Z^U2::) <@>5&2. ! $$8A*@*:/="+C#110 &ID:4 !- %2 &8 )<82@"?*C6: 99*+*"1#6/)9) 55**8&)(%$4#>!+C M(6I-K7/b3:qD].VY" a"oq#J':2@F,X"^ [ 'A<+>7*5))#*&+ $ $0:>-F(.363>56.",'5"E= 4- ,'*1- ./ :$>$F3E0A$,</-3(' 1/"(#,##2! - ,'' : D&R*'N&9F2R63b+'V%WXa2X2W0A6!E9A:6J2SBE 7578+%,#:%3"50.%) *1#9!N,'G4,/B+B1 ?(3%7%F@ :-)!' $('5>H-H9N8F 65:-&9.#9$3##!''#)()2," #(&B4T.Z%D0?D9V=R%MJ+ W: E3"L<$A=%>5!=8A7C053'> @60 0$& 1+1$3&<4F1,D7*0D( @1 A! <9)A > 7,(!"'35#E('B/-G+-:2-3#@$EA"0(! 9/NE#=<*4'00;()7#E 8 !,$98N-M2H8*A8(E2/@53AB4DF/ML"CIB4 / *%4!/: "<9+* ,)''2* ?)/<*0>'*42$@>3&* 4$8 .6)$"' !3"$?83 E:?E 9D65 /0'=1?+>*2'27 <)E7'G8,C+*<*/:(+8'4%)51=:$4M)7U<:QC5OG1ER1MGD[0J[,HL')#$&"$8 L(H.)=3!.;!-%#%#+&22",/)$.4. 1 / + '# 4/ +"(27AD IGEL :> 2"&+&--.4!4*-7)8!B 3+:.,K'?GB<>9(68627A$)@+HM!$TG)):*%1&2*,2+"!% $$( ! (" /' !$!*2!7<:HN>OAK/8&(  "(/ &-,'33;$70 4";4&;1=60)@!52 16J>4?AQ+3Y&$Z S!-HD?Eb8Un6Im.MX+CQ3JXFZLIQG68,K3VH3 ' 3064)28@ )C-)<=--/)##$ -'$$'$!*)"   .B#<"Q5ICNAS&=05%311(!6 ! (6///;* F# ),$*&>2+;@8"G%G!S8;J9B8Y _ )R)4@J1UdoF9_NADLGCLIEOI'O?#R0L'@/4(9!)=8B,0)+5" "1/&4.!16 .$-D)T1S*G3F.H :< H+W-<.#3  /%1# :* 6(-1+4<697(G98^>C J;I0!D)<.#)% 631C(91F8-hD=T>VI)ZL@fW^[NXe;I{&HMU9,V5J:F8K9S:AW45d93n@O]FHvUW\qCKk@GjT(85&$*#,8>/ D>#?>*5K./L-D1C/N6@>!;.,*B)J'Y.a3 X*h13k3I\SO\4$^#]R R I0@CI?G7:D"\;+@K8Oz,VfQRQNBQ#Rj?+N *4+*-:3069@7,:.2124'P59_YBbr/ej,Qb/Kd*Io(7^-'C?;'?.&@8)E,D2E1F:B9!91=(H"!W-"^>]LZ3/m57o6Bf&TXa:'a!RR H LH3S/M5?"'K"],}213B=FalP`1:OO;:t(EFA5@-9*'1'"#3%N%'#"/4->?N8MLR4G\EBJ16;!&1".).,<;3>R3509,+ 1'&<'(P-AN)N;%G0P-d iT :-5G=)EY;-_<eObX1j`Xi]]>P^#)H D*&13"*!/2!%+&8!09/B1(:DES'Ff#j! e%;bGGaBne;rUJmABs'4Z.%S' O%G&M4(7)5(8F=MBTOT)[T2T9.=D<.,?,K,4Y8.3,'( ( +0" B# R*7R6V80X="P4\ WA'.7' C0P=#2K3R=LL0UX>F]I!NI*6)"&%25(C'N"#MJC'H"AMYE>R%JW2`B)fDHe\fBF>GC@-Bx,h4)j.i3\BU2C9&2?-,L;1>>&a<)\>+U4NM#A=1SJ$(Y('9%$$2/#L4L=1K:DF5T9(N*I ;!<! 16A*!(-64D%/F( U.N7&*)0%9.17,3>#,B"L$/Q%C?0H.CWPH$U3%L1-TI9ZGRXPl:I&B06"r&]-h7 XL?IEG:?,C1(O10`5*a-M*=)I4HA(P_%G%C 0/,B70F4C>.HAKE3I1;=!:(3& 4 9! ,4:)'"44 B> $&4<%1<*J2>V6@^-V"M(T@D6M::OGBN*F6-<5DT;\E5i7C|#=.-7v/*Y> C1"@.B5 4. 2@%*S-O!%Y/X'^"D5L/;.:G)=5(;-*>1@K'W0Ak;R^%Eb"-n1l=p2%_2%86+=4.1,"&%8"B+U]YZ/MC 8I),Y7%\B"YHMDCB7>(DHR %W&=O)AA0?-51&. "!) :9(4.:0=/+.",%(+*4 5%((,&7H1OW0LS-rC5v/#n(.h=aB\$NM-O=.:6503D92C @A 39 :;'F5?N0;<3CB9FJ'@X4YA95E#%S%PC!;2A(5B2E;*E$%!- *2D*&F40D3!<=F7=,))$%0:+' 124/B7TMUYVSb=b8%q35m)HgPQL9!H80=,0*0'#;,";#8(D?5ME2CE 19"F)6+# 1!4&0 6 < NT,6W;=W6R8+@5*74/:2#H'< .8"L$U&T$)E,F;CN<W<]&/ .$ +5'C'-K$2G6%9<AD: )1-7"-,, 03 5#K5 TG YPdIeC&bD*jM;i">U8D(<"3< %2.#:,!8$C$5Q/C[30[&4E23/(!!#(-.,?U*Y2M 1D=@B=8B-=)+2 0.;'*J 5G2LHMM@W6f(^9*& = +B&4765?-=83=& #',4). /$ ;!K7&X>b9c@_8 _9%b&/Y/L!?5#4"0&.,B) S 'a)4g5*i/)N6%)2%*#($/-A29+1E$K- <-B%>#A":3! ))63?*JDBH:T,]2!W'+."5+25$998;&@7-* '/ 9!2 %-5BI&I$P#^#$\"'W&\#J#?,<4570*9--Q7&[4!e8(g/%h@U:-7'0"7%74 2244 7, 6 A#<Q% I)2# =9')) " " %#").%;:6#=+"M."U/+,!!"0/%##'00%50",1"&' 3#-81 +* 3'7&9: G/ B YXWS#O/P.?;9'2G0'P<8T?+S4'h@*i+)h@Q9 23'$83:3 *>81G,J.K1F#I$G'*E#9K)178,-QH0VW:MJASD1Y83a-.X=(.F(5(!HUQH"K#? .? BJBK3=3-8'B)@1(?)$6**=@D:;H@SJIaF=Q28W.>\*FN!=;-*)14C5=34&-$FMe^.P@5A$8$.31 !& ") 0$))(( #!&/ 2'(12":7D:% G7>(%+0D'@"*4)&37$G[*U9;G/>,;!7-0+. . /EN)I#1!& & .=C=##00, A/"M2.BD6BH;?"'A#B)EE)9"E I N!TO@ "8',@86E,E@7N7#= 4'7)7@+2H+4L$0Y>1SQ';D:+*4!1,/,.7+/$616 'B&C*;:%A8D.;/1 +!73+!G ]> 6&-(&! =DTKM#2*!-D)F/-A?87E9405+.(!2%+( C#> H ?:8 75'K3-X5@R3;7 2' ;03%#B$1TBc#8c1:hE(R4194'1#1#".&& 7'E/ 42&3") **&7#65,09+ .' $" #( #"2";%: =24 7)/"471H*WYX B/)(. )"/'3%4$$*"7+8 +'2+0( 9,F&,?' / 4<<9 95,A.0O,F^*9c7.m0)O@:;*8&$-(#'0'@*/.2!5%'"1#$2-"4%4& ('#+%!++0- 7$)2239-;*AF;(S57GF/M@/W8)T1>H+E(?#1/4/0,'($0,$--7!C'8 8,-&* 1)6!$1"053!&08!)6"= A"O=`>UEKQFT8 J$?1 $&*%   "% )' !"$"& "4 9 A+@9<#>9CA3DP'IF0N:>A<<-"H%$A+<'41-$2-7(F0F* H&B 0!-( +.! 1'.'35 .&&',($,@O/^JoHcNLZQ&[FT+ E)4)"0 +,2 "&'2&+' /.09.%74$.+%,'5 ? B-(5%9>'6H9EL8DQ75+&#.125 -%## !""5#F"R+]C%'$(% '5- 1(>#G;4N((>01;$%5+!/3&)9,/D/(==.M66V79F5*<+?3 1:/4/4)2#41*,*$%?(M F#5&"!,!0("/3 52),$*/ 9-!*)#>)'M,X2Z ;PCTDQE;(G?3C:<;7B. E S.&."".,6(B/H<6@?<(A?)1'!$/$(,!4!%0(#/3'A99K<2H66?*)9/36!//$<1#E)*7'/.'+%-3(.6(18&1$2,+3$29 #2/" ''"8C"< ,#5(5%/F:LHK GIMQFRC=)F==AFG<!8.C(@ 9'#(  "5:E =H D%80!?#V'Z0S>GGBL!9A.4.N31U'&R'R.,,%5/:/9A561+, .<':03)6#;"1*.A8E3:L41T1'C$9 & ('" %*/ % +. $+- 5@$>!:$;&=. (%# $ 6?GG C?)7- 'B!RWN) F9@;8,!.(. !CPU 1 -2*:3'E3)K#C%?;#7%**3%)3'#)%".)8(-AC'JA'H+C(5:*28* )!/7-   1/<#A%A!#9*B#% '" $3=; =!9+&5%=)CJGH%F+2%-&$/= !+*=+H,KHIJ'=.9*)",:.,)!+" =*.M<UAY?U1#O4A>'9 * %?=+3&$($(! 6.3B&9'*#&(&& ! '&.8&9!(-,6-; 0A>><;$.&+0'#.8#%8&E$KK BA !E !7"7 +(+//,0010$C5Q<TAV;(T5,WV-EJ"%> +!),% "<$8*:("8/.#$,) (&"+$$(###""$!%&$-')&")$/,6,.1)"4:!20-& )(0'%"%#- )0 #: @?22$0()"$ (,$7/8"29C9 S0N0%K3&IJ)EZ&!C"'?-851$95""<#=0;#957/2;3>!K.?A-H*8 (-0 "F'M(!H&1>-:);U'+,&11'-$%(%","4$,3$*2+3), *2 <&9!+: 07,+,3*5+8A1D2H3#F<*2A(Q$ LD2321K(=P!YT?. ')1/. ,* )  ++58"."("6$8#5-*'-'+! &#4 .$/%>',&" %/, ;/(51/40)C!*B06'- 4#3/!1,433!211@.A+P;.LL2-3')  0 5,8-4&"3-2&$;##A#T2#NB)AP*AW-S1<*8D9N0G+="2">I>8=8$)).!-,05&6 0## & ) +(5).(0& )% $+(#, *(. -!$%+-..4*"K62R5)D1*@+,:-2>!26,,,*3 04&16$$'1 3@=J2.B529;2=R0$W-;/+A@2G1@07 ?B F;7 < $;%-04)&2,!#7 39 ,'*&&'&1#)%"1"23 - !&&'1-4& 9.(!#! +!9(J5 L4%M-'E3(A2&J*7<+,4- '# ! (='E&.OG@LPB=M<-@*B(=)'<B3?04%4&9%54&7 ?=6%#-) -&)$&70*0"-! % !$(++'!6 5 ; .)!$1+ 7!94%! (9-C1C6%H2@793@1 8=$9?" !  5<%'F>5=W>AY76W4,Q*$D#:"9,? .8%%//5'-(63" 1'1.*10&/6$@)2  &(#" &$,") 3 <=3 "((.41 $".+41@78416:21"1%/!"&) 3#3*- '*+--+  " !!!%.-"%0&-&)'*'0/"'$ % %#!)/$ (6$/:2/E 2=:=!-<"#: 56 &9-'%,((5 98% %3>$@"$L9%&$$"#, ! # " % +$3$6/7>18$82+)#,/## !#'-,0"3%LF(@5=";:.-/ . 5.*"#' 68AJG9(&)%"#/ 0"?&B) 6#/$$, %!# " !#  # +/6, ;19%65(;&:)!7*%849,%   $#(&052; .6!G C'9)=6%9/;7*, " #--*7<!Q\$Z)B-.3"/$)-0+#+.2!.,((&'  "%'%'  !*./9/753B+:-=-(51!'73>47+- * $'(/5E>1? F"A(#=2++-:( 9/'3 " ## ,/+H*%M&!b&u##d.N>?IA@!G :!-%#%#"&,) "%"%')&#&) (&2 *@)I;D&J7%9-#=6#89(*>),='(=*+)''  (382=9(??*#D1@: >1"+&"(4#,52+37/B$+Vg"- 8I"R R(ZKF# 0)-*+-0- *!"!$.0 0)(+&-!(+-21!(""'$2&</A#6B%9716.;C409;:+D/)A*4%$) %#40//%3<>,06&D@ >E,5)-*'@)F('J5)G"3>,!) !&CV$ \%f)l-N*C 9&?'-&&! !$ $ !),7 .+)3$/-%/#%7#1%$0/*8@!9 ')''+.657)=39?4M9<:1?<'H06! "',"*#%'(?((2%3</E:D>6(%"135H> `D d6 ]%C 4"* &85 R3X5U, N,F!9!@ A#5$ "($$%)-&&,'0(2A/D )B!3/#.A B7 1 &!'"$1"18*(D10;<;=IC-BC0.  *&+*8" 3#.009):*A%< 2711!' 9;AKNEcJ g?Z# K?A 9%&#3-M ?U?N$FG!:1=(9 98'*!  1'8 7,8&<2/I*/O,G9(.B $C4 > "0 %.%0#$8,4B/@:49/>B3<$  ( 7,$59*. >,4*07D 9%6%7?&9 4H1^S2Z[ TCc;^([af(K+1*&J+en$b (F85> < 7!"1+# %    - 6(B/@(<:*@$"Q+D$4&"<8@A+..4'9.7!C0#K1(F&)=7 .)""+%*+!"$'6=5$%56##(#3-N @,64;ZE2bO^9`0a a)u2q-I&=7*N!_"h[ -IC2?$2&4'%.+ '' %9F)I4A(6;5D);J>:8.'#!5> H@-3&+.7;8@0IC@ <&+02)0')'").7*7 40#*(!3-&E'&U ] (>&H16W-*P.)RV&f;`7)S9?8?=;E1N*O/L6>A+7!%),:)"8#861(1/?4)J4'J0'C975I="G@ K-E,0-;9 ?!:#/! 1*? ="D?E#;"2(8!63&( $&"') 6+2- -+=1;(1'!*D%:MU F*,!?&3B:P-S)&[4%DD"KC!R?RB(EB5@.6 7=B7+$) *4)H ><?: +454&?:/D<L:&D@,9J8"G1H+@"<7:"0)#+'# -. 4258">,', /$!*(-%+%#);4"8(J2Y3L4"=%&>8'LP)M?-, 95=:M?(KC.8C,FJ2TD6PP(AW 0J 5A522"' ', 6 8"<SG/ $<)3$/< >9!G4&@7,4=% G"$AB):*,&28#)01. +  !2 -8,5#+')$%!.'('%#+;8(2A!O1T+_/+L)';*C9BEE444!03P&2U1:gG@oF8jHBYMKUA8X(=[!=H17=#7'#+,(1>%J#&O#D#+2*8!1*340'A"#:+/1&8'=>9,0D!&#$ "(D5D7>2>8",  %-'72.-?$(8C- O A I(%V >F?<(T(6T8-Y<8=E*U0+aK@lb?o`'da3eT0Z>0^=?T5@J 17<'#<170)+%3*C/B$18+$%(,&4&# *1/(+.5(5 - "%" * &*#&)%2F;R6H'.%0 *% .7',@*2?B" 5-/ 9'5)6+V=N$3S;.>N #V[/(ZP=dk@et3jk[R#QQ TJ6MO?G66>D*"E* B"% ';0 ::7='36-$4$&''!!   ' '+-(-5''*#$($,&)!1! +*.++ //5-8D3O*=((''*" $"&*%"70!>/0 '%!&9+> B4#=:*?B.3JN):Xba5 TQ*Tf0\r4Um0R\UjPj/CP8B9E= Q;?.<-7452$-1),&/1)*% &! "&&)$&)'$'2%#)'($**.17;1 ?/4/(>2F09@'<1'&&+ = ,*9 5 12E4K6\4E,GO%DC&CHT/g W1!EE*M]0La;Gd6Pm%Vq(Lk>OW8C&6!) %'*,'% 4 3#%)-*&!*(!+*0( 9, @C 5A5A0G3F<9B1@9=;"9,%$ ,8, %) 6)B1E0.K,/T,DW3X_3Ra;i%LJ$SN, K>'>P4FV5K`2Uk2_~,Oo5=VF;AQ8A\D6XM5Z@$R-H%1"&'#&-..;#91# =!@5 7#8)#( '(!$$,(" ".)6 +8#D5S!?Y;ZFL S6 D3K3J> 9-2 .  *&17'PO$KQ%KQ%RGC[4gg=j8\i+ONT:-V&L3+>D>>aCEi6Aj.Gp2";#=# >-97#/! &(1F#Y!7[&B`1MX%KWOB bEe7fTF;' %1" 3.5.&J:@\?Ad(Uj&aVHVIm3}`1paS*V1,K"740HA55P/7b$3a-+_#"L<0QH5\V&`V*N`+9a'>M4A-680 -! 5:$;<1(;:"7H%6H1G%M"F#E.E6#''.$E!K'(Z<5]1:p:Le1Xb eTjGt=i/ WV H <' 3+56G(&[<0fJ2s=_q>Wk]RDH@K&J(m.*S:>?,<%.H!.C$$J'(H <+DE]T'dc`Z"UZ"KSCJ7%!A.!GA:K -R L!KG%F$&; &. <S) [;IJ%d36k:MmCWo.l`nD+i2X) L!ZGI> 9&:BIu7);=d?@UqR';>'=8v9?U CC L,0@#8; 57:1,)0?=gPg^`P"UE#J?>7<-.; +, &2+$:E4=%H7"1J U#K MR(A,(8&<A;. F<TEmI5tQMzPV{9df+s@5r'h[4 < %8$B((+4&RJ#W)&b3>XL84:.{();B}I^iP[BOU/OT!:V=Y3U $6*)2(83 ?A)5Y$CL+ES)2K"4025*/&0.776'91(2/".*7$$?.,5'8,EF&^S+]I&R2O&#[3Y$E%5 0 =J.c8 gN7c]EfUUeXkVJu9{/w-h"G! "!$"07,6#1(-,A,G=!;F.:n47l%Mu>cnHvVfAdx3R[88a6+^/"K/7G")E5NEUNGEHG V9O2N"C'#>B&K8-F:;S9;+7:-*)/'45- C+>a%RaWH[CN9a[P6),/1!/>/S2XI2bZKg`C_]R?S`/X)R/O )(0,$7%*94:4)D2."-"<%G=FN.Q).U#LO>LS0jMVsG`2W4LiC&b4$O-L+"A7!*?5-OV0eTVI'[A%h8[%X)[)!QR5a'#S71`9,91-& ( ((2 *E 9_$IacOjL M< \!Z0(U%:; 36 71$<+HD/RRKUUBC\B6UC"017+)&'#&'.5)=!@9+E<;8:G'/J O%1H5>W31W3DI=kEHe;F8G8J:CD.nW&Y= U1W@X=#A@-9N,5V66O5)f6 k4N'e3$d7LO ;o k$F!-7%%%!30620F2"O3;S$RS _KM4G5C+-<">(97 -.&")0<5/8C6:T2/#*/'F ):(40(.AL,.T?2Q7C@3W6?RA3&>40:D9BMX?Ug2Cs@(;'A75BHi8dF MU#GGBE:A/C(/N')] 'e"U,QQLUBR4h"$z"H'$E5#(=,N91N5B:&N1-S1CS$NQ)F.4/)!6 ;6!4&6 !&/=$E"$[#4 B-)E9A3['HT=N8GR-9>(=:0I::F5RI=b%7x(=?.,.ApCT6'/1"(%&$=#F2&7&1J68L=QG@c-If)"u*g?>>3;,3,+1.)2507=,=L>BX;Y^>oF7u2"v7f@[=U-JL)B?.O)14$>0-1IC,U:#B2&*3!)( 7<F "F!5N31CG1>[74RC+TL/PW PN L?@80@!= A 94-<>2<7351,'**92J<'Q=#IA?E7; 6:1)'7F'H7$AL*FW0R`0bRf9b*+g,5i&@[ QL!U@'F&$8.5!,M6Z1?N5;N6;P83X:U7"e+6b0L-!=5%+12 3 9 :<.C 9A$G74D@DFBP=7KI3CS CG@6?N&3R!(O B<#+=30:-92%4#$ '7">+.X73YB!X@9783(?'3"2% B";$!?<GRPV \XZJ[=-`A%b85SFFC9&:?#8?!N&0C8#=?.=95S20LC,JHR3+S3+N#C#.!%2*#7EHA#'NEFTD%MG.=A65A6;45?091<#=H+.M$$M$M0F=;#E2D.C '!)6"L#,S77U<HI89:* (4 4 +))3 6,6'GFYZ"d[e]aG']B"\I0U/6E.-'+04$A!%>&:@)0L=,M5IJ6JK*FI4=5+F5+I:A>4?8H1=<HF4(B'*A4I?L6F6>,-502 >%G"0C5C=:!55>0?!;#, $$ , E$"H.,D=:;#5)2$! *1#; /03 I!ZD!^AWGc=W>RB.\'7>%74-; <3 F&:/$3E%4K11D0/U*=\3;MC1.0+5)-9$8A#/B&.M-#="9MI-:.:-C(H!H!2 ( "2&?.4/4!J4=5D3#=-*,&% )5=$;6+,3/&0 ' ,3'="6%.8F! R*Q0M*Q+X.%G,D&9#<.A5BC?>%5E%5X.5U27]05dB6NH386&- '4#!F("I0>/3MRM!B2:A"52=.8,(&  #33. -,"0)!:.?1>/!$,*%--,-)"#(!$)* 156 3 $6*#5,C3 9(<JJA!C':%,P+.J=:H$,?08F?.^63d@5[?9VP?II(-71'7#"H-!K.@' A#Q$OL!=/:=3<73;/)2*'-.&   ',6@$!7&))$5.$:('!)9B 86&( .'2---%$))628AG0>)='>.+ 5' - /; 6,= Q+L@%4G:9ECMKEO^B:e=8d=>R:=I=.4*$:7+@, F.9*?H VN+I6CF00H=5,*$0'#8**)!)78'+)5%'#&,*)/8 #JPYW&H*I;*; 9 %8 +%7:(;C?1=F2AE3I[J=XPBIR>DW<L.(9+ 7!3#' "#%4( /!)#)&-$$!0$4$1#$1$$4&$0%:$GOW- H)J D:9 8%4.*62>';/!2"D5LNY5CQKLbJSP;:M?0JE&0< -'*,)@%A!90. /$07&M"I:?R4P7R&4C,11#(! ,(   + 2#-((, $& ! 28/&2#1 1#,4-04/56 ';&??' D&3 89 99A @6 $E$)E*,= 85 >*H/Y)1Y1A\'H].3cC+dFL<3&!"8046 <;/;"9@/C%(8:'4F)6J5O;D$54!/ */ ! !-/!1)0&!*+) "2@ > :4'&$%1*(7(6,4*$#(!%%(0%:8 = ? @ 5 ;-*J-%V2!G(*5H($K.'I+&M"%T +f)!rG$sFl:4L2(F"?$-($8%H%1L-#A?',4*03?/(L).R&2H)=+1&/&& +.) &! ,,'24&61#4'B?#=.C =8ENJ@'/&**-!+ %'&!# "(&$,2 4/*##5.?3> :'*=/G2D6O\+$i."n8r.1_,@>? ;-(42*%<<4G.)C:,1>24,1+>'J% N".=1* %- "= % ++#,)."15%,:' ;'K#M&'T)3T8CE4O- M' ? .&''' " # ","5&3 2<-F KBJ0L.X5T3]6/W-:E(L%&J616B"7H::$<7*+B8$9.43+/1(E""C!*4..063. ,.0(%/ ;22:FU_4h;^>QDI E; D2D<""#&"' -!%+-!3 : F +?BBC-FBOGGG)K?5;-A*#@ ?+10:H+3S'8M!!E+M1D$>*7 4.9"'9243(='D$= *&"%(,'32!@T#d>n$GeQXQRTDK99##1 (8? !$' &:B"7+1# AH#0'!)0&6 7 B'8!6<5F#"5$!9AR*a;i?[Z]YV OF%G0*?/02#:$ ??! .<'A.!>0C(E+ D+)0!$+" #"$#").1,H")?2O'?M):D)/0 /$(+6,.583#EA"9J:422$>$H'> &6!(,)<?;? G$E7&+6 0,$<(,N ,[+X:..&/%7H /LCH @W@aBZ CI)H>9A:G==S2$\)0(.1.*%,'.+43"94"B0=6 D5D2B/), 2+43+*#"( !$(':;,>:"8 =1F@ BD.A)&9,!$2208$>:53*)#(5< F =)1.*&45EANFBR?X'D^!AR3>0B>9U;2b>$n18!'*'"(+.+"#58;#C:6=@."F+ <9+L7M3K#= &(0"&%)$*$  4 <1';396".2#/*'77$=&'/&(-$/#'%!52 #*$1 #67EC/8*'"B,K1N;H>BJ#EW(=H4>5C<0M4%Y4\# 1'")','.0.%  '29)9@&11#:+&:&%*"2(B,4K*1J*(I1#!*!*".:!2%*!#,).9 &9 A8'*%4%!!+'%$+%*!"2<%7(G#G) (3"@H&J,L';7;B54&644)"E'O+0"+16&&6 ; 3. '!!!*)5,3/.($)/#+#06=P>B!K,=+,3 *3*4 7*#!& #"'!$%*"+>G;.7  %$&"   $ +"0(? D- 9> BG$@&?+701'%/"%#1'A %/'?)F C;<:/$-#*)%4-8 .+*+E?KM,M>)Q%%:. 24%!9 ' "02 894"&& &")8= 7 ))$ ! ' 2 '$9# ,&+< D"96#8(#7+!5. &+ /""05 C G@:7 55 7 ' 2555"-/>7!M=)R6"J.&F??G 4! , ;8"&4'4(3,+ #' ,# &' * ! ") ( ( )' &08"2.0%2!#4+6(-87.# &- (<>" 876*!  # +.!-$'80-22?C@D6'I5' /7%$!313!/$<%E I)?"7/1;&:""=9 0-% '!"#! /?!<#4"$*-'+&#&( ("#1 :1 %$/$$  $"$"*,2*1655'?1!=*&:(= A*1#*C8>%=*?0W!W*KD8&S"1NXU-N . ",'3 +6%' &($-"=@7"$ ! !11*#'(%( ,# ). :7+)&*%  "" "!!-'**!!+%)&',042'A130163"*+%@3F9IA:M*F7Z*R&G"D4#^*&\&_YJ6(#4$#8-<19 +. !$*)'3%? / $ (""0(11"1( ',('. <</!3"*"$-) 5* ++(($(/,+ "% $),)$0.+1.,+",0&")/. *I#.>BB+OQ>IT;>T8#Q4#D.B5)Q+'O&-QKCNS L>& ;B+5 5'(,(0 84 ($"(  #0!+ 3"0+)&"&#4 5' #! )& ,#"" ''&&5/5)8% 1!#'.-5/4! -&-! """-651F7(@:6HJADVJ2YBV/I1E;,P+FEPRP T"L< >%F#4>/>#-'%/85*!%%!  (&'++( *( &$" ,+(.,!1!5"& %2#8/9,-)(,)* 3#(3&%"&' $$" )&4,.8G=DF?C@:;K*P&F /:B5:+>' V(N!C@)?@@$A2$3<'"/+.%,7)3!!%#' )" ""#%,'$30 9# 9 ) "' -+- 2!2&#-"4.624./3 062'#*8*+7'#+$5.'&%'01H3B\;=c:=X#AF"I:,:"%14& A+L1D):*-<#:055+4.$:%:;)D7)*-$!#&+!1!=9!# ('$*%")$+ . *##//7)802; 5;5 -) "!$"*-*%:2 ##),3G8?`'9Y;U8D(<8 35 24:,=($? "4-")' &' "1'6%<#?JN<&,.)0&% ""!#$#%)"'5#<: /,1&(','6#6"0 )'"!"!,. &83#.%+"1*'N).YBXEO#6E *?< 6"$5!&-)0"12 44A"C / (8% <=>!K ;!!&$&!%!&&  $%!$%;E@ F :99;,8/&3-!!3( +    )()*07:$A;86! 6!C1IBQ9Q *F%70 )",1/.: 8C S&!N<# $)6: ;"D%66-(!&$ !!#( ! " !%' 7C F M6/$8'D+'@-+0&"$*+%(  -%7."89(DFHF :J$A)?3:8..:/4;;0!A5&+0%+4/ .3# (!4-*-=">DHR?H,B1D#6;*<8F9 4( ) !'*0*!J&"T%Yo$],G67 B$E*E(9''+'#$*( *(%"!!!  ! % &,.-J)J:=&F-(:9#=9!A9"&<'%:%-6"!-$  &2( :;AEN#5M"C 7<,,)238--!2/,&102!34!?-L!,+A)D#_'e)S!F$ ; 1  % # &%0 &",*)2/#*" -!& $ ) &-'G-T:E)C?1==,2B).J2(G9(@$ 2* )-!!@#*<"'G.'B2 >,710,&' 44 2&1E)J+#@*>/  &$3H2 U2i7s8Y0C$ 6/#   /#.)4,00*<'-?)27,-;() * '!(5-G:C'8G09A-+7572 13 $5,J1> L8 T3 T+J*+) 35CF> P>b9d5T0B"2>- . ,-5/95<+7C#8H0B?),1"1/5 /(%2)"70+;808;8;E<4C5+ )+%'."708!>-@5)418#-2 $*G4[;\JE ]8S+@I(;/$/ ;&V3XDSED J0G%97 7*#)" $865(?&466?/BN&AP/PC%/1)<!DG5 1%4%!7%4:4@>84047'+6'!!"' * /,EB963+4"5-*9P,(P&QK59,+6P ^ !S#K&, 0<><%@-+C$6 5$ ',0+.6+)56 0&0$:3:95 497!8=.GO8AV+1Y A*H>C#H8'W1.P6/T0#Y;+IG&>A=@8H6W.Z /L.@51#+5:/(3' ; D= /1*'L;*W6-_:3K;>;DH'HAO?K</(-'?S$QA%. ;->5 ='"56 ,$- #..%+*!,*+": 6)<7:>A/F%N"!J((JL+C]0[J 9$'429D#;E5H8ADIJ#KH%SIDD=; 3B27(1+()+,1=+ C+M R?#9%+?,CC.N?,N?+F=<5L=*L0%Q7K-%A"*/&!9 D#+1) 7&4%/++ #$&##() /!.17@7@(P> S2\)Z"$T+,F?GXP]?I:"*8.+IC6?C,CZ/G_/T`-NQ!NM;G ,3-'!-1+'/&:4.;.J#V%Q!="B E/2C.>C*I5.C5,6:$0E*5K')HE!6#1*+-*"-!    *&&!!',)(( %4(#B)@"H% V6^8 d$lT!G0O@WJ<7)9-'C))RGDlG:lI>hSSiAPi/TZ(MQ 6<./4&#" 3$:(7;6+=-$K/O"8K47*=*@(+;"4<"9**2( 1186"7I0L A&91 3:)&&+#)#/.#+%$! !"&21%9: 2D4) C)I* V'U('F!UV#+c($`2D6!E&K9)^I:sW%u\'y\@gQ@e=C_0=G&+<3?7/(+94?+11*#!60I"8J@;//%1. 2/%/")#*2" 6.69*<, 5%3#%($+$/   "0 +:#2 $)-! ( %4H2J696/?/?&3 9#@(D),V$=^/c-"F<&G-![1)hM5pd*}l#~b"fT3_K)PP,B?28 79?/#82.9$0(14AR;8D3,7G P.$\@iW if*tp4rb*nabc-QW4?G/=$02G15$9-6'14$323)"%#'%  $((*')&%'.# 335&7/)5*5);(2#4( +/'-'.%4-./.2%">E"CB #2&%-,!+;2&$3"?'E$+=(8;YM*L<3=LSb:hI$[t(dc:jb"k(jl.V`1BJ034>0O9 R/O"P60.$1$'&%$ )%+ #$&+, 8'7!&#"4 9%;/%G. F"G#1-!2<5N$9W 3A54<2;,2$,"A EE %.((!/06I<Q7N"7I'HY*bjaX+aP7L*-\("]/_Q,Tc,TW5`d3ss)on*Nk1:B=.:J+)U,$[,Q #E8:('",%-&+("(:)"9')%/9-C75 2!'%6$45$ 2 <"6&:EHT)Jc&?h!DQOAN>C"?9!+1$= H3  !$'?CQGXISN5YGHe,ai0f]CXPBOE7Y&R= I=0?T-2L;,>0$2M,*S66d3c$C0(DA*LAYH[AJN?K 68)29'10+7!+% B!G%E.G*A@>O9P(V#TL B=5 %  3%C&DV7Q`5Mn0Tg-e]'dK^DbGd7c-RB,#*,$*"7<,@E$FK1Pe=Uq;TaQ`4D&ACl$;X@A6>'");-%K%B'%MB-C&D8]YXQ cFU<F7$47(87'/$, '%(31?3H(?(!J9%>S%GX*P*QE$C%D-7 ,%-7!C.1S9E^1K_7Z]6aZ8wS.sD%vEg3 S4FD!!;4 *2289?2R*7b27\>QQdF!IE1NFg0SE/E35P*=D@@G82< /$1!7,'YC"f?(Y<4U7'K-?(6%" ,)%-43 5 24;/C2)AT79^@'W3(P %D 'S/P4@,3+ 7 F/_0*g>AcH[gGhpDsd8J 7 w*e D83!#(/;!BA!L&-X&+MZ3:zCBi#-q0P^TeLkh1_W#FM=;W;>L9CR)-A0$1:6+C><5?>BELFI1*K,?K/E:C4$I3>=:D.)5.)01<.6<5@36='RM0]R,YK"SA#V36]&9P!@*1=A#O8'SWEabVSPeWXwKS;)t+q,X%#-!6A;$,7!7#"9++>6-=C*9d%>U)QUBqV`Rqx9^iCUWN3dL2]?*M3DH'EH7 U6']<(Q9'J7T/"\%0aAW9ALM8,Y2P;T8/2>-1&-'%44 ?*)J"CVR__VSLP;a/[*#M'9,# . 7*D1RL=QXNT^NHRVANc6d%"\"L!/09%?" A+/H8,J05.!:<)7J,0I'=O QL+fDKwK^HkMdzQ5j_!sR*_B K5C=*4&A -.#$ 0!$< :O.;K1:P63P?">.?E*Gb?Sc4Lk#[HR4G$1=.5?.1&,3 )7*(VA9UU6TKCPNE6>:6V&LY&-?!>/D< ;M+AW9D1-&-:1-A#6"B'J+CLBVAG`3Dg/)f2_>e*?^AIN=NKAK-SV\E@R@O;9JN`'Hs8BxQ$yO~P {M5kD@_:.K5&L1"F5!18)A+&L&'C) M$M?T`Ui3Pc>Kf=3TB&J<I5@=!H K&L'0J#=4#526-%0+*&#&(8*$H;*H;!IK&NV(O.LE2V:IB&5@-1@:=A&?V6?_C=cg!_oO%gN@l=4V9,L1%:3-5, -,$6@0>%A"+F,/OF'GT:S[6GW>9VG"R;S;D6 *:8 C!@)36%1'0#"/$ #"+;>!WE1^B!ZF$JJ$HR>H=-@G0 GB;L#Jb+TP,bHnBa00O/2\-5NC8&B+>*F&F<1-R:>R<9WA(UW,nJj:1_:+fA2YA.M+'=01-1(1-(5;!-5 +C2O&@N0:FA0?L/0@63LC#I;"JA!HF"4K%*H=3$0.+" $#-*77D;,[E7cH^;MCBO 0D ,/7" 9 9689?S#KS(UOQLU=#RC#M?/?*;:=)F ?8$<<(1ME&JQ*HQ/E?#&<G#A@!;#<"*I\,X-6#-,,/%''.08%/C%'C#5C;D7*+&"(#"!"-: L#X; U@ S/K#5+-#%' ($$$ !1'C+UGbFaDd?L7C<&B/5/,8"4($))*%565. 9DCY3L\B9F8?D5@C:>57J82HGBUFX8K$@G#PJ71:6.A0U.I"4 & !6,& /!5)0%62!86A%=-!9&"" "+AF,M->%'3+-74/,&5 "DR2E1G-F-@72.' )69&+>/!251H0./S-;i1L]6DI5DOA7@?5-<;:18AP@1k49Y2AG=;FF=9T62;14'-?,H"<4I#QT#N/75$6G67C85K?,=>*3%' "+-!7";)3$**1/3(%#"8<6* %)2%2377 7 9"6 4 40 ""!0**6>>@$3D7<@>\JDLQ?CT<8MA;?GC6B:A6"?:994IL# M3@;7?&9A3.C76N9,Q3";/-&"-  "*1:%4'6!+$#'"8 ><3 +*.. - (/ $6D J PG=A=:1$ 1 A":&C0=:5L[6HaGWYOUNMC>AF>8JA6)<>#(E B"<7!+ %:!&B0$FEHN?R$9T-4F7*K7+M4:0%5$&  $*2 ?(2%%(5+%#171+/)3 (- ):GP'= E%I=" =A; +-::09 #< >A#Qh8H`MN_@NQ8EK>5P73>/,-/AC&=$)>0+38+.?5'HA@P5X6]%7T21I7)H-<&, #  #$++'/%$,/'!+!.!33+!/##.$&,+((3*2)5#-!5-7 ;DK$6#;'*A!97 !40H"'@518F2-?<7J'T4U(8M-/O-'?$= *&&!#%+(%+)-&, &,0 , #"8$9 3+',6" 2%&'$$  !#!!&" )+,5#6*-70D)(J"5=>/D"!A$.K+c/[ ,<5?#-&%*0&+L4P32>?94;;14P& U'(U(&J!:8:= (-,%5$(;%%>(B(B&K/F $?$:'"DKF, '6< 8*!# )0+.+61<'?$!:#0.;/U)N%'Wh#R(T1V22J#E' E3(8=;?3?>P+:U?9F>;8?F3-E/T+ T"K!5C%@->% (,("+.97:2D !L"V4]:a(,SD:*F+I$I/.!9 . )!")'"##$&"$($-8-2<%41;Y<]'L-d/X5$B@09692!A!C5@N7N'8S#BD2=L72=:92040!9#C$E$C#8 1/83B.9,(''-).$693; -L[b%"h'0c%5S:F(>@G5J&< )+0-'$ !&"25'- !+*."- '49"E*B:8D)K/c3S:A<++19$< >@1T+R!9[)'P%L,I5%?,)44, 3: ?3;A1G"JA 5 -3,//1->'K X_'m=jFbDU4.:!()"@'1S&-X7$UI N9!F*-F*2C$,?!0&#$'):) G#KRP= *$+ )$&)!2&E(W^.bBn\iTXDF$E9(;.+"0<## ) -6 A#N!!L''J%TF)7#"(32)00"2**&29(,36=C@A;4B! & &"3A4[-(VHOUO=/AD/>'7<!F 0!"-#;9 > L SWF)$  - ***:'R])\Ao SeMY&DE-I22bAY>K)?4<7(F:*Y/]+.%,($ */#B%F0 P74L1%I8C-7+5#&.&33%).%&#3!!1*06$L9 $, ?.PETHA@.;",0' ($!'"6$03&==%9<=5$ '1!?8$."&%2.<6B3T8[$@X:L0<1B9(S3'd.!l/'))  !%1 >:(?H.@:(A3!D.B+6*">,;'$IC#,- #* ,+4/" /E'C2B447!#7*%4#&# 1 &!.2);!)8/.(=";* "",'1- : >#"-&:-;;7;5E@IBR ;B6=9870J/#Z,)+)& "'5,0<417,=4,E*&?%'*&2(?)%O G '!) !-8 !1<%2-19,6%?*21?#4-20/(#. "*/!$2 !1"-( 5'<+&19 @0;:8G>8 >C5>&366*+E("V#&%7( # ,(%37,026#5@&$2%03#4:37(,I*<#(,#!(*-0 7 ( *!'!*%94.+ ). >;; . #('"'&" ##$-' 4)9-'66 5'6*864-*1 )6&4//.7"&A#)5++;6. !-&=/ 71*%#62&A78A+86 71/(,:#!< $< 7 ()"1/ #+ ")""!*)6 6 * !#-"! "' (! $#$. 7!4!0 2*925/)*)$,$,'$/ #&27 8 2 3, (#'3%/)2"3."<2'M"/H)*@@ 3?!'".+)' = $J!B2 %!%.%*' (0+  )*#'& !!(.'**'%#,.+**5.4,&# %74 4# 3 2 (   "#)!2")'.3,!G$F-5;+;!!'$)?0&!#&1"$A$GG5 1 2 6"6&)   (.&2(1#"*"(% !$/ +5)"%+( -5*,$  !&* 4)3)".%)$0&-,!. +''0.L#%>B/'I5GC5P%S>H@A!427 #2%,#('.<&;)4-  %+ $"+ .:8 (($   !, * .7%&:4(.<%!4'&92,"*05@/N1-L!E:(M)1H6AJ' WVY Y K<4(9%= $; $5!1 (") ='C116)  "### )!' &6582!) -(!   !%. 1:2$'2$:-*,"98MD3b>Be7@9"<:3@:966U7(bg(bN C'KSU)K"A#:&4""%-3/'56*6 7& 3(1$16 9%5('+8<> 4!.!-*+ ! ! !%&'! )#4$1&=$8" 9"!.+"6:(4A8YB5=DK/GR5/Q3P32P.LB ^'&]*P H#W+[#] XQ/ L(;#3/,;-2& <86+A%58! .# 345 5 *>";+';6 3'..)4$ !" ## $&+%# $!.%/!#@!@8 !,0-"'5 B (//?+#H@'?U5/S8_+,O$P<Y3I!FWNSUR%I&B*;171A$ 0$'!2 ;*05; ;" /$&''"1 53#0 "0", $ ( ,-*"/#, $ '! #'&&  ,!1$.*49 :8*" %,0+2:<%J7+@=%0L)N'&J9C"N=>- Kc!Y)K# D">& 5'>,%9@&,H-$7,,&(&:&%4"%,4' 3)/%&'&"!-)#&-- 0, ,! &*"(#-0)!'!!%!%%##)) *&/ !-#.$;B7' %3,3.2#CK#AY'BT8?$K!?$6;'10P+ H%^$M"%B##5)!;+>6)6B,)>*.B(A:'4#%"--*+$'/&"*$ "'#.& 2 *"%&)$*!6 =/+)!(& +0)3*% (0%"#)525> E2'"))4#3;%AcFeFZFM0D:50: A4G)L#E+=4) #5"40''2&!=%'FB< 80%-!-0 -",+   +()**A-G I :3-,*."&4(,#(  #$$%*15!>!H56,%< 4$L7^A_EZ GS1?@3 ''.&;,:3:A+;; ! ""2)@'IB ?93"%# #$!% %# )   )$6(/;0H.HI<# 65:'91!:8")0* !(1)B&.<8EF#L;;IF%H)S3U6X8J*<!// "%&&(6'EB+I *D7(#&1: A?=24+!# %! )%(###!   -?#' 8 EIG 5!7,,&9+:4"5:62 #. ! %6'H3$;?#AP LXEL3L (J4M$0N 2H C5',*&% *%AJ2E0V )R(C)+&#(5,3/-;$=A9)* !"&-)&*" ")" 5<?/6)8$<89?54@038.3$%($ $:(#E3#;F;QEd=V)K4C"<=&0:/;/8$' 7&)')*)D' N.H+["#[/9-" B)N1E7 -077- &#!!"/$"+0$"!!*,11 0@,=C.!B7!8D,&P"W&H)":(/6.+1 !+# 3/&0%?!+R(I&= 7" &"2,2D?=^?X6 M7 8=472(" "2 6(2)1.(=)%?%94+&'#") ) *&5.>3:(5;:6I(4M$6J!*5*#' $( ' *&0 !8C N&B,(754.;./*) : &T 6AI0W*S"A-&"!!97< <= B>R7P2S3693,$ #)6 6> &8!.70A29F%7F+G&> 7'('7:,(,(97&39$?I(;E',>&%1&",+"/ %-%5 4*8!?)M@'76/)E4.<(6 S#d @Y ?OF9L"9E &8#(( $72I-O@PFBJ7J,*< -!%#,1-?-4)7'>$9*>6&8/!' ! &*"")0&'.*.(2" 8!;@&H<F1 ? <F"J#(II/FD),Xh1f@TH?K+#Z*R!*X)$G?(-:Q a k U?"71'5/ /$!.!7)F$K(S 3L89H.#M),[,@Q5K97V->T";Q ':+37H SXM'C 3)?,4= 4-,1##2-.2,*3&/,$0"()22A/K, ?(5 A!!W3-Y62RU6LV03GXT#-=&=.+G#0W1-J3/J=AM!*N%J!Z W EA'-6?$737B*M'%T&Q1B43*O=-XA0Z79L8I=@Q-DC=? 77!)*: G"QM .GC08-/>$.(%$!!/+,*0#,3.*(+$:884 5,H UT-,c?3d@7Ud$Es 3V>), -5-6'5*53Y=I1B !GN) ;1+6 !@$;6?K+#Y#;Z/J1F%0K61G2CD,F:7E=F7CF6C7-D3C9@$(0*";"7 -3539,*& +"" &&'+++!(/ .8!A<1/ B4 c#t$c#-]3+XH*OP%QXFQ1D( !)&/C',>"8O*@])Gd(KWIO/@F%!?(.1%?*D&.@@4(Q,4V%;Q;P0I'5U72M+-=/>50@12@4/C@.>E%0H#K>08E$41#,('&  !'!#1)0+&#5-=53& 9+Q8 ^, d"a+%X7+K51U5^@P2N9@-B0;H0::-34)8)+1.&60%=9?@$:L!I(CD=1 +' "$ $   ''%, $:)!+$ '14O&2>-,>0L+P"K$K Q S-)X*T(=3576*E3(`=*tMzR&nO9qAId7DV+6@#)= ')!,"))5'E,*7(%.(8$=I'?FBE 0:0:4&643*--!%!.# @$!@2<>/7E*)H'#>)#1%($"%"( %$$ )) #1: :(=#-D)6> 79D:>11.;!*G"D6&J.4S#'Q=14/S@%fQua"g$^%lL*iR.L=(;+!/),2*26* A/85"(42=><9 -(%)$C C( "&),7*'65&A9!B8&440.5 :(2!$# #&'''/' -(7I#O M N0> :?7E>@&?9'08++)23%43-7;==<41>%.5557J?&TOgPmg|y!hxc2pb0UK+C2'1$13)*=875(5 -%5-">7*&$%&(#$9.:,B0)C,-71>(;3 -#/"1'&0 ,(.,.%0 8/ 2V0_"ea %M1J-X+7Q14A-",>%(D&-A(9;\CO8,F2:9.2PA\MeLiimg#tjxm8uj5Zd4=70,#)#<;#8#38*'-(,'(381$2"/3";+ 30 %) 0)1;J #J+A/ED@,54.;@3G4F>9;07+ CG'$E,*K;"NW(>c%C\!FHG?@.MM(/F568:0---.%44('3#@0"C9U3U$F 9, *5%"B?55 H/#XH+^b3Ld0Ge/H` NRM>"Q=P,D>'2>C"G )(/+/E,3P: bB#bK$kF6dSO&]=@O-AH9U5-EA%1>4]"7c):f3B%%A:I;K3L?V53+.-&,$0'.+++*4'($4/A5H=@>:G#>S$>W'P#H> /!- ')##($@>#LM)U[0To4L|6Uw*[a(Z?!XG]DQ7N@"'3/ *!!)7%C@(R<0JE.I\5_EEU,[;d0$)2$,+1+(-$$$$#+#(-. <2C3A<AB&6Q*8a03T)/I!!K",2$0% '!,(:(;E&DZ0Gi6Oq6Xy+75*I@3GP3P@HE'u=(m@.8U>2XJ5_?+M3)J06C5B+; % %9?"(U/:XIE^MVjIb^JyY?E =t;^+ K,2"#&( ( 3*./#A%0J56ED13W;1I?TGX9^V,kW2QJF`IPBQJ6E>2I,";59;/0K.-A=$G:%L5#N*0KGOWL0W7LX5QF*D8@5,A&'31+6,66@29T5Fb3Ta:Ua3RC2J9+_/S#>-%-9-#DJ>LAPJF^NNtULoE{9p,O*=.->$>+?&"716(4/!6@$4D6+:!=G;?6SfNm$W\+JQ BOR+Y&=*' $##3;+ENELIFOLVI]Le- M#A('2;77< $A0%O()V$?'61:E586.3;/9I$98FX%Z{L][bkVsr?u_4lT$jDT8+C;-9K,5O9@O4HS!@S2X!Ii\c;[bORa_J?q61n2G.<&&  @c4r HfY]MT?ZK, N+'D&/-/#!  -%,=3DG>PQBHGA>44 *&+=G$'N)8Q/4W12S/)A78V$?I6>FS=6O<7O*Id Tz>YQAWT[=r`(tJiHWE/JA-@5&<>!EO8[ 9WH]Pd1XcK[fT?\a.>r&9tb(I1#)$&>d3b)Sn*XjDM8Q6*;%+:94=41A*(8%1"%0%"A67F4B2@)2+%,&! (0#8+>?5OOBBN>CM:8CN)Gd"Rk;^VW\CZFF]$?^Ki)Zx>X|\Hv[3wXn^[V'YS3SH:.J&;V5B,-S,%a0n&8)$>,,J?7`D>S;EYGEEBS,QtZ}"`_DcADLSB EY';n?C{aEs*n|ntg'nY)PP(T,;L4,5&%7*'C6+I..S&M7TVb`&bh'Q_+ 3'&9*73*;//<,4@(,#' " /84%K?7OS!Kd*Gj-DgAR :5@) =:9AHN!WV/V9<^8]8,U"2H 4ZCG5N;)Q0:W'FX5d(S$X:/>H:-[D(uika)k;sfC\M2JH#>5,9,%*$#/-,69.D%#I",G-!TBFGPFVWC#fHd<Y,*<&'@(>2$J#B"F&']e^X34%FD[Qh\"sM;K2|OE]R>^M)P?/424;+!'5&8):8="1>$5R&/N,'N> C?'IA(]Q\XUPH?9&%?"@)98:C3IHEFEDB NEF;&1/@*%CD@AOW ;E;ULNU"XJ;lL@wD5n@5YI&JF$JH??F729,'1%+3.(5"B,K+E%T#F6"7L-9B(+G'C47;4C'(>);.7 %&%";)B9K9VAe= \; R@E8655$1,+&4,>5#QJ ZRJD:?=H2J* 6>*?.5) 4;=1:)(0?IMV'HdAVPC]CF^74^8#IC%LI(IO+BP>:@)"9%=*4$41#"4KN ? $:"3#&-. /' 83$.;#.=#9:;>4&,0" ;"F'R3^- ^1P#N)D) 5"- .)&#80E%/M6W>F=A2 48&9&!8.@"4/2+(6!#)(&&#UAV4GcGKZNHAAG8,K7/W?1PI?S 7W%>%F, J1&C$&4*@- 90*?5B5=206 %-.#/&+051679-3"%,'%26FN$G#@-9*',#"7%)$) $*" ' "2,<,?.&9,2*#(*' 5+9D%#@.7!(3>0G?7a>-G6BL:6IB79M7H%C:I0W;E?;6=5&&87 9##/'$'(-&"($25)3.7%4%% &' )-*63-.".$ %)$. 6 # $' # 8/?5,D*353) *6=94HSH@i1;Y<>L3DA,G GBW/#T='FB 4=?6&;P82R9/_I1B?0-'76 *" ).#4'()"*,&$%"2'* /!8&8 ' "&.!.'$! * +3 :8(4'&( ! '&*"."8+(A/%*3,7L.?]KNSMBGJ7?FEJ(=8':%=D;@O-IC#EE;G9J(1K8*S=2SC2A;,574"+3*%12 --(*'#$*2!$=1" , 493#&(+#38 =L:(6"2,(" # #26) 6E"Fa;KiMd\GROEIIHNJ>6:7,,:B:3'*+'<9%B>!!2:)$#(3 #  % 36#;'-(&!"%%0 (!'# -9 5 +#* '-(/%0 6:7"6#4 0$3;1%#9G ;2I$Gj;P^GHi9UY'GG@H55#3%0 1 8#+3%111%2291,9B 8T3S-c5Q06E7$J6=/8($ !!' ('?$8052+,#(" #!&# ,;?7"$)#(&$!0%'&-)> 17%<(%')4)%124B!C:?EQ8R_ Ug%=_&5N/#D,1+$! /#++6.*>'&A"+=4@3%= 9# 3!*%#**'6=3-2) ")%"$.+!$#)('-,315'F-#C,E#58*A"I.H$FYDc0R!)Q 'D 2". <*0:37/A4C#/4*>%"U%N/`#"_$$]!1E/02%*#&7.I(5O'8I ;J.CV:HE@J/>E&;L%P%F?0!?%>!/*&  #&'"0,2 ,/0H"U&"]+c2 `5T+4:/=)$@!;# ,-!86 2   #$%!*1(.$! )4(0 (1->6I?.&6-1 L/ SO:)`3(W01H6:-'/.@.%FC%=\-6]-=\-BW0>H77A5 =:0438%M J'D/52*?3<7 #*2'/&2$55*Mcd1k5"f2$Z+ >+88@,>3"(*.)/ " #-#&*( 4B J3G1%$''!)$? )A!/J%6'G %B"69P3+H@1fA,^>)M9.70*+*/2%1E!;n5q,'e/\+%a/[8C)'5$/,2#8,466@+IK ?9&3>?#$.(:K)Wb(%j"4l>b%7K!.=;+;- #!.! # $ '%+$7$7&H%P&L$:-=?2*#;-%<:#<; 6A<>"595:&.O!GF2RF/E;#27#*5&G'i(3p7!a='Y<Y2V,I#!9'&*0(%2+>%LOH:(+78; 1/ H( V$d%h7mAb;M0<9+. *5 "( &('#'1,@ *L ,^-V.J.R%J 9!"1(3C?'D:,3 /8&*G,(>9E:: A9/E*7 2*I)\-!^<WNR@"MA-D&B!3" #.*0 0=KOS<&# 4;+4:,N%!^"'`2e9Y9P/#A(AEC- !&,65,@5/$>!N(S.R9Y %1/451!GG"11< JDUGFAG2D5"0-,%3 <?"=)<'=;/ )#-=3!"+*)&%0!%>(D0G2J 9M5A0/);.G$S,0$% :&C&%N6+R:9L<.H=90 1 %(6)"7/$D.="- 3)$$/ 7 6,-550;<:@:@9A&5>1-( (' !43#6"7'.*8!!2* % ! *'6$ ;(+!+,' -9%,A#5=;A5?0@+/66($C!!L-+"     ''8=+A8)E<3E1%A(8'#'$#+6&+>+&LG!)*. *+*01*8!'@;M1K(O'K(= /3/'+0*)0#.' ++ *!-2/*#), 7-9'-+,2!3'$+4-@0>.8(>+'8;1C&H ! !! '   &)(,,4/7;'*C) 102 &/)!421<15',$/ ,%()0 ';(D,>(I"$E5*(,;,: 5" !!#!'#-(((/#* $' (% 0$3" ),"*2.).7 +8$0:';9#4:&170!  *. '  #*6205 +!(,&33'9/D*D#/3'1+,"%+'$39+0>$C "@'3%+- ,+#-  " #" & %  "$&"("*'!)!-,,0-,.#5"4,$*+-'2! 7"' $ & #  !.%1' !5&9"'5+4,*.9"., '+$ ) *'0<&C RF022$+--*;*2'"% )!" ) #    ''&! , '"! , 7/2 *)% % 1'*,)' $ (')!'*&/-( .$  '=8!44 CH*(/3()) ,CC!L:O!CC2B8?>'G%LPO$S KH?9)< C &C96$"&'%=1;=5:. ! !#08/ )1*8)6!4G&9:#>+#>%:8'8;##>001CI48`-?7,6A0BF:AFO0Ab61i!fYPRI PO SO F"%<# (' !.4;4J)BB1! '5<A< EQ)=:,:;.)0(%/*# #! $#7 .2")8.%'> C!D2 K7*6=F*D:&!S9>0EL:4F8 PD*C9KG?e?3j*`SO[()OR NU$U J)3>.1/3$!2"7A.R!L&L(9' .%8HQ ? CI&.1(4-"6<*0,( )0%#$- ""$1.?2(E.=+&O"X,+K5B808/,&>)/O<6>J0!F9N;FN(]>`,VHK'I4G/KH MP*K1B:#7:+ *465A"W(R&;!8#5&9 ??3$27&&$+0%.&/'/"$2')%    (:K/ I/25(K #XK-;&! "%=5(D5&B=&$A'<+3;T7J'@HG, G>976':(>(=,84!;<"4;&2() *+#-<I#F)<.6+*"0'0!/// %0 0 ( " $0(**1%#+-/ ")&$!.E#E+8-4,1? P"J 9 &'%*"94>O'AD"FI)JI!>&-,:.#T%LO'?3*10()#"$*22;2/;1>6F#A1 *,23! 6*&7.,:6,0/-%,(832 & !"*24&,1<6>44#" .- 2*6!4:('/'7),D"QSC"'90'-<"% JS'I*9 5- 6%* +#33A+J)OE; 9 + &#.*9"-4*)#/!8$0 7 % !'6>#2((; &IIB?5 :88.+!5!)0&**/%?!$N'U'%V0"G8%;H &E,N0`Q^YTFQ2M'71' 5#=&$E4;@.=!):5$$-%EHHG K5 %$%$'"!'2 2 + $ 2A#; 06/GKJ >%6# 5) <>8/4. "% ) '($&&C #X'W:R@ QF":JMJ1K FUIZ:C65$' )&+ -*.<, J+I5I+=70$- 1#@$ J SO!:! ")$%1((*."!) 9'%%(= FD=;%C170>!>/=8 45"'" !! B)U0P?IS!M^EP4GM L-K,D.?!.+ &-",(/ G&V9`9O,PD:$05*9-HRUQA* ) 8# $ (/# */%-65 553@'B:A=:63-,<+8% &5(P2QFFUGc8^"H9);+8%8 !0$$$*.9#1,*6.K'.d7i1O- 4#%6<<DC-EC%74#5 ,6(%( (!$')/)(.+'+ !33&G)E?AH&4F.1,3&'5 #$  %- H, JJ>Y&O&WH!E)/#',5 * = 1,':0->56?7/)%"!1'8956 9G=@13/9 87*7+   ' , %$(* ,*)13&+%$*% ")5 3.:+=? 9L5S%1M$+4'"&" ! (+?3?>4T X# ?=,'<*#,1''% 5(;'J+M0F-B13+/<=?B.IBH A/:5.;7;,6$    " ( /"/+,1)#6*">!7503 %4!--" &'0-2($5C@N!7O0P%1 ! #))))"""3 $8*7@N=2#47&58)5"! !7 L +G85G)D/"@1<(%- $47C4V3I>;K@E<53*0 *! %58!>-4,6)=&)B.F+E B$>-7%/*%.) " $(%&1/C)83"< #I@&%B-*= C GJH!*;(+.23=*8$0 ;*E!"R.T 2O4?44)C,5M3?F4HG4W44R)5O'I("67*EMK P #D 72#7.2775 )(3/5Q6),3-+.!"$$$ /8 D : A?#"O*,T7^Y+U\,CN%'`Y K,6=0,>'1:$ D7AI'LHM FI*:4+H.U&L>=J2/T)2]4U?O2>$/;(A96J39H6H@4J/4A->&C(%? K F $? 3HB5&98-7+- !($*..3)/ &%$( 1= 3F X"U3,TE+ZI)`a4Ui6N]./\,K 5/9%(/6'L.X)Y*HD"Q+R-B1 .H*O%(Q(GK+[3/Z"<\BQ?I"HL.5K&1=4A55C:EG7;;85163(+*/-0",C);4;4*=($+ 3 +(( 7'6&//1 -+ *(254 0A$b]&*a7&\F/SM1dB-aN RY ?W,C*#%#(4 3P#/b4]"6Z.F#F+O3!K:;5''F*Q*6M-KE0V.?S"LO$CO"=J-BO-;F)5<2.54A:5L;+K5)85+57=5*,1'$4)=("%, !""3!;%="6!/()-)8 -,,- K* Y e"g6U:0^?8f/a7 f> E<B21-$ ;. G6 S0#h.'g+=f 5V /B+U S4@C )7&<7P=CB2S76T.AR!@R6J#3E,7F*:6132)+/6032;5@1 :6(7DE"=1/...'(%! " 443 @?0%(6'47)A-1'./-APH#M\Z:X1W$W!R#*BE/0Q1c>eJ(eF.i;+g0"T"; $O0G.(+=,1%6DAI55=;&4?#8BGS7L"+;7(74-*3)$&*'%.#426/ 9<$4K)7M-25+#0+1-((' "  %*& "! 2 :! 7<&N I A&*C&<<6@/>&,+!5*>#R5VC(P:Q$$J%4HA@C[E*fCwYqhzVlJ.oG5W-:/"D!16' 0(&+<5C;6B3.(!,+75!,0$G"'9(8'&#!%1$*B: K9%J.@+,50#9411.! ' ("- 2 4)2F4Ra\6N 9L9P3F##>+*-1).B$/GEH,?57892P..H AF@U0\ViUuext rblX,oS(L6%?),8 .$(- +/D->I3E3!  LE+ =355+%* (4%='E,M4 K,@(D.C+7!#1%1$-#'#-)* /#6 A+6T 5e s u+` 6S/V(&U+F?(6>H*B/=7">>6H1@5(B,A/EP!Rf\er`qs se{_2na)PY50,,#"+& )+%2-8/'*,#2..( 5: ;C/#7C)A195#"$%"9@S$K( F#BG(@5?+3;377A0I2:$-B E& @L 0b$ps ^"ZQ#-G71FB!0I&XY;KC:7A/D6?H=4YX!]^ bfcbVugwby7Ul3Af-2A)*? -0.192+450058)27,!0 0%713),%&-.8%E*S7 LD .7 $  4 =Q W#R"O&H0F, H>%=J%IK$PH!YENA);/$MOG..T'bie SK3&>@3+L?W7o#y-g9?3E(L=AK-+Y= bV$J[DsNf%Pt Hv:5j4?d:5H85A6)9"%"1601?529*%-#!51)5+'?.A:1/C88A/*?4%A.";"+#3+*3$$-13#!$-7?EEDX8UD='@K"7R%0F#$1%!!'(0 )7?."L9$JI$HY*>u4Tx1eo8]`8XAVLO> T9F. : /*?4B) ;&.<#@R!SF(O?=TGKU>8N/O-H"2>4=,*+N-,S3FG6V2E'+-"/* /31-$8&&:#):"1 (&"2 (/!*)+'(*+"&,)48C<@E;?&@<5VpCfVhT WI\B N< :"6== 9 D1A!;74@GHID?OD8JB7F0/M3!@*& *"-/.*=)1H=Aa?PfASkBrfD}Wj; g;V8;F3C48;/8;-$/!4-=-99?;?=C2&@>#809@+KG4QGAPBPOCZ@ETC;D=/A:29>44)6?3<:=384/I,6R.>QGDZ;9n)Cg-LE)LA*7G*0E*$.' '(.,?<6\6Ea/Hc8R[8ON16G#?&9 >!'! %!&$541;=47EFQXC_VV>ZIQBH1$J<-0E+J=O=Q"&Q&G C +F!-66/07AA$54AE6MiI[jLZqcQRrKR_HDY=MM4EL3;B2'J$E@6B/:O.CP#Gf J^\M/sLEfISU,UM/`B?F 9?%+'+ $$#6'1R)A`!Dl$K_&BW1N;;"="# !"02040FY4UnNYsYD|uE]yGhlDgV,OG'E:=7:,'8";>.L[#RWJQ8]U_(_W=aQIbVfQFn;.]0L4H+5 !!1)] BiFhLcRU=P=!;%0#192'* $, **,?23E*'J&"4)3=J'-R))R70W5)LB![LLHBL8MDGI;;6:>"J`*Is?ORU^YrkAj]#nPWNGI(/6/;2.A4KFOG>\Ga_\9bYFXXWKV[FMh94p,"U&>54$&W&Ae.Nl#N_BL-F.2*2+?'K,K(J H5#3$!B," 1$-",!$&9!<&>H-AL:BI;7OL(XXKcIe'QW2>C84HC+^S5GpIL_UpLv5po deZd OT)JZ(@e$PX8QWPIaa3Sg.7k-1p&(h(Q,1%/#7(38'MDFX:T]#S[+@S"+%# !4*K"@T"J\-:d%3h*S0@*(1". ),)910"+%"#,",<,FM7YO9VHIAAM2I^"MrEv%S^+EJ5(U//cZAAjT@{G-! jv3kqAKP>ER('9%A,$G*'P*+V'6a*4Z<9aV*b`,Wj%Ce.3a!.e2I%3%#C'7HDF9LJ,DO88C/-(&$&#,6')X(Ed.Pg)Kj&Pz!>r>S ;,-$ ,9*G7L/<"=".=1 4$5I7@T8=I8RC>W87b,Hg6Ds&Cp<_*N2$AU:=`c-|yz*Bq?_jDW]2:H0"7(0,-1@7 R8.['*X&#\OaZbn"Sa)$D E0,20<'+?%8I"-%'%#"1-*(1P"@[5Lc!No$Rk"Jm@X <: F/@: @I=RCE D0%K@!<92:19 *7-J0:O7*O2)h4(p!*tbQ&';!20* I.I"C-U<m-t$r+_..?H7$>I mR"[2WMUJl\;Q^-CZ;8P*-9 $5 #9)2*25!,B1;:#M4Q?O\>X#"M(D$1*$3 !1 2-02,"4### #-49@B;%GBRCVL SN L?F3;:, 8;;A =P2D88:6<<6B$B)@C-C":0B:&e3's/#`)"Y$<15NHT$MD;wSA~IUzRBqN&RV)=T52[2/D(7 6&7"(1)2 EC>I<U6U5 O6E3$8$"5 ,!.($$(286!=?EM!29%$I'N%O&A19/+:%4?/=:O>$U.$C#8HP!FKFFGWXDFbE>oH4\H(@Q@Q"9N",=38:=4&7% 5,3- 7,F(G;"50:8.6#9!$=*2.$14,16$4/#0#'"!$4(B*I;L0N+I0D/G/;*7 ( % %-!'6*0;7:@01@90958)@)I#K*R 8D;8:.;1*1 S;W0HZWGUPPKFPD7T;)G?&DG:V*I# @8?>$A;$13!,.679:5)5%;>6 3-#561!#(, 03+51$-2!(""%.":H#B$*C$$;?8905*%&/(&+*%&'74,(.5,'=- B-@132I'^))^#'N%D1#:90S&*N51IL8KF?L;DE,F:*B9'@I1HF&I8(RD2EG5<:/9?B#:1+440/9(7FG ;)15 !4* )#",7'2=.+7#,+ " '"!+!2%.8""+ 3 ;1( .&84 ( 12$17 2924H&X.%T3)W'L+> >KMK9BVKD;=<1+<:22F-3A3>--9(E B:($41*1+(4!"."*%"(),% " #0--2$-+#0 -#07?<&!  (% /4,$!:(@7/L10@" =8=RQ-bJKRLFDO@GB5J20<2*-7,5#7A>-$B;%HE>P7N6>:<"8L*/I5,D;1383$5@!E7)# ' )+)'**/ /."/$(&!#3BC$ /&%$/0)2* 3 =0#& ' !$$&,   %'-0$.+(7!7(KI5cKG]DQXERQK9I?3M50<31*14 <9#-($4?%;Q 8\-H5C6I+L/(N52C=088+"25!390!26<&8'&/#1$ ,80!#! 3 B#A;$*0+ (4 , # ( 0&%" $%2$"+ 6B7,1F5FZLUT@OSC?Z(>C,;A2#+#, 4-1:-,6$#.&9+=L=;%*I+N3C)P+'N4+C4(?3#9) )-& $ ! )='F1$@;44!30&-'&. ,%#! 4@ E>!!!' 64!"#*""$(00)&!20&%.(%2$0#0 HJ:: JA0U]0OP+>T?6!-4$* "# *9 +B#-H4=#2?7,*:;'/F.I(L/+S-)T)#;*(?$"3& #")!/)98%0K'J7HFZ 7\ 8N1< 6*'&":, 593G0E0G'K2(?:?"FI8N"%L"(M$N#@8:&($ $-!$11-K&,V &K*#O2!L0 ?0 #.% ,($!/ >H7!   !$'#,'"/>@ "A'4E :96=4*+'6'%U(P 4N*T3U!2D!:",).)(+9<0;Q)8V8P#P J1.HC=3DK"5L$?:!2-.#))' &' 1),!"%?#T""_)Z+[6U6K6/0/36&/%"5 > 6/!%!+!!7&;# '/@ >!B%:3M3T;$0-3C/)V!*I63J<1Y0>M(92:+5>,A07L+%+JV#^'g9b7\4Q2;5+(66)+;0- '$'$1 2)I!N+M;4,&=6 7 ,F(U),#,6,B>/<F8 *4H(3Z4CX.KSf"j<d>`7!^9(Z3"I8 02 $%&0467'2"# '= Q )J CAR.L+ b$a &_"*R#(?)!4*#%% )4&#+%$4':/Y6d>Y=E 7O'G-33,":L0M:<7"3@#*N%%Q!*R3=0B%E:: G!MV1$\G%`Kc>\0+W((?#.%-(;(2,6.1 7 3!) &.?G*H53D-W&^&"V+J.:!) " . 3   %)9,A =WCf:[!?M!3R"D"2! '-5=.DE"@<$-=&A.I-%>#1C?6)KH')4 9?ND`USNX?M7'E3+9 %((%;<"$;4=145 *&!, ;C)5 03#8-#K%Q%L*G19$.)29%  %%05EES <`'1R.1L3$J.F,.'#$ #)5.=.>A<)B(71:84 F, K 8 &';+?DKKFGN?HE3@ +)($ )% >$=#":**8"%4#3 ) )#,:B 8#*7!&)&3$9 $=): 29".%!6@> ) $ ! $( $ /62J$/V<)P4*T4&HA=2,".'0*#90"9.2.;@/#-)! 6A3$;,90F6J;FFJ@E4;*&)&  $1*8'6.$*--7"#5&! +% 6(D,8%8'-!) !, ,+-7(:!4.#:8@)   "!) #.2/->A!F1*J+*I2;8.-&"(;0"3@0;%02/$!6 5.&%&&>D)%G"4L/V.O4M1K6?,'" ($22+2&1/,/!& 1';/F,?):*,((%'' 32#4-->$;< ! #!  !+!8 *>.<3!4**B+F6B:'84:*= ; &' $+# 3"?!%H'(Q&$Q, K"%A:0,8!"(' !#,5 3('"#    *'@,(%#-'"-/#,%' $/!5,80#09-,#'     6(=#7 . "4$<):()5"1-0)(# 1+'#$44&6@(D!G 'I$,=)/'*"/+ ' #",. " 1%( '#*%/ $+ &2,-<,$07.* +8( !!!    &04, ( %,*! "*#.""6;$4E*K'I/::)8,8/1'04)0%(*-$ )     &,/ " $ !+2/)2&!-,+).!% #'()  ' #,+!"   #  5:*4@8S 3U*V$!K1,88'3.-/ 727';7 *6 , ) $'$'$ #! & + ! ( + 0(),(!,5+7)'2*"'  ,* "!#-!)&.65 A>7 % *%2B G!I6:O3X.S*N,<,9)8.7(7?<8 >>, ')5,,1 &1)   , A85$8'*26- ;6'1 #3 %  '%)5..;&ED&NP,# &&#".$8 S'U(&K,*F?"7E)Y,KPHE&=@!: >BF>;"+! %'2885C1@ 9 )"  4 A K <3(5/+(;1&>; 4#!:+   2A-.A/D,R7W-]'2"% 6(/7+$%>Hab X$ U5PJDY 2XXOHFB @ EJHKJ.%!&# ,.;3N,T=1%# , A DD KF&"=5.;70(:<1.&$     , 63/A7C /H 'GX#&#%09&?8//<5&-3 DT!2 -=-I!3R58MQ+Hf2g _Q$K&C== H QQ" Q$N&4+ &)#+#4@*J#WJ5.+(8 GNKGA.%=70.65$;8//, , ,   )&3/?<.@,E7E%0&."<%C.&L>9@@C+)8BZ(+9;4='8HBU,AOR*Eh( L SH>C*;1'-)*"'0!/$+('&/## &&1 9#01#<;CI5(I/43$E-X)/Y<=J9;#!+1'8<=51=C5M12EQ)2b+,_ %N @ :3"1: .60%5BU4U5K6?9 0&! ) -@.V+f3Z*J#"@$,+!8?CJB 9 4"# $''.!$ ''0%&#!"('/'"%'% &#3%/.#65N+ V7$T4A65G2&g+j%$N%"4!*556=>6*F6:7?!>5$H0I#:@<2'(E()A"868;2 >5K@ D=,4 $ "*9%O*](U+G, >2.1%;.99A 74 +#!)/'&) 12235* ))&'+07)+=&2M0&O0H1?51S-,gf(M'1 .$-)!6*6O,;K,0D"JF>2-%4#AH6/ &;*:+".*)")"., 2= AE;M#C 0#%&@" I,B*A4,>;944A-=;7- ."&* 56! ,:?> AGD%5 5 5.$4269"8@*#?**9-931S)+\[!U,,J9.9@&+N)6S)BD,:D%1QG :,*5 S Z%C1(#;(?(4 /%$3-C 5O-SQ 8 + %- 2&1.63)512)8A@@/+%$2>=70)E JJLL!J!?C?) **/21/"5*8*):/81.O%#X'[*!YC&PN"6L&Y!*[A[DL?G!)C21A# >IN!78'@&3H,K )A0"- &=&H$T*Y#!H9 ! $ *&''$;4"6829 $#0 #=CD !62 @HI =?& A( B><"06)/+,()''*%1)=& N"]8XA"TC*BG2JN$S9^ ;I7:&,)0;' 61*- >,5R:X9]-M< / +3 @& R+Z*U %P @& " !##!4$B2$--3% (2 '%& /FC8G!C-91 @:8('/((" *$8 Y$[9XA!HR=M+E K!? +C+C &-& 1 &/ %.!&-&%N$8Y!?K":F9: 0% ''  +. &3*;79;0= GR+'J-7-%0 #& ,&6)50F:OASH!>0" &9F:E.B/@)6.>4>69"(1 +   ! )2+#$(%0"7 93;7,4!.2"%,(.-9?!>L"2M.A #3 """ 6)2 5+0'=-*>4,I44<)@ 4+ < E277+>6!@>CH1, -7D'J+I-<0:->38)1 -'&% 2!4+%&#%4!&8!@ D>A# L@., &7E+&*.&'$#!# ! / B9 M%R$ G/C,M?BO :]('k$p"g"C((5#D&*B%!;#049E EF.B'%/0&#GH&647&A-&L/L4I5@#3'31->:5A;D>8H/5P#8Q0P$+?-!2B%JFK"8,7!"33!.?: 0!*32.[9$*-,($)3$& 5 9!E+J,I3!T:!UM*QZ*AY*8c,.aP@&*" , 40 +9":>D I">-=8#J$V%V>H!T4-Q%8Z;Y 6M6?*5*241B68G,9##-7)72 * #*$/$,0+.#+ ,%*(  ' . B G.HBOC%OI-]S8>A/>04;226%,4('+*7.31A/;0%'+5 5:"8'<&;1,0 ( 4!!%7 ?$N7 N>OF-WQ6l;lQkWcY Z] BH+(%9(!K _YCI,H@IA"5F3&M?"U=:U,PI;R/@O CN?PJS&FC*<>58?>17<397C126+);(0-'%+ #!3*:"(*1**(/ ! *"(+$9%F&Q &E*A%)) == #33) :G$W'M>I6%\;7n? uOxHlJYL9=%/(6!1/:(P/&Y$!^N= J!K=?F$.N,>@HK;I=N=1P0:@(AQCO)2J5<445/+-96%51%238,!9,;,&/* +1'%2)!**-#+!0"#$ $ &&,; "K!A%$<.+/9909 (.%'')10!I&b4lLnPs:k/"c3 G4,?E6(S8U?P5Z. d#TA#U!/S5$4F$0E57CBQ63L>*?1*(>$9N&1I1 A:)-0-$1&+*,! 2'00>+!C)D)!?3%62#1*!'),((  /("/5 ;4,H'L&G'!D0? /8(." ! "&/3$,G;*`C r?v-X-W+BHLB5XD&qSkSeEaI d5L,G+L+G#"(5$)857A5I'*R!+<$'/3%6.*F;-:9-.$(&,!#D +L,R)L2*J1507*;03) #  !!$(*7 ;F6Vce'W /U 1+ !2%F!,DD:F$1I%<%8+$!B89K'GF+(IG ?29C5<+ &*(BI&V(R1!I.L0N I-;'',*** ,)"#'!%. 7C,>H0f m x i #j2T.#J.&:7#-F,O0J03;2-4&Y3Fb-Wu(dvZrdpnihb$XTDG=;5*#--,$$93!.8022A9)> ?@&D8CF/G'6%<B M)P$T USP+B,<:9A;1>1@+C(1" / C K( =J 3g .z o d `"R(,F:.-8,%S-8\*[+G":,,.776>U Mh)Ov$N}TuN{^|ac-QZ&CX:S670*.&& "'.)+.,%&!*(0.7)9$4+2EB7@M2*U,H&+/ ! 2@$L* MG"_'U!N-#L@ K<H@VDMEE;$1%$PMH54Pj k_TI//98DBS\G(u+6m-Q,?.&)00%,F@Hd&Dz8x!Bw#Cw=o!E_4G_+>BH?9A!4 ',(+'!(("$'!/:&7.6,-3-8F.=T/JO%V2L63C!23"-&7">+>B !W&^%](%G;$HK"N](Mg'VT3CR6@/N* S' C& 5$MW.I 4C9//LAUHb1\I>m$Ag =[)C?!=18!:5"2^%)j*7s':q!FLA<0;4;:61::6+K+:&0+")"#/1'!42987.@>R?](HQ3P4)N?(9B.5@*4 /"%.+-#4I(Q!#^4Q9!L@);P/Ig8Tr7bp@Pc* %)B'Q33Y/@T#>B#==,-?$E-7/ 70(2$'+&+2$(' :+44#3,'"!.0.&&906D:UBR+>F.K/::E@CI6LE7J-0?./ 66,#%(D!G!N5G<,TTTL Q>RFL/7!8 F& E(E0$S.+E587ME8MbJNc??JN?%6:*.'61D2#L4:K1ME,L:"0E-B#8-17%6/(9,8.(C&):68"?6 O'+H=N@3@.+1/;1<;G5H4;>@2S6EN=RIMGEO=FA39+985$&+%09(#/+10<%8E04W6>a>Hl5Vb8[HP: XBO@!FF+/G#0I 8FA8>GAC.:"<2-9I:4S:6=;V64;=9F:==XBBID_=+oC,^W7BP8>J&.B5//7/73(69F&CPHXLKI5*S+.T7KJD"M=:/>G-4C%.M-C%34<7,P)7a1Eb2B^5BS/,H!$,$/,' ')2..4*.@98D@EKCTCN:NB\2^HgF@u=;kE7V99M0382#/% .)*>!40,?*2D(3(#1%2Q;e FjG^(AW3K(-+ #! 2)"''3*0?9-JE0@. M0U2H&$@.4(>"T"^!0`"$^( W Q!C&'D0:>4-:2Q3,^*8b).Z%3a*S&@)" & .'7/% )#G)9U1AQ85IA%RI%Qa'6e>i1:W+1V."_'4YVIKeb*9 (o'\~7Zj?IT@5I4'8!#%#,3;.R/Y#/]4DZK>VW6Ia67[8/S-,X(J-:"/'8%H*N0/L;15=A!2C0F+!7$!:%;A S6/f*Cj&?e#AjD^1I(+$ *) 02;3)##'(3/8@9:B/*@E-IN7Mq15w0&m:4e,'W_-2YME?lq"y)6yIe|Eav;S`7*P+8//08-:$F'&X3X00ZE*[N&_[,JT-"R"0W O%77+A'76K7I+#H$+900,$8 )I&$ 7/.$;%/7-C,7V$FhNhR^TT"BD-(2-4? ;B/B.*-.+93%+2+4&5?"8G->_1=d?d4gA['-J60?=%iS_j"kAsIkqMSlDRc,4P#?/ 2# 4).+31=$#H)K 4J;#]AZRO^-S&&H"C%1:(J+4?A<>= 62!3*.!. 1')*-5#1<?AKKNG\G\A K2!:79Z+5 5 H9qC P:RKYFa^ETh@Ed&+\!C 5 %/.)39.6$$7%:(!@%P5Q?J\3[Z"= 8/+)5"64!-9!%;4)3#) %,0>3< E> Q?K1S1R*A)9+D*B/@4= *4$9/4-3(&7(!<'A' 4+6++1/MK9dZ5jD1z12[,14.5@7X>7xBEJJlM;YJ5PQ*;Y,^J<43$.;&43,4+'9..A'#E$J0HR 5SB<0"%)'-,,1#0/$'3!,&$# !#5187A!>;D2!J%(L )@(6 +/ ". 2 (0(6/*4,8, 56E=D2K&"J.M6>"CE8L7XH7OH1B#>#7G?L4FBJYDBeCFS?5`\%AF2R%LC(6,)4$&23%3-->$#3 G*D!@F@37)PF2#8!++-9-90*.*" -#'4)A4;4%:"&@1@ 3846.0*%("##+(*0=+*9?:K:DA<L0(R)S,V6N4G6@F(-=+J ,P*@WHKDNQAOE;8YM*VZ:I'KD4A5(>>60@:,'<+A&9'<#:%#7?&=/0:: 8&1&-'-53:,18/*--% % /(&1/#3+)6--<-D1?(*%4#8 $3->3L8PD88 <5M.h)%g6'dA)V61J!"C9N/P3/MFA9LE>EAA,K?OFJ1123+*<.A47-2.2)$: >B*=/*5 !6#/.7*/358.6;/2&2*("  #$**05,+5'*? $C%B.2:-)(#7*A>JK ;J,9V4e> `Ao- ])0R1LEP.GI:CAGB6A=967B%/<2D*H)=6D6&<@.A27,9';:=-?07;".=$09)8&<#D!E)93 +7)0%,+.)06+0/11+ +.5/9.!76(?!='% 0 5/$  ',:8;8D +7$)B4 MAYC V(&S#9RKP"VS6?K5CDAG1FG0489%)A E.420/2:*?&,56%+D1>56@.A%@@.G]CN=>H61")(0!8=!>'<$&<.,>0@%$B#H,N*0O39O*86 03'+ '$ $3&#E5&C=8>+5=7/3<.$3+6+))((!@ AC% - "13%$ #! %0 *6+!7. @#?'>$/4$6I$B1L9XM@ FA 64#0%%' 1*&A'L# ^'S)K"%A)/>-D00G%S%F'-V$5P!5&($$ )! # (##%$!,.!-F(6Q$0N..D7/;?*/8*3%2*'01/9B< 0"!!#&#%* +'9 CM("Q"/F5>94(0,8(M0X 4A 48=C(701% 0#+9?1L0V%)h+_0\ -G"1B2C0.K!@#73#&#$%- $ 1#.2"* #@ $O$"^$%V(!N2N;7?!<& <*> ,.4@ 8' #%$)"4 &:!+8(!)>E\V)H;I A65%2E*.V&2FG,487:082/%0;=<M?X9)]-/j&+d(+ZV"R/#>+6$73*"" #"# 6 7<0. E$R&N'#Y0T5J?>E%:! 8&9#%)8 ?61% ###(1 +9,E+G-&C7&)CD?%N'S$8(97 ;28M?/7[-2T5>H@060<8J6 U6a6e+w7u8c.^ ^("H-+( ()("#$& $&+&+57H2CO:$V)I+Y*W5E: >=+:5('$66*) !#.';-D 4U?U5E&20*#"-9E53I6667 +4=O@S4,Y4+R4.DB.A5DP:](fm&u:p>c4%e+,c%0J'*( "#+:&2%0-(!*%*35?,NHME1G2Z/ Y-K/=5.3*,;8'-*""3+< 6S 9^ LR GLA9(+-"0)"5;48=; AF6>%7&"G"0\(TJ4=-A*HGBQ#_k-iKdM$m@'e-,X,2F (".#0+8.59**8-75!. #(- @"O 1:':9!>0H3N/J%:($)" *6#2 ( #3 38 AVLa@WEL!5>#3+$22@9=D4I(E*+>4 H$>$,=8B "H @ 00INZ? SV `UdD$R6%R4';( ( 5$"8.(8$,:&;21 / @R $7'-:*4;0?$?&2!! " ,&%)&* ),#-79JNEZ";X"6P,#B0:(!.- 0$93"7?.I%N!C. ,)6 "<(!DDHSJQKA<=>=5'! %!7.:-4)1&53$" /:L ;$:";!'+(2&4", # " -,!/!-' $!!"'"30@B"7H,3I-&J5E9?5&$ %",%)/737:05;$(: 4"5"(536#32-0:,8-1M =Y9HFE ;D 68 * !! ")0/;/60+6-,3- !  $- @&O#J(C->)/.$$ ' .)# 37=!" #)$"( $1%:.&,5//9"(?#>362"66/.+%8/&7H&=@+629*@@9 /" %.  8M&%M,$H#)N+P8S0L275* + %(,0+9,; '8%%   4M' A.O-L+ +)'''( !1=' =( " # # "%$ $ !!!'.%2+89%;A%-,=7"M;<=--/=0;9 &' %%% 5C"K+"Q(P(!N(M'"C)6 1,&!/5 6+ "  /2' 2!:$ -&"# " $)(3'@+# $ "      )0 /+,0"#.% 6.*.(..!.' "-*#!&$,#K N!!I'F*!G%9%!7"/#%+'* )$'$' &     ! - $4 ;." ( %&.0%#D)$ .!,* "    $ 3/  ''%#"!)51='*>(&5;"&F&#K&<"<%%>#),&0"-+ 1 */ -"       ,,5* )(" ,)$! #*'+%(;.$"2($'#&  )1#'+#%') )&%% #"2.9$&CA';H-3@(*D3,67*)7$";!*<$*8-!*;92 943!'$#'" + *. : ;=#/&-+">!(@ ($*)21&$  $ %)#-=3<>-@?H@ !   "70!9N'M4AB9F&/L0!?3422<*7(&16 62 ? >4&"%#'$+3(5 1 $ % ' $ = M G=!<+0<1<(3J+#'4#,7+    (*(#81 E4DF9L/L)S%_!,'  1,%*0 UUR(Q5 >F7L%G(E3D7:2.(4!7;$:!G%D!2% +00?(H '> ? .& $ ?H W MG"(E*9:5A'3F0!74*   (?#I8BFBU:]8c3`&+!("%!$%!"0$H ^a#b)K5GJ<[,R P. H7=*4(:@KFE@#9%+!##!'1%1O1W !RG7)'"1 T U UU&N"-?);<1;63E20 *(  ':'C9"JEKG9M/[)Z (#/&# AJ9 NLBf0k .P& C7F6<$>C K B@# D!D+5- $*#!1$- *F%Q!XQA> (.;&MURN"M(D%.60<22"%(! #$&  (42-'C?!@D9L8Q @(6*&1#=+(H84H4'=$6$J26'C#D!O8&TVBc 6[ *S?(<4 85>/8 : >I L!D4 @31&."E%[ \!S H' 9/-'%DG P MEF =".21-!#$- * #+.#(6JBJ I-B.10$>3I+,X'O*>' 3% A!-G'K/G34;P0AQ6P#C60-3:!,73#', 8! I*J. G?@77#)(&H'[ d)X*G3 :9')96 >F K CB <'1 /()&$!%(!)),0$"+1!8#0.0 1>+78@36B'FAK4!C1D:2R8$g+k"#RD'2;4;B3@A"BI:1B28D.<);&;"=!'02"D''5+!*',&1)/1=6KI GF12 ';([#^/X6$KE&;C76:<1/378!8, E1&=8(7G,L0"B7C;3[9&i h%)Z4<)27,0%/<3F5/J2"K/ C.@/=)0/1'B G&1&$92461" &""*,99HG,);'B8#`/e*f.e?]KSP3Z$%P-K/? :,!-; F"!H>6/HHGQ2Q,I9 6.,$? "N&"Q(\*J)0 "+!6/!888"50''!)1 =B21 DII CEM J I!A)/6!50"*+""-'9+@?<W2Z.^;eH&VW FX-R)C.I .=;3)31 651'>J9&VMLcDb(VG9 *.B(&]&] Z $P@%' $ (:!!D.))-, )"%+ #%(3-* C"D =IGF M GD!00$31 &!' 15 5.W.i/c:LR5L #PE=#/%+'**''" /!+,;C1E]&Hq!>o.g#Q !; O V"[ Q)B,0 15#   &'#1>$(/ 2 :!H%S'H& :" 3 7#-'(/ /&3 3C# Y; WCJ>C@.HN%I $9(+ 3)55?9*A8J>KZ7@0&61*2 3)+3B"J/K-H(:"+   !   "$!22  ' <F'$K/-M,@& D%3, &$! . 3 ):+!30 I;N;M;2R&`U1A&67"&!+%?-D@AADB)B8)=./#,2 %44$)&( 1$6)=4780&1)(*)     # "& * #  ","=2&# %,5 ->.)F;;2:& *, '$ $,%.$&%&(1?4=(:Nd,Z$N>);$"% ,)+/6<;HP$FO&>;,12-#,2'&+*,"$()++6448/85$3/"1- #" #%  %(&+ 4 6 . 1'00.// ! ,-!+$478F.D%3 #!!# *#+'$38 2(-O,@W1AQ,TH,$.A2@>=6F"6S&' FN,O% ?=6"2)31#&!!& #9BJU : )&% /!& " ' ( & ,8$@'86 S#N4'OK69V&+[a c%I"&<,.8>(+@*E%N%E&4D.M"#I$R > @"5-3C@ 7 !!%14EC%%*,13!2 ) % +7+?+I;J&W#S< V`!Ip)No9Ig25Z*$L!3&%(#112?$=+%7/!,J#R)K6A-A:4C!1F4J&J.=%%>,6++:556=00; (%*0,4&('/$"+ .'  ! (! :) ==I;T9"^@,fS(Ql-[`XYMP7?),  *>D=!?"H-<9$26)N*R01T!IP6M<&08!=<#7%' "( ,%'68*>9=9T<$oJWd[a_lgTDF98* 4 CGCN&H6BB .L4F?R?2V2MK9G1C?DM7K >E(<;1013'/:.2.027&4>*1>(/(,1 5/%!+'')&4"7"8$ ,2!05 +$C$G#N !F3%,6/+ "!#(#',42%>-!U)qW*] mR lQXYBH?;= ,##$77 SM 8J%D6BE5.Q;$=MLL1CC8)-3&8DBS%;R/&F=057%7601/),;/",@%!G+$43,>-82$*&()'5%3( &, '!*";@C$B*.+ ).2 $+ "()!8*;.J55\S-wS!xKq>eOOC,=0;12: 42#E&H*%U" S <!K"B6 3E'$H?PG(=*&1%+$$- %3$B)E-N7F<9?*4%%!'-, ! !4 ?%D..A!K(W"Y,? ,5,&$)(12+76A4WF6q?k8f%e5+T7=GKF?PF1JFSJU@L,M",E.K$>#2#;5 ?@)P!+P3I+16028*58(0:%,! /"E#"T+Y:S=H;54; A$2. &  2(8&66 *L X`(^2X79> 3(05&)F9B4/:E$-V#"^'JD+=0OJ,PO-OU'KZWa bV"SDJ,-E;<04"&"%$")2+N!HF*6.B$@G&A3 1A.7#8V!U%Y4S0G+I"M S*&D8'5A("& ' :):* .W1GcKs[iTrNtNm!PQ"LG)M, $E!C)$=<#9H3F/#%DE)\.S,&OR"a-[$/JC58F286/,5(%4 &2GF$<8)Y$vre Q/C(%8.==91R;/^'a*J)8,*%46'JB?]+=qGoD OWz\sT[QCL<-B(3<0 '"$/%!/,<&&=1420<,:,2DA4:W2 I#9-'%=!L#"H(EX(m.`')Q8)BB#G;%HD<69?,0,# AH( E2+F^f&V%H-@$5/5SHV+[N=j<o)/y!8{";(E-JnVrP=L,"I3%:/)1#) !!&(=(N%,N&/D'':*.M2BK*OJ*T2!F2("2!). !2(4&Hb )d$`)(Z."E9"EC/FK-DK.?L*2E'&16!6)/17& +BA)J55#<&&J4\LYFcMKn,Os)Ec$4I)2-')$K0%`6-2-4X*9I/4D07?&67:0*0&3)!'!1! ;'"!/L'M6N:<4M7]?]-BN1U>,F+)B(4?%65 -#)"/&!G#_)i-#e:$QF-BE-BH2GP0DS7Fe::[75: 6.=4 @'$I0+65-# 0% :"L*H&4PDGNR[.Wn(dk)If:5D9/'#.B5P&a1/k63G)1N-L9>*=(<5804*0<'B/F,."7 '"!,:)55#A<%5=#2U3g9\AI)E39:11K1>S2DW6?%3&A'*; (S&V0$U7-LB7=@4;O)Ac,?^5<`>?b;JEL9M;Y4#Z11H&!'C2B!J=,H25FU9>ZZ,OmFUeE>gHQ+7D5E2.F&O61X+HU(T>%IT90Z6!H.<3;C80"500+1A'BHADA6P*E7;>25GU0`-2T&-EM57[&FL$V=aDiV7XY>.K5127;2+/2#=*4P%ENUQV>V0!Z:6Q+4R*L5I:%HN%?\*O)/M):E09-C85S+2Q/4P.2M%J!&") %889!:,"992+@9&F;?<1C:?HLCWFV?'W9(E;!5G1D8W W\ &V$I+F5S3/Z.:;3=?N5B];OV2O91eDy=w?jC K950%1'7>MP_TM WDV<&[<9`4/Z.[.P:3H:7+E+*K("J,#7++0I#9\%@VCX:S(P  2;60,!.* -61,98469=5R+"P/*P2)26%"8#.B#,W)X#!U#'K EEH1(K3J>XQ6^UCaSXTA_<:l<0s32z,%o9_CL'07 '535 /C/34 0'0> AZ MYMYAU "  *?5(;-0 $$*4* 7$2AS)'J'01; F!3U-/_,)S-M5Q>JC9/=2:3,,:?0mR@]S^M[l9Z0Hq2Ne'8i.;`;R:99&//&+$4/ 7A/O"CE#UE+Z@2WI6c9DX,BH*?6!6(,04-/"E*%=3<2(U.6X?3NM.DQ*DY&CQ5%W+c#t4hGHK\X+sx(q&e3S{4Xr=Ra<=L=#8;.$, ,1#;@ &N!.U6AD=KEMD@J?+G2-J1,H-4>10.8)R(R.!E*&3,6$#)1& ( "+&38BSA'Z30Z(+D0-BI;K6':3&): )##$ +)!039+D6/B 4E!EE%LK,HJ)F+,5!''=$6 !! ) " &.%2*+?12:;A;O>7YG]KRN.R68q(37=3YCLP/vR?dUMgdRecHPd7+Z2 K'3.1/(.*5<:F>:KM+C]3*\8 K)?%3C*F@&P%DJ&>A'13 -870 #.( :(*J19:KB<$O9%V,$G6C 31 0&4"*3#;#3  $/$)*-7.*CCFTQ&k\4_S7c:8:5*+4LBaM$sRFr\Re_Nd`KZX9OW3'S0G%+;%57$/&$1'$/"2*9+4I>5H>+E]%7g4Z&?&A89B"/E-/>+(<+)3#,0%  "33 2>:B=?C/D KG#C&6+%' " /,A$"0("9'506,78.Qf-I\(R#E1#>7:;8:<+ :2/63*C4:2843*)>65B*(O%%<#:+7-4 31$4.%,1)5# # #% #)/1(,&1674B(8!!!+ %' ,1)%71 /7/B/M KFP@"W&'['4]5_'3Q$:I)( ;'*55=&5,(70#->((?+E.:58"7D0;>%@A"/B%% '!%$)$/(/3:B"SH, 54 #&$314B?G =N8C@NO5h/%k>-{7)h,+Q+)L(Q$)>=.=G@8IM9H9F,EXI`*Z,O D,:!:4&51131,"F2>4814+"0)+9&:"->*(@7 *7.;,:5F*AP1?A+DB)6?'"' %.71B#+<)E#I&H )*.!$) $#)9KDOF[>_;3=C152I$*Q(W(PG@+965)63-4,1,%3,46091;",-&,$4"B(!C41933/1,>!A:8D'8=(%<'!#'0.:5?6=+H'F !/(&,=6F9L6I2<H8P=TCY'-d(,`%5j4Q-2E/>=5C0-@3,*9"PX(N9'='0+14D1)<8*000E/L,C+K/:)&0 &/7!A6=-.#*#'')+&5$6+++%* *$ 1)")6. =4?<7: ) $! ##%# !&!7#4+ ..6*;<F$O$N4T0M#;?;<4:>+=8,16,(' .1&0%:;!$/# $4"'% '%!!'' #.&41*<-0#7E)A5/U.7B'>5A:2$&4!&23*6%,:'&=2= 9.=G#R*0S+8H5I4+C$,4%%!)  )8!F"8"++1(=*@,41-.'.0 3:$C%<1( +2+ "#('%90+'2 "0#)"'( . <I+4V9_(8K)=4?"5 6)+A <&Q.D0G-@#,=(5%&? $I+K&4J59E.B4 : , *#%& (-"<*#65"*3--'>-G)<,5+#,#7%61FE"0 " %++#.!6$ *51.,"94 @"/@0@ *4!4EI&+T/7S:@B,"F%?+/!&%E0W&I,Z1Y&P5@ 98 ; 'B+C.<-&?'/!!-$!) ,& -)<"&=&)A5,4?*,<(=' <' 7$16426B!@2!((,$ *!!!*!6 : GV-(N%7ICP%:?&.9D"(I@F!;7G%C)6*4-44R>]2$_.`0] -S!(G&B9!;(#1$'-"2+)%)  !$0":.)-3*F%&I)$D/&?3&;:&$>- D(E"%I 7>$;,A&@ /% #!$#%018%.'1"!? P&V%O2_I[ I >C'*8 -D"A;14-)010:+09#D=T=]67b+8j3c V#Q!M$2)!*.#*" ,36.<A/L+ Q1)>78:5H)QD#E!-I:?$C3D"A 7!%1.91;$-=,&48,C&B P )M9WF<7 220(I?=4D&(A087#8,9;J7 \5i5k$#jn" _$X'Y!&; #'$  )#* 1,90??@B,=7D4C<6F'JBA18;:F0!H""> 6 #%#.-0;0J8R=C'40%4 8E)0M1/0>%9#<&M+=K9*O C&'9+K3J I; \+q!pq.s8!d.(](+W -C"4%1' (! %1&2"14'!(#91 #<0I!77C1C5 D4A> 4@"<?#6 2+@)L !D"= *1"  (,-2 +B 8J@U EI :7-(4)#=:7BA6A%B/75C-0L;G1P+N /JC@N hn1cJ`Q'kA'^(2Q,3;$3---"$!-/)+1"0<,7? - ) /#1$;!&S+5;. CD2G/F5?#9 G1R 0\&O !B42BO/KHUT^[dQ(Z4+T*0<''-)'/1(71,=)!924($&  />$O'&7%+@!%=!#:-,,1 2 ,(>(9&7-. 3& 4 0 $.*;:CDA5@UDdNUIGJ5@+/ "")3001)+(')) *'$ 2 @!J#@?$B%:+ -&!(3 "*9.-5.(+70,""' +5,:79:%8I7%M9F> D(.*$-7*3=9:74>$-@#@G+92@*?$1% '3"'>(,O7\$:O4:1:-3 4( -$".&.-*/ $1- 5+  " 1D=$K& N'D).1+'$" **&;'""0*" "$ 1"3-!08.?$"=,;, ;6+5#&0697*JI%A>*(&4496(3 '(. 4'B,G+&U!(Q.,K-(I 3>.23)-  "/, *4<5' 5E#G$ Q. =/3) ($ !1=%!!%  ""$,25+ 4/75!'E*'69'=6D=E01/'<%?@,2(.( .:'E((P-W1J/O$%D,(5""/%%(++ /" +"  # 8 )2 < 1&'"   !5%E(")  * """ (%'# 1-.;!1#"9+,58:&3"*,/&.#% *  1GF% M3Q7A(E.6-0&+&+$##%& & & &$1-3; 3"&4D##$0+%     ( '#!&#+%)%!"*).!.$6!6"H)"K6G6H1A*96/8!+.&#)9 1!#"  ! +14( & **"-)$/"$!#' "+"$&*#&/'$.' ' "  !2-"$,!/2*90+;8+8/*@,1G**B'@,?-32$C+9)1 @91"!#% ( 03 ; C">"!>97;0)0&!!"/"+!&)8&%G5'I>:@'?%B2#  $%-0 &!+"!>%*A-/B218313;>D9$:"/#%%<'F C <5 & )9I U S!K*C%2@%68$;%(!98 + $1) @1#L6KKB\5I8P/I%)&, ' " + 4! *7OT)47 4 ="I!"Q*"B;1D/9!5 340;!82$!,C$[)O!LD1"1 1HN YWL"'F&1A56!#(.58&  $+9-;:IDGB:B4D0!)&/)*&,$$!-.0F(1# #1'C2U#2P/"F45@63 )///8267 '#$ %#/9%L$W U JC"-?#*'9$E MTTB+B/;22! % . /"$ &-$6#(37"A5"<>"@L8J5.+- :#6 !C6.&#27&" $(+5>HI6F1I!0+33)21)#- .2/%+%,$'#)(. Qd!b)V(B1+;70*6=NS S MI%B(61-!"$ %"$0)&!!#6&: .1#.90.EC.AK=JB%5&(2,:'GL$LA !.9!1$2$++/.:1(J:9=$&7%)$#1 '=!'2% %! %)*-1095/0 - (K"^+c3 V4HD9H(-P;$,@#KKB > <&7/)* '+*"8+-/4)26,9.:98#83.9<@5((,%24>75;58!65,''("-&!2+-+3$2(&)&$1:2F2=)1  "B&[,Z/SCFM):S,/:4(/3$>< 86$3$,#'%#$*/?8;);156 >;D5E0C5D=%@9&8D"%E+903.&R*d$!_/ ['E5!F8.*0#,9';1&?5"12;B/$% #70, 68(:( 2327%3 1;"*.-=(1M *N #B $!#*L$I/#E@)7M;/`9+7=#77 4&<"9%,"%*!2$;LECB( A6A6C, I0Q!j?*WE-VQ9K&O'=2,=&3"2"%", A(@7()J8CH>F-<> J)@#F6-I*.S+'M%7)  *47#2''/61-8<&D9,#.#3$%*')/*!-&/ES N LKO MFC0'N8!K8#N3'16.50 =(;6R5\0f8mLa\#W[ANO&@7L+H0&% :4>P1)Z@P[CZ/K GD(?)@7+M*-H*&M*@* / #!!,+';/&;6%:2-!!'#$-3&-"6 3H"GH Q NS WM$?0#>3'>.&83"$,*8?67O/],c=cM`dR[3RF%@ -M O"5#+%3=)1"0 1 ? @= 85"3$ ;5 F=1;,Q$i(V-7Q55/.%) '%.#8(6<?J!EL)FK9D;>*-;-A; 4&"*$4,533,,+(#)       , ) !2(  %0$2+9!*C'5$0,.% (*.20 $",)'$",5C T0!e20h9R:?D%-)  &25D?D="&$($(*')(+"/"/%'  " .#.## $( " &$ %  $#+*(,9*2'! %&&$  (!#5#I*;b0B\>R2K9$*=";PIJKG CV>R*!;(2$)%   #!.%, +3,,A03IT< [&I);-&)92N37]%IF'KF-:T)1M,2H!)7#"$$-,*+!+&%) *  ""&,"'!&(!.337 7$ #! -$ *"%"%!5GM 6%- 1$"$#! * 2 ,*0& :>1?; C- \(M.5H8?@E-.Q'*Z(&]),S$1H*)I. ?-4'*$ ))#$/(+&!/)%. +5 #+.7 9 3'&!%",0'+, 99= %,"8"$='7"0-1'*$9@=.&%4+5-)!,!.,1 )>(1 '* >F"C(BH,O?0YX6X\)>k,+j)d)V&N,!69,1  (!0/.#.,")5)/4$68 5$0-%; GI ? 2 ,-1%:2,6'8"A/*39 G'#D"J@C3%/:; 7,$51"55+;1$34'+#  49? JMWF"]g+WQg0Ik.:`.0X."J, 7 !   "" .$%,4,+04":5&4<G#F%(A,5,2B$E &G$G#400* .')%('3 (3!">&05#--7 MPRLJB( *<3 ($038, -2"/).$#,   3' 7 C\.ME)ab+ZyclWg&Q\'GX)DQ$29'!)( 7"/ 0%A/&.?$*>'%;* G,(L%9@48,495;+;!<,31).$'#-%)4-#4-& %'#%6!A #N&JGM( M, -8 7 &(. 28;0 -# # .(2(@%F$`J(ug&in``abSSHI8A6+#5)(.: :'D%80 5=(%A5:7G=+G)59+(4(2-4'1'"-)  + 6 ; :+6-013 *("#',*-%3(:6I0BNEAoV3xN%_J]`[J&O*(3620-M5M!>(D"1E.,;.?&1C(I@)IM(2X5J(F$!";+:<;:+-?($;'$5%."'$>!E*L1HE4E*@& !((2 ("! " "#"!!% 2& >* 5D.E!Q#I $22&;)D+=,50$:*7<34+D$S5QD O;DE,91!8 '-./!$" $%#2 53./ 4J5X ] [ D'@%-@('CL0"9&,?,>!>& @;6C)5("-OR/X< P0I)H*X 'S%'CC%0@ !:, )/0758:0H $\ [a%N)*>$>,?F7?>,L8P2F/4521)H.D%A+'O*4U8Ai0QtRqeahNV2:KJHM0702#.)13/)/0+07(:(D#%@::;(<: 15"+!>L-P)PI!h -k/d./QE0DC%;5) ,(!) 3(>679$?YX(m&V4-%= 13$91A!0c>y)<6G#NUvXY^97O%=DK-6'"5<1:+1E &H+BD>?&/27-/=.%G-A 1=1!*<"@)!M#J"f $s &l2-^<-G='*=&&J"C22"5/!90&9#8"E P U*B=) N8O&ARN`QWb1K^7U%C>$'#7 1*/$'a.,z 1(, &C0.:#N:]2RXUYS_f2Uk,L`52I25#0;"m13'j',R=3@*&>',544/1#.%.4&/)17) !" ;$O+\@W<:4(#+9%R+ b5)f2#L2I:IH?03' 3/5;#)B0-I6 D.>+(.-A$7R$FRAF3V.W3Q@E(@8-9'7?RUMMF7+#'!#)B(Y#1f<6VD6HL$6K-2X)3S#*R'5\),S 3;<4L:O-)T%2SB,# 9.&9E9CYB.\RRi6G,HiR]54.:59T5].P 7UBH0C.8@)=?(FH JLM8 =(!+$.(B-F62A-:68%@>-=<0+A4(M29N):?8IMA]DW:(W?1U/I52? .? 'L)^&#R4]OGa)\`>gO,l #BE*0G;/M?R]6$i56fD'MG8)L=/4#@( : ?1N CIGDS0_:_7!I"$H",B-4C:)M9?O'Q%%H(17/<507/D%-R$$X#FA" )!1 0$D(C!)7-$2+'"-6#6.*=%+J-Q;WSFB6B,(<,'2A.1A;'S1&R+-L@\)N'J* e1!o)A=SB3O18[&LN"N:4Y*"m3w2e:ER,356247UFT YCUGTJ&TF3U92O%I%E-%E3'2:A,F1):,+C:$=D(9D#/H!$J%!. ::2. "'(-(*24:.B:8C/"F(J6.< &Z"%b($`9(Q1(J,(L*;*D*O!1Q*Q`S.cEQgF^O:r 8`#?k))6mLO:$A3:$!5670Q#5IP:UEVI*RC.XA5W3R#E(*4/(!<->3>07"6/:B!C>8;$?  %08'++7+5 )!)-)1%. #!>''D./A83U,f3/k**h, j:&U@'IDB?65-N$;$2*#2;' = J&-<&'3&8,:0+9:* #19<A*D;." 5#  * !2 @$,@1:7B)P=b)Bh$3q2&qD0ST,C[.<`#)V(B( Q32eVFRSW.PoGq">l5J[8AcL/YI;I$V'&A&'($-1@ 'GC?G>'VF*h80R!.O61(<.-++8&B!962$9.",/6( ,024"35"=)K.G1E$)@&&2)(/)(  7;!C*(*:2J9[Bb,4\D3UN>A[7Ah1BW3-m,^l'9XCOHLP*\d Wf#Mb5T]=J]DCRN3CS:7)+'6%(#&!3@2L':=$H6+O3/_(=KB7@;27+6,B*8B1@-2% %( #! 40/ !5.B4 J Q,2B+/0&8*->'$2& ) 1+2/D;J67-8)7#! !# #*/0*,7/>!07!8#$C!+D+8 ( ##444B6?:*K08K&JA)]NXQ-GN0W.0[->26:SCiI0h^:\dGTeYa][hKKKMG OPB>?%-@#:"/+ ?&>+,72K48F9>44T9(G:82'+;,'6#" &&,;.@3=71"<'D(M9I$$7!%'" &!'3-!"1&$8"9)F$1FNK!\_9X`5I^89I5<"3#4@WB-_O3b]AQmR^sUfgTYY@HIL CB'A<416E-&A%$3"&" &)54$79436/-@J/7G:!="-25B?AQ-X' L6)84 14,( * 09 !D'>227=J,E86"' !(')$66&1(&!;F8)")8*Q#'L&8B?FNLMV?@a7:XA/B%&>A4&V@5\WPSdKXs7]s>Ab,&Y3 G98<.G-+K'4A,*,4,(2$.21@9=+20)  (6 9$8)2&5)-,06+%!$+% )3&- 5$!;)F(G 0;$8+7G'@C>S)@P.SU6TK7EJ)%K F5B)L3?VEELT2Mm5Ii2;n"bJ:9N/*G*.84-&85/4-/8006)9-317.-L0*H-5F-3@3888B;:=1E.9"" "  #* %'(7"1* 946'1"$ ! %.)-0%:&%B*G7J:8A6:R%5c4hb"e(L>G-C:&:%7)$=:0/&51<*&C$14"30 1*.7177/B2%<&0C+@/= @A&D< D:@@.!*-#!##54 H)@G(P+M, ,!("(*4/O"AV7]9YJSSF Y9 e7sh*$g!e-H('F/3;29-3>40*M#(Y),_VT+%A*466>2?1,)6"2+/125.523&1)/2)*'23%5C'(=''2"06/2>2<;=<0& "$$.!(! %'3 !I'$?!/G-E' (%& (,%(#> .I0J/L$;90>E$OEUa["1R,X5?/01%53/;+(22 $A+O$SK)=6)<,*%24B<#49"02$C+< ?.8-2!8 %'%./#.8)):$#&$&!2)22 (3 ,$ ' +/$4(*(1%'<)4:+7$# . $ #&%. $"*!&-'4"3-26/;9:@&?%O$?(H(AJC/A02((/2*/-537-=!$=#+6'-*#5/2<2>#2=3:5(@E'@)93-;$9#/)'%/'$,!$'/!%/)!)"- 2).' / 22292)'$-'6."59! !" )#()#** !"1-'$8-*4,,)-1693?3J4OK#B;.1&-&9M4! 0#H=,D!5J:@/</+3? "L'4@*:6'C$A"7( #,/ 0%! 0)3?*I-02%2.3= .<(2):$%2/$ ,+(!<7",(*-#+/'&7%3'+-,/ 6' B*O1Z@"X=P00)%8$= <.%8B=*H=I4I5@181#!6 !<,@)45(1%@!8//(  !%10"' ,(+*10?&<'@,4.0/-<$#G 4%3#9 &  "*6'D :#+.&3#-)/6/*67#0+.84J",3%&5D J/U4*R2A-0$+;.:,,4<("<" H"T5M1G!*N:=6006"5!.*% )+!$! *"( %( *, ) !#! .&!.,'34,$6'?(H+>+$:%B;D0E:'6)-  &#7#A2'%406.(9/H'#;#=OAd'?23%/-7$8"M!G+%6+2<: @5+<:1?$G0c)'g-]3Q'K6C55$&')--% (%"("(&-*222!*&%8%C,8('.2*%B1M5G.)I#;M#D?L/ B*G*6 $+ #12&,)#4)<007' D'F"4RCbG`D9@#!6./ <*/#')755: I:)2>DT?'d01j$.u)d L+L*F*$-'( '!'# !"" ),(4 $3,.02 8-C8990:!#=!G%N+3Q@RGKR6,Q((@)8&#   %1(705130$(.17=!?5K;OBjL0B6&5 )*=$"';66/4-K81?&G?S8^0 q%"} h'S /O)C$00!-(0!"" &(*#<)?.+62 7:-<)BI G M6KJJMB+S:,Q,E+8!$ +"3&53797>89(3)##5 A(D%.)&5-<25;37367!$42;!G H,FD<V(\'\'b."X')[,W.C/23)4& "$%"$"$)) ' 1 3!#C&.54;*: %8*BM F%H9BK;+Q/0T//P.H,;&&$ $ /'5.<9 6@ 5H5F,30%0( ;/+76-;4<H?I4 >/Q]'_V)N:7 E RT2SF ZA"`.*^$)S)6:&5682 (&&",,+0+/%**')'-$:! S&)@%)A(C#;!8 ; A%:7;%H+8J9Z2V 5M>4/ 0 !"..//<6A8O0SN'=#%.<'D-@D5NGHHK7N^ 3h8c"*U"@*2:E"F>"PRWK$X9#[%V',6)70&%--")+%*)'+ && "1 9,G+>$!@#E$A 4<; */6++B'7K#@I-G @G@83<'!/0 %< 3:#.A-.G0X: S;8$/@D4K= AD:D7RT!V2]6W-I4 .''"%27:J$DR*PG/K50H*$=#, # &#%,#&()- < 7-)># 6A&E*E1?30)7#0)# .'@7L-$=&=/='8?'5";.,?07CM>B/-23!> D#!G-:%*$ ,,'.(J,J6CB#?>752,% " '(4 6 0 #  - CB3#?5<+(.%#'*#!$ ($&; !)  $$!"&! !%-3!4( 2(: 0=(:<8=9G;"N3N)$: 4'F#S!:,@+4(9)"Y2U=LI FG;73)+#$%!!!%#.(3( 1',& 47=A!=%%+" 2: " *%&"% ! ! - 4 .+&-+405346.#<, 7+/1*2;(A N 4  ,4%B(M=M@ MBB>;/4-*,$$$' ##))* %10*(%  &6?%D"&!    (!#) )!"$!)  #+3!:"/'$*( (;&3'.. E = *.>'E-H<CIF4 <.14 .2'+ 2 . 0" &! 30., (,<A# &(+. ,$#! *%* %#*/).02 % $ (! +("#"+#1-&+ !%6#221,C'$C*'D)'K'C0 ?5 ;/ ), %02 = = 0 + !!#%!#"!&   *'%'#06! 5&:,>&4!,#*# !$ "#$" +!*$;3K4F84@'8 /)" '--*)+. %#"/%9"8>"821<7?6G"+D/A(6!)!#0(<7* +6 4 /73# #. *# .A H"A#H,L3;$3)*&% $4 +7'"$"$/00-A0#S2P87;.G'>4(!!<!2(-9 3 $$8($5,2)*-$0'9.;8/CO>( 7>7 ( &3 I J 5 42!%. %%< H J@ A.B$78)%% 1 &2'7 #"#*41(D,&G5@74C.M+E.&& "(! %,(16 *!*+ 1%*"9#(?2&2L K?0  #--,$:#CRKD"3#1# &8EQQ@&?/@43$# &* >#0!$#)("9,!@1>559#5@/?2''(,!   / ?#7% $&"-7$)71&2@&C? 0(  +3+''0%L"X)U!'Q&?*..0+$5FNLMD"&D31.* "$ !+/-($#"%$-%(8-#><$7I-:K$7G5!,! .30 .+!%%& " (%$, 2..0'.+45 *' '  "5 *''$"$%+0!Pc!\-^.(O=,9>4'3< #HLWGC(A(20,# ## !=#$ 0), 222147*-?329C58M':F6 .0*/ 8G L 6-#&"$$ +))<#;$$2($(%* 3,0$-'.0#0' ((@V% \.X5HD&:J,12;!)?R XBA$:#.)"& #5).05;+ ?5C:":4/:4':>=-FH"C&F=06?)J,PH='&.2+)&. 15%7&,##$),34.#'$ ! &(3<)#9,/"8T%M/G=C?#7P0-82"6:%H HG@#6.&$#4':8A D"F. E4H9#J3N= D8 6>&0H%EB)9@9P<T1K/G1$;11-!,@%7)7*6*/,5+(+)/7H%D=9?-.5;%2:,'?.,B0!2,# 6=+$:?,AF.8S5#4 5D "F*E"#?%7!$/" !*8 FGN O I&O-S&V8%]:Q9 ED 3E%+>&C+(6K>P7SCb@[E$MG.DL8-="?!3C>8 4 *& " , :(K? WUEL<8AG &B"B8-I0'>2,7?;9!7!  ",*.,%" ,")#* #$'$$,/0(2%F ]R S YU&N"G.D3<& <$$#(.2$=4JKXXRQFU.OI.@+CE$/$!*%;1D=$9MA8^Z6[r4Wf)D1'' !2362 :$5 "   ! ! "&$, $'%##%%'"I!NJLL SOI>! ED 4 .% 0809F?L8F&K%"R3%O8<+9$0%'&+0(?9LM*BH3FV2C[?*3)*/0C0K<LQ'BR)FH4EC9;A@1?)8"$ +%324+0!   &"&&$."  !!  & 46"7@% <* D.?$/4:" A@,2)#,6%P<$ZD/ZHOKL:7%=4M=O:NN'HU)+*3F6HLHH )M38)1+.42E)GN&LV0TT6;J4AU(AP81+  '#() & # )(%-#  (% 0!$&!',/5$2):$-# #&"$(!+&-#*)* $%. 5(!! ##%)"%' - (.!.#*;*F H*J=@3E,P$DU>DD80,F93U04Q(-_-2\3*J: 75',%#!))!!' (0#((0)1$(/!, $ 0!=!:#/*!-%$"&&#$* "' #."03%7+8"*'(%('$(%4- %4,)/2'3'4$/$$ :C G O-M"U.cCGYP7UU9'>/ ;'H'\ ,jJ3ZaE]m;Vi0Eh);a+4c-4Y.0H*0),..&1, #(5 "9#3@,C'=(50(+&@@;&9#/$*!   " ( &4!:C%P MS N%F 1%) +* * + 4) 2%& %./% %"/%08$G]'UX)``&_mjp%Vj.Sg.Qh.N^.=E:A*.9 /%<$$-(%$'-,4)(:$$8;A'2)+$0'.-1023'() ! 1< EHMSL C 45 5+# )4 2'+#++%" +#)**9K$.HH*d\"gl'cj\b#Qe(Gb1?Q=CHBE$15+2 ,/)8.12-#.,%'6)?1%>,;284+( -.&6 0*1+$-$!' $"% ("/3=HI HF, 3/ 1$- 87 2&(!  &#6#5!>"+B88a\1da:_],MfKT:G'8N1=B38),5)%0"($'; -;"3:(151.64 A>"E<5=.<0"(!#.8)3'8,-%$  $ , 1 )).20.%7 <7 8:'*-&#%,/ 3 2'.&(*"&. ("+0.#(/%-92A;L2KaF3kR3_X&N`"NJ#L597(,=&+J4I5<./274>(>72;7+136':@":A8C0?!:!0@B 9*%5"$"%& % ' 6 < ;)39(=";.(4'0 3% )'*)( % $"% ().71=9@.@'5 /* 8.C7)C:4K137>.A,!?C,AG:5E6*>:/@14R7O2C<#P".QB/FH5;>5&3,187:+C:"8A'(=)3!"2 A8*8*<2/,!) -,<.D5M7N1"85*'1*($)""03%' .*(&-**(( 1 ## -.2B6I/V"M50/E.$@M4MD6W:C;"B>3<9B>&0D.9F;N9&D@ 9F';DCB)QQS=3U/CARSK,K3,'8,.>,*0,-119)364?(37,@+:6'32/32%& *&+?%K-J-A' 8 (B ,A0M$,H<$"84*&" +5$426.K 0S*W'I+35!1!(=K>CKIIDU-@T*R',953F%%I)6#KN%F2']8El)ZjS]X3,R8OQES8!4>-+>-@6$.85)0/66/9!2=-*56#,8"57 .0, %+&6#C)H!NB'R ,W1`.3R@<9'20'%,* "/->29 9!H N;X;LPjREZ-1OD5P0E<18&><H"!E'B/G: B2/8.51%6#<"> 79#,*!"#"-'!B""E$KZ(^+b0._@.N=$9="G@62%*1)'-/.= 2:S1V B;KT$/T;[ZSvUYq,Om*Ln6C2'<6$/B+g29+9+.8?K+V+ A)%M96C)!G-%$08L$O#U)'\+(Q0/@#.561=)C%; (:/6#)(!)$ -$4+T #d&i-+c85^L8RT-D]0BRN> / .=36 3-6-;@'.A'!O#1_EHUUcPc`6`aDd(H>+0'&2"p'V.O8HF1@=.7.#8%5. ;-,.$?($? -9-@6"(&C#M"/S#6Y"5P"*J/>1@427"'98?EDD3!=!5 4#O$`(2fE4bP9\L1PS0LT.-38A,V=U<I"8 $!/ )@ 4N.AH;;G;/72--A03@.)?*B O0J0NIBR?"C<#? @3"/?**( (>)Q-]1+LAG?qK3E"T#/)D3I&8>$3= C+2S-PO5GO=<0778%D ="<-1D FF#I8U.'U<4R3$H(B,#@6.B!2U U%b*+e+,k66J1W9^HTS1/?-#VE1OH,M6"J' N3GG?S 7Z%NI#3!!7*/95,.A. J* ;$ +7%'#+:#91%, " ."#. 18+G'>H*1/..12G2g/*q64r?>m87]0P0K*!I:[DP.LY@;j9[b4Z<$a,N5`06n?%j?2V;$15%H%@!D,J1,K5E55a<UIRP$R='`4#f' S-1?!T(;% I: 5)3-82$+3$6 .:%9&1(0+6 ".*'#.!($-) $ $3& 41#8;+P-k04q+10>54eO&PV HF(H;9I'>'<=YODnCPQ9X*+h'V2^30hD\GDP-2B$C 4;!+A29<1W5!RAPMb@ [)!`"H# (*#B!KD#:.*,())/' 9'D .@#: 4;8!$ /,D7*E2+5< *F2^9l$7i..mH*Pd,Mb+Mb$;[=D.+M3#LF1?K>[:R54X>)aJ%Ua;;2,(6'8 ;(5 /2L9J7S>c<X,,R$5"&" =(H%F%;((*+"#' $ 0,!78+?#C*9:?1#  ,.A)#C1 :@7G5TAd#@`19WUEkAGf@:K4*F!U+(I9.BJ5$FP;Q-;YC<^N;YO7E:@150&+&1,(% +"76? :6G9T6U*'K-;(,.,6$I!!G(A$2#$,-!/2'8%03:$0"(*!$ "+& 3)( (%3&"2-74#,K .K >O>T&D<=GINJIdHE]9:P5`)Q?+:8'H9IE&FU<7dLEgZF\4F?15:6"-6)*#*#12*)7&3: =6M+E"/>4</0)3"4,F&G#>);$.!&#-) )(&4.1*46 !/%&#"/%21/!" ((#'3$&F$9<J7H;(S39N-KN*SF'GK*O:$X0(I<4"48I9NK8NWCDdNKj2Vd$4B&?59=%96-;4/52E0&9>>5R.$Q$ ?-45(*9&$$# 4 ;8 7 ) '23/8("2 4%00-/ 2107) =+83)5 ,=/?,;C?DQN/NF1HB39A O)I-\:(XC+S_Pp#Fu.C.,0&83-?,7?-<3"4/E2D7T9@7;E'K$ ))/6'/ 33 &54 ?<#.!/&$604>,OF!>& =%4<'A53a/9_Hg$CW10RY ,R5D)L:#RLOW ?s*7v.%d% _,LH<"V)/V6D2.%,-2')#(,0/#61':!/D*E>/A84?75=*/- ?3P=></H.K$&)* 0&8$!"+)').+=$? A3!2,./2-3 90&M#*I0O 1I /@BGaC2s*+z6y4d'X [!.Q60A,;73F?*DG5Y*eb/],3R'PK%\?5X582*'0'+&8"&-03#98%)@%E :7:?0CB=F09/=9 9: 1B0A4G#0/'6)5%#1!3/@"%1%9,I3E@;94/ -8(-'((1B(2J$6W-S3M9NHH_Eo5qkf`%#Y*-V!4H)68073,7G2PZ&_?aB1J3GB4Q<6O;8.,!+'+'9+@8.02:+.:!;!+9<>%>:0.-./#+4666A:C7". .$(6(<%5*01(!(,=#'B($K)8J58/9"/! !'(( 09"3L)4S)T.U!AI&COTF^nk"Y"\'E72D353':B+KU%O:H3+@8<3>=0247;63"*&.)$)63(61/.02 /,3*#=0#* ./+ 64?34879,"&%*%*03'3&$6$$/)/+"<*'C+%I0*G7$8&# ##&'*7',)%%7 @"'P&+F24B7CN,SH%J(S#S5X7JE41:':6/<0):+ 17G E."J7"B=#(;,#46 2<;39/-".0&$$()*1(+* +!"!"! ("/"-.$-#!!$#"'''*#6(C5(94+8!:7 <."91- %5" @.1/0 -#&&'.9,(:>&3@.3<;/2; )< &G:><6KD;@%.-.'2#9 4%$7;0/88,;6 8E6= 1543 /# 51 &,)$ /!/!.!"# !!&%/0*#/(62$-5*:1I:J2:7$71.'+- 6%0 )&#   * * '(5'/1&% #+&-50J5I 06$$'$ %,3%F" A";";%)/$(!$*0"1"+<,K5R6 SG*MC!@D-.#"! 369"6(@0=$6B$2=%7/7 2 #"")#%$-&' 1 (0 2!( #&-&!&'#1/306#9""<#%/-'0*F,)L%C , "%!$.)5!E A$ :%.-,20(29'-6'.1.*1(/3+$2+"*2 >(I*N8!:647"5&8,/(/J3%J$E#I#J3=,1@)6?/A15 + 3-'&-" ' & / *% )" *(*)( )&'-(*-$!."?(L,)@#'>$=>!O2I'$8+/%" *%8!9%?(707:07-"66>1 9(&:=F=Y 69(2+;'<%?02+ !5C'?4+9&@9'G2L,c$)_,Q 9;?9&;1/-8/$#"#* .   ,&.&%'' &!/3.3&6%C.S-'N&5P@G!R? S8'J0,F02)&%/0(()<&,>#39%4(,. 3'74JATKd A43.)*2)!,"+&185/?2%;%1DE=X1#f.&a!W0GA?(?7%3$, ,1"##!  &   -' #,"-$1"!% +8 ,:"4&D&O$(S'=WLL TK)XF-R2K18.%   %4 A'>'>#5$0 @&82>:NG7L->%2282'.## 80 <,B(7/#72B@<O5%`/c%$Y1P('A!'61<8: =432H#MN D@21B/G,L-Z'O&L +J8?*$-)0#!  & #$ &'/;(%-58+: < 9 N K5PJK,UB6a-7g16d-U,@(#%- 9 >-18 .8-3%4)*& 7/!75$02:?HJMC1F [[!!^V@ 22 ;G?)N5R(!QM#?"(!+!0$/*-3 *!#%$$.&>';$,4%BA; A#J 6CF=0U(;Z8b5a8US>N,UCPE>9 3 )!&$)"%*%!/'#6."K7TP81'EFM#H36=1Lac!d*W$E*9(+"&24!=6+J2@B&8@%:1,70"-& '. 792"" ".!6'B'M1S5C5"7%*@1<;&9+M9X :S25C;<11  !)!, !&/$)9:G C$9:+"C 21K5K+*73)"? ]DD&C!&81!37&.,(26#6<44B2,32$&3%.&./#$53!5"I1E>.43?#>'A%Q&E7(""3.# 2,+A8MGFM=F 5>'.!2" #)"9'9'=&6(8' 3 -5=#@+((,1*%40 !*!5'>01!!     "! "( %' 02!C3LHI8(L&O'> ,+>#J'G$J"!<"%#!'%!:)#8,$KC \PPI>F 6? #0'! !*!,(4 725+6+0 $%0@E % +$$&" " "('$   '("0 2E!,A*1F$;B2+8=? :6)3?.M/,T";."#3+%>:/LN)O>"GA'BB5>$3*!  !&.)= (?)-'0"15 -)8> "L!- % $$*))&.(# &)@ G O+%<(<1(83?+@/:@)L$>0$2%8+?3%@0%D6!I7'C6,3/&- (  $ 2#4(!-$("6$:!#29 2 " *!=B+" (%** *!''$ . 3"4%8"'$&+:-,-+)+3;:)/5+4%3=(CE*#9!;),#&4 8#4%A7$K>:8!%(12 18;< 4)4-4 #&  '2%4$% %%+4'*)<0#=54<69!1A#*7''($(,$/#&5",":"",!(."'  !"!$%+6)LPC ,2'$$! % % 5A"HM!A#12($ %/ 7B A D"G(7,)! $!2&,#)'  $$&.'5+$?5 72%E7&5:#'6(!')$",))!9%<'-%#! !"(#'1 @EH)+),#" +'$ 4#C#H!&M-$B09/0-)-8<DEI$H &<''$ % *(&/%#$'!%5&%B/!=4/@@67C.5<4 )  * .1, (& *#') %"$!% *#'$&3=<%) +/ ,0" .) $*-@#K "N!L,H'.=2,-'4:@G!E$#A$F':'"1") -)'3%42"1D--B1::@:DF7D8 / %&5;:(0'&" !+"#(%$#(')2 *-" 8"5 1-#6#=#  $ "#*$($ /&(CKM# I,&B>%7<31.=''?G!F "I@#7, " , %*- 1 8 7B =*!G9&7<*>C5@K8KA ?:/-?4"E/I) F"&/)-%0# +&('!+ 02"*.4(5$7%9""3 !+ +*)5-2+&*$/ <C&<7 9<$4H5)36!5:,G"J!G @3)%"( 5 4 B D EO K,"M.'L9$?D?.:C/142'*##9 %H %H#EA9+   ) 2/5=Q Q ITN& \0'I<BD7@-D"&>G!=1K>:O@[A"W:&O3->:9!@ ;)=3/*%&'2 ,&7%"A$;% G0 VAT;<3%@ D,=36;2$16!'4)% "%-1(B$2;/7/2 ' 2*; (? BA=1 *%1!:DT Z PLT*a.S,A,"=6!35,4 0:@I>PG#aO![GQC0@D7H#A /: -:*8''-6"+57'4I"(A/T>aO]JFA!*FI+=/4'A>#<@!3*$ %0'1003$('" "$33&:-;1 '0( )4 NUV V O S*U.!L1"P5F% F( $&#2%C4KHcRcTLM 8JJ%B55#3.+0+(038/178$5E,I02_D-fV\TNL!-IH *: >>!9& " * ($    $#*'0+1,!"$),+8M W K] ^VW#])]0P K3&, )#)5?DBN>T:U0R%J/C.&21-8,6*2#(6/#AABP 9R2A[F=dX7V)%C*))(#-05,$#!( $     "+%%4$)"###( +(0'GPH UX Q%S%UP L D?, ! ! ++&B)M##L%'L'$G3->D)F>:+#2 !2)23!DGRV#MK*EO1EZ4=S63D54. # #""*+( /'-%!%  ! ' (' "'#&%% % +BCCKLK)C+ G E OD8 6.# +7B! C.<97GCEN*8K6A :* L4N6ZPQK%MI5PL;!0:4!2"0&*1* 0;':H:FTAF)<6-*'*  8-[6^;XBNQ(PT=G:A;H:2D=.; % ,!")$'  !! !( -$.!<@> /  /3!(" :!? ?+<)<*=,5- *'*8E ?AD#*:3=3CHD@SE+09(/0'$$$!A@*KDQJ'Q;%QB.LD2B9=4.%+*'#)' $)##$$'15*0 0:ED?4*  $%!(").# /#@$6+4582 5$& 3),#:# EL M(F=AD%J7+R/+L%863)+)*6$5@ > 8- (  #!) !- 0" &&+"& 5 (1 ,)"""& #9'42/JVXS*#S."K& Z8<[-DP'3,224B-+I'a+"e2$O4.=/)$+*10-- "!$#!+4*//#,)'0 <5,);;"5560, ,-:%%3+$($ && /6*2&*/%.&) & (/-'*+ +-/ "- +* HMW6U6R3,Z6/a2,]B @". (*"%52 .(& '$# !! !&& 3"9 FRV&KN-F/8( #(+&/# /%1$%! #+#>%'F 9CY>IREL5;IB+#9#6$/ )!&-,*!1 3.% '#"%#"*((, $   %7= BPNR W%R,D0(* !"$+* //!#& & )> S0-:2.%'H"8J3)OZ,[c1_k+Qf1Pf;AgB3005,5-'61!2/!'#  . <66 2&$#+,, 0")& )! +""$ 2),.6 ><:!'3&-!.%),%1+4*4./$5(-209A=E!B?/9*4$1%(4938C>8GD35I$:C6E')>%,0(7"=8G@$B?31=A:@I1;A=:,A940.51&70+/0.#%) 2(3-6*/, -#!15 5 ()/"3#* "$")%-$ 1 96#9--+-#$'!8)J'D*C28#50!+- 1?HN(VX;EYE@=E6F4F.53H:3K3)B/78%7:#/?#0.;#52,;A>I;!4I0AEDB=;4>9B1,@5-25;107/@9 :7%81&)22((.5%&,9 7!05(1,9'4 $-*%.)/0 0,! ""+%9$34#$) )?'Y2O9P5G(D#=# HMF[6XeNFf`AKeJ`$AW?37Q0$K)!-066A0&7<M:1S#DTM=3B<@8;H8+O5,<*9, C6.4%'./"<58661#*1.#%10*?%+=81.+#0.9I &I3K-E !94'*' **%#'%$..3),.**A9A9W$4B'J*X Y;!U^CWd_C[{-c*gt2EVF,8K:(#?"&D6+SP%`M8j9EaEQH60A7C C;O2G/?7;5*<8" 7):2?-;,.1/-7!:8.%#6#2&3,-/#$,4C!T%c".V,+Q:)M5!8D(A9$1)-- 0 1.92/&$+=C-?C.P$ ]0+[KC]_jGg{8l2T}8LS?5@/#,G0)LD&\IjR&*F+*&; "M 6I*33C0P%"R#E58> >5<A$N#)H$*E$>03? 8&1.0,(+/.%()).#=!,K)[,e&-]62_A4[E.OW#>FK;/8:&5+* .( 2%1=-N< [/!_TDOhYEds&Yv'VN,T.7<5+* (1+>=>@:!#4).-7$*3#-%F*U+O*G*D$&*&$10:$&K!&S&I%"Y'0I:A;,9$29+&I(.B++>/= (51I0`%9\=5WC8_?8_F4RH1?W O6. ;@ @.&&, ,$)35C7#PU3IeT6]gTij>-\4)G"5.)2)::>8B1H5E:C5-*#L2Q0&O,D(E+9!"5$A68F!#P Q(X%S*K23,0.%&D(I/&T-&O&(> ')"9,Q 4J10P@7RA5LB2FD(1ICFB < H A*,((!&&!#+ '3'U,/X,&R@"QXdt"fI1a$)1>1%09"*%-!?6/I=,O2*W!$K.&C C,G4>;&'J(S*V(S$P&8'*235$@+ P)X)M> 1/!E#G(5H+7@.4$#6CENMK A!-&'$#1"$:+-=,4<'9R8Y,$U \-kBm/+S.2:90)B,-5'6*'+K=&YM'UE2E>08\9V-J()H+:E.PH2T9$S94Y4?U,3J!:+7D1[,l/tn\L5#,!5$K'O+F#/'.)5!%!9'>.= *8#-0"71/) &/%: ?II =/%#3#C0O05Z99Y2D[A CW&GR-?D(=D>9VE(`?8ZA &"8C2.#-'**,.)*/'*)0'+/)3<+7? = :4 3@$M)&^05p7@g6B^#6]6#X.(Z$=b:X&98U48j>5O"?/@("; ,F;5Y"1] 1M%,E+5Z XF47<<2BRM7Qd==hF$cR'MC#W;#]6 EC/S `H O@0=)<)*25/ BO"B0152'.,"$#.)32"0+ #% /./3#8$D,P4d#2o,>p.4\Y!RXVH,S?:L'GI2;.S7#b7.I36&>9)Z.W&L*$?-'?))KJ 9%:;-BBT6:X/<^?.THN<U/U2A6-??IC-2' 0(7"C'E!0B57"5;%8+ +') ( $34AA; 7: *G7L1Z-d#4WF)Bc)Oj%Wk(U>-NH56M$41:8&5=&16!FYU/ ?0*'6$?C$4(&$'+93.R-5S4,D:R=Y1I1!'< CM E - & *(4091;3:.&8/3!%& #% *668"<: >I*M/L @Z8`,=DG&#C/T6W1<%.'&3 D@4 )-'()/!/'1%$+4 &"$&* '.&! "(,7.*(48.;+&G$+N@L =EAG5@WWIR[LDW=5R2+S->9#+D)6;$7;$7M8X#4U7+Z1#80&*0)?(07+*0"%+"") +'9,9+?'K H<#'&0A%&D'6): /#* -/,)(."+(&* 00.'6()#1.2"90=30D/9I&DEI8!I(8I-QO2NJ.S;)J9-E4<>/7+<6KK AV6^$*]/5Z.-A!,)9#.7*0 /"7<A %,."5;:6 =.A>&4.%+1* -, >"D'75%1-,!2'0/1 *!)+ +$""0&32>5 ) 78)4)!4-+1.,6,,@)D>)D.":!6?FA&IA7$;//75?@;348 20J3KDBL(6g$:e+9_)3Y>+/G%I!QB/( :/E:*@2'L-E(B/6F/N(%"#! %"%#,3,,= @ CLJ! F7&#%4.60D)C' A?.5+9567(=P%4a5^/`% RZ 0G*5D9KQD`3S2a"P+H59@)\3$^1(`"-O/;%"%"$11:53C1M7A$-@9&2;*31D4J3F9:A /S3'((%.)( /"-/"!.#;% C%H>C :/ . )"6+-90,G$ KT(E5::@2P21c%,v/xlc[3U6J!0B"::>C3L! V4 J:FICB@Z;2[34Y6J -2(0>/AA+.K$(O/J(D$$A7+9=&5( A-AD>I-!+&*-,3' 1#)7'!6(,5;/'4*18#:6(A,: %8 0(& !/%8<*:B*(T0&V!0X#9I-K=4P1(g$xo&h$a!5S8N;G&:C(5@<;0@!D'F?>L2=@I/8V&3T7@2(# % +7+A*%9=&2N%S"#B)C/C&5,%**%0-/< 3E0-*,206/5+69$"6(07(B9"E7%C;/>@08,."% %$7)96+/84&0B)0J1%V+0L(;D/NC3OC-^k`3f1ZCGHB"6I*5K):D"== 74:/ ;C9C78F;,@E3<:6,*#?&E'">=4G%L%?;6 5 (-*!.*%0/<*+&*"*// 3-#>5H'/A*;;"D9F?%FB!90 ,'.<9N7=2&-(2)8/D2$J)1C(ID1KA/B 2FA\9W4N<4'4@%49@:;7/* 0#7525).>,A4K/A5 1*$' ,*;=*). #6%#2$-,$* %#"$'%'$""$+,+ 0* 16:-+>=2?$>>;7780&,. 50BBH8?%6"4!'2*07$:>*1H-69CB@7/10 "3)43#&>( <2E;96 >/,#%%0("'."+(%  ,"0$-&!"! *+ >7A:'93'4./ , (  /1 E5K7O.@ 6'6 +A DL'N'7<993$#60-A4.J6;:5+)&')(!1((" 0)127: ;;1+0!5 #$(%)"#$$ ,"/*& * !! ''(!/-;4@ 2;)$!) $!?* P.N,D'&;+(3(1/2: > +=1-51-<,#?.6B4@I@>=F.%025/3"=+7=> 85(<-!2, -'(!#$&,+$(%!"!!/&33 *,5., *#0  $*%C!H-I/:".@/13+/9 60''&.208.'+#1+)"7,2>(5<193,:!3 5$ ,&#-)(2$8"L.#P'%C47A6'C6<3 .("'# $ &' %04&&-"+"*+,!#' + 7 E6I2I;5Q)!L!%=!". )$7!?C1D(*? 2J/28)57'99)4025#/:'5<+7!,%/1)745=4'7*;,#2E >$.%.-'.8B0!Z6U2,L)G/"I>$B>$9!, 0,"!2*   '(,## '&%$ '0':($D'+Q!;OF0V8R:H$D"7!"#(5.&2#H%M+@!,3);+63!,;7<D5 B8 --4'&7#-&%'2*&.!7'1*1#0;3=B9W4Z.'G#D6 L?+I7,-'$)- !   %(#! '$" &$%4,";+M(+V@FS<U<VC#T/N+9#$.! &$6 F0N%F%A!=240(@ 4:F0:3/)0* .0 !3#0'/+6 #+':+H6N;>N0J''J"7BA<&2:.'%%$%  # ". ' 4%"0#0557>"Q4:C;Y:!]4+d2,b2R5<1/) "3 >. @-@'=#$7%-++()+$7-#>',@7H;8A=K%E-@$8:I)B0.8'>%F$D*<%5#"!*" &*   #!+)#*)-""7%8$6D<EC,7)B!>A4 ,4=5M+%U&S@8,' "! ***"*,64I G:*0!: %D"P%K,6)0EQbh&U$K#!9)&1 "-"#!/*:06 :"6 #/08"4'3' -1+2%7"3+ "",#=)K-%P.!1&$-6+ 9? D1Q0X+R#/8"+F;-5$3938H:3;I0K/M&&a0,]"/J*-4**3!7!&(#76BFJE 8C#?!<#1$ #" * 3&23:@3G("T*#D$ .' #1)!#'&&.- .05"@&"F)4$," !# ( +%/ /$J7U$JK*BK?**C--B0 6*47H*M1+Q+/\$*O&%5,%/ #&#(2)3@1HH/IL"?H(A -/#)5$7,8>4E-#K+#0#."% '*!2'+.! .(3(,'  #$!$"$ $&( !/"L%#Z6U%5T1%A=2<8@,<99 H3(V/\,D&% )0,3@.5;9LB0DG:@ &>J;I.JA9M-['@ ( +.)16190,D3/D6@C4<7;!(;#    ")$&!%5"0C#2;(4. $ %2&E#! !#* !  *$4)==)<&!@##.#$0-,!'&.%7<D!B3J;@E+A.Q",L$Z90 @%#G'6! *$!-0&<3&?3$:9-==04"%( ' #&&  #"$4 !6!2)+%!$0"2#,))$.$,', ('( %+>&5$*,--"4("9#1,.0001,!! 2 )JK!C!++! -/&$"-&#:&="#9(0$0%$("  !'9+  $ %"))+5$6(% "+4)9"$?">' 9%0"-$+&#+$)0'-/%"8&*,&-.!+5,8)4!0'./92 4E3B62 6< ;7' -+*4 4.9#C$< 5)%+"* ,1 ,%+ + /5; =1&1 ;3:$A Q J;+$!! !, + .)("$*#%*%72)41$90B2"E6'2/!+  '(,"38&39!<,<+!+4()'#)""  ".*B)I.N :-#3&/%)  &$&!*!( 06 IA&5 -#&*8;BDQ!K7$$  +"*.!$++/",*7*+8.+C,J,)N0+9+,(*# ''+10-).$(/ &2)(.!*-!$$& (,;O&P1D6(;122 )'   )#'-%67A)9-2/)+)& , 3BFHL;(  !"+,.%&,(,#)5)%=,*A0;B9:1783'4( " 0.'4,2(* $-# ' '!!)(0./$@#A(>7/;398).& -$ !%!(&3 <@#9#.7#+0/")*3 9FC@B8)$ % ) (-(&++17&,A32>3D6:I?CGA#@*  (2 08!6/"!- "&&-#21!,3$8/2:6 ;6=8)#+-%'((, 6< ? C+!=. 51*,$32? DD%:6 , )!(( - 138#:,( 2 *2 ,:J J GM#L $F* =9I>H; 9>*@?:;89L2V7S6P/&:048<!2(""--&2+32'A6$M/#J>J!"E')5(1"2: 0-0(".)00#-6* $ 0/'4/**6*,%$+"5 $7 ? : 90!'  9CK Q FJG"J'O+Q2R0 B-+.- 1.15F4P>O=>@09 K I:)$!+,)704<5A84S$0M O+ V3T3@5/)7/ 9,%*0 <*$;(7 )"$% !$"%.&'+2'  '29 8&1)* "!'%7JM O NQPVW,X0] Q9!3!#&+8<E@GB:D+AW.O*"B#'#138#595@?G.7U++K*S+(i9[D?C)';2 % #( 7':&6#1%!+(%  +("41.3 '" &!0.$;*K PF Y[Y%X*\_'aP KE - $$+52L 1P 4H&,R1V<G;#70#' 2!"9(0>;5:R4>V'+BL"EG$5$+"37+5=.ELOSMA&IO0F].8V'&?#*"",21($#"/3):$  # $8.  ')*$# ': 5 ? S XS"T$G L IB-=-:,?( A 5#& 3,;,#?CAE73[ 2W-O & #"9.O7V;RCLE1VM6TN1ES(8E(1& )> 1#,$&  # *!'/:D < .   (- 3 !*!"& HS MJO L 6 9 ?/ 750. 6%H E ;:004899R82^742939 ./,& ;/X2c>W:LE-WM1V<1=G33C.6/)"* (2,'-,   !% #5+5*3 %C I'G : (   +68& ,A DF%#B'@*=-8, 1(&2, 4*G#JS "T5M%GC5ND6,F>7D/7-,!  %7+H:RCH:M<*Q6*D. 5'!,+!7;. -53."- '(#2=>CA !HC >@9'   (, ".:$8+ "91562 %. $$&. )5 ,7 ?3U _e#[*^.$_5*^82Q.>B 5)!+55#%90 L-#R&"Q--N643?2(920-$%&$3!)1&%-&!'%*/%#/: BE9 <"=B D>2#$ & *!%($/-."6 8! &(0)3#%#% 1&2 */)2 EW"^6 eA&VC(]C,eH1^37T0;G7+E69,OA(\0%a0&R/:C6,+(;2,?'1 /,6!:%,2!(0($% ,&&7>:1 9: =( ?50#'+, , .. 6"<4":7#(3)$3#6!)$0(( "&$ . 7F')@<#KQ*ME.aJ!S69cJ6cO7]H+PL49T58V<:Y@BI;577,"@%R HI(E-YFcP2YU3NX;DPH;RG@O@KJGN2KG$C*19;A/1**!$ + 2.(  $)!++& * !#" 0?> AI O P/L5H:71!"/9!#! (  / P#`&8Q=E.48,HD)[T/YQ0GY>+>*4&($" $&3 $"'*#*$ .) !!#   %,( 2 <NW$L(K(@+5" ")#&""%) 1:2/  10$,76/@A[.CH0@>30><#-B*<@GD"\3O9.W51Q6+@?7031/"2,#  %")%$.##'#"&+*.2 . ! *"2'3 @GK"F$A(-5"30""")+05/-.''!= 4@0G99,,8;%7)#3<6)J@4AA-5F40=+2)!/""%"'%)3+0>/C>3J9.M>5J=E=DF+0, >G? $5') 5$&<*/L8W@]27Q>7CD+8N%9C;78Q84J2%9:!.$2"+ !".!5:F?3M>BC/AB5?E@6HCNG :7)=!%:(3+00$+/%!+"(2#%-#A"A< .0&("-%$ &! "1> :)90C87)/%&9P#/K+7L*0.*I%U7FVLc)MmD@fW;Ve5Nj2KU;5BO657 "7#D22$%A?''C/6&< @9"N26L;2A93L5 V6 ^4>+;9G'R(B)C#2!' $# (%!7(D:96 4(.$9<$4! *&& %'##60$:,1#/$( .2-;6H/*W)<6)O+T\E^Z2PhSFcp:tv4f8X^;4M:.&% 10'28>)>NHE(Q+,E!+("0B5J4 H7N$Q&K4D=14 6 O%P, @<0 &/$#*("8%=# <.=."5/ &:,E6G+F)'>$:'*?9 ,",6&+(0$1$% /% 3+'4"=%-51C+W%*eJ_m1ZbWCkqDn5gd)NO8;C+(#$%#3D%?B(MT`E!3#+9=:I)M)UW#'K6!A?"!9(8DIJB>=.40%1&"(%3)-.*56 600%5.> .I5L!1K)7T**N1)AA$09!90"#1(:):.',6-&!('*>,,UA]Ja]3QfK2ni2Vm(QK&J2.A7)(4<#G"+O(Q J 3 '*BNPZ 'I-@"+6#&55/? %D HK X &P.Q15* #%4"-9*.D,F 'C+0 *G3V5R0Q(6^26Y5:L:+AA >(( 8):+4),/-$$-/,(F9 Q;OM":\C-XV(_Z U=/P" 5,,.+.1+33G3J,O'M9,%4,7;3P'W3R!+C*C'<B3 &F',P*^$fd-c#E'4)(6 B$#P()U+F '*)'9%H(G-O$3Q'7S-4K56;9$ : ?5=P I/!!""20- 1.'H0L%.^@"h^qnb3a$//>)+9.40",5%4S6>Z7,W''B48F7B*&E)>U/S@2U#'U//M/3O/?A$8J!$`'bs!o cL%:0%6# L#S$P10,)'&3#A+K8P%-F-=B/9=0.37767M S O!6$ 6.2/+<82K/4L/R`r#v2r 0W!3P/18(5'&0,)6'9G5/W9#K>(EP);]*5U01U/.V;7W9HK9K65V1>Y)AU4A@:+=/82(1.5' 1 $@ -? *?/@ '6(.(-'6,*F18P1>`2n#m~$y,q3/^:&VG%?4)-0%!52*8E-/>;F;!:J!9V0`%!X2"U68]@AIBN5BZ45p4;f8EN1E:2/7>)M eik\(G6%-#%)) 4/. ,&: @8#.&-#./!+8%170+?(0.%84)//,,5 %8#36: >A'R&1U.:[$2^&0e0"_*'j-0x2p$1XP%HO2:<1&:1 9;1.3J /A!-G,S+T#M3D95JH3MTS8Gd/Ew48f;AE@GH.&@75DNSX[L9&1"+"(##/= N?,7.3(3(&%)##!,0-(#)"& 0&."4/ 4HQ(c!2W#6W*+M?QGYL7Z(E_"0d=:NK)2N+"C /'8(0K-;)%>.#C"E &MI%64&BB1CBP>R\#Pk0BgC)B=4F/(G(+7)"6 9N NY>"(%-8 $B27 55 /@ (D%"%0+&*$$ *1 361: "? G%S *T"X!.G:ZNi`*`hHW)G2A"$D$H159#=$<)?&/(%0!9(/ .*!( &+')'F"2C>C>J")H? 1!$;?%6-/<403'   *42"//6# "),*"!*1+ ! ''-6(G'P-$T.-T!6O7R 1H.5MD:PW:O[9FC)2:.3'2$"912#01&;&):#5;)*<,.#! 8 ;(/- (0!+2&>.0A#5<">;)%"!6$6'&1$.9 ,= 81$ ''#$')%%*.!9-;4? 99+ .@I3P=0O9;K%3K<;42+2;;;6O9-38'9;1.9- (,0;5$3B!.93?)A&= !,$4%()! 9&)1.!".$$2=<2:/:'9 7&0-&81*:,A;&!8-2#1. (%!#(! $+6?6B=MD:,0" ; B'"K/,H31B7.:,4+0"+3$.6;8/8&3'-0'3=7,,8'/4/54::AD+J M'&=&! ,9!?@%<#6%!.13:;> 2'#;2 )2!$0%&4%17()1%0"$40/7;*/3%/#+' &(""! !#2&99=@5>87?>!9&$2,.+5'.?-<&)9#!"(',/H-2N!*K/E:1J#:,*.E=I"7Q%(Q%C*6%+* $9G-H$H"<9&-.!'?#/9$9(,8(=54#0.11515D1%D-<'(5 $A$-(3(.0+.% 2 -#''0/'6"&A/D A AC!< 2!/9& =?= 4#)!9-;-Q,],hT SV E,9!382;7E'F"?,@</@1-=L/K(S#$I>/% & #0064(=')J#L&>(0++"++)G9 P&D4>A5*.%6$(%%/7(4-8+-62F#D":>1&$8#:';!HF#@(,4-?#1F/]!'jg c X"g @UPBI>5907(3$:3 4N1X13LE!;Y/Z*@3:,,/(6:""3<2,E$,Y*/XG!>.'.*0I O7AC</)'%*+#!6%:%$A#.?**@/#61.8"13'+#  $ -('!0+%:/"43"D.H*&E05D:A3>D5?U$b k !g (k%9XEPVM!SQ$7M1D0D5+,B$,N5,XKQU3P-A/7):!8(7?960*M#+T'U#D>$8*+'.$ >. =972!3--+2 6'B)/F!@<A;3G"1F>/ ' 1#F+ H2(I43;*62 <6$J2+D58==A4DC-6K'f6h8d>a?TFB!EI>H3J5C)4(1$:'G.O5HG]7%O0)@)&2'+0)7.&?/18/=09?'9F$8ITRPQHS@>4>=38;62?#8J*7!(%#6;) ?' F5\7M801  01'72+6'8*2 * )"- !   *$(!+%-'- 2-D0-H4G1F.A:1# )3-= 9<PE Y8G->1>($:'0#.'2,3<H0*P"'Y2,aA+V>.F&CR!H:)0;5,=*()$9'=+ A"R1E3Q'6!),   #!*# &%)"!!*2   4 /%"$%&, '#) (&74 >($C$!8*?3 %$17 0< M; Q9 V1S7 ?6? 516<?$C&*E%+P7T-4Q"0KVG"J6*1/ '(%(.$6($L1I,>(4'  -!# ! ! # ,)&)',/).!& '1 030&/5 ' $-E5R8 N-M.#G1%D/:9 48 7"6'30B-8H;F=@L6$V;1P,.;)#!"#1(8(>0.75"789-!036$$    "*".,+4"$!".3 7 /-5+"09#2-%$ (+.A* N&T)J.(W12B/(?'8#0'.+;%9.+$+9,.6E3-M/#F5P.M1!H9!7"#% !(**E-+E<(9>9'.F;">88%1- ,   &-.$+((# !% " 2'#,$3.31 1!C""C$"1 " !)+ 9!: I"R /W,K3B*J!)2$-(&41)1#6+!4,=;#CH.I*!E%F2&B9.*/$)#'')34O9.MA/7C?/0>C 5=(.(86 3$'% !# ) 101#&$(*-43*16<7 ?-J.$I4#;':( . 1 :LW'C2;,C(?1$ 6 *;607*10A5>6)292"<$0%)-/)2*02#:458A6C;,<39-#+:<,%C ,34)2"+!!4-7)!30$0,'$*(**&*4!!?=D'4508/&;..(44&.7$&("-+   $ , & ##"%- *1&/)/%+!#*,)01 :>R<a1a+ ^-%] %O,>$& $$!*6IC&!5$#42'1(&",1$+-./:#/7!.;,-(@!;D,@* CH@ 4*!-$;(#/()!+, 5# %$  "! (%&%% !%"#')+0;9 A/!1!'-&+"37G<a:g+0d,2` )]/V+C('$""' -4:&- %$!26!/"60;=4<&? KN!P=:6 0 ,(- ,) $4)"%(1(!#!)0)&))( %!( ,,<19,4+.#.(4/B8V4%^ 3i5b&Z4L!$9*#& %* 8'00*,$( '0 $< @D7 23.K TUa!U,M#-   )59.# 3 16.""!$"-$%9 ;%, &&## , %),+8)+ %'$3.;8S%+X*Z *X"*J*0A.(0"$   "$ $%-0 34 08+%?'&I P$?+5/'GV &O1Z1H,7,/$ "$(,&$(& $0 (1&&(1 41+.,6/=%%C@$96 !$&"6* ?+*)$4 58"$K+T"Z)J.-:1+4- .!    '/2; <+6'56*13,?."K$B0.48'"< <*](9Y#IK!K #O-E3&68)/  % !3; @!6)5;->G)77%28+;C5:59(B)K)Q.+l55j)>U3.G2*$5" :&,//<(GM!ID:G7D8##&') $)7(5 0AD:&Q5+T%&R$(H-9 '  !"+$)*& -9*@*;$?/;056 "!#)#)(+= #7A'N,0\,,T3&9:,6?)"@30F,#N=%[7(`7&\1)G1"$5"2*862>::I7J@:D75>,&.#  # +*.7 &11-8170$5/%$ !& . "= "" &  $*' '$. 9& >5:6!82&. $ 6 Jab"V( S=GJ 1F IAR$>M==O5 ^*F%#)+%5/2/;3976/@52D3510,'"" ""% *$'--1;!&>.& !."&%'"   $  +( <)H)B3G4+4)(.((&+(  1 >PV, T4 SGGH;I/]1]?S/:D.@ 7 $"&$-((*.68/5-=2#81--!)  !)" %"#."95#-!$!""*.'$4 5*( " !0*5#7-!:0$40)2+-4 --.+$+$ /HX(Q2JPPFFF2R'T5H*45&1". )-*1.46$"0D+?"9 @(7'5+ () )&'#! $3 < : !. !+5!>!<AKE 7 *  !"% %(-'$-/-,@+%C''=/%I3(I1-/0$!   !*+',2*0.$.+.&,$-&10 !%)% %#//J-Q3;M!K5?7 0, "'#)* *!%' 9%;6!,(+ %' 07:>>I;.!  ()!$& "!$ 2$&9#.80*;/781=231* &"  )1 2$0,3(;" 6 "(% ,$/'1&#%*-!(D".H33C&H2>31+ -*3;3""$,57$0%!, 4 $-.3;D C:? : -$" *   #"$$-"/0&.3)2-->11E;-2+7:)$3 ./:A E9 1)&#&, ,"=!(76'5!FI)E E4917(1-#(. -.;/5.91,J,-E 2>5>2%8'H&M:.+'0 #%"" +/$94((8-3 (1 98 76 3 *&!# 3%; H"D)N+E*;$8'B3T8S3 =; 6D+5)&8(D&D(O*L5;5>8 7 '"3=-7 ;0R,I%:"B %56#=A9(2,#,*))#16+ ! & '(.##6,,$  + + .23," &4 ?B"D@'=/?-P1c6V'D*72%.& $(:) I.H.<3 *5CF$;"(!5<.;I7 R.H% A M ?,,.=>&$+**&,(6)6'#$ !'1- "  %02&0% +! &" +>; = IJ$L*M- X$d%\ LA 8$  (9068,<(@S9N4A&%/-%D48N.G?'K5%D$"HW C .',3 1* #& 4</=!",'.(&!(!  (."/'/$ ($( (.!1=@Z#S"S!P)%Yg ` N LE 9' ")<B*;5$PNIK :2(/ (/8I8?R;RH9N:AE1I!MK/$& B2!+4*)75$#.4"< 6=: # %#&%  $% )#&)&/&. )$/6I\V V"!M+$NU X B$?-=/D : &!#"2%A8"8F-9W 0YF"5&@05IEMKJL<CG8X"(G/$. B>#8#/)/*$9"% ! (+-*;4& $+6 6$-*L$YS!O"LLG A;3:: A8J* K( :..',"+0+C)4L@*h('q'& * (. <8E>N=O:H3$M=,NC#A:+$5%+#"#0 8= 8-&! # #%+%,*+$A%CB51! " ,4 1# #&*E$T"R#DJO EC/ I? CC ?; A. K1C* I$!E /IC@-TM'aN.70-4%3&/+<.J0T.L0 B3+P7+R5-B3&.7'4"1-$5 9=6.   ',,-.-; I#GIG ; & 474 ! ! 8B B CEGA@-==CEH475 ?/ W3Y+(S A5 ]4^!\&U /l13l.6Y>?G)11//,# #$0(:<9@9I6K9!8:(./ 9 0. = D'M)?,   "-4"D$DL!H NSOC/  ! &3EI, >6+33* &.$$"7+:.6G=X'Z"g'_*"f1+e?AVB7K772.& &','6 80C# @ +?,;5C96: #5- -'*6+B+4(+$!- <OE%? ,K&JUQH9*+(   "$!' 0 @ F%9(**-%)((+".%8*/<. M ])'`#%Z3%VC!]M-RH0N>*K&+:*-)A#2J&L='N+$F-!B-7./1+,@$HH&3!*").#34!*"$ $;BC)68F%IJ IB"5 /+.. # & #%)%2.+'$4%B)7! +!!"!% )"A! T"P7%DD"LHQM#LB6Q;.O/ E,-?8719@6EIAN92B?&;D5>06L;O%*D ':!8 56 '   $ #&.&&0*+*!*858 A@"1-7" ? : 1-2.)73:8503#0(7# % #/$"-5 3]!7c%D=?E>7G,$?,F-H3I5C:*7( / ,"16((1"F+b!7[$<\0B +B-I0#LE9FbFC]O@CB'8C9H E@C@04* &+/)1?&;b,3e-0a.5I:*F$M-W0j*$d<dM3,< 3-!+*- "&.$"%-++1,+$  !) )5#GO"M"-M),D,87#?,'&($ %%-"%-'%$!'"#A22H?B9 ;D-'> 8)50@-;C,,A$!;$$0-4 A*1V;9n8*f6%5D+$J6>=A52;(2+" (!+*+.!!7B 6;D A*"3ANP(,D3A:;><6!)0?>> ,$ 3%./&*7N9XNO#LI+C;=6-D/?N0:AA2);+"*3/* !"/?(,MI/I9,0$3$32'3.)"(@(R4 B+5#$!*+&! ##).5:A4$5%: 3# 0<$<%!@/4+5*3<=D!=OG)MbGg9NcJGViJX\SVZ8;<+$%414=6<2@$.@*;"8#."!4'!6"='=);&&-(%*<<>S-;TD7NU9b&?_GE\W2bA[;PB7*- CR W(j!c%W A// 9G.'X&Y&R+H/Q#2E,0=A%/J&K&F$C$P)V!U.;)#(.%6/A8H4I*-&#/72A+@,C$-I!6G2G$(<5%)#'%+.(.)#+4'@%)+, 395K1I)-L%EM4S*1U)T6\HX7F0$8E/J(B+W_h[P 0.";'D&&M#$3$.4%3(';8=(7O/=[6,U5#L@$KI7A+&S4+b22g:ED1N'+K:XDR3J+%7:(3K'(M*g" r tk^A*+% 9'DA)12"0290,+1<8H'@H*7D$:E7C%:6>/2+&%&* 2 (A19 -<700+#+&2 &) 7< ==6Nl{$u(!}"8^*8V'%O%,21$5?4S,Z1+UUQ^@_-Hc3&}3/y67q8?T@I! ;2&3B2$P?BCBA8D @=)D8>$#-)F*=3E= G@J>@8)4%>.E+%R#)k,56(**/"C\ _ cceB5() -:).#&%.6: 22$%*;'8A3? .741"9%".! 5-41"8A 4H7@(B:!H,K3-P-4b/0q.Ax>vFf';^7,P5<:)2(9598!*2'H.@A/Q%O.b2pD-bH5SFK>`a)Zk+Ga2PW*TA :)'+!2B JPXPH&<&% %'$/7 1%1 '/-+(4*4 -&-) #'!-',%/0'+;*L )WNJB!"D.L6&VA0aJOi'Kr/2q74S01@=!09'2 6+ )($"+)!;8(-.$9'F$'F-O;*T<'EGE>^a*]d$Tb-LR'L<;5)'"!73NOYK &80+$  4 1++ 8+ 9- '+$(& ,1&1''%6*935J /H*Qf] H O1ZH^R9XUJ\0Hd&6j0%LJ&EB8H ;7).+:#',!;5159;!>9!BC2D-<$+%('%:&."#)-)'(*&19 =2!,:;' * /*4!7>#7*+'5!64 -.6 ">$64)48!J'(S/0W4"Q#%Y*W)!T&*cEYR I78:=3?0&- (3%8!93!#'&-%)3#,**162!!@1B!F? <>%75%' "%/#'5,,@)/B D6()  $%2+(,".-"4!+-$5# =%*-6> I D ? *0;&U12_B1a/-\'(G'<!=!(DB#8.+-"/#/%) #$ '&+."&#&& "(,+2/-+, )-#!*!2<'$F3604 %,"%!,8#<""C"E @'3( - (0+2 8,#, !#.)5#./!83"EQ!N%P $< #(6)N+ U>#T7L1 A#"('"%0(&$$, #/"/"9+1%(#&%. -$ $((%$!5&533+,3&(' :1<2"5+'2.%#+')'0+!.# /$6"#9++/3) -"*"/ #1 52-( -(*5-+8@#? HK C!0 #$0# 9-%B3&=>80,*$) %)/7!7*%E $C(19+!1,4-1--%$&") (&9+75$;' 4'?"1&!!$*&.4!75":*3(1.!+1'&21*%;#"5#"&%+)- ,1 5(.!4<0+)5,22/9%?;.* #& .3# - %:%4#5)/*$B1C$J@!:? '06.<*>*.(&(7"D(<+67E";%5+''%'..)&0,7'+C(A 3+" )#!/8)??>+3&"0,8:* 335 2%8#;%F4==)F7#! & '#0.%54&=$ AJ&";/1/0;&1MYN' S%B5KY;[?X@G7.:,"*?.G,Q;GE#%A$!<:+1-,6% ="!8"$1=*2U"/VA6$&"% E N!G.:0!3%30(7#.#9>'!@/&@)B&-:*).2+) *: >1:8.#-*7'F, H67>>86E@%Z<+6;">?+8@3@ P"?($4L AY/X FA 1  #CH*A34 7##-%&(+*"9&$H&/J-6E")A(H&:( $)8- J4 P&+Q4(>9'3+8**>6*C=1D<5398*3+#)= 7W:V;W=_'HKQDKR4N4?$0,& 9"@( M5L; =7+#<$6%/%9 $@%F#>%2@)7H(C@:&/$"! &25 8",$02-'):+'M 4S!4I5E$J !7$ -!98<P=Q1R;G=?2!@-+@%4B'=>'270%--'>/-ME1QK#PV-LD.@51F5*;D1A 4-*-* 1A*G0K7'D-'16%"/ )3#3'8(*8'$2/-#$#4!7"0* !,%2!3 4-,!" 7#/E3C0C2>8(( %:&@ 9BL9S5T=J>A4L!PA"6,("A%.UHW,9b25ZB3V,IS'DI(3;((2/""#' .7!(?,(E4!D0#4(&%&   - ,2$$2** # 2 '3#5):"7 $#,".%, 6 ++%-%$7 ,@ +8 'C :##00 : 5D G?J5V4TBI8"A'EB?+*?*G8U#Fa!D[+9T [RX=+C2*1$%$$& 08%&:$.=6&D4K5-=$$&"-0 !!"  $+1- $8AB-' "!#..- !*,/- 4, ' &%,>; H5T6V8V3R%(G(C#8.%&)..256@+EN DP>OOA_@bB&R/$6/ '%/#4;%9B3,E6$61#>,1($   &'0.>.>17 , &!$."1(+ /,*)$ + 2R g,`2[,'S*,L%E )##34&'6;")B82AI3/G3"K?"`5cCaFL2=!3 11/5O3O)S(c9Z@I/4+&!# +"28*5D*$G6"969';:B0435)' %(7!8&2!(#& "" - ,! '/%!6%8$ =5$(00)()" 4 GR Y$Q -J (R.A.6+%:#-#)22C> EC9I/O&T2N5:2.$+94 04,/L5'>;!44011;:,84 ,#% ( ".$2&/"+-!7!, !+$'.&0%!%?#"G-M' NN "E$?*!$ %$3=LK!J&>L>9=2< /'#""18-=865 4F/H $> -. -2"/#5> <)"0&%..&/( ), &9+7&70&  #'% #* )3(5 1&+, )%+&,7/J- R'Z P NH8'117BE 3(1 41/. +#!# !,,$!;,)4'/7#B04.$$*'7A; 7 /$!&$,!)' -! ( 1 ) %" ##'"3!?/5.* &&(*"-6@: S1^"&[,[!TG9+/ %!..( 5!93")#)),*07%2 2$-, ?)B3%6 = #<3 ,   " "&)#(#  )2&(*.#( ! (7 3*-0-!(++4 B2R($X(Z)W(M#A2 .+) " '" /3*+ %0&'1 4 80 +)= B"%M#+P.H?<%+.- !% #" +!70. !*0)20+GL4 & %8 0"(*-!!'/38*M%S %S$O(!K 5' #$#" & 2 &3'+!5%&; ;60*3 C.M5R6D69 )(#)#$%#$ &,"#" %%'" $-&7&0!0*&)03."K(M!L!-#!$ .%&$ #) /4A%OM.J A/"    "&-) 1#7&9/?=8=0&1'.*6B A1Z#<[ ?O(4;.)%,)(,&.*0$6,$3%!- 35%0 #"$ -%( ,+2 ,:;6#K4&R&%8"!6 + &$   "! $ '5?B@C<$-)$ +37 !5!F(G#':6B)7?5(366+@*"I%.g)4g//Z1-C7+09*80.6%86:B019*+6'6 8 0' !!&'-#4'5$<?<)Q7)6'*<"@%   !&$$#$ (/+4 9;#;3/ $## &!0=8"? +W+g(S*'O4(A=-:!8&6-)I0+\=%a:(^7-I9,15+>7GCQ4TO%S<M+O$C+!++/40?"-G%-G+)D9/E=)13#% !%4;#''12'1#03%5).&#"# ##  !!$ * ( *,:(C0C6!9+%?"0?'1-$)$$  8 O[ V0R5 OAH8 ?G+S9V+OM#C3C&KF(%,),"('1#,;$9%$?&%>530!, *#7 7'$)--#*+%/(+ # $ "$$! ""#/'1"-,-  %' )+/(!92'>5(<&*@.E!-0)$$1>S U.K1I< U=BC4M1Q;E$/*7;%5,"" ((!17,98-7'-( )'(*)#$% '.#*'$",'%#0")>!&48"0.1"' 4@C D&(H,%D/7:6<>$%2'% 2(,"#0 . 0 9-A-9, 5!%>#<%& (51/ & !   " ) -& %*'2)?#$=!>$;# =%3$ &!+)/!03:3746;!:=%9*":(%.+& )!17"$:)'7+-91%1.$&&$ $#).3"#- $"0 +2$96>72,="=$!:#.) $%'+ * ("  &3>)#"#/79F A;"3$ ,   %&#%)7-:)4(4,%6.#<'&>,)7.!$*1- !+!-*"-/*0)'4!9- .#$%,)&"'$3$!3%?.967?90E!I)F1 75$- /) .# 1 0'   / 3/#!!()7A?D >:9 0 %   (.*2("5*0.&/-#30*/40,1-)  $$')5,8#A:)#%3-!7-*(00 ;6!9.)=>71$?(A-F;95+ 6 ;7A!.#+&''"'$")*,,6"C#L#J#@(8:3 )"% $!"!.),"#+$#/**/1+*2E+=H+86& (, -*.*8!>."%+$(<0-3,0,0,16.<7(4. 43%> %C#:)=# 88 @ =6&  ( 0) )!-#-( ,* * 8D"FD$ > 1*%  &  )3':123'8%-3..//*O1R/?& * 2,# ;@J ::"$.*)*7');*.4/2-+/4/5-/*28*4*?) H'?!D @ 8 95" " *0'$+(+)$8#1$( 2 9 98 85&%!!(02' ?/;57>2:.36)L+L->. 2, 4)*/ ?I C?$9-7 " '4"+8&:*&9"-4#67'4*)543A/A5 G( K ?5. (') 1$ &'.#6 4)' - (/ 23%( &!++49, 9;A9@;-4//B-P.O+D* 50=+,!*?AG A.75820/'D B46;3A"2##4/. C) D% E>!5$*$-#$,*"/'**$##*2"7 2+   !) 0+!!#%*"# $ . 93>5:=;8@')H,W+RN!@!0'& -=B&5-*8<>9( -@ #@9A=,A$39#''- 5:#''1#1/*-')%& ,1 &     '.)(#   '"4.438-<1-C&-L"%SRNC4* +/! (6:/B2 :*- $?&9Q"@8$B+39#(7!4+"#!*/#/ 5*:8,0$!/#'/ %,$  ''))) ( "%$B*S5 I6,G&0E$0L$XP BC%>% 5%0. !0!"$7(.3J9F!; #5-(;L-BJ1HF=K.<; ;/ 23 $) ( *?9! /9-'023%4  "%""  $ 1)! !$( +; :! .!M$!]2'U36I)6F$"FII C+=: AAB9:5 3:9*3$+<M*#m h ^$&#@'; 1BB@@BI5>9,0$  4'KG?8,42% #$ (6)9625*,+%$&1/?8-'P!"^$*T&+E .K*QJH* K>JDGH@4G<?=A892#628I3]@(q(&7*4* 76B7B4B:H1;*5"',#  0"<&HGA:! '! ""&$.286A0B(>) 12 *+# .96!(&*"@$&G&%J)D,T!R KK+UB MKLCE3A?DBD=W..TAEKJgK)C.(;%+',5!8!E%C'?'<)A)%H'&6   %6A!L EKF7 $# &(/) ?)%F**G%C&K$B+ *. -1/$ !/(=$(>!$G (I FG ?-@<GGM9H<E? I:U:'_'=W#+\3T"C H1S2d'Z 5c(>Z/A\B:8<-)<8+"*-8'!<$;$? (, ) &.+K- N R' J#C:"   .$?%9$CDU\QH9#($     /<#QE"A, ,/0.+.$0+/ 02:= IAT(\!c#!]+4Z/?V:BK=-9>*6#- +,(%&'2&*0?+<,,=?=/3?4?- <.;#-#  %:#M$">+B$C NV XL!;)+    &, /&B)A.A" ,#&%#.)- ##&/'A+P] ^&"[-!WA$NF1ED=6:%4.&=%2(2$12,&+7$#8#"A&T&M*@ 1D2>25)**!   "+#9%$9123DIV TH!8+,-   ( & '$$( 2&=* >(0& #%'%  4H'X"S4YCSRJI@E"F6H"J"7 4&"1.244=02@2@646@C=I!J FE$D6?"4) *!    !*"++#)8))57;H#>)0&+9)5#'0627..+01- -+7+ :..)#$#.&+ ) '!&$:%A2?B9R6WCI13CGH$,2+<;%5>+=%0>1=F5>%-A-F/DC L$F;>#-9/3+&- "&!,# 8!%%&1(+&,*3*(7*-#?F@AG#3553;9%70%<&2!'$!3*:'')&#' !21;$K 2\3R/65%:%'>$!#" $-0! * *),"+.,3-C4M5A9)%14 7$#*/67M(@P&#G/;* -4? 5.6,/L)"B4'<@ ,G <",(%'  /3/+.* ,5"(;#A ; FC / +#  0#FI+I#0F(>3(;0%>,)&*!9$2/8 =2!5#.'6 9$);.<.3FA@N;G6*0.?)1D/5=*0)(9-0"( #2!>&E34L9>H8<%-=$ B>%#;&9# #) , (&! ( 7;1-#.;&'I"= I I H>?& (!   (;%G"1D)8<'>2%B7#4%4&3A0=7?-59$'*< T/+H7C:8P!EWJE,>9F.(?CBK81<++$1152-: :#1E/0D;/J5IC5R/!`(RJK(=#"+++ ).*6)8+0$,3,1(2'; HKN!F(B:8,'#" $ !(-.->*+A/!L.(9+7 =) 8.4:&72 (*0#J!Q6,U=AFHY-X] US.UENI=>>IJ2;C )<(<*G?"]4O!I8,%.0..31:##Qe` R%G,=3 20(47&513.3 .-(2%.*%!'/=?+L4 L2P3H*01!1. //#-3.%57%E.(?(=N L8**+$$C [4 ]6&UD'7!,9 &*+ +-(#"/'3 ?<.K>PCH?E.'56+42)D(:#6% "%*C7KNQW(QU?Cd/]00S8C2-Tdj-"s'm(cG))2;53/V1.O 'RO&4W"6Z(2HA1A $F,E.<,!B)"J'0="53*%''35>=DK:4,,-"/>6G-<*K*C"5'+"!&9&E!!4(+%;"*66';B)SF1O8b$8]%UQ'<'.8!U!c*o&d*%a0Y@@P Y*(Z;;J?O66\(S5^=[7M4)?A%*O)H$,Q\!Y#$Q C,)4!.?&0G#'/%,41!/:)-B3A?;E6L ;N5B+5    *0*01);4=&(92@1-=02C16J)OO t;-0".}`-R*G'>9:L+!F+Y"1m++UB!TKQMBa(7p6/vA1a:FG5Q*6R?\ =R5N15J;54A#'F!$aj&aY!O;'28&?+//0*!C0 9:+-E5!Q:EB:N4Q;K&:5/# !%0-=8F6G3(C,;5-8)1A8, P!n !(mMb0?T9"96 *, .8([- ZD&eb!hd QfEt%@-109=\MH$9U!0Q&Y%Z&O-M <")#,1134*:!+8#&;9 5K2)B; I@%MJ!5GFIO>'& ",:9A,H3H8VGFG5B$O-VM"*_$9~&EOKr/Ec>2X;J@5#2&?= .DO9\Y O[ K]6y)79{36wE9VPL7RV ]RZR\M"J4)5,-'&6$F#IV"b# X*\($T&=+7'9%.%'. 0,/;+147&=@$A;/A6<.4" ,98:"J0(I;RBDM"$D CU1L:/N ,g1|8{:&_B5QRG9YT'[kY[ TPP;2** '!1 6NWV-!h="Q!%2 *!- 3 %# ."5(0%2'-366*/ --0 % *)35D,%Q4+NC KRDX&B%:7)8+H#R- _9[B-HF?7V`*aeXVQQN: 7#5%-) 7HR!U"V+&H&61&! "0&5+/%!)+! &"#$..794/7,C2LCVRNX8Z/[[ W#Y'&]00W1Di8+H: KK I5>1)6$@!+..,0'0)-!0- ?I?L =A>5NS'MUTTWF-,!-,",&"!#&2+7/@1*C(&3/2 $7)((%+& :' :)8',  &!)+2366* =- ;0 KARIIT9\(`h bY"\0"G6(Q:3^1,WA(F>DC4O,09:$78."&!'.10..*)##.;&<#:7?QDESKG@.7#+(&$%"'(*(2.61'%5!!5) 32+ ((3 *5$'6<:7%,%"'.4 0,/4/?39=5=X&H\7?V8<2'&7*<$"+" 3*&2)-4, + 6>13&&."1>:? 8@!'4%/ +  (,&%(8"?A&A2,  1&>+(5/3<56#&-%,&-1 6C!G,E->94'@T3Ac-;e42R&&P+#ZGB -)(.$),(++/:*% ,"#('!#"",+& ##3%!43#.0,3"'* 1$<&3',! %&# ! ' -6=&D';&"'  1=*D 3A2!/$1' ,/*)829FO"O-H ,91-:K.5a@3`;)PB#>-9#3'!&#  "" ('8 3#3%")$' #%%+ &&/&,20-1"*+%  /#43:'"2 +"!" & )$-'4*-!' + 8,= >'4)5$6#2) .3&6B L!B3B 7-+!(9))I-&MB*=<*-4%!&&&%##9'7636..&","+#-%,/#8&-150+3)9+:1'%" #"(*(&:3&>+8##& !&$%'("$!!(!#*)&+#,%.9@( 3(8*;) @'5.*1'' / (#, 7 6!%"'!'40.>:(<220-& #1$%-#09&5%8$C*'F%/C&!'&"+ :"@)(G61)94H, E310.!!-5<)#8-%9/+71*12 $!&""+")077-'%)//$;,=$B#8!7&:" I.U1?1&09#'/ (,5#1'&.,!<5&>-81(%*"#0.#8++/* 9/W-$]0$W1L,9"#  8E3(6>,&F:D272)6.=/!?(F F& A"#?1%68-?9,'*$) >!C" 9&+ (445;1<&A"16&;)F) G%+6$.+"-($0 <*!@,=)8,#5*7/$>0%;'%52".2!-.'3$5@0 E J5P;P=88(+ 209/8+AL/DS.0C20(: 67"G/M.Q0D$F/<6/J-B>"=I3->*'/)+!2 '/ 2+0.7=B1HF+8;(#4!2(,4!;"<-9%;&(-0###2/F)X /SG1 ##/ CJ 9"5.+(&<'09,=2:#1%#.+.&69@I9U>"XD*VBI4I(UIE))/+"3F"/G35J?>M6HKTKLE<;#)),+(!%"/ .*46:/(@7'@4#,3)$ 6; ;$!5)&)$%(,,;%O+O O =#)*%6A3-+$%*- 24 &/.3/*7+-33M4_: b5%Z51U5-F2(I!JJ2#1$-33<(;A:AP4JO,JJkNbGJ9 ;%)#"+ '*&/20@,$A1,G=&:3$'  $-('($!!#",25 -H&O!P" '%!(- , -#* $ ! &!$ '-'&,B%W(d4d1%e%(`$.J0@$?&:( +"A#):<2:=:6G@$WIjC!qJeIV=%A#,*!( -!869@),>+!A:A9) &     ) )45I2E9)0 #  -!( &3" #!#7E`n"!d \'U&N"A (;'#.!'&.B(%A9/HF3;I:7p@2l<lJkAZ> =, %"$#'4A=H%1A0'>2E-1#   " 6,9B=B! 5 ! #" %&#( &+ )#"#$ !4D\ j^ *V0Q8P.H&2)"+%%)..5$=DHOLV(3i+2e*n>jDF9!28 ' "9+A4"85.2E.L)8 . '"    /:DA8'! # (#),(4!2+ 1-)"" &. 9 HXX3S6S-M'J(925*$&5);D"AIQP4] "[%d,R9<5*5&&!$#8(A'?,,5@%&F> 1 $$#    & &.!3 - +%!4)/('(*'$-"&68>F: %5#. #*1<P Q#"L(@#D(3@$62%2&$'144.5A ;D0K YN:.-&2" !%"!!#$2 %:* 2;';:/ !$,.(/81<'7''-#()!'+1%=@Q" O C EB0 "'/#7%P%S D+."35 9'5$ 16&(0/3(74+>#O*> 5&&$5&>"5 %")"*""0" ,$"-"%  "!,3$ &"#$ ("9#A! 5'+)" ',4,G&C 'M&$J'DA82#!*#.%),7(@<$0+$"(%$#00* +).))20773%1,(2*,,:,D ;/-+$'  "#$& ")'$)##$$-4&#  (12. %+) $" '0), ?)G,H0C0<#5 4())!,$')+' 13."+!62'!/ .-"&"* <)!@*6:0<241807!(52(0" ' ( 1!0"( ) / &9#&)+"*$(' , )$' !!+ +<$J'H-D(? , )$##"  ! )#3"6(30&&8+) ( 8 74SFY3F4@3/3#0-#-3"6, '(&' 3*,-(#4$1- 5!>)3!/!& % $' *' 4 !A EDA1 $ # !&%!0$<":0> 97&0&'$"3 J# I&6`&8a3O )9/*)*4"04+6$8%*$+1 .$,"(+,&. 8"1!.''5(#:&7#64 " $/ 6 27 87./" ,  !!0 2 !4 %6$?%C'L"L)8&.% 54 ;+#L''W%)]',^1+CB)<05%/;,@';)0-/*2+ )'%%$*"$*)0/2 (034#B/ @# B6",% !&  !!!!*101 /* ,##"-54 .:1E*PE)K*@.'3$$:(911B+6c25b--W3+K=362>#-?)S1Q&-G#+H(#<+#, "'3 714*() /3(.025)='#=8 #   # &, 1'%&($&(!%,-*#!"5!,-> 5)E0J(O'J'M/68$G!8)F75W8>x3>m,2W+%G,34-6(%F-Z-X!)E(&I/(CC4,  -&-&3. %. +8+0(.7/;- 6%!- !!"#')+ &&#)% 1$$8!,2*6(<(5;+-).*#"#. 0 YU$Q/Z5M;!(K$Q$J$F4)F<'8,## # 56& ", 010#9%22./-("/( &(" %%,4* !%*7'<'%>'17"'<+I%6G'27+*,' #9SQT,Z6K;'D:9==6*H#AD7X=$ORF'G-1/- 7 > "@-;):0!6&$(!( 0 3)-+1=0*--(  * +&$(&'6$-*21  !&.1'1+(70,<+'D1M2F,3 (+" 8C!SP/U/$L6)<5+87"-E*A%B:< : B*;9+1"38@@#4"3.-(# ' $+#  )4+'33.@)7!2"3 ,# $ %# *)%"-',4)2;$861;2D9;-- "1!5#>'C N+(L*#>,.$&/ ')!/?'90',!,(EC? C.@%<+%9 80#&0,(  #%-(.9/06'$6,401' 0!)! &(!.-066983A3A9/#)&.+'#"1% 4'!4%(/$,B*'A&#I+.2(#2/"'1$$%0+ (-.,8$I$D@ B)D/D%?#84!71)2 (     +1 !#0/#5%9(<'?#7!48. $#+'@%J*?5/-#,/.1)+8*3')3$2 4  )B!'?+<"+:#56 :* 1"-%'+-,#9*=$&=%!B!D$ A(;%<( DGA=0- *    ""2$<)8'3*!,&0+2.,/-5- 1.4* ,2%9+;!;1&8 6 3-"&+$,7+)62,;4#A3)K,5F.$7&@ =$C481 *$ /< : @ ,(   #.1&?!E!E(K*G,>/1'-"    $ +.",,00-3"%62>7")#2!2! *4,;!1+!00 $.#'(+4033B>3B/>>5H5#>$:&D!; 4 ?7AH H50 #" '( "!()'+ 0% C%=@+>' =. B-8!/# %(&.-"4":*4$2'->,?)6)6"C5"'2%;( 98$..#"(& 3;*#D1+:3..($7)#7%"4'9,A,J(I%AA? 2+ % !) (''&7(-$'"1 73 5# ;# 573%()  !+-,:*= B"@'=-*>-F- ?+ 4' > 5,( 7;G#=#).% ! !7 %F#25%2&(./%07.%,(&1)90<4!F+!I<8,#(' !+ * (&,! 12*' + $%# * 3,#'% $%)8.?(D !A)%A+6/A!I< 6=#6" - %5 4 @'6.#2*'++#40,6#@356,'$)+- 9/<%"D)9*-!+ ((+& 0 % (!3- . . $" &( ! * +.&"  "$**4+B-C*0J/7:*6,#=! K D55 /&)&!,-% %6 5 ($(."'# $ .(97632&/%#).$$()/#)8(7*-"B 4%30$%*" & '+('     & (//# $!2)2,C%1>12B278.?.#;# ?? 8 4' (($.$*"& . / ;&26: -( !'32@4>*+0-,8(1=!%+12#6 +5"7'7(@"?13+%& ) "$*#  !   ).()! 2"82%?F-AK68=756591*? ? 8 9%40 7/)=)B26/.#-&,$5X*S0 +!&:5'=>#?<-52+2,8-/ 9%7&; ;&C ?)0' +#"  !$ '+,"!# + ,72 '&6'G:1JE4BD6C95F1,A$?CC$B9 9A392F8PKGA='@,4%.. #5#A&5H!'PQS%?!4 ,'(%$+/75C3;-@6 :?-6#288*!((73):@):?'2<"3T'Q D EN1O?JAOKMTUQbQbD*Y<,E I;rF"4&4(')!*$053;%8):& 5+#";!?,R,e-\ TK 941** #:#C, B,A, P)L1.4%*22-(* (1%8457/6(2>,HA :!4'1/86@>HASJ[MjCl>$g*-\7M3I3I-+@&3+%('+."2$%0(73">%<2.2%)$2(Tce ^W B & "% #%,(.! 8"<)#A"SL?!0$%! &'&'!!(%-:(5- B)D8 > 5+23):.A9E=D K@Z7f,p#+j6] 6U$?K??<: E#027#2!, ",-)*360<,S#e)b,PPA $  # '(& 6#8!:!HV O A #/,' "4&:%KL# <"3! 5/80"A -?%742 C&HMa# `"5L&7L78GB8C'B;=)6! <,$, 1)#8AC/<I@S7L3;%25#  !#+ )4"1!8KWN+H/49+     $/2%@# ?475 0+&%*-+&, & # 6HVU'Y0PE%NB0=M:931,.-002!!# 5 F ZT M.Q 3H 3<739$4"   $!&%%0.#,.%2G QG+@23:0 /% $ + ' )/ 429.86 21&23$2 1%" < G X_(bDaL KA <= 3.=$;$.%'$$&#'.2$2.#5?J RQQ*N@E@0?%.'   +!66"&$ 2 =7 417-9=*3-$*. 7 5 =7"( 1%2&4' 7*31'7'4-0*)28 N(Q=RF LD?GA.=! 0#:"80I39!68$6,/9+* -,2'19MNF J7='@1)/&# # !!*12 3$ .'"2+8*:2116'A(<C F!E+7.*/"205. 7%3#!(()'.+ 1 -&-$?;$3E/B ,G89.#03C4FEK.2@%9>"<6/4$.-*0;+7<4J4#:H? +695('(,$ "#27)5!( (.1.- 2+6*C4CI@@$35'4F,2=-72 A( 3" '$ !*6 !%! )?F&=04#!11 ;P;T-9L556:3*6-$.#$8!*@(7H+FDB7(*5)7# /%'%* +%) )%$#"* (+#,%/" /)( ) & "%''4#; @,:+;#!8&$=7/;;964;>(@ /(  -) #!' % &" "$5!.A%-*&++-%*8'G3S$'N/&;/&+3<67I&?/8;! JB.&)$ , - ,)3)12.> #?#!5 76)  #*#/6%-3/(!0$'5:1-4;0*>2&D8 9')" %27&61%$3 86"3)(2">1 A4(6..((0'.00&2C)F-:&%/!4<?87>$"*?RL4 &!(21%."-./.-9$/C 'I$&H C<0 0 !  #(0' 80-99877;(6F,-+))8#1%4C #H3:=(%B%29*63.;%>/=,<*&$0'4032'0!8" +((!)"+$9*6 *089./E)67HO9)  *1*2056<3:;3AA$5H *U-S#D ?9)" !# " )62,773=<90AA*;N%4&,&+1,6 6)=-%E(&8;+M*D*.N19G>84L6:4414&(*416)0(&3)73).(&3'9.8.1)0:'53012E+$I'; >->,&5&&/+*$%(!!/ )9"->*;@06C:"8G.O*Y$GH-B<:4$ &!! ! $$*(64#+<'$75!:H&5V-38'5 G!B">,0@*,2:GR(&_5`JRHE60?%18.-$.)*$9-%T/+Z=#[7 b XL+'6.--,1)%"C"L#Y&H*G1B184'9 5 (&&3#*7.;6?6<(66.=C @,I4L/E$9))4),#-8 3-;0 -7)<,8F:R-+23F$RI!,86C N]%'b;8]UEJfK%bTWL2I>0C%/K;3$F+(f*{>){Et+p# d3"K3,25)+,6 G(!X#N E4'O7*Q/#?6%2 #6 *--3+99+-2352020&68) I7FBI*=%:+4//&%7)F A'H):1 $17+9*-#4(DJ#H$04 CP$^&5g56jFGJUS,YS EG%=G0O#L;B/>)(\!q! {4+t*&g00U=!?E#I!5,45.C%$HP#0Q&3V$+L/'(H*K,>!<0'98*282+34&$%"% 2,:?ANA6.+!&.-#(35;N+G )M#*D+;..,!&5& # 21E!> *.>7P3 D4482D%?-H$I%{#4A3vEOD.S@"IG18.-D+`-gClVt` \d6x%6&3*oN@@TA aQ_FL> \()O#170'#18>&7:)08? 7C73DB,GH,+K$M! M"(E!+*.66>>4 I? H:G49?*J!Y#R$+Y!Jq(e~ew)\a:LdP+ZMYB!Y@!S1N**; -+ +,9-='#Q(W( e.k!,a,T 30@*<%;-$ -.6 8:,448/:)!B"=>#8"(&#74: MFR: W8N? M? ID 5R5V 5\(-U%Inc&jr3_vG@lP7j\[0 D'+/>,J!)OT*M4"'WI2OK8/UL#Z]UR"Z?J,8!%7 ,%0F(R0$X.#]((M1.95.*((%5+ )' &)"!+0*.' 0-3913;9GAU4aE]W^\%Pb8f/_ V%Q+7K2AY#Je3^jG[l<@FM)DCC5(=)E2&J$L:($2$+4)/(0 61 ;1!E?-4GB#RROUUE SA8-5!.&   6'C7!C4,@-043>!!)0&.>& @& A 4+9;-?=4E) K,U6]=`E_Q!R_&8h!'e!Y%J>@ IN)G[3TQFROL74N01<3<6<3C5#A- = +,)'2,2"+ &#* 6 1 H2 Q3YH#UX,X`4K^-2`(k"V(I!<5,5@)HH3<[7?Y?4O;&;.G-71,/((*$/0 6, -(*1"4 + *)"++0$+8+1-%%3-#7 !2*& '!# $'(&""%8A@G* 8,;?31)5%026'5.8*1 4(7.'/?83Q9:H6343%05"+/ %! **2++% ! !#"%:!/. +''#&+%-=;?66"*9,$-*$,-!+/5$)& #!*4/"!!!&(*),-6";'4)8 <(<-1+#& !"#&" #* &!))!++*8@3E7*;#2+/ )%(% "!(()/:%: 1 $$ )'.%%3,,$?>J=J9"3BE%8:)<D 7,5(.-17. -(30$%$ '1-,/$#2'2 9*4)3):=$A#G,L#93-&+1%""',3) ;- 4%50A04">3 ! !$%&% .('FR*M!+="%1" !&+3&;:$J<K6(?B>9FJ&3J&H ?$D(A>7!=, & 3 7 :/$&+%$?#07!-)5&/S!+S"&G#/$%##)!,5"?=O=H7&;2D?/L7(P/X+ H)M&Q$3+4+)!@IG ?(C1!;-,7 5*%:#0="<:,;::2.1.)";("9,? <39,-6#2/!0,676G7I<I7C943+."+5(*!)!+ &' 8.43.%@&E!#F!"<5$/'+)0&*(2-D=,N:M166:7.M?"N<V,N%M%I8&&$&*3(K/[,["80 @-9) 1"5/'?$0I&4G-+B)8#!:13=):)1:BD8>(309$>;'. 2;@?>A)JKTBG=C8F,B:+"="!0*($9&,P()B&2&O:B748 "9,A$1#/%+ )0'3,9/8N2/D-79 6)28!;4S L'S!$L#9.%"''+C%+V6f.=$A0 >)+&!'(1'B)A&C'E?!;)/:)3#<1@539)+7%==+1<6L3#]B0Y?1`:.K7 I,M&>#:)<+ =(#<2#<91?1969B]8Y>A1&2-341"' +/55:8,6F/5<#"9# .&*:H H%E(70&'1#%G&5)@(C% &)#(."<;971-&-#7(C6,&1 1/5+,O(*a,(m06b+:Y#:M#5D)A"7%!5R,$K."B8*MH6@S7*\K3lBb=G,$.+0"/1/%) ,%+&3!0F/4?@,3> $1*#*44!*%))($",-* 1) 44.=%.$ %/ 14!-# $ #* 2)$ % %!%D +`"&o &l0d0W2I2>)4 '+-*D3G: ME-Ic6Bp97hB7rHl=P;)3-,&5' ($" !"  8$L"J.9020-& "# !'2(7&<'62$  "'#0%/%+ ' % #!  ".3K$a"q%t+f *V,V.A)&$, *'!&84"D9"PN(M`4Pw@KsB/iScG"YC*9-&'&-" & . E$53#36!320 (  #53$L@% . !!)-0.36#,'!$   % #9'Qbg$!k'Z 3U1P1C+-*#$/$+"!3+,B9&ENNnBm2@f%dB Z?.QB.9*&* ' (#*6/$4>*"A$8- (   '"0? =1$$%"  & / 9<,*+ ( $ &):" H"WY\"0[ 6W#/O&Q24,#"".+,0847@H.K_*5b (db#O/;)1,,1 / !" ,"91:@+F#9 5 )&   $+)&#'(&,+*- %(  * 2 71.'+-+ )$$"/& 7*H'M*Y+*P%0G))H2F=3/+(2(748A-7R(2U.`#D5,!)& 2? 6  #+ 9*79)>82&"   % #'2(#6/.)$-)+/))# )* >@6 97("&$&1) 83F8 X1"Q*"L$0<"7/<$ 6"/4'24+3,3F+E2D3;!2*>#"5+(@5+;,.! 1$ -' 83+(0 -()'#,!& (  "# $- !--**#)(/'+(!) % "A &B&)63 2 +)( "+)60<>3H&G%-5$3"/),("!14').,?5E9 52'.-8,<):0;8+<50&>%6'!!(%$!( #02+"**."' - * $(*+'(,& &1 !1*6"-2&2. ''+2!/(559;=!%$*#*(!.# &#$ =)>-0 .4 39 39*>'2B90;#;'!)(-3!&," 1.$.-!"&*!,"#'&( ) -$ (  %3 !3'8&5 ) # &%'%!#!% %,.!("((1<!@7Q5W%;K(46+, '1/3;*=+!@= -   !%!+'!(/"*$+,+%' 2"8"#5 8!'7  $ &       2;A;/ '   +/->;'3"+H(M8S:`)?O(E22".",:,F$@"B1" #"*!)$+'---!)! &!+$8&8##=;$$     !&!65!5$.!$   59"< IOA30!'>/M'=`:Y -T#7F'2;(71+D1T*H "=$,"/  %#$+*-+(-$-1,=,G&41-  !& %"  ( ( 3- " (5*=-MV RK(!<6% 4+(85?36U At=i;`!2Y*8C.D9D#'Q,J'@!<9$0  !)4% 3/&8 <%5 ,);*>'<9%  &#  ! # ""-.!(&/ '.# & 7 6#:J"S# R)H7&;>29A2EH+=f%:v!Ku;p+a4D@9D+%N+L$DA@+8 %& 05 ?': (<,-929'%9&9 %   # #"'   &$#&).#-2%*90,8* $# (4'A(G'Y/^:&S;3=>N;X-'%4(*" , =&C+H&$_0-c39Y46D:L'4D2:2%:P&Q-\#(\%!K'=209";; #:/6 ,; $2%!%&$ ''"68:!   ")) 4#02&.!223 "#*'%(0%03$.6)<,F*;#. %$" 0B$H E$%X%2^+7\,.D(1' /*-#9B I9Q7E+5: =0E"HFJ+<0/'*#*% % ."6?074**1+9& 6 5& & )"+&4!03#28-57;0? -3!  +$<$F B (F+T'+T#%H 4'+7<- <>5@!64.0+C*AHS V&$K+08&3)()'%&% #!+!! '/"6&#D.%%1,!@1$1 #,:)013%<,?&-6<0A*H!SQ K-?*#?4-"1,(3!" " #%3 )/$&:+)E3(B:"E*>!,. %  #*-9 ;(D46+3.$(*.&1#1*4'9+&0=&D1I0A76(5+%/4-+5$8))8+-==)#B'I#K(K&B*;28 9/&6---"%, .%"! "%!&1+!<0%I1$N+K+KD$.( .! *   (<#B'6& /&/&)(/-,4+14 ( + 0 !B!)D$?B(C4'=5+8"6'3&*"0'&30A*%F"'L#-@"3- 1 5* 7.+&28 24&-#'     &,9.L+#I)E-A'F+ >235&)$"  #4 9/,6) 2.#2 8$*$.*5*5& *$;"&;.31?&+5 :00( 2&%/,."):#89-B$H$#?9$540!6$(7'7CB6$ 7) 2"$ '& !3 ;,CE$>* ;+ <0 84<47/"*( + 1# /+9 2/(.&0$=++646? 2 ' &'*02@,"43++/%+1 /##+2-$;-*+,*2-(A$"=%0$!1%#/!+=,?"5<28 :/ .0/%0  '.( +0) ; A( *'801,1) 9,6)%+3  $% "1 7 ?C%B&#. /6&?38,,$95-&.8)C*5%); 1&-"$16"":"-5!6(=+&66/2&&#--$.@!3@=C 3:'64 *" ))' $(# #!'* ,18 + (20#+ $ -+/;16# ('32.AD>38#,* .65@";?!/=-&6'/( // &!   !, * ,')*1%)  # "&,(.  '4 8%B)L8R9 A)&7,306% 75 4+1; .;*/*( 8J%A +)".2&$&$:68#>#@&:/34!5<"1;+B,F, 3&4 1) /* ! ,+($ !'*   $/.-,%7F 'F-(Q7J2$I.(7!2(6; 9&15 0?(B%7 0#25FD&/#;8% )$+9&DA"O-K)!9(;#.<&/6%E3M97'A+'-*#&#)#!    !0 5 50%#/.9(!I.-K63^B/T:3I6<:'?"6 8 9% :8.N+D/>'4<#.=,;4'.%#&C#;$,"/-$59)%$*!.#'2(;/9++90B1B2N/G G$8!3%# ! " &"$!!$ ! 4, 2 0+',5!C2.M?3S>;U>6M78F-=/@= A 54==;=6G CP$FNDKCK,*@="!H)d!X) ) (#7( /"1%:4!"++#&6/*4)B'N/!R0Q$G$D!;#-& #'"" '*$%$&%&"* &  (4 ; 6-)$;,%C?*KJ8LM9E=7<=610D(K:7& 75A9@B@RRW ^]`T\N2C9E)+U,8; 28/; ;"4"!#) ,-=.H,%P0-Z1#h"#ZM?0!. ,-*!(-"').&.#2(4-+1'"6;9 ."#!.6:GFP.AR28;4)9;/;40'10/<9HDQKP#aU'nTuVwC/X;K-!6;8$; &&(*'++5:&* (!,&+> "K-_$6p04i b S85-'-!&'(.3))/!7$0% ? >&%+-.)$ ..3$+"+)?+D4F'0=.*88#/?!=;%95:D8O2V:I"ML)eL'tB!|G&w5,T+-7 1>44-16)#? G$ ='*,+,2>%!"&$*'-*$='c!pol Z C*  $"&$+3)):8 <H A0+7""!!0(%,'116&844-+9$/7$8 >7)7A8J;R3M-? L8 `3 l*t#$g-c2L"7D967>$<;FMJ7 $*3!3'#2;7;#,;:GMD#.% 0 + '$. @(R&5Q(MI$d?`1H 5;*!# !#$ ;A)E6==/A-'% #!#"*7B;<"7.0/0'*)/ !2 .!3.2 8J H Q0E7!>5 7B1=36#98CA/4 0(4DP"R,'`':T =G == B;;#2 ""*#-," * ->%497C6C-$ ')#"!#$ , +/ 6;! 8138,=%:$51 % -7 K R+S5H0@21< .2 80" &*,4.:." ''. 2@ )IS)V$^#M6H ?5=.!+( 1'! +/,   / , (798-&;,$./)$4%,).;9.= 847)19,?"#5 / 0& ! -# K"Q8 O.C:>.30 /( /' 7"7%;-9-(6&"" (2/=2;(J*Q'WM0E:@",* -*2 ,(# +/2*")$3%:052*1#82.7>A@"55%7/:% 8#>$'+%) ., -:"9!3&%65'>,+9# 8 8& '# %#*& "$+">4-6!0/1=6B :2(21/4'+*$(+&$(/628+'9/6&#;'4% (!1+31%*+%1 '-4.0)#$+& *' /, 4/ &#$%' (#"))5'8+5+4'"45%8/.8*4<,9>'<#1  -: 6-/,4/27*)$#> L5 >98F=/!6%&).$ 8?<"2")&"!(:0'?/&0!%!!#(!0" -(-8:.&*06138+.9"+7 -B76 22 $(" # "++- .+#%<+%46+.A729(4# . ' .6/#.*$,-C6">1*6/6-//26!*6&/%/,>. A-278'0 /<B&># 13J"'P$F.!.8"9-2.9:A7$3#-16**737>-7=*2-0*"3 "7$ !4+3)-.&5 '(*!0 "&-! =1@'&. $0)4@ Q E"$3!%#"#"%'5596?7;>191,!&)(&,)54)D*#9+"4*/.(, !!@-;2=A>+HF:>R<*HL-B#7(@.A4 /(+,:!!6)2(9+8F:R%O* RDM:'"+!7:E>4"LKT,VI)cY.Rc32^?.P: ?%392.($I!8i).r:*=x2qY1"I9,7$6+341';&8. <9C4:2/8 52-%2&6<7B#%0. >&= 91.'>&.:$5@8;-7%",89@ 9,%.&#)/,)320/G63H9,E8C2E91A.:,, !&%.2;!'<,*$C ,P\a&f5!AG.FH-5H2'D,E< ,-1:+?&$7&;+'(8H)6U;BD?7HK2@W6N4&Z,)C$)" !'" 0/609,G/0;+8-'-A+L& F "k(44C*Zk$K`#]OS&:G>1*G -1@.0S/.c@,tY1yTeOPm?r"1c7(AH")V)\8Q8(T96\/0M$034!0#/<52K9-^8 o3v5!s 0S ;9$K/H$7.A#;439"573O')c*%_,7J1NU$bP!`V*eSIEJV3CG#P.< '0=,"H*!W0*f6*j:&YTMl+e'"k>RF,4R/S3+T03T07U!"N #8 '('!(((71%H8Y;m9r6*t)1]7:D$9:,7-&++/; 'B5@7;6/<0@ 5+& "'63FIL?X7M;N<FJ KJRX+@S06J2P[+fa)fT9VcNH_A?UA[F)6:.B+/P8O,F=+PR$8h0`*[7MD.5L2%O3/T:=b83R$#73 09"@:T3^5f4+e,4X"<;C8,1';42 *8 77 3+2# 0+/-**&(+6@DQDX2Z>\P]RMULVGU"Q0D&0"18 D-F +9)0<48A:"AF-S N#N5#JB62N1#P4*TB5X3:E;"B&"52  =2I5T"^X)_ZbX%@^CY%0S2P.BS*aS,rR0kKHWMG?GU,972*44 J>C0G"82.&%)..32!/>) ?2::3%C4&G2%J55A>3E>+:#-*"$!3$?,#Q6%F4,;=(=  / 8 3+' 5 /.( -#< .?87K7Z- [8\< ZN#TV)L\'7g"+Y!.K>>XGXH'eFY+4a"9\):L&6>X9#O6T.5R;MGA]!T!:",9!9:5(%&26$? 8 '& $#. +, 25'27,10&!/( $%# #%$(!2)'  +9 7 0!08 8&'(:C?-6 E0U;^;dF(SU/BZ6AV-7W/6R2&D(:9"509"7/A&H9.SL%3#$.#.'.38 ;: )) )$*"&,! /'% )%- * "%#!&(/'!,!(! 4@G B:3 &7 7* +87".)295M7W4V9'OH0D\24P+0F5$H6':5,6$) /$1 @#9+ %$2&' 542"?/%!%7206$24#.**/&+.') & , ,-/$ %#++B GD! A8AA'"43 6&"$ $ .&=1E1I* C71:D+6L*6Q4-4<"3)&  %#/% %$ "#(+*+!")54"5>"5E"(D)>//:8 .)"&#& 2$ .17)!$)$+%0*8!9!A' >$5%DB'23&*$"#  #$6?"9!:##70)>?)854+%-(*"+$    ,,"   +% $-%2/;F=$E<33I9(CD0I@<$3/(", 1- !%+6.. '$74$22#$01 3/0-)*5&BB==# 1'7)&$$! .":! /4 :%>'+?((4 $",!   1 3)" '#"!* 7,D8N=1AAB=MO">S+\ WS C 6& ") 6-*1.13%<+G+!E31;7:*%A%>B6<33$%0& 1-6#B-;2?&6'">9+ 3 4 /!%#-H=X< L6!>=8@5J<0J<$g+ZXT";&-"(($5->&F'H5P6E3,@(>5*G*.T$4V +H ED *:(),/6300D&E7"%0"*.#/9!=@,D=*G@B?7-4+/""/;JE9"&C*.A"3*H457&:#73=#B$ 5%#*0-(K:P-I3@A)<4<6#O0,X"!bbV? #034(&!'8(A"K$G/ :,9**5,7))D"3P)(QI BF *?'.3693/<&85 6-$-/"G44V:.S43N40?-&1/"2"$,?YU"X5SFLU&6B$I`$(Q/@-+"9::3>6 %!1(#)/4:/)B))G":.)'#%'@"&L#ZXJ&:'5)0"+1256E"0C$1&0'.+2-,4!"F"UC998# :F<52/"1!/-32.B*'[%-i$2]-9X+;G8=# 0&'6$O;]@aIicjUWY1Lf))^9!J-"-*3&44('73&3:6:?B,:C/1%,,87 :4%)#, 1,75=64?$) , .:EA! 0!(!/ <9&*'#)=(R)f.n/b 2a&7G 36 #&%"1)/-<=^Db[eYi[[_+M`?X2B6'0**%A&!1) 1#*$%D")L*G/=)))#""    )$2-<226! %2!> !6 )6$$ $ )2, , /?$Z$f*i0c 0V.?+3"/$2/0/4'?D6SX[N_Y*_^(Xj0-h>X7I9$5,/#),0)(..",3;<.3$: 0%   %!&5&/ " " )%,40,6/$(%&'$$!! %0&D,Y'&d*/c+0V .T*D(6!-,- %+002AL/IH2DN"K`*Li2Drg0 R*)M52,-#0%1,4)!#* 1/0#9@1!"!    $$"+ +(". ,.>5*#$" ,' + (-,4.G1R0#Y7/Z7,U$/[#,L0? )"1!!)!':/2.4;39I/@`)Ab*.nT D6)15 !F+>#> 1"',2:'B2 ?1 !  ''&-"!6#"6,  ' 5 6 +( '"- & ),#&)/8/ H7F3P8%R9)U+)L13G#:A5/ . ,(++/:5H)7d&:]2`'?0 "")7 #E-L "?!/,#&,,5,A/8 %* '''    (##/#'6"'6)/+)+ + &"(%0)))/(',)4*62?8"CA&J@"K6(I95C @6;.:!0'3'@/1[2E4>*,8%.'36'K.N); /.&$' (,"(/.63'' " $(#+)!(9 +7/523/(#$ 9!0'( +("%'/0>3;5DH:%Q9%C129 4)3"'!/(1(+6>8&=75007''+#4" 8/O8-S8!/:@#-! #(/-#76';*7#,-!! ++$ ("-% 2 0"" ! $(# & $" " /$'2-<AA+?*;&!1%!$ (%+ #$(.3'7%;C!8:3-23:D7D.5B*2+G$D / +)@'? 834.-"("$$.//"4##!! # $!$ "&/ ! "  !& %*".)&- 1.4* $6&F9G @Q<@&-7&,5&(6,*6$9'$H; 3" !(*#<#=!:)6**$!!,&4(3+@" @1"!"     ,'*( $"$& '$ ! / 5@>-!!'(;3N6#9*A*< 6,   !!# %,'()8$/+ 1(, 4 '8 10  #        " ' +#    09 L ]T?,7/64<",C:(E[@q7{ 9e3_7L>9B%$C? ;, )&  ! %.+9FB#8 &&2!<8  &  !   ! ! (*#! $!"!   +69O_&!\$%F)?9,H7J,PEEc;x@6|.d E #?%')#3! "  &   '  " %'0!'-/*)* #  "* 3)A &U2%]1'e-.M0:91L,Q"F47W0n#:s(7w*)f$H /<9+D@76&=",     +4 3%7 /- *!3 $  #! "))"! /#+,$+ 22"+' !,5A G$)Y0%a-3d%BX);E'P&EC-.S'W68gB3nK+^?,E92 A)?"9$8-/6, 0' $")!'-%@@  $05! 2+'#*13/  %(.,,+0- 1 '6$/! /F!%S$K@ &["8b9^:N B63 ,;GB=#JO)_G'Y71B.A1N$SB #E +8-8*2 '* - '   &-+# #2<;19,&2*((6&!8!. %.+66231&:.9-3 '  2$G%$G(L$?,B+V (R&O"E 1!7- @32?4KDDC=)<0B/P%U' K!U& G#%:'8&)5  #-!2$ $$! /:4#*)*3/8:)=0%=$, *044-./#$:/2#-+$%#  ,3$D#I!A+9+G JS !I'E,#/66=*)J%J6K-@.#9"N&R H" M/B3 :"5 ! !!' " #*$!%&(+%:=1B?,CB'C9!:"+ !"  ,5/% /+*'%()')&'##%(+(%-04-CR(J0=%77;/"H8TF"B!77 AF$KG#A(:1- *, .!$"$ #$$"'&'!')!$! #" '  % +,7)(F-&B6 F;@&9& 2,* %   ,:%3))#* &&,!9 /+$-  < &N%>6H*@?6<N4N%, *3#H!.E.B,? 7 * . .%-)% ($'#5.-&*12'+)#)%$%  -)71?."H4?+>"7)73-9!9.#$  1= 6)%+* ',0#)'# .'""'  , 1=1>19,:/:9I79##!%)'0&%9!D@&9&/$33"&0+0%-*$2 -.&$/*(2$'&  ,% >.A&D 4* <) 2/ 01 28+7+(#3   .3)+ ) "#"#.1&9 -&%  '-.14)..05%67#;%&)')$ ."(.-8#'6"&9)1%%'#0(52";7(1(2#+2.2&/"' ! "& 3*5/'6+9-2..25/01+-(  # *,3 0**!'-)1(..,!)+ '"  (!*,*"5)(@/B 9+'::'$%854< >##3)"- --3. ?:0>-<$>7+1$-!*(    . 0 % % (4A;' )!1&,& "!+ " "",7 >0C32()-*4/6(.#+%/; %= !/#$!*&2'>606(;6(A9$%-:(ELA69&8( 96*?'A A'D);2 ;.5",(   $*/ ,.8;"2! %  #) /&& # (7?,G<P@C+5 5 &# 23 ++ (M#L=%9 8= J ,A ,-#:19'& !),4;@G G0(1+?#B# G%P7@8 9-- '" $3 7 *. ,(  %553* %-1'F*J4K9W5G*+6)1(/ 3 8!78 &K&R,F!,@>AE= .:/:!2' '!,5=$E" ,%5+<&9)@*C/T>K=K,8 &"") 3 1 ' "&     297 825/'%;*S3WBXBR?+N3>6E&: (4' :<-O+K#7C07E&A&EH>"%13 ,0#* #$"%# '%45<6;.?2"N8R7X1 J'?%2% #   , 0& 0 , #      + .99 =+6;-*J6XH*^G$UD"O;1F585:&1 .216=+C!6E)BGCM?N=F.E0#:;1T (N  $+ +'((*&!.#04;12H4 Q=&S9"S/U'M"?+  ! ./!++ (( *#  1 43$=/"6>5+JKZS%XR)PE)C>1939,;%1-(.;2C/G"=IHNZ\VVMV+>D?'1GA; "#%,"*-($ ,3 ,8)93!H2'U>*fD'd5&V*!H&"D!1!!.!53 3/ (1'/ $+)'#(% &'0 12 8*(':<MLWX PS-GA369.%&+ /75997I2O,S?QUMo\gY cN/V?60">'D!&#.$2(#++3/& ).: =+16+?)+@3`/6r6$r(f# T ? + (%*).5#/5,9'1'$#/+,!1!":&#,,",'"0,4):;:I@L&><)9<5$/6 >:'9;;E#J.J#+8)!$#( +*-;/):9!,D0h$x!x$g"XJ 3+#2'(!#%!%5%(7(2! $+-7,@*E$""$'!-!%9',,,/4 *36?!46.-6/&,2"9 < 1/9@?L BZ6P/9D>Z=e%n*$h"$C,' 6-3.,0)+5+1>$%K$ `'MA#( #2 4!+-38)$6)L5,e"+p!j ^W&J8/" &""'' !*,/1!B3B+ O(!)!"/#;(:"0* +/1"7&%**4%<46* /$'/.G.I,8 :;;Y1a `K ;,$(+)4"%=!FWT 9  ;<62.#<(P+2S0ND,a: XE ;C%-$ #! *#'" & /#:/%D-%J.!U& /%(#*$+ )# !# -, -< 6 =;$4,)154!-7D)B:&GE 8-+.'6+. )< >OH5" =!A = 13#I'R0%[-8W#:J87B,9% !& &%-,' )!%#3)&7/I26&&10,/'') . $% - 0 :> 606B,>4 - 36-(&&)0!3 5*0-&7!'"*3 -2););010%10=!F3 4C($T1Z,i"!Q8ND4"G&#-/ 4 01*"'%$ ("-0@43).0&:#3 8#$!,%3*;54#3309*9$$2 !-/ '' $ # &&<+ ? 85-''- !( 7B!=& 80<.!! !  4(G<B<:O,S.]O-M5==;+9**"$2&D;H5DE&-L3 L K9&5**/8A(C&2(- &)#"$ %%!" %&!!"+6'6'(% *//$2&5%?&7-1% !$ $ .$,//#,$((43'5(E#:!@2)<-&L @)1'+* " 3,?/45<%7,1%3" */-79,P4<3/9"6/#$-(%++ !-!/$!1!) 1( !(   (,#&'#3""'*0'/4/ 5,?(: (    !6%@!;(3 -%./'#%/#P- W/"R1+H3'V(M10*9186 ! " *'<.0*%+#  (%3%7=.08&"C(';3-8A:5?01<(-D$C6"1<6!$!(  !&$"'21>1%2/#+*%%/ 3/%%,"#)"!>.F1E03,./,+1#** ((;>AO9M,)O/1K.A,60$B#B (9 "".0)>'< +( $')&'=&A!0<:?9KCAK0@G$:J'9I/F$4 ./&."%&"0'9-C.(>+%/1 2! $ #+."1$(/1-27)FC3A:620$$(0""1#!&,?3F9A!?;=408.0 !4D4E3 9 ! 0(%@#%>*03 &%#!" ,#3:?2IB>M?H9EF$DM(BR>Q(H#7" +  ' / *+ &&!,&9'F-R,M3$9B!2 !!')0",13,F.#Q<.QH0JO#@<(1$6#/&(= 6: 9A+?"6(?3<-2$8:1A:>#%0(-0"3.#0(0/'9*"'(6,C>G$CF/DD@=G?&JD@R=W 7I%?/*#'3 41) 214H)/P%'U)R0B!6!## %*++&(05 )M/[=\U$a_)/R% =") '$'1(+$3&:,9E4*Z-']!"XP!E%)$$*3"/-"6'.A!279@57-*###8&@ =C?LNF!AE$3O8J: 3<2?+35 $!*'3&72$78<9 9K9P-^$\0#L !7$"! , % & ++>.F+$VH![J :O)*J)(A!811/!*<2*J=1iSKLEIUB XDEH9; 5.** ; /' +5J ;Z(c*71%32*0>:26F23;0 >&9?!'$.'$ 2B$._&hfH_U/dP+R\%RZ GQ=C07"805,5E15J217'1,58$-*(+(")*479=A5FA2944/,?2%-04"!<&(,$*.&(468*E!9D!IBMA^3d?B1B%8$ !&%#-&#/'6J 7N-4 $889<))H4+a;,Z5+R%%SCQA'55$87*&:*G+['"cE"qT*t`#YPE]NhGY3C<$;B7$J@%I?0D;7@)4I),+-/"5/221;CBG97H/&[2 Y* Y8>=1L)J!%=#<"0.4!3(.;"77'G2$L1V;Z<$J1!B +#&$ '+,7 /L8C:3:!&+-;2\*Y&2D'Ej+LY-LMSU>1TG-=8':5$% *D+E[(Pm5?fC0|F*qSd^?W06E10.:@?#>=> EJ1D)4 66$B<(&-1'/G)@R&VIn9D#}57Y::S+ M) D?AB"979< %C3J9D$GI OAS-I*(8..2+("2'$/+4/<>EMGE909R)Y5+R@EHH[F2_L#hQ.J[CT@P>(2,:4-&1?/6.M+6WCV(>fH)cV__DN.+D8"*76>3H>IAJ)5--#1/(&$-%*;'?KSJbA+y?2x6?a!B?!P=,C@CE4J+=!B .Q -KB9A:A.44+)$4!;/D1M<W<P=E? FCBG4AG@H@BVC.k<)cQ:XLGe+5=;)N @(.)*,(9-6C8F&9PJ,QQIYJF')<,,0>(/CFE'KR@G1/$*.&$49I4YA)b?-^29LA5D9"2B0V Q (8+@+C.A@2D4%5,/ ,)C2&H2Q7\9%P9 RFGDNE.GS+B_9RXGmK$tG3d@9d0AI6$#>++3%-/0.23%5662??)>K7R 3:*/1#:E8A$DB&KE%J>").",'  6/D0O/U<1O6C =/8)#*>!K K: 6'+ '!> ;'#& & '+6+"H.2O4#ZB.`A3UM#LL"@B/AB81N%=T)UQ:N.}D1c?=]AET6K4!1 (/'@7,?2%8!*.#.'&(,60%1 "$/ 45'0$7)8!*  ; A 60 './+- /"43!; 88;='K);T5%[F*]A-^I*HT(CV32M,=P=GZDa?'x4@m?ITDZ78O#!5$$. :-F0)72,&+0:-/3$! 0  %&03+,=.#:."1'')!& ()%< 2&#3*$!+2!+ #++,")7 ;2= 9@EC#T)!_*+`C*ZK,\O+YF0DL/FD0RB&@7Q0!W*'R0?J3OG6V#"_.+ @"8$% +(%+()'   #!#(04!*3-0 +  +2( - * " ##) 543/7)6 '+ :":89H&Z%b*)Y5#:.1&2*-+ !1?R+T4"I7-<,(BL.5X,+T1$E=#+/!3("% 7/'?&( +"%*'#+ ",#(  %2%4/%*9/(>96C )B8+"*,(6$7 % * /.%0&4*'#0,"54A2D. A!;!<":76+0*' +$ % #  ! =F0<(6"!84(;?(0CH,CW3VL@";" 0& ,0 - '.417&80,-9(.>*:( 3(4 :%6#7$212 /!   *!;%23 ;8+7/2)$ 8 04.)-'-6 $# '+' &$ (7 57.>+=:"=;5.?Q);`%0j b]E3 / $"/8%;@D)C7*I4;@;A3:F1=.A .6 1)336!:62'!-1-".((0&6*9# 65,###& % ;C; @: @;+"''*+"!%$ *&"+54: G/G42<:=8=K,7c(* rjI# #"-6C"J)S/L91K:AG/9*,"' 5 NL!I!I? )D&%$!,%'*0"2 2$)179L9B1%369A3E;6a+,o#pa * $.)+-$"6BF R7J=H74D4GA-M'#N!'M&KG>;)2"0,-0A+A#0)%/*+7415/;3#CA 4<#%,!%*8!8&L)^)[!#N$D'(F@*,/+&# 6 5(>"1#&*/"A:F0>*84+A/:B.a57a*)f. $ ()(,"'0 '0-9#I+Q.C1A22B/;0+A&)K)!HH F F!>4#-!98*-0(1  4!$"(,'*+74'1@*-E5,;.!"/#")=!Q#T%*j'(j8%a<U:XL!9D.4*"(1/+!3&6*" -&4#A8*<#%;%5""6,$8*H++T"&0)$ % *1" %/.4@ 0P$ K(6*:&166.#,=$LMA!? D#D!3-$=C">,-%1!"-."2@ 9I9K'0D!-?$)6&&(,)&5E)]0h<*~D'{I&kISK;U@)#1(0;2#?%*:&(!+5*12-1H9E70+(##$",! $!  "&"2.54 2A''?-$0$$':FR'"G%4 ?$5%. 0;:$2($ * . 4A:O=E'&W23cD&VR*}ST m[%Hi$J<"21#9;:)<5-.#(*$$"; W#U$3&%# #    "-$"(1$)4%" 1;" C#F3%%$,%1 !5 8 *# !-$'G%4S$3N 4K3P/B,=(;!$2';;)3\;2dJ^Y*`\'bf"cr/+p!V! ?&:1%F561-190&.& &(,? ?B<#    "!*)$ ),1$   &-- +4"(,)!$/,#& - 241 -216#G7.S.3W5/L*,M)>&6!;>#=4,;JD/VL#PW+Q_+Lg1Hw0d0 O@705?&5+515-63.5".# &1#A@ $  %  &)/%9!4 )&%& -/($,4" - :? 7>$B@DHF%NF3QA(H83R0G*1673" =,313L&?N(9Y)9f21f L):+!&'!9@$G?31A:#:( ! *0)/&' ' 3 7%  " #,!301214!# +++ " /= ! &/@!5 ?(AG@E?.U=5R@1R5>D/>=+5 %3((*<$6>*1a&1_+-]%+7( 4 8L$AU0J!C(.!#'"$ * 1 0 9%8 , & 023 :(>&2&#$$&"".(   #*1"9 0=-W#1W-K<2%)7 4 ?=&:; - & !"!,#6*:6?"04!.+ %) +& * " ! ) (- *?3?=E$;F&KE-H,+4-, * !''$)%&(,9(-?,+?*6$*,-8'CJ+#K5*B"%05+$# )4: >B =88 /&$&% #  '#+(#/)#0$.)' ' $   % !!'#2(3+&5)/9&==)@/&7 '0! 0$*"#%)()-%/51A8<0/%:2(E*#83&8:.7-(@$ H2 !%! 3>&;+<"<<3.!&)%06(! $%("+$  $  "&)' (/+&%*!01$& -=/ "#  $&&D6U7J/>&1?-308-//+&:.!C$A1  #$$:<#A*=$33,$(%&%0! !& "   # !   (+#& ,%!"& 4B!5&0 &#%5.D@T4T,R-A'+.$-!. ": 71("$)#;!#I $?!.""  $(# "      &+ !&%! ! #! #, 9B!?#/-!- 4%1?9KOV A8 7 *  8$A >$;>3 $#!    !  !& " #20*5.?Q S"U,D=)B$D%G7IZ=r4w)8^#+Q9E.0 @!<< 3$ / 5 :=@ <           !   $./.!* 4%4!3%B V)"^&+b".K8.H$PC,=O 1i>;q8>j73R0)@*02 5$<< .#)'& &# -.056'    $" '!   (& ("!$%"'- %,7%<)?(A!H&O,]%.`/Q7?='D<.6D+'[G;fQCjN=TF0L636;*663)')", *) "" """!   $* %+'.' !(# %%+1 .+***"#!6(F2!Y+(VIB!&S-W(W8J8<2!42,'98GH0PN:`H9NC0K;43DI?#@-*,&1*1%((& ##+,' # !$ 2!3#6$59"-*(-$  '- 64/,(*$0)%('&!   >I %]YO!N;&MN)L A05/HBM ,HCL$LE/GC3>"01B%M!G%N29)'0)+5    '6%1% 3! %%+$/0,+5"536/.3&$2)     !! /'+*#-1)!2*"0& *# 4 GL"UOQ ;:F PI&5;#!E.O'M&J0D*/B2-,&?$@#C&D' =*,"(  ! "*$$-$/"$ !'*#$' +*-'7,0>275!A-6 %   $#"(&*"'+"-)"2 &("9!B!C? @ 5%F,L)@*'<51/E7@; D=7"$39$.8;:":(6%*" $ ."+'!.($%%"$ "'& $+%-,(86'?@:=;-># %%+$" " -'&0&'0&0$ ! "#,82B!3A,*<74/,E;67*  #()'(#,58-:"7#5$!( ""-.%( (/)/+(3*'1-&,5#&$ (! )-5.&B1%:*12 0#0-%,$7(&0  !"'''&$(&  "$+  3>39A(00$5'2< ??+%9" #0$+$"$3(1(2#+$,(#)(&#&$'0&0%&4('<+(71"2/&! # " ))*5+ -'(* 0$ '# '+),&3#/-' # $'#,$ !&!"#  &8!#5.#./4$ >*'66!422,'$')($+)+(+("% ,%3.-)1*(0"2%3+4-5,)*"")  ! &'*-9!5'-'%)+,%/&,3/)   $+64+,* !"*%*# %" % +'%#/ )6"(5? 7D&B,#!#.1 ;8-%!+/$0=+,> (83.+4*-.$ +! %  #, # -6="6! %'#1$'&+"7$2! !$ !-!< 7.42 ,&$,$)*77 , "$ (&#--01' $C'.M%F5"/!9,9-3 2/ ) +&6-'A->'@&<897-.&, *"   & *< 4 />&8.!*#&'%** .) -'*- 3";):4=<5%&%'(1 3(( B K E <!;E 7*-61989+'"2),2//-#+)#:2B1F(N0J>?83/ &, * '4> 0 481 !  $#.0 694'0+)+9,;7><;=33#(56 / 6 /;#I NQ'AD I F9&2:22 -.)-(141027A<K4V0X@ ?>=5 ")$! **,7 ; 2 0/   %07=;9(,276(I9NKNGJC B260@#? '/% 2; (F"O5L5N)N !P!SI'=(62!+!   ! "!!'3.<4<ALE?#M4M5I8?2)#*&3 @86 .)     & 07A#&B3:3H9#WEZE$YI[;#K282C : ' *&09+J8M>I?K/H"O7MBKZLWRSP)L<7#0B1E(''-!0!),$,:&'?*.% 0*(.1'&07744>1;F-3a;-p>$m9 a-W/@-*!&%3"5&8'>48,5(%#!* BK$&%$)"3-(509'<8I?K?F8@5.7'($ ) (/)4<7S0N#L39G:[@_=&W4-H,25B#&E?.C**@+(,<%#M/$C+,:#' "& # &"8$%B.-+2,.A 4a".n1+p.b+V(G//3& 1#&0.&1.;-<'0 %' +'D!!M#Y&+ #. 45./68-069!4.:6 =4$?-)4'.+-& * ,/.B5M&@&4?EE6T(W''J##1'+ +=3!'@'6A$-9.)#G%$P.$M+?5"&!$# *#+1(/1>!9U3g+^#N'M/F(0/.,2%3.*8 '0' ';(O%(T##Y&*6'+96:43+>0065!6,4,"/'*- .&36 &$3,82=$/ 66CH=S(S8 %%-" 2+'02$5.4FD :0&88%0'(2*;8)>AD1?J%.? A 85" ,(%/-$,02/;*#3!  $!>!'E$+T$)@ +5"-300 /#3'6%7' +#(."027! /, 0 2#,/&):! M"%94'C> 4  $! ()- 78 #+,/8="8( $;(J0T6+L8'9":*A@3'6B&6$)/.*!-$&-!"  *?"'M()B""=(8).1 2 7 1  $ /5 4 660G D9.'-.2 8)),.)!   / ,.24823- 1> 1:'81691N)[.\&(H<:B#%?+32= P>$3)&',%)$"%  1&G$@'"0"7( ))+ $) .2* 2>0L%G%5 31-+10 0%*)6 J" A#A*8*< = +2C0GA.8M-$V2M'C&?"94-'':"> BM?$ <)2/-0,/) (  #) 1,- ->* #$"!)!'$ , /,04 0; -3 207%"7?$5 /"   -%&%,::#C"G';", %) A2I3%?C++N.D :&8' .2!DN P(D, @(?'5).9!/9# &&##! +!#(3- %#4-!(   &6* 4*'2#$+* 8 FJ#<6', "  $333;@0?-#I'/E/Q(*Q'J , ##7"A,=?D#>$ 2 3* "1 ER!^.H;A:#%6((2$"++11**#*)/5+:'2$ %*!*'$#(&!""%1 3-!   -<(E9"B912"$* ;9A(1A9%U93Y77k*.g(!_,J%+(1 %"'. 7 ;5+%/+ )6G4&725E"'E53A?29:%=? 1<#4&2.=+;%7$", $""# !"$#,"9+((*!"&$!). !% ."40935C +8713&;4% 1&K8S7XJ3^>6a3+]/M#7-A/<(&9(%)'0'!"&')&##(+5<:4*B+/B>G?ID>H.EB"(/2('/&%( "# 3# *. '0(0;.;(3,?$+"4+6'7'[)S4HJ-@D$F@F96/-0;1$@8.(" (!-)$ ,) ),"0(!-3 )& $34>4G=:9>?6BF%>G>O/F $3"5#"('%&! /> 7%-3!*C#P$'P(%B*:#-$! (*54+%,:';D#7H$#K!:!/"4$/E"Q'^-P'P H#3 *3#%*01BF3%/ %*#+(0" $(&-+(+#% . %@8K#>G)AG4:?3%@==F3B%? 1" .3 ;";,645K 1S%[$O&E$9 %&, !! %24-&0/1$9F&7T&,P(B)* ?'-7<>(I(C0B#I,@!:7 A#G" T%P ?%,*$2&. )'#/4B!);#)3$/,"$ #:(I 7M1 +=&8'+0"%1# 6< >BE< ?B ?N9]'O&C ,,(!&- '+: #:(@.0I%6V#^1M*,$2@@., +='23@*J5&X1\)Z^.!S"B1"-/.1.+,"I!&H.?';7/(&E#6S9P>P9L,E/9"5#!)5$"" "( 1>FA VNFF 97;*1$!"  4% #$ *!  -'7:EQL HMSEVFC;93 611.&#  1 G H 9-1,513+<''<-2'!5(26.)1= &$2&,F#;D#>S*Q+!aC/fC,VJ'EIKE>>*5($&2*0@.(A)";.#4-5-@0B**=39>1D3-C405*D/S"C&+139@!0."'*16+<I;O=ZC U@M4GC<5-%%$#6 IN$ 3-,9?/"B+0#',0)1/6O/N3J8213"&-35@J )@ 2@%0%?-Z'&R'@:1MC,LF&OS7U2YH#N%(.1"B(+:/";N$=Q@Q&9a=+eHeLKF3=/)+*4!82<68>$;&8? G6&F7$=*3"$F'1K,AOaMy*n 5SD%>,>6 CO:K;@ 3<BF(Q @N GCL30E-E9 73,(',%((A.$E5(72('"5 )61*1;B4>S<&\G!YM0TN0t*+U$:*-(2E39>),HAS=P?*>HC-[VVLZ=:.&&,/2-0%G5;L40D?,3((3(1.49*,(5<2/H(HI$V/1n 4hDQ K("G)BA IT:g *c+I!F$K("L9IA@P/H ;" 0$"//+&;1"A)0C*-F1;B0:(4<67EIKHNm?*|1+d:5g72m'P4;>&!/+4$99#O,"M:)C62?2J-FMM:O.6)$# %$',*D+*R0/=L.b h$N@!B"L;F?:!E( C* '"9!(;!T'&U-)UA&P8@E4D(*S)K]E\KMu:1},9t50q/)X.9!-,$+ 7&B,C-E374,F+4;:02(!% )&3#%G.%T6.]*-D/&*** )''"7K S1K:BE+>&(D#Q P O@1+-72C/2+.+5-A6A #V/3\4-O@0=A&5I*7S'=OWY1^D<{C.}--m(+X(>U4<#9) -!8'<$A&65/++<. ,#" ' .J 'W!"I#"?!/#% &!+$% ,%;!N!A '>&*%&5ND>;! 3'%-%<*/"!$-$5'5E!J%)V<.P?>AD-@M.GL,GK"=UHH^:+e41o ?_:Y)<:"/>4"%$5#.D7,B#*7)29&*$+ %&(K_'K@:, $%$ %##3!/&+*"+! 9(//1./%$'(++1 ,/1B%+K)$^0.X;3Y@0ZN6TR8PP0?E.FD"M0J-"N#,L!@; 2$$&#'.!  . 33@N"+[+#g&'a6*WG0bS3TT5SS/>G2:<$@2 7(")-%#,80=<>5!*1'#$,#*$% #  '   '&0( >+#D/>')$!%'#"##   (+,62/8#< F I >+;#1-$2&#,  % 112 M( ^%b$%^6-P7(SD*J]3>_63S)/E)-/"%#$&+.7)767'%!,7*.%"#  (!(-"*+ -9"769(*  && -(  $ $    #,&$,65912<'DA,E 4C=3#<&%#  -#$H%TP.#Q:&N2(P?09V/1W-*O(!7!'%!/!"$$("%)&,%  #$6,%8%5.('   !&& *,&.2<8G3U &E*<(10#$')) (-/(+5&*3'-$2=:=9/: =%1B9<B.(9'$'% ##!)$! 3<,"=2%A-#5,*9C!5R.1M20- ,1*..67:2%%!'& , +*50"1'$ )>'8%1 37/A,2P!?[ %&%''4"$& 9 B,5='+?9783J09c'6g0,n02**$ " '5 >D+B(> &A1*C97D?B=4" *0&+0/66.&+ ./'B#*B)3.4@04.&+*"!3C0[4f%7_7X.+M5I'%0% &,&$$-+' " )$7-'1<+C$(?(0H1=369*"2"&*(%//$(2%8/;&BP'G3 A3)&76 3G(&M(*N$L LC@6),2.1$.. ) ;#$=.(C,%45/22-%(-)& !50C2S&3c0?m86k123=%.$*$'$#!++7572E$L*;4 5# 0,.E-M #K% D$H#H L# <*- .73 +)!-6!B#I.I+$8,*-/#0%%!% B(7^16i46l;8u95mC0QT,-3 !()1&#:-.0;'%6"%"!$&,/C/I%,,%*'+#' !#!#%$" ! ,*6/C'D#)! ''&, ';(J!&O%F" <+J'E/;!+7:/%"#!''9!#H'G38=9?+2&%"- 0$0#/3$2Q.4^<'D=/@&.811*#+3'9-0F96Z:9W,5W:*W:9-0+5!Q+$V=+L?2.@*&/.3!5+ # " ' .; = 0  )- ,,( 4 3 ("% '2( 3CJGL)N7S0JO*LM,O@5;**7&,& " (+ *!H,RA6F43K4)K?/.#("%3+"DG"IT#AK$#E 6%'%"*- !*4 <A@ ? /  %'.<=,'+. /!+'#1  #-A ;!J-F DMCT+JZ,HM3A2(8!#& "%5& 7-32"=41B<-=B6&)! (+5FAQ$=N F&5'+#$  '9 > AHK< %  # "3"6'5#&8! ?7 34 (3%  " (6$B-GG4DE1>)(0$&% $&#("$""4&59,3711#7"-  "*0$="#O(G-:4/.+#(  ++ > :??? 2 )"#+ %   !# +&&+%%1": 4 43")   "':$:!(:,5@/78/*2 6'2 =E1 WLOT F_)2e"1a!.T8/ > . ;#=*" %/9BA"HE0%! !%!"$ #"        *A? 3."2:MK>$2."= <9/INB^/5b17a.*f(.^+5<9,/9/ ,    "1 ;?DA@%, # #% ## " $"#')!+4&6* ;&<+BFN"SJ&G., @=>2%=I.1`?DfEJS@4T80P)4?0'1-.*" ))% 3:45. & %  "%#% $ % "#&!$ &% )*(>-J3G, G+@B LLR'C (. /!28,/5D6.VQDdWKaICUC2A:2,&8#1, ' " " ) 8 # %' %%(!#  !  #$0).%     % .&*"## !)' #:4"K=Q9X+SP@C!R G,<)+"3%%<1H#?V5VV=UY@QJ9N'093(<4 *#2 ;"   !%. 061  #!$(7 ,!23* #!   %$ +%%' (, +#"-7&Q-^/_ ]S N:D C ?66%3"L2\.OFQ%E[;9 8'<<40 (- '!*!$)*)'$. " &00#,-%)0,.%+-)!",& " ""& %!-&$705.2,$& $2  %!& %)5( %#,0+81 . ' 0% 2C+G3==47&=#/87;%' "%/$.-"$ #$'%# !#  '(.23$25.313<1';26(5 & '( &'"(')'(%(+0**) #%!"  !",  *.."$$ " &1 CA(<01.';,0?"1<5,%1//(-..*%# "#+"!)&!!'"&#'&2!&6 )71.:1-A5 ?8:1'( !+- &&.!/+ "*+' #  %)$ %#!&--3%#!"  )1% ,#!!  $!) %-. 3& 3'B(60'0?#CF 3 )  %"*!,$'&" %# "!-%+*$/-"/#1,%6;58:..4&'$" '   "&#+' /)%"$( ').,<*&! ""($'446#2% 0$# "( ##4(7+/1($EHD7$#5 #'* "(*.$#',.70:(8 122;*303 ', ('!    ! % /6 6&&#$$'&&",-/ +%*," , '"&3"AD%=*7* ,4! $    %  " )& ,/F(J='2#  (%".).--)#,#62=4F2@):?7>,9 #: '2&! !. 1 (1 :9!! !#'% ''' '%) ,4(36#E+#D6&A/6)/ "%* & , / 5,04 - 27-824+2("#+'%/30$5$&%3?6FCA>;/>? ;= /7!* ,& !&*" 5 6 ; ? 71$"&" (&-48$D'+?70%=>#ACHA<2)#%0 * + +5 (< #::@D"F#=8% 8 )/+& %#("&%%!$+-8/B7E?G!CII;I8=82> #5+"+/ 46 ; @ = 5 -"   &"#!*0:"A.3D1889>$>N?LCA>4%(71 ' (9 #6>!=(H&A&R $N(B!)F$.8,+,*2" $##  *7+=-E 5IES!OQ$SB$L6B>46!/&# 1 . 8 J E : 3(    ',7@' E06EE95NALIGEL=>..+: 3 "!& )4#B"@3=8D4I8E+G ,D!K-)F320%1$( ( "3$8"+?;D#CR&VS$[LU;HB"7<(* #:3,5 2<%'90*$#$#."/,274A;5LK+SQ.aH0^=$R?$JD.=: ,+9 F" I$J ?>/ )38=!##+?-"<327L<5[B[C[@O9A!0!%  ! 6 EC,>:LFI?O"EF)9B,$G4+7"90+8 $-!4A1,=:(1& ,!# '""!.8+=<-@IA7VG/jE1jB(_5N=E2%7/&7%E,E)HJE9#$,;IL"* #&()+#31$2>43F9WAV<O5F : ,)!FD?!0><G<==8<#)<)%B"66(M'.P0;0*%(/5%3;,27%-+*((&%,1/!.;''-C/,<,*<0"3+9"5(-%& -683:,$&>'%B -643'(*05&H=4&3<8 ;--#* )", 5(N"#R<K; 6=G!B$0# */ +4/'"064/E0/@#'2%/   5J,a-M5G%?FA7="B&C*<$& 0'2-1*"+,$,4/6*!/7'&=16 ++( /1&%".'!  "$ #-&'"& 0(4 *+#!.+B=-+ A +L'?((54).6"62,3 ,3%,= !S#R2J2D4:: E C 3! '#-"(780 +: !7+1-27*#;2!3./'?+ +'*3* -! , 3 7 0 : 6( 5%0&''/,<+ E.<2"2)+':#7,%?RZD(=5928215/2!'"!4B4&//'8"4 1 3 / ! !.# 593C3=039/7#=(5#C>- / $) %&-@?#;5#G&BC7 C!? ',<$9/-&:)!F+C&3+-!-1#EGVGM$R.J5 5007+-%(%! *3=-1 %%2 .- ,4 $ *%5? ,C44<)8 BH!=;=5 8 / &!* =A!M ?:&@/$M$ OK;.$# $ 2 ;4!/< H 21 3&):&!BM]#K2G3F'M694!1#+ )$)-,, /$'/5.6 ..+ &+  ! "  #!,2 (< -#74JT&QG)=+48"' - GI;?$=F,B@0P-'W+#`!W D0 *& :-559 , 1 9))5G`% i2 YB/G%=!&7&+,).,$9792F2"<5%6&.*&#)!#", $ & (& %,$& 68 P%]/R, 9:F4K%.N/1E<;7/0./0<:C8>=;8# 5 4 6 ,' **0!2 3'$$,)5&B, L.A) 2! $&$$;%?F&W,4QEGTA_H7m:#d=W0$N00#;*(2% '#& $$ .+5)*'9? :56J2G;?84- 79: < 44##+6# G""L$:!& #$(1#@/59)C2"9 5*;&/+,P%e3_DDNKIG5C8"KC$B3'0-*:*,1)"! )!"+#*58 1)+!'/+/99-3M4K0!=+5+2 /)*) :DD <8)$1M")^!'Z$B',-%(!&)&7 *H4>08"<:$?5@"> %7 )::A.F3T$b3 O1'@/E!+6%.#%+;@ . %+"1!)0-+//)&(/#$3%&5"0!-",9)D3E*4G//96(::.=#:&$# 8 B ;EB(AF2V/R*J*:)&$!)#)* 6B )E6N:F97%4$-# '"& -)15! B6 @3<4AG ERF% B)8(,:73220%*%/$?M I"C$9-$4"I.F5O 5F30 -6 + *   42 AEMAUNSF ;5,-( -  # > )B#A#F3::-+A!2;,4-,+**0.D%4#'5+-*.%2-*1:;F#>!J="?C"B@,39*-4GP Q#K#!J"<;13"#-%<'(E!&K*K5+;.@@I; M3'B.2/%@(*J'=@S;h.` /D ?$A+?(>8793, (8== 1D QHQ@ J+A7%B> ?960!( &("+!:7) 3@+4*=6+A6#I=#H?:F(^B P.38B''N !T!F'G)A-161%S;)^%!W17(<# 93->/J0X&?J%8F@CN6F-3'( +4*'0<*'K!"S$X1B>,M.L: NMCR5K'< F G# M9NH?H2 F" J- J3 9(,#$" $#/)#"$# *+/$7'7F):^'W"&g6"`Nn+Z!1B%I=)K5%J*&Y1&V6F9)85B)?FR.P%=68)>86HEA"KD)=>"?/?'>! +"4#0.#&H1U9Q@@ P-"W"%L6AV9f /b3M!#@(?=5CDAO2JK9 '#'/2-4 88$(5/&.&:6F,JD:Y:>p-"p %h10jAfL<0<2J@965!L/!T%!K2%K<57,G.F 5"D)8"),55H=Q$HYJC(=*!3&+5&7 * !,+D0U@XBBQ-1SE' ;T'`a""^'J>C.C@CE.B?!#$%$-1J7Q'3E2)8A= %H%>C+MH.i?:s+)r!,d5"t)Z0P;"914)99"DF&T<&E81-3600- /' +!,")2.M3X$@TG;5)+)3- '-' ,D!H:Q =G1EA )> ,6; $GR/R6N"'N/1S/1I'8G=?K?&Z%-f;\9\0Y>.Y1O,E41272.5- //,$/$(!* ,/#- #A3Q2G)= 7&%* .!4 0'+2!++ %0&=".*0!79%E;)78%.+&%+1/$ % !)0-E,)D-.J-9K@:7 -!!,/ ?!%M/L#(**2 883()&$+!"%#&)',4&%>1?=>=D+H/?99730,'0$'# '-&#!- !2#=$>( 50!3L(,R;I/ 1B''&$40# 73&'0/*&!"(3*=$;,"(76/$)$*5A6)H0.L3',0!/'*,.' $#'*) %"%%!,+/ )10!&2'&3)"87 :+(:#)0$1/1,1!!(+1!4/")D ?83*4)31.'6-!82*9+852/2 :0'%>!&$ !##6= 8" )--+%%:?<%B<$-3$2$&-/')3%%/! $ ")'/:(:::#(20103!/7)1D#9F4V /P 3=2*!*!,*2 :2*(*1 ;3##,$6!(3,*4&! &*,!E%Y V(C&$A.2BN@ # /# 5&"1" !$- ' 8$*9"+7"+3';-%9A1K)<%*    1>G&J5' 51;0&;>&4L#0S1U 0X 1B&6+()/ 6)%%&00-5(+#"*+&(4%'4'"%%20   !/3F0e-g(cZ4M,L+B %(&.*+*) ( % #2",+&0 -84*(87#2B!3?201#"'*&? H-07<*7."?=!8N 0W1S2L(K @2")"%+"0!+#'''"4+=".D+/',))(%  )1CS!@`!;h@m 6i-1MAS822! /!/ +-/$' -$/##>!*?,/8(9)-32(62,.%%)*"'"!(,58%"+8/;;#>&%>9":B&5M#3L#-B$FG=2* *23. (% .>D A"5 +$& &DEF^>g-Ad*KY&Fb!IS,J+502(8&G8 )! #$2D,"<09.$8%+-!4,1.(+ $#&1*1-)$+)45 65.6:;I3L"!I ?E B&;9()+13$%%+#"3CI)<),5#)+ ' $0I?f;7R1g/&W1-7& '"'&!((/"+""#*$* %%4-(!+ 4' ,, 64395( 41?6,?4$>4(,04+3 /0:3>2%78H/5E).J!A% "*0-)*4+B+HL;NKDNVDRYT@GW8$5:$%":. @W8b$:j1(1652, &  &',"1#0  )    !"$&/& "! +4' '/5$!#"%/(6,33(/+0A&L'B%J%S)U-G3/:2;6$C<   (#$'2-&#!*'%N6=Q=K]AVTIW=;Q< 3@ !7"%/90S2a(2<>8 ;71?#9'34*%  $" ! %!#""0 &"!"$  ,'>#!$##%7$G/Q/R"Oa% ]$.T+5F'15"2"* (("'%!$>.>N-VS+HP+G6#@C @9()E(%^%#25,1B0C7+=)H%4(&!'( # ,780 ! &' $ ! (!1)" #(8%' 0*=3M3M#P\!%X!7U)?T+9D'6-1.!)-+ !!$6:HNZ(?M*?<%/;%:3!(&F+",33@1)E*C11=3</4')   - ;?=9) "  &1;";8 C 9!%*!!% 0 ?%I-JP1O&>T/DT0FQ,;:!1#,,*%5""2-%.&< 7M#1K)@!(:5(#)*#%(" .!+G()Q)G*5)2*)+$ (  , 5 ?GC@3 &!  ")5%8:AB" >%-, $-7E'M%6S.9`4CO6BG-:5%2# "(&(2*7,- &!7)2$ 9 %@.)"5& ! 2S(O7=.5,61*%%!  '4 @ : B< 31")   +$0;A >@ 8&# & &8 >$&?+,I/?A1C28+'!*"(,!,12, +(+'#-1$B5$- AH G/"?&%95&/4'"*#&   (4D:B#=4'!!   (5:!@? ;6." %%*&&-8.B'1$ #$$%%#/$0 $+!  )8 ;" . 1 &(46-;# B$03/.*:.(*#$ $!$'"2(<%8+>*B3 '!     &)!08> 70!"   !%( (1$3(* % $ "#$.$6 !&-6 0B7M-F?5@ "7 <8")68:#@67+'+"$),$)"$2'(+(16/(' !  !&!!%)//&&      #!') )$##(-%%'$)/9;4O&5[!4W13I9*Z:)g.0i5,Z'3@754!:(4()"  & 7>DLO>7#* %+$1.1&%%"      & ( +!$*'&8-%D1O,N2EJJ GE D*#7&B6;,91C4/JE5.!1+)  &8&3$:HG 0 *% '   %"$+&+(/'(%!$$'# #   !( ./&+*;.+B;!P?Y2 \<OLG AA ":-1/#'62$*;08?%D^7Q]8($/J(3X7Z%C].B^2;L+@)(1%*#$,1' "   ! )) $% ,,, "  (*,*.%&+#&(*1#   ! !!   )0)55(=/*F7,d?*g7h _ TG63><(*: R M*Q-a3i'5U&-&0%/2!+%'""    ""#('!))$2)6(0.'  !#.*&+(')*( 2'"     ! %!-0-1;7F'"G.%Q1(b+"ah\$M =7* <73=&6'$7!=H1IH!O"D"./*' %($!&*&!"    ' 3: 9'1+'++%3/ ''+)& -/!#$##((( (*'" 0  +%4,(>4>9/>!=4X4\ &U TA 32C G+H2<;(+25599?:5/>5 1!/(".&$.('+'(   !2@+I4,<',0(,-.-% )' %%'& ,&3$.    +   04, 0"3/)5!8#)61> &B>#. 4 I X#Z&F1 /1!J,1G>:'+/%707/+)4'!$ $+"#%& 1#'!'& )"))/9.2B5;>/A60?)9/) %&'$!-#+!( )&! ( "6! &- + " ' *7$4 ++-#  &/;HH@ ?!D(0C)08$A'>5;%'3"",#' ", &3)"70+",'&#%.(:..8B0=E%?6@,5&1!'.-) '"*$ %$ %"* % %. +=&! ", (  ) -!)$$  # ) 31 1<"E( A/";>K9# 9$..(%4+&0(*.(&*., "!'(&,$.'*-#29"8G<=65.+/"  #)$  $ "+!$ # ()" '1-? &')%+ )  ,!1,%.)'   #2 37!8+907CH= /: *.$)$)  ( &  *) #"" # !"))'/.)))7$ 4) ($#1!!;$90/3$  , ) ,*& !.!187"(*)&&$%+!' ../( '--5;<5?/ :0234/ 03 ) %'% ''& ' +. -0, ./(3! 051* -4)#@,A-5)   #    $$!%' '+)$+&)%&"#$.$&*%+$/&*"!&*056;>>EH>:0 35,1,. "% * &*- 95 ) (##,+*4.-+9*0 ;#C!(8*.-<6(<@D&6&. %  '&( (#- /5 -4/()A$>)'1* %-"* + ! / 24@2F:MBS >K&::18.. )% 0 4 -;=<8(*$  $. ++7'5<$5D)3=1;5LDOLS#PO$GD1;2?2#!- 1! ?$MI: 7,"% " ("&&'$.:A)3B592=?+E,?#84 ..&" $*#7:#>,8 4649.J1? 1A1>925-/!0, '0@'>5D#DIPM!PN ICCD;G%#<5)& <( F/U" S!F?.  # ,3 *338;:@PC/X,N# H A1!)"%#(3:">+D4H$;H7C/</D.?9=G1D$? C 9& #(+'3(*636@0NL3LS*RQ(UA'LP?U.K ;+#$ =+ K.R*S%L"C9*!'1<;$!,(/07/HC-[-d/\%G=9$%!( &747)C/E0I 4O7>7F;="59&9+'>@$"F'-5+&(&#"& % *'*(08079DE3GL2PK2SC'LEDR;N /7 #)6+I/O5 N,PO> !1'2?MR/ ( -.')'.-2<62K,X$d* Y PA0 %-6,,$@/= 'D"K,42F"B7#N&%K$;61(,-%)++)*%)) 2 8$$, 7.4>@K>LK5WK,MF!<6<: &8 4'1-<0!@7A,CC9 & %/ C W"4'9/4:-9! <*3=/BUO MH : " )%! !'-!1$!# #+3)5"1+-1:H/W#UC' ())&(("-!3:7,%( 2@$$HC6KA76DE%CA=</43 120:*411B8&A,%;>2&% .I['D-E":="=2$A#&E%>'> B> B /%"! !"..0.'**''&- )#"$*( +'92>4U+F*:! .51%"+ / 1LP(?/%:65A2G18)*,;-<#4)*A0<3*G.F#="= 137!'!  "#)',50A)!F'!5-/%/()#3(:,B6B.?6'80(#, ,+!61 $ % /0*&;&<: ,1 @C)"1):%*N&1Q"/A2155#87:54@38%6":",$<U'Y#8QD?":' C$C > 3)!( $ %%"#$( -369M* Y)E)9$8 0#/!>#O1A/9:3;'6+%' 7 7. 1&2& 1!-" (('&(/3- 1!*%.!'K!!Z# U%#K8D<BB 38:C39-10$ )+/ 7":64;.@=> <&- '-&3*+-/46I0V)!IP@*7 >F3IACA /L!N!&Y)-;"3$3: F :%4 #23%$ /#"2'&%* $"8PgX#^.X6Q<>?9<%52%5-$&' 6)'5;=+51'. 4 45 / "&*. *. 18%$1-I, P' R!PA9>,G9FF9HP_ 3^'BG!B=#C+%RY N G 5($04$'-1. .  -=Ve'T1V7U+R;< @"6#%/-26C#;2.458667,"&! "*%#.$+   $ 0*$ &*1$J'W&L#G,E"G)"E:>H7I)IO W)2W1FP/LD+].)`d OH&+%!, 1&!(0 34%1<\'k7;B7D*@"*=""8'931% ,:76HHG2"K/@*7&0+ $-1*. *! # +!(77',J !Z&!E%SS%E,>D2>,E%W2&Y=C:K8J@?@2" 3 . 80,04# "! 4("?&1R#"L!HE)K,;/ 27.@ /H+V9 ZD>]CJU2RF[9'V'#V$;,0&$!  ))),-8',- ;&<: :> C = 97#!4> .A!E: "!-5,-28:4$A0N2E56#&/!9!8%5: +J!0Q7#aI)fL=Z/@<-A87E)%;=5(   2- 1)).(0'26%;$?4;B8:/D1(87&7;$-<&.(,91?+9#; 6E IB AH"!B5'3K)O%&9 )  (42B<EQ!FR!FYDP .84)%..%D(:E:R!/R5)f8%S-U&+,BPP";%6 '!26(9&$H/.7,27-594%%N"VN&J#B!#6&6$2!A ,G7; 1+ +-'#   # +&# - ;,>,B7Q.^9$V=H/8)(0 *% -9 /F2?"= 0@84 <0+3#4,"1 9"8L F0A-(-"0%*7(-!'5948@K#ED(C?.0-5,>!%P Z!`0X/L+@ $5/+8%D+>8*.<$A,#A(%IDMKCG1)-B(M 5`_5Y4I!-C9? A3@ ->?.#L*6/*:$I$3/(>78)$/ -( &5+ >.I(N0\6J/6:2,3%0#%%& $" $$")$,-#N4F+ 1E=Y GQ7H0'16 +> D.&<3!8A 2;+;/$I/Q1"O;565'0:0I7X.]%0T&2K5@>?>0:.()*="4:.91A#QY-;306+G)O,@+-,: ? @ ,:I> K7B G1 D< H18-12*/!( $/,.?3*G$G" GFIPxK6\:IH/UD/[(.[!O I"A&3&'( %C. S2FJ5KDLRIWOb eU YHF<I+F&2$%!/$%*1''@$(F-C:6A*H"J7FB @M1H(9)DD716 9/ @&FL$J/ ='5*01',0/04&&%#" '2,*O!2l"![+cHfRwH9`7JRBTNGSB:O:&V.!O)>7$(7&!/& ;C A G-G5GEH\ NW WMJHE7?!5#'+ ) /*#+6.K4B>9J'H#;)6M3])[2Q!K>$<,@ > GE#LSOLH9 E J>!')% '6 -A)L ;N E7 G29,0>1D.7$$ ,1"2=;$Q9-]*u&w!n2$l6^W!`Y+FMB;@K05I3*A6D2&4=4!30#2.$" 00:5'531?A-BI;IAO<@6?<",)0(&8 <+G58'58$/C%!C 0Wi)b$[D@+FAG F0C%'# '"4+G;!A53'3':#67:>;L/Y#v%r#"o*&d=UJZH)VA)E=<5-?&)=!)43&/;,.+(##)*5-,$-/.588964B=<><6#*','- %(%$,3(7"= :&<-IP:@+Y#8W%8Q*)@7+5":241).*!&"70YH'TN2?D;*78/6)&5$37+&** 6*5,="+=2/<4F<@ 4:)1#!()& '#03&-7//)< &> "30*+@;5D<3:8,)/#-%#.+")21 !##'%.256C$3." #$")* -"*";*A&4@&=7+5<746A-/D#%@/#% /# 14"+?>!:6F C/8?*'G"2F)G&+G.(<">!"9--"*!(-4 16$F(P&UD4""  &4"H.EF*P0Q:97? $)*&* - 2"1*3 * /#> ,@;="-?8.6L3,P)%M 42$$"/ './*16 6,$9& V"U,I6C& @"E$ 7%+,#)#" +!),E T!P&H<.,#"(+ 1$=(L8N3P%N(E2: -7&'%##. , #'%5%2# /!8(@&$B3)=1,2>+)N%L* 57(##2 >$,"-#!'!- 9*@)L.K%<H(B+=%'($'!"-#( /!GOI K21 /% ""4$  +4 "C+I4O1O-H"*?.34-.&%"**!#') 1!, (/B E+;4%88-,@,3B-3=0C&*6 = 8 . !#%+%'8/!F' F"+2#;:;!((& )2&4$.!$"!#$ CCGB612$0+-&&### )$*5*<'@-C1E3E4>.+9#013/-/+) &$+,1"55&!:LD$7%--(:1)(/& +7 '!,**3" :1'10! $,,/5$@/4+%) //%"&010&0,00-%!-'$!2%B$? 35 B$:,.)' $!0>1=5;2$;=BG??KG>D..0./()+!)1 ($')*/+6%34!"0?62 -"/&(1/"2N "J+0'',)7$Q#C%#) $""'"%+"-,*44$734D*=1'D,5,#')&'04A#'')4 $?K(%W-+G=(=AAL;F?H4?!"3$%+ ,",!$5-/---!-'""&'(&"$ - $$%$* /@*a(]#M"M.F4[1>"/$$*0,*$)! $#&$-"' /-<<2:43B8B3)0$!,'$)':(K P(Q0F>@A=A?I4H 0=;6#(%2$6"$+# ,,))&3 ,(/+ $%%$  &-#8D>]8j7d;[0X ELB, 8'B$,251 1!#)/%4">;$>-'-)&9/'<,%/ '!2&$"7?F,I/G2?5<>9H4C&> ?B: +#'%/7& #)$'* ,0 2(27$%:@"CX>i=c@ZE]Y:R" ED(0&9$9%E*9)  $+/#18&,:+)/,0 4+%6-5$.  "&'!*)/:$!@(%>3?0BB@L-NB7 @?C#<)*")(%###& )'""-0 5225.-1>!>V!@e)@_.JK.GP$U9,a%L@ =(9 'C.@'.4)% !#,%((#(#,1'3)8(@; )%&#%+$%#&*- 4">*8*984F(H$9':)B0(I"AA"5(&$#'"1!$5&++- )4!3'**"$, 1+"'*05$)22-B.G$A%(?-#/!" '%#06!* %7>9 ,  !%"-(% - 1 32%/"2 +)!/-*4-*;,*C*?%7#.,0(6"):*G$ <*1.3,/.!". ) *2(:$ /:#*K-,O:3UIBUK;K@;N'4?1 *(-1.?.G(191</6-' *!)59++!!'1 $   &$&&. /5 2+ / + %"4%.):(7*4;'A,D1F%Q& S*F*&<+-)) ('+ #? S,c5?d::Y;AP2BJ"/J B'2(!$> /:/7=9D#5=+= ,?**0/20       " !''"" )'  % 1$*)(-'(97J5P3TUU*Q"K#$6" ),.!&@R'c#Ae%<_)?T'>H PP!<( (0&7+,;=<$IF9L5C55'+(- #     # , , '##! !*"-+,.0$-, +! .!-%+?$4G:N(S[ X"+M/U*D"*.%!'&4%@ 43-N%$`=h=_(3S(8?L"C%9'!3:+-5A5J:998B37-+ %$    " 688 , "  %)68(9,BI H@ )-""  #2/?0G%K U#Q5R#5O+5J!954!(*'3$$3 ):(8 <)Q1f0b#0U!/4!2" 4(%-#$)->#G&G, 7479-40!" #'%CH&?#6 '(% $ 7#A? H S SG/ &/;= F! J ,V06P+7G$9:1" ()$%(/6'8E8?..DL'O&C$*## . 1KO1&C4A)&;2$',$*"& "* 2 ;A!G&;; -+"! #2:!B>MSC/""  '07%8&(?+5>45,($ *)10:'7C<6 +,3"9,2%, % '+(7!6D#J+-C//@*24--&2+&(*#"-0=A>) ;14*)&  #+8 BDH> 8!.)   "*$(2 95  )&"-,*4+6 23'! ,-0&4$:';!;B$)F,7A093:8'3,&1-,6&!D=)5 7+ #  ,   "-37EG?# 2    +-"! $&%))-/' &(-)9$:>,!G$B>6%/>.%?)?+;5!:@ ;2!)4)> 3@71,1->9+OB/b9:`1,J%35 5 (85:>2?#*% 7 $CBM AH> /' $ ',:A=2#$#"&" '  " (-$#%2!%B,&K5+Z+#^2U>QKC >=04)@"6F>8 >(55 7HAI#RB*[:,G$4/'5*6 $0 "#!,&& 6 A&>#9 H F0! ("    & - 17=#?*5!*,'!%'& %%!/   & 07%0;',E5*Q;/_?eBg#\&TE >6 ,,+7.3<<-7%3= 5Z1^=KFI)6*+(&.'+,!".!& "06)8 &17 41#5(!" -/##*!6$6-;.<"0+'%(#'" #%!0#!# ! " &32&!59.,H:-RF(lK"`FbP'K#H ?56+#'+!59(O#Y-N/L.E!*+$-()%&"&%"  "%$&% .&/$)'-$#/$ ($' #&%($2'%0&.)1#,1-'%%%&& )#($ & %  ( $("0.5;,+O?.RC0cH-f>(k]"T'I8%8B9" ">@1B!HTS@(%%%$#!  " ,!/&2 #'3"'3$0 /!'$,*)0(,+''$*$'!("#!(+ ' %% #$-1"/*-:%-J4%S6*U8,g03f*c$R*D/<61=/75/%/&<(7$ B6A0E%H3+"#! !!!   $4H#!J&">* '.(0% (# # )1"$, !/(.#(#!# #(+&(! $"53!4*@96F!)P%+Q*7Y =b /^#O -?9* EF)@*6,,&.6%8@8K"0;/4/:3/1-!#(#$ $)'$0 * *; P/Z6.G.45352,2"+*$$)0 ,$ 2% 2&- # ' " 0 # !!34 46%03&L,O1A G MM<(<('N7.I(6G35<%+J*J)(1"'*"$*.3%,*51&4+"&$ '  #)&<1#O4,Y5?J5K>-G*90)!20(0 ,* " )8   #)% )+&; 'I2C*1 /. ,) ,&9 = DG I"I#P(P062&=!B$)F)2?#74#)+,/%,%6-%700'*0&' !#$!1,$E06K,(>'1&)&#%-0 7HPWP(+0E H'D)*G(+7!1'/,1*&51+2.1 )/!#  '" %+06;C>C=:6*+ $" 01 '%%" (( )3 )40+." 7<4&#&+-+   ! #08 C D ;&!/!?$@;G#3'4"+/9%$)#/'!-#",$!%+-(9,,-/ ,= /636*' "  # ) +$*!! &"$ (-*:7$5#/+;' C<3&'#""!%   !  #.4 8&/"&*1#&&&+(&!-&'%+!-$/!$#"% 018828 06 0+.(+' ) #%# ( ( *3;907;5B+C8. *-&,"6 *   )$#+ ' %  %  %(- '&&"((-#&!$ $. )::BDI0A ,4)+ - % # & 34 ) ( +$ '+ 5 5=64;"=3=, >":6(,5(38&+!   ) )/ -,,0-" =4&/11#%* #* & ! ,/6 88>EFFQ>O:N,>)? 5&/#3$ 3)8&;=$!460  # $&%"%%")("6#?2!> %1.!#5:4+ " ! "-$2&:%!,*)(2(-9.>5;(+# - -!$ $ 7-1&/;*9I&>I"H,IH!ES7 (#") 0 8;(!*%%F1"U,U%R A; +'" ) & ) 2>!I%K,<71"E@ ADE4@)K$G*%8&&,#" %1- #,*'4/(-991CG.AJ+MJ(IP!>Q-K : 4*(>.I4R+ I' DA>"*"&+#9I169# ! :"T'Y'bT N:*! $( ++./#& % <> ?%;5-;?AGI2K+C>+4*#%#'#. 6# /36 49A49O:@K:@S+B?%7G)F 73'$#34@9 C0@1LOE /. ;O!;$A%+/#2-!1!?QX S = 6, #- /,-%6,;/72-#2 7E:73@EO?T8P?F34 % .+4!41!.#+.4'0;5E@8A<0P,/D''@;68&0174'24)?4'J&$ED:7(30 CV'@"*.#3+<")B-@*/%>IC H7#)&* -!.)'0(E+I24%'  !3 =.54, FD K>OJJLGH-;"! ''74/%"."-"66=*(;$34&>&0>2>':)67$06.4)/81:00G-A+A(@F!<5!/*@R'$2*01,>0 =5.E*I*62 !842%',' 1 +*8%-514B2L);.1)(,.#801C/P9SFAQ2V;LG*!03 (##)-(-$6A!<.'2..7* :;4I$->*/:,)783F3A27-=#)J-%C+ ;'-"3"9!#7&36)?0#:#> = . , 2-#'-#% ,3 !9/%2@#@=Y=!a1"S"M* F7A/6*A; KHNEGM7N#+X(PK)*,$9/#"$*(&'%&'10%/8 * %-9/K-Z'-T0*R0P4 I82>7@*4<2;$1E846)&88#:35?4A< 9. $!$%%& ! *< #02CEJUE$b6&f*+b(%R7H)!H/KI"XV[W 8g!#Z5 ['$B);A$GN C 4% *)")(59.1/$) )"2=1V'd&'`1&a2`4Z6E<$;5&6:'?44>,*5037"9!:(//, /.)0 # $! & #$$8$CC"_J#j?,f.#g,!P*5%!G<%AT!K]@h q#i.(d4["4F"L1&^] UF9'20#)#/#!3)  -=$R)'c/"f4!]1a1.6 3';* B :<23"/H)7968%?491-%!$!!%""!! &  ! $ ! $E%#]'&k0,\#$X&(I!=0-BC1Db :g,ndh +h-5f(CQ&`<o+j O G8# $$+'!3,'& #-#;%Q2&6E 'M -O/I+@.E#G7%BH8R*_ -id4k46^>G 9B#;+$4-;259 -639?;&J4K)B+=%B',/ 58+&,0!   # "%,.+(I*0H#,G"I.G"%?4=O.M &X.[$a1(n?3m8G^1_C$U8Z)S?4"& !!!'2(9*A/6/! 6:6EDDE:"(:+$//91.299F6D4O0H"A)?%:$E" @D7-!3;"%3#-  !0 /%-%+65; D4$J:#I@)J(0B0,/.#+C'P"W!3b3+q;0u7Dd$Q=#F4=FD ,=/'$ '-#/%!2$:" :)/- 1*417-9'--(,(+2%24)%/*=,A-GIEE? AIM!B++98"734'+- #  $3)7:F >Q&DM"IUDU*<8;9:>8+7;1!9@-[6`/)l.2u=dBA#@(!A4< =(4($ #'%'&"%#52%*:$1* -3!-2!0*)?)6!-),*%)+# - 8 : 8;<$ B$M" GL F%=45A08G0@( $#*7=8JAa)P_@S8T.7BA94E6'0?! F%KM%I$+T,4X-L+2(1!  "&((7A=OEVC[(R$Q,::" <%(-4 />2Q.Q!Z W!E+  ,=/'?./&1+7-*L'OQH1<$+537"3:$>+0 / *) #$    * 07'+.">&EI!Zc#W(T'M!.0,$',./H ;Q$0F+8-2&2(# ,$!A-F .K 5P X"D01% ' ,#"+ :3D6!=3(74/-B+1P#$T,Y 2OHL6=..%&0+- ;( 73!!$#(  $% .!, 7HR$$[%%\"WH) 3 765+%(2#'7&$5"- &$' .& !0!A+O:Y7] H//5$9? $E9 4<,%.1"& %'+ ?6 DAA3%?:0E9P*Z <^QTLOF;53 $ #+&(%32**4$=-*#,".% &&#*#$,7 A%%O%R#M#A/ ='=FB * *, &  -2'4- 765J#>RZm%8H5)%F'0T `"L.#N K /"+!,63$I9<$IB?TFR;XBfTWOJF<:80!'(!"%!1&.+2 @F /0#0%*6!=&=/=+33!35 /* ;"<H?"FK) >+9/$7,&.'($'&@ NC@XYT^mN>_GJ?BWKQ]3MZ8V$K*$B21 #!-@!K,-O;+_V,]Y.Za'bW%Z>V4D!;-', #',# 1; D.4#/#,>>;= ?E0>396K$(E!+&!+?G J C!E& G95:9,+-/5215&'3$. & *$3-?J#%P4-`:%ZO)tON\KKVZRUXZPMUS%S>I5>=51 (08&K-'T>'VM&Sl(Yg%ZO"RHJ,J:')4"6+#%& &; -760'<%A%># 5G:P-S/M!0E$.:< 3+) < D C A'2/(6*67,<5,A>05@2%%!)7=)N% d2,Z,#T6jJ-`T;\aCQqYVfZZNVN9QQ IT3E-F3 "% );$>9-E@#NJ$U]%RV,\SZ<[!S!;("22 %! %**024 =,:=3?2;'J. X.]2TB C"C*<9(;(:*<%0#%#9.#D,'D<)54((# +.)<#N*S7Y-'W;]G&aa4\f:PjKE_UROUS=MS)@T$,H#=%.$ ! 6!&;<"A<#JE)IN'ON#QHP3 UG;**.;&4# !%)13/ '9 $O#T$J"D']]!XB?@+72/21-8 &5#&4$<.B-:I!32+& ,1%08E#5C*4N>!VC ^>YX,]_3X\@WWN>NPCGF@6;;0=*;',.$3 *,)) 2!*8;EAM(?Q)CO @@B/C'5,-%(!6! 2'06"+*"#)/1 Qa F4.M.J#!D":=8$"8$= A(<7.%2 ?*<0)7$(*$ 0# $ 2/5"122.?=$[E+_R$?YLZ*WV>[SFLKS1B?-<$66.2<,+%0%4%!+ & <.Q;\=O BD422)#"'! '$3,<$2 !!$!2,2 9#1#+ "A(0:02,,'27 2= F"C 6 +)) (,&(-..-) +%0"+ 0.)$,;*(OIJS7^B\!EU4LW=CI;/D+)M2I='&117/-,)3 6H6E4@;45A-44)& & ,)$$  *0*;*B1C<6#/(&"*+4?"6 / (3#.3&&08 ,0(%!(- ;3 * '(0$+&<3K$=W'j(\;M)0Z)6Z)'P('Z&)J ,;12<:6$- ).*6@4<(2/E0M$C(!:/'%  %"#+ (;"A$=$.K5F7> 5:% 1 93)!/ +*:.)9(*$4$%3#%&! /%;='#*,7335.*HF$V@O&!I#*a!*Z2$S5$L..D,/>,(6 '3& #)-++8*8G)V*T"H' 6 1$)!.#!)#,#&)3 H'F)"H.0C!+78 -- ,%3 !+"#%)'  +FNY"X!O)HC%D&=%!'&$6 D%G,J1G5"H5*78892>6)4-%,#' (1' 8''/ + 2=?>2+':*,"-'>5 88"(!($ '")'5%,+..& #*#&%&'5#+ @&R"LP!IUR#C#(!3 9A'D"G*@7H9K:-897-;=/5-.,(##"/!-0(=-25(#/ 754 01,9 :0 !(0,(%#'#,+51-$) ! **#!6(/(.$. %%% @+ <"3"$.!,,$6(@D ?"DM :#';FPY$M2O8J5?C?>%076!7;#-'$) $! ! 1&3!05("0(+*!#,),.:-4 @2@ &3+/3D1/#02*)1"*%&/0$#) 5'A6;00/3*7 )&#(!&(#0(,"*9 H Y![-N6R4K= @M>R*D$2;7/ !$+/ 4%$,#()%%' %'&"%(* ,!#)A ,G 0O :G7@8=I2I" GE0B7,;#9"/+&" & ,65>9 6.)'&*& '(%     !$*3 AK+S.R5 N1G==O 4Q %H ; 8 6,+#$&# )%,+-'*#$( #! * :D-0+ &-2?*N2OBGD?L9 X*I /P:F$?)+B.>'6  #,,/)/0'(23!/7% 2"$6 $6/$!)!)$2%E"G0L3 D2@69E,II73046.!0-&2,40"*4''%##$$$0=>9+!7)$$**8#2J)8O,;G)I:+VF(h"!X+H8B&@/)M/:,/) !$ #%)(9&&=#?F DC0* ("%!/!4C7%>18, 2,31 %5 C&6)$2).A*<$>':(31/24&:$5-)%.(+ "%/7"!@03&%"3%&6,+A6(@E7DE3GE3V/g)$Y+G"&#%#! ( (-!'/:F G?4#"%!%$ / ; : 9 ;'A&6 &"$)!%##/&=,C*D$=!6 %<"<,H$D*9 -(, & /%CG##7!F")R3'S//N/5N9/Q#O"(D;<54;,&1!%.)0)&!,% #130'4 : !<5$+!", 36 4 /4"2! 2+%<';&7 89!(D/I(GL<#1 & '7-!7(0BR'[(9`*0V3:U)a "Y%O1F2%/&&3+01;4#-9&;)/ %44,%*/..    %'+ )%"#-'!4'"2#"" + *.(,%.8!>/K4Q XQF < 2 ,"F*0$;#&7>7X%%g2g0b.!d)U "S.)Y*,H%&'+92(=9=!DN2C38 +2"6%2 ,& &  #(#*' !)) +,$28#78?&<#(+"&*:!%B+M"L^[LL C"2%I2%!=!$F"9?I)\ef##g/J"R0K9B),<5&<3G0673?(4$-%$%!" %* /  (. )$ 4*;*6+#H1P E ?*#* 1< "=I RP JK#"G(6 $%"+#)&'9"1B"B9G&Qa_!#U&!?<*D-40"(& 7?"D+6.)2,2 ')%'3%<'/%+"%+ %(8*E(G*X'ZU D/"   ), < =?">*B$!C')@-7 .,**;*:<AC>,L'X(R&G3+**%3"-%:M#Q,!A)%33%)5)&++ ) + *0"!8$6%8 $*'% # #:C%GGQTB 33  ' -7(8!5%610&"  ,.+*4;$16:45&60?"56,!&"/*.7!5%J,!O./B.49<5+<1#11,    961&/&3/'#.&"  -!3 CGJ A;'=6   &'/!"#  /3"*=0!15,3 =/,(-)*'/%34-='<,I,%Q05L84@A;*G54=!4 , # "5"74"'%'$     # % .8;FH ?& 3%*$    #$($3#*,+)/"' '0#228>4DD%? .K09P?EJHE0>@2D $B3& '$-3!3$%  # &%  &34 $)7; .'  "     $ (% 0(,) % '!&/ ++&5)-"D KD";$/B,?J; 4 1 /*! %"" - &5@%J'A$'3) 5" .%-&**!" % $0,07-4O6,U<&k>%f1h(Z .L#IC 4.-,9'6/2%9 !3 B%9:#>(&($)--/)-%" !)87 65 6 -!13!-  (+(#% .&3">%I.H**5$, 6(4&+(/-*#'-   !&0("3<50MA.[@'h(%`*$b)T-O$Q&> =5 &"#)-$ 8=>+F&%' +)(#&)!$&$'+1+ *$4-$((%. ,*$ ")) #$+,%2-!.'&3F(@!6"2 0) 3%/(,# %$!)$   ('# 5+)9<0-L<.\%(`#*i. g!]&R*=+: (;6" -)! 6 2 40.',+&.'$"   " #3!"8% 03($73 )#$(#%*'3!)53(,,)!41 ,1/3 0.$( #'0#,-68)4I'W.X1c5q 2i'Q082,6'01!%2/#.52.-F*:$%:,('  */# !"  & 1*B+H*A- *0"/!& % '&,!"7$"3, 2 +#  )2:87#% ,4#1,,</D*Q+S5^ 3` 1^.Q 44< CA=#2+9+@/>X/D5&:5.,,**#4("23$, ,% *$'! !0(82K5X0"I*.5*6"4) !# .!3)-'0)& "1;< 1 *&-4+-# +++7%J*P.D>N :K/A207= ? 3C*Q!PXY<<<"&D)@&(;*=,B$A*'8%94(00*"+ +"0A/!R7+V:7C)A8I"=0)!/$3$9"0/ %%"!"/21&'7!  .1-' $'/ $>F,E&<,>34 <'<0(1+ A&O#^Y\D:1;'F))H*:<1-!9!9'0423*/,,(%,3-&&- +"8./F$0F'@?F-G!9*)$!//1 @46#'* ,"$(!+ ##(+' .2% >$ I"A" 0 $#4<@!3)$)15 0# 0-7.M# ^!XV"4( 0@#?0B2?*;&/&7-"5,()+-/,2#" .,$#4% 112F:5;-5!1' # 46-,"$%!  ((4 85$-68* A&I&A0 " 0"3"0*! "( .%(- 0,$; 'EJ? $/ 0 2 !>"77'8"13(),3'+!'.2+($!-*&/2 /55/)(% #!   %($%!"!"  %..? >$< 26B-F$F?+##   + .    $-%$$&/:#,=((1&"# "* $34"1*,"&&$+12#*+ ") '70=-6 %2,"$)(%  '")$&#)&$   $ )"7>$B"0? ?AA5G!=1+ +    $#,,"*,#7&"8*7( $/- 4#*3 +$%%,!& !$% !# 2#;0@ ;(:!''   %60 1 1(   ) %597?!9CB9 L0?+75+!,!$# # ' + $, +4 '+5> '7&0&%$"! ;): D3$!%  ,"0009 .C-E,H &?)%% 1 ;B;4#+   * * '#3326F5 N3B'5-/5'+!( !' % %&. , -/(05!=4)%!0#0% ?%;% "! (%'%0%53J,F/F<> 8' ! ,%7BD$3#&$'$"(% +& )(% / %0>+B 9A+&00! % %  $- ,0""+.(8)(%(#!', ,@*%1- 2* "!  "(("3$'.(.*,;'(;(+?*J&QA0(! 7&E' G" D 5@"0+ !#"#* !+"+ *3 6#20!!5!-, ' ' "%( $ '1)13#"'*52>B9A:+>)5#8/ !( +#*#.2/6*80*3)3F(3A&3H*/R*VC"9#-:% F) H+ D>A7 .# , 5     #!!4'F.G<2-""  )! !( , +>:##>4ECQ=K4I3L!D'&0"%!%" %(#&.+.6'48,6205@,3C*/F':L/R&G; ":8/A$B&E$> <::*$'3 2 )&!%.H$QME 8 '' '+ -) 6,<.-!' ) 2 = 27.=E_<O=F:C%B) /('$' *+)%+.&6(-8/60@91F>6J(=?%-L!D =;%1.)9*;2<'HHB> 4"$& .=8$/!$)&".#0FSNC3 '/ 03,G.L2?,.9&' 8C (< 2-TBQ:UZORN6%D-&(' &0 (" * &/.'0*,:/A=-R/)N51D) FC >;&(+(*)%6,$="LG<:#;+"+%0:#71#1.-+).!20.3"+ 2 &<&F#;&/2,2% $!1&@1"P3N2/1-,#$58*GJ7 H@ ZD `XQZ J`GR9I8,3* 3,*3"6"$7&;9)C4$J+BGB" >)6$.9*153;3E(K-Q '?# @#9"=))04$81774678-13:566 +"0"2 72(#",!3&9$06#3=9)=.A)I'J.B; :;J<GE PRO^Cd@d:` L!4&"&. " )'* *-,&6$:)05+9#<:56<#1;04=6(?A7H +?3?)(>+)=';-<.(2'7 ?*=6;74<2(3*,%) +1('"&) #,%+:->G1GGU> Y7\.`/]@TBI?5;EFVJDY6n,e(_Q**27#D7% " % '&6 ;*5)%80*)8!=1RFED)<=)1:';)E:9;8&/<;<29'96#7#4$& # '( +#"8*=P-PV%hN(m>6kC.l?fA_@"N8$:M&OU"V^6e"f!%ZL36&M%KQ B5 (25&2 1.&C.#=0",+ #!7A:=M'0\+*a3#^9b;c:'VA5CA& A&A2$A( 7.2+0'',*'.%+/'!) $&+71$2J2.W5,`<+i=186(;1=.I/F5B?**B5.<6.)8'7,  '!)  # $  * !#&J*&^9)w1*h20a.,S<(;<19I?;p(3q 4tr.i#'w7u+?aUHk1l, U+>/71+/-$ ')%#%%!-(&,7309@%B<G@;62"!8-;0 N7 O<E5);';717324')'$ # &$(  # % "%9)I/V,M$*E&2&2/2,1E-+V /fi ~4(u#/b;j#JXSIk'q*[=3,- ,* *   "3&=5181-89G=F<:9'?'#;#:1 >6;103/3@,=,>,/-/) 067+7 )$! ' "-$9)4((<'*A',B,=-B.=/#)B"TY]*'u1v$1pKV!PA"S?T$S)B$-2&!"% # $0!<';14/$);1=9;7/9!;%!(795//19 5-9+C*>/933/;. D& BH@!>-'2&+(+) % )%,25 ">%+;'81+I,0D47K5M<0*@$FLZ/o.t>j O]"O9'S)G G=4-(/,$   1#+ 04!A!9&2.-2!+# %+&$&))2-$2'&'!+% 8! D+ AC.E3C. H/O. JR#Q(?(83)8.%%" '))& 4 9%L!1G!@:(N>)@I?C7?;8A-1?*+ DY,e3f' 890P5U@M7K >H2IC<;:7;*24(1=*S3f2k @]OCQ1"P#*L.A+(0,$+!$"&"*", 6% 0$ 4)%- $!#$0% 4$/&,+ '.   %'*'%' +(06;.<3D4S-#M ,E 0D 5MD7+*(/': =/]:c">T/Y3P**>1#0(,$57-?)N 2g'Y(P-@: 7&("(9#$  "%.!3%+.3&#H C(?-=!2$& )$&*$5 0' ($ %)( $ &%+ 'E,;39:/M)M%(I3Q&ULF+ 3%8;#1=$*5Q6]',L.E '9) * %L-M:V >a*-O)%7+2;1" "1*'0+%"#!&-/ &*$4,:--BG5H ;ECE08A$.1(+', 3--!"# "'   & 78))!8'I&+I'%P1"8"!&!!((*&-//)%"' '*  "":(@%)>$= ?6@#D#M M&=75&3"/')#"&562 0L 8M(C[(Ge9?JG43J.>Y 1X8P7C6%CH$SH,OM%QY*bT*a6'[,F#+%%%#*: >2:%5'34$33 /&% $,%76!,2D@BBP.@7F3=3!3'"43*!)%"$+%JKB,PJbe+NUBRMEUDNERY8ERGPNKD>H1B/,/$!#%=!F#1D39[A:WG7XJ.Y7)[",M$.6#0**+ ' $96 &5-+44@5BH8;!7/89.3%"&< BG SV#J0!E6%@<)QD$Z0D/ +/9 !,.(=!@4%=;NQ+]V9SRChbQTURaFPJ6TKM2"<,,(#%# 0L*+O,0U=>bK5eA._@&\-UK3* +;: )( &/$%( <( 613A/M7KDD4A-93 1";B CA'C0813855=@;E?E3A1)'=, 2.#&&'-4* I,V0A"; ; 4$$7! 0,958%*-)1.8:5;A6$D8I8@35200&*./")/!#0505HF*LKQ`$Wa6Ru=XrL[fVh[T`ALP22J!%E$F)#0 5!D"+E9,EB'PJ&WS)XD^>X-N4;4%>8"0)# , G K +H ?!BN"F9 @5"2%>%F(;0?'%7. -4/9#7?77+2 '5-,"/%*.-%0<>"D9*M(FX!Q`(Gs$P8UmPV_Sh_Q]KAV>.I3E15(&% $ 1854@$DN(MW)CP;C?6D*?-!29&*A#$:!4//,("%E N!D?2957F:<$S!ZG#F($90"4&%)"-**061B''@'6+4"!-:>H%/0*2$"%%+!!( ! $62=+0'"*/+5=+:,6B*DZ$:c(=m+Dk/Hm6D]3HP1RT1JU6P +@251+ -;ARCZ6_;G <7'+%.+1'2//1,*0*"  $ (+0'3%0.)'1,','&'/#A'Q"I%22(*E &3.5!#!#$69" 5,!0&%'B&V&] *g 3o)1[,1W59T+?R,2U 9Q :>:8&1. " .( :@8O 6T(96@")@(>A.4&0 ' *)# (+-55! +>""A#*>239'331#+=)6.*5"(17- >$&<'&)&'(#($ '%.4#6>$ 5)46%>"La"M $V3-N)1T+?W,=P0H<@56$4!0  #+'17 &A,\6`%-].8V:)D.$E)#8*!6#$!(% *1,9F&B1%?3>H8B?)>@6@).-.0$1 *2 $-,6<& B?,&02&2%,!-:( *#'@#H<$@0* '(!(,9/?2>A+8)5"('%1C!`$`%"c,)b1 U+"OH&>#.&!# .45 ; B4%;5/68==8K@5J926,'.#( (('0)/'0 (5 8+;6($8: *.(:#+"2,,(# %*! !()1153:%- "# ""&#% "! 7MX![&Y#M" I$I(@(0*1 = HD =, 8>*=924;;/4E,;F-0<*+0&",#.3.,%+# &+('&6&.- 2$#&',(1",#-67 A4 >%0"# $/#72#'3 COJ"D%B!A #9-/9CR R J F0?9:D19@90=<&<5(:,6/ !"( ($' #  *(5#   -%,=(!*(3-35()/#4*"0$;%6)-' '8!9/:'& ! ) %$'#!0 2 -&/ /G Z ] T I+ E:DL5S*B+%5" 1'< 9 .!!+1#3*%.& &4"# ) $%#3* :0H!"C)B 2C0> *"%+ !/*)45% $&& -3-12/- %/ #$ !"'(0 >=M$O!H% G, B77I 0M&I%@#0- 0 &$!-*8!-6"2#0"' ! 4%=',9#%)+"*,2+@,;'+K2R 3K0K70%=$2')(%$.'! #)% 14 /4,=54))1(#" 3:: AH!H*H0@,0;(G$E">"5(+ ,/&%4';666/8/-!/ *&;*C3;B8 )' $+#*$-&8' Q.&X 4X3O,N'82(I*9(#! ( /(9%BL GB*25'!$$#+ ==HF$I,F* L, 4& +616*+ )-179.544981:+7"4,7 )++8)@3B <9 --7-(68A9`)%`&3`@@ @F$%M!#M&"9+'#%(!!(,0 +; )@ *;'6.5 /<$E%D0< /( (-#%,.37CD&*'+8$>=0K3 _"$R,[9M9L9G1-!0   - -0 5 -5F?$?6-$)&"#8 : 7 6 !7-@-D39 ' * &')1 ,7%53?#: #>?%> &, # %90N%8:'#4 2(?%E K%]0X'!_$T-[5L;=5;/-"$+'$  - 4 & ,4 /!2%"$(! !')&(( ,%&,+1 92&-+)%"  ',$"++7 ? @HG H :$# &E4a=*!@("A<8M.Z#V_*i-W, c*0W2/E*/---%($&2%%1%#*+ '(( '$$% &  !&-# #!#+)':/$7,'20B+=+-%* ,!= EAM LB < 0! F6+B2%L1-C;;K5 \" f_$$]0%V,_/'PD ?4'&) "",*1##91!27#1 1"-0%(# 1/'&&' ,%0#"?6%E.<,K1L+A3#! '!5(0 0 : CB?>9%6-6%F2-G!)AE@O.Q3 Z2SS*)C!M.T:?:"/#&@L!G-0-#5%!*,#+ &#' &#("4!.'"!&*)$!<2G)P*S-S&QA+ '& $ # 1 37C;60' +8&73)D#4FD; E.=/I*I"J%>8(88/B3"2D"Y(Q27-#'6)).#-   )+$!.&3)  *%'$'&1" J$ O HID 6'5.  !  # (<&;"4 +! &0/5+.6"0:<5 A57;?0 AH!1#+"" 1%6*40(I*\, Q05<58):1$5=)1!"   %)"*"#/% #$$",>B EBD =8"-&   $. /5& +(0#&4+ 4. 7* 40*34#6 1%*4 :*2.980M)N)2K93CCC-J> =D"8 7#($   + ,  ( %$) 0"-" 2,,,)*  ''0*2409);,!?(/L)BU?RLIG4GK6L 2A%4%#(&  # %' %) / ,3 & -0..  #+,   !  * '1#06-$! !" '*6*@)<&@)8C'AI3KE=N29S*K0K2A(-++($ $%   '*#&!$ !#& $&,($   !$*& "# + .;32&+(/%! /'2!0!()-<&!A $B*6@!HF-H93N%,N !<);&,1('!, 1(#! & & (&'$+2!,&$! $ ( * "*$0/ /#)%=)D/1B+83(8";6%4),.'1; (((*%# + % / $(""#! 58@ - . / +*(   !*"8( 6#.3%'G -L#([*%U+GC "=CCC"(950J(!7"1"7,0",)$"$"*&)$%)+2:(30*-(2 (,,4&5!,= 2(%) %#-''!()$( =@& D*;% 69"6":'1+$)#  (&.-"/97K.P&)],"S/Q K"BF??"5/.:"/*#+6. $#())!-!*( $&0#2/+66!-%#'2$0 '/ * /'3)-5C I%=% 8! 8*>*;+ A/ 8*&" #1)8;3E2V &U&)g%&e +Y#@!? = 7 -&$%*9.'0.!*& 1!!& %" %*'!(-") ''(!+'"2&7 /)(.#4!=!)8/!GG;9" 4"='>. C49(*"  &"3-887L/_(f$-j .e._(I &2+- (0$#*&,1"I>4(%$# ! ($!4//.'0%/ '!!#*6-,(, '4$=-5.%: 7;4!; =#='>- 4&&(4(=96K-W0a .g-n2b3N537&2#)'!4#4=%>&=)%)#0=0'#$! #&+9/5..0$+#""%(,1."*/) 4'10,($'' 01#?G!E$ 4%!  &+$04,@-K*a+_0` 5f1Q 65 A A /0<A@?"K3 A0!?.&(5!@F;#!/."' #"!"%/)7:/<+-4/3"$/1% %/);4)#+  $%', #@ FC8$)(0 +#%)'-)6 &E *M(K,V 6P4C8,77 ;,B5L'NLV!I4%C6/93=*R%SN#(7541$''%1&#,1#23%?-&?)=4%@"G:,%"# %*<C>-%0 -) &:!;?. $!"5@! 8 (* &"4(>D%:$K(G01<9*?<E?C<S2Z+V Y#?0 1/:6,4"F$S'I)3>#73#& 36&D!52,*-/-.4+(A=2A@5&*(' ('? IC 5 !,.0,# .% 0 7)%,&4& B F; ,%&#4'?""@6#)--&:6% A?AB?D"O;$K,[N5 #&, 1 '3&PK ,3$6,4'4(/8*;. 3.)')3()8,#*26/<=* & "!3 =6.(/,). /!  492,9?- I G'@0%#,)7&;$1#*)! +&+;3)C.55,>+%G.?')1>!B!;!:*4 6.:.2: 53 -/1/-(+. % "-  %!%""!*$   &'& !:*9$,@45D)G#O?*&-# & ) *)  *'471:?!7=&<707#-!'#"16<;*<53&/!$5(-  "& &6&:"//#%" +)+(#%    ' $03-A!6B@2L, P S :.&  !#" #! 1(;#"A/ ;E6K633,"(-$/$&,# .-0-"&'!  +#; !7 >&:!)"+6 0 -&!  #$&%%-+97EJ9Z.T$ O$: 3!#    ! , ; )/35B'375 BG8402"+ -#'1"0%/''/% !  -7 7!:$3&)!%%4=A:&-(" )& )3 * , .<H4 T+H%E.>4%,!$  , 0< 6/8(91/<8=-4.', 0.(4(,"$ .!/3('(  "%(  ' 9;#-03.-#:!77?C(/*")  #'% *( # ( #) <%BA>#20*1#.* .+$0' ;"8E'!:)!8"&"+-#4(/3"0,4*)&0*&* &* ! '#.+./*%('0*,&2!7#>% E <8* B+ B# B( 5':%/$ 4$ "" #!   ! + 1 71+)%0"$,)    #&## /=<#7 %&1(8".;+!+*/-6! & (+++ 0  ,"61!G,A-3$%8!1(<$/I$C4 ,9;:I4 O*@-5!7 73 #&#!* % #%(+#0"2+  * # " #"167!' "/#/?+:@=:F1%F?#'*+!-4(,*4/A*&7)".(7*A*)9",D(A7 G,DBDA/: :@ C0$$&$2* +$  " +#22) % .!3#.'$ $  ;9'1 - ,-+=3VBQER8J&>' *$%&.  &,21722%'05$A7"J?&G3)A$$=C B&F%2;00<DJB50, (,9!4/64.!&")")-: 5 '%!  %4!B-D4>/;+% (, !706,3:3 UI_YXOA;:"" %" (&/--,2#58*OE0W@%P7!A+DDD"</0%9%$>G G B&7#1%)#%"!-200>45&)1-&1. ) #&".(/ &($#% ($+ @+D6A7'>.--* 654: AL AM HEh\ ^dU[9'D<S7I+HK?#3'/-(8.G0H#G#B'3-3';'<!(*+ 676<0:@/-7..% .'!$). -)(( #! $:% :!#1.,:/72:1C)T>@?OI >I ?PSV_dMm =k9a&L"A+)/")! !!1&.2+0:<>B<<6 A*DI%&B62587)5@=I>DB$75 47 2%:)<))1"/1 ;28=13=20;'1 % & ' $&*& 2 5+='-?'AES<O:U3 ^?"[K!PRU?C>@ETS ChEm1_"X@%25@.' !- *$",.*;('9#2<3:5.9$DD/) =,<. 7/81 ?2,427'.=;)8**3.**/.(", %'' &  + .!9,-=/KL]B%^C#`FlBgM\R$KF-BI+CVPZ1l!)gW G&8!<+BB =, .2!)5"*3(('+2(:)!=),:"/0/8=%H33AF8-QB$]>2>@);1:&=6?:%@:.27513 8 9(" &   # - 1 & '& ###+&E>$YB)gB*kB+]G%[S%OR/KO4@X-5\8d&x#hm"d$)L&DIU$ Q0J/6/8C2@,+"1"3(63 (.9?*=->5M<.PACC:87*7187 C<C@"B>&.;0:>/7&4#""#&'"% # $ 6*'N9.X39R:/V@-PP4HPBF?5!3'.7<8 J? I9H5!72.88%.1( $#*' $ +( &#)='99;$*=#-.681:4*< ,L.]#x!/.q12Z*FiHVJMZ.U2E' 1@%C #D8 )** "-)2)!63(67,&41?3 C6@+"&1"))./:=1>2<( -).((3'//66*,( +2;.!# )!#!/ 3#*.!308/042-$, 4/'=''R%bz$-s,8k,9Y#CGRDI?U)N/ C.->#:6.  &3<%<5)2%2*4*?'('$.-$$)("(&#+%%. /1,.1;4;B5 G/9#? > "='.#*%%''+',/:=!$/ /'*;(.9 C1#7031/%@Zo$*~'/h%8["M<V/#O"FE'57))1/#!)$ &+,48!!?$4',,-,)!'0.-0*,1&$*,'+2.": @ 8#4.;5D?G9 L5?1I K/K4765&$ )$").'( 1 6$E*>16"/D+,5F6/72,6*"! 3K_*`3U";]U?['*Z*Q'>+$>,07'9'0(0#"%$ %1%033("  # "%*&+4*$0 . ,$*0%, 1.# 05+=5:C< HB J=A;S6%U2J.?2?7%&'%29;&M$X)S*M8B(56*2./4'%2#Q*V .T 8J V._&YK*?:8,6&*$+*$++ '$**5"%#$""# /&"(&+'. $ # *,$/!</755>7G=>:P< T3&K'-;!.=5!+' $+):$#AE!Y*X'[!Y)U0@,46A.1B(E &]*K'19F!Q%N%G% 08519!, ''#'.%*"+ +$ 3-'!%$  %(&  !!',0 *12-3?/@ 7;:=!N:)V;-O:7@4>(> 4 3*#9D,@3%S-Y &M Q#B!;".7*K#T(]76F-9-57!D6!<3-H&K/B*;2(&$#/"2!(&&#.)(;"*73)8(* $# '% # -,* %&%)&)& ;@,HE5-K60R=9B66) ?$1 8Q#N4AC"*<9'>9 31326?/-"1 =#I.W'0R?+EE)0G$3N'5M3DE0T4'R4"I)3$%!"+ $!-+.00;8CM-GF#I/&M),%"  "  15%1!1-&2&$# $+(,%+<5-9/A35;3K/ @);$IZ/M&$@0"6/ H!H".%: C(0"'#"-M,L+>T1CZB?GO-=L&DT45XOSMCR4.R*,A1!4"'*3,9-1G>@F=BN?6SA)Y4)R#F *%,+  ' 57*; 5*!,#!+1.&-%()# %$%#5!#9.B( IV +TN0L0F5&L1!N)@+9C'2),9+03;#JR1.LCDJ7O@A:HDC:G<"EZFg!6j$!e;&W5C2.% /-54@34P32Q9(O5!V&)>.9)&/+0$%+(# " *A (0!&).6-1;:> :7.% ! (;< E P\(Q1MCABS>XB@;;!OQ#H-=)0,/ 2-:/,"-.,.,*,5#9).;21IC2WI0XG%X+[,Y(@;/576'., '*,- #1>%8"; H!C ; 8/"!$(84<-!/7&;A%;M#8L&GF>H?=0;K>;7FA: 6!45DG>(? .A!&H%4U!9[;K 98-E4>D7@682193-'?5G7V)3i.Eh:Fm!Fo4bjH``FwY:vK"eB \<'L;%7,84 '0.) <:) 2:!?Y(EN9H@E;7:0-2>3"<=&D/(F0+>#-2(3.+0(  ( 0 &="01+0585 C.]0] M$>*2A'%B$'M3I1A'<&0:2;>?<:D3'79.,0I/ O2_/(Z+8d3@r+Nr=PvCUi7lUrRlJOEH:0@0: &0*$ = .:4JG\Ac6F4D *7 #0+463;C?8@?6C1-73.+6!*+ "  !+!3/13!*8!,- *%5+J1] )\F?'65%.;%AI*F!#7(*)<=/==2??+4R1,@E/-G0S*^,Y46g2Jv6U,Sk]PgKWTHK.B'%8 '9 0) (/CJNXFe-J7< #7.47$77B?RCO<&=:#,0&$'$ %%3,8$&7115((&$#6*E&3P*%M";630=>$6C C I:&;-)21+9:&85#3;+,=5#0;$0O!K!d.3f2Ai-7N22K('>-42>1/*1$ -*&6(0% 1'4(87%<>381,* # .32-99017)G61%@&&8>&84+) $&(.$14:')>&,A5*/;)D%L[,R(.T 4Q@RIJAD!;S"?MM?"A;";&-"!"3160@&D"L(+L-/H>2MJ=D]:>=/A21-/%*,.& 2!9#7%3$1+9@+>M19=-.#(9('$5$-4192.B/06>!6,$! ,!<;(*.+*.3+,%6*?GG#A:8J6W#, 1*&0;,2*"3=%6M6O$0>%&1&/  ! %& 0 Jf*(f/'b7,k3+V#-K$P8+#",515(7A7;'?:<;7P98F37?+001.(*'&6(3)+'&0 68 ;/#!&!:46&-3 B* "!.'#$"-%4;&6Q&+U" :*!(   +*) " + 8V`Y*UNDI*I (3 3/"5A@12 8A9>)4A>3 JQ$O V GD=-=>9@.85/+$ (%$%'61)3*!'"  * 5 )7,<4("!) ")&3&1.C7U2K/;3#%6"0# *&#!#!!)%7(-='8;9&' ( #5?EOVTUVL#<)03#0"2 0 *) *0%(2*97// )0#',%##.2=;>2 3 ' "#!G%D8R .!+"%$(($& $$.2&/80:3 14 &3.0*&#)!+)58;?EF< ! #&%!3&R$,SA\GX DS9J4+5),, #& &*-"4)J +SZPA;7!2+2&)". CA C HV(\#L"$@./*!""-''-!5"6 )60; )9 &4(5(0 (*$))3 +@7L=!!>-3*#'%0'91*W#*]-`>V@W7M 63@ +.)$ )$$".EM"R3M +<<#3#-#+!8),8 9 >;!A(H-</:- %% "*$%.(4*%1"4 4>+C $>-3/$%<6&N.[*3"-5"+6#: &'$3CT,!b\-[ 6R)?W?G)6<($#$ %&'$-.9!;/3!(+*#+#(!&!##*/1 0&".'3&.4(/&&#! " )&!/+ / 7 B!G @=&1$* 4!Q=(!9%&:!(?4C 3) ;"H(L(]! P*_+"X3.M;2L+4C-"0-"%("! #$!',)()"$ &!".$%"  !"(-+!23!6/#1313-" & ! "') ! *:>B =8 +,2&1;/D)#> %9)5 ;+ J. K.T!"T! U-\-!UK%F<&,4'&((&, % 27#% -+)"" ! $ !$ !% 3*')#!%$#(54#@3!E,>0B0?5'" &"8 #'2= 6 8 7 + "$ 45=1$O.(K&1@*72/<9?4C%F,N%S3I<>E#-;)-%(!4 ">$F. 3#-3&(#"!    #'&")!0.(.) 80I-K-E-F I> /&$(! *'33 7 ; :) %, 3%8$36'R85S)3K09 =-=3E#M N,?(D& ?5:D@)1&+(<N&L4:1"37&*,+#&& 0,! ''!   +-)%*!2?MFE@;3'*$   ( & & 8 ;: ', 10&3%50.4--;!.=53A)?,$D$OL*0#+%&5? 6 (>%M6L7B5*192&06.5"/#+( %)+ ! !& 8DD ?@ @!7#,(,&   " " '!/ 3.+ . ,)&#&-'!)&1!,'6%9+0A># "- 6'-.!@+J/O4,A8<-=A9G7J.>!2"   #!, -&. >>5%903.% (#   $ -"&)*&$( "'$ $ ",!'.$2-*(#$' !/*.'/&6*:*&D&4D*=?L"5* #  ! !  *'$(!# $ #%**& &*02)   #''! # .>: '&&!%#1#3 !1'>(J%$N.K<9!K:&S/%Q"$F2B+>$"2-. '$! ' '" (!& '! ($#! ' )$! '#"""%1!00 )!6+)%  ! +;A.5+)%#,'9&;% '!$/+F$J*M(B-955&H)O>"@@--5/1(   - + 0 ,+5( 5)+,+5- 2"0 54/, " ! ! *"*"/ / 2 %)&8$8$&D&)9'/+*9<D 8+/6/.%07#5&-1"?,">*6224*1.AA<#B;,0- 1+$ 0 ,*0 +,6193*9-B4 ;(7 8# :)=*8(/, #&( ! -$ #$/13C+E$#G$*G'OH"!0!> @I"B50<-(#)":/ 1&)//"+*($3.0,%2!$/0-"7#.%!0-3/ *:7 2 2#;6; 33.E! H! B:'=$B,L,G,;-.* (%!#! ;088!49-D Y)$c$bR=58 ; 4&-###*"%%/; (& )%-%$%'#,"()+( ""&%'$(+"!#% 0< @/5(9 = $@ /8 -$8= @$8#?C*O2N3D*2( #  # 3*:/:C3Q)b&%i &i .Z *E(- .' !  $ &1?+8 0&*0 %& 2* ()*/$+,# +('!'(3.B1>17 /0&9 35*& 33;9<= F,D7?+3" !  (7-=<5N4W.`&.h /d 6\ 5J1/0 % $ ',7 7!-2*"8#9&0%#' ) * ,#+(#*)!'/ ()!,2,A5>"+;#(2). 0+ '%1-;"5#FB#6)4$3*   %0)2@-H9R>^5e*b3Y 1L A1=6) -3 :'2 4;;( 5)5+1+;LM$I),*(&*#&#( !"$%'+('-0 &*(*..:*>?$: 0 '- '$&$ )- )3-C&JC 2( '(+ )'$/$<*B0M -W+\3N3;A$C9.<9=@77<(CE ;&.&') 1 M _bM0=+("#%& *#%$-! .,)1)*(=""<61( 04&5" 5!<D@"1 $! (! .%14 2>(B83#  %/: 7 '' *+ 9:"9'?+G,>.7:C+E=KD9M6A@1KF :# ++. 7Sc'a 4U.;-+,+2 =+.-)6, 82'6(0+8#@8)-*'+7"%: 5<DJ;).#1 0%0+ +2 !* '" ##$4; D >#,&5!8%>!;",0 %=),2 ?+B;8N-["-F+@31N)$L.!&7"@&N)$H 4A8'))"/,"=,94,3)('6.03/*-)$/"#;&8%% &%573 ) 7# :"2*('. .# 0).# %2)%$)&0': FG6 . %19.@(B%$*% #$   %#,#"2%.** 2*6+!@ $6$8(,;(6057!7 ,/(=+/ ,(")!&"   #*'%,&)"' $( &# (+-2%!$,-05* E O Q9 6)$.5!2 -1 ',( ! 7P* W/S;O>S5 F50,"/%<6'$-= A84)&3 -+   ,43"!%""!   (#36 +&# %' *+ "!)327A- K U N @>( # '" .%1!88 /%!?(X(_2\<T>M< @7/.//7-!CE!1&09!.!* , (!( " ' ,!0 /( +/) ! !"&$&"$#$!+* 84 E1 R!Q K>5 !   #'1(3< ?:$3<4P(5U0*W8E7M<A456'*0= 5* -%$' ,%   " % ' +*,+(%),&/1&":;0$# )'  !(' #* %.4'E$ O! RD&;,0+&* !*6/'1> B9,A;"HQ*9P/(;5(C6$D9-?3 &!! &%"'% '!!!)# (&.")('9$ J F8!@3&%+&$  #$&"# ( %4!A" E<'446; /+& %#6);0:+@ EM(M?S:(32>&;?,EC+7 '#"+, &!  )+2$-&"&+64'/?.M-T&J# 5!1# 1! '*   &# %!! $  */-&!06-0>+*<%"   !.$*4 0, 7 > K K# M%; $*##:9!; %%! %(. 7 (%.":=-1"%' /-4"<#65<E;S>T/ >(7"8 2$ " ) ( $""  !+ ( (30"400'# % '- #/ " .G A E!E3!(A0-7;,!2> 9$%*$:"B%#"0-4: );%!3 #$9,B0=,6&!A-?'D6D>E#@@7'= ? A, (( "((  "(!,!.# "%" $$)&((3(,    !"/< F%?.##&$81@0K5O,U$@!." %8 9("# '%43/.#(&#2/I>K<*L;C'DB 'G 3K5?A=F, F>"7-,' $!(, 0/ 3.*)/+3,(* &1" # %! 02$21'6 , (5 >( /2 #8(6"-YUXR]DT:5#) #*, ,+!,%+&!,65IESQLC#J$HA .C9@F8I/E D?(30(5!3!-# +0,:*<$9#)/20,5'+ % & !1!+%'5.8@1?&3., -+ 041C /I.I8Jd]cc _W>I+.(! 7*- 0$ #/)$#'B4J>K?O8M.EF!?9?(D3M*PG#9'23,8"6 ).) ##-.7 -G/G'D 9 3 %' *' - ( ' 05; 23,15.8?8D-<7;FAF >J8RPXa`[cDb0S&:;"#(&3*8 !;+*!""$9><FDEBG@M8HL,A&;K&@4"H."MF%5*4,2).-*%*)&0.88<1F+K"KB;* * "% '# .! <?:%+4%6833$F6(N?V?#KL!KUBF@SG`PX Yg G^4W#G6(/$5(!3 &80=),% 9->1C8D>2?%EO*B)$E%:7()#'&)+ ,!   -9 6-$-18A>&OE)NJPHVJMVEX@R7YRn=p5_'XI>!2" /+$3=><+#$1)A #B'D.<14> I .N 0H.475?&9>2B20#11/=1=4= );--1 6+3+2 0($%! !! "! +!)"$&  *+=7+>5-D=?FKLK[(Ea-:^4cCv+.v \'X/L;018/9'5 > %I)C"9"&.2 ;*D <*>36='#I 0G&>=5<3?5D7 ?6;#!430A,O8@??'1>579.6#!*%&%*#. ($$!&%!$   !& !& (*+'&<+6%:>,?H+:S-8`>a0t6}6*3w/?T"@WEI>9?E3;-4-5'.')1$',.2" ,$5$8% 4!%  %%,+$)'/%-/",%.$+/%*0.2%51"@+!_z 0%q8-d-1OE< @0;)@0;;-G'U$P<3%%#&%"*'))!0#-- 3)!=(+1,)71,$2/ 454<2+-""( +,033:17" -? D!="-#-#&*"."&() )##.+0$6''"('#.!1/4+/I`m+'d+3V*@>?*IH E!<;$2K6V((>"$$-%6*$$ !%# % ""'-,2,+6,*1,/)-8*6<7%5 ,&& $22:;<@<<19%E#)L&J (1)( #,&6 !5#0"'47'<G9 55&*)#$""!"-%KY'J#,7C?H0SU(?62D%<@)9>,. 1(2* % 1(0&/. % &#!*&7&+)%*%$!'& 3-*.1 - #6C1B7EEE CC9=I5)U1.P*-9,/#/%5 7 $.*2C@DUXFK&2,2, *)*10;$24 0(U&a^'T@F;61"1";,(,%+;#E*8% "% .%!!"#'0!.$+ )) /,#*1 F -C3G6CBNEE DKO?#P3$;6/'32 $! )":;<L #Q VPH .B%? . /#"7?89(F<+,IP X[%<0 >( ?:$$+7&,E#(@&2 "#  #%!&") *"+)!7 7 $?)F"-D7; 8E9OL>#`L$QH+?B*9,++*$A(<6%C *[W$T$"F'B)!!0& .E1C!H,7/.!.=%4< >J8C"$X%[L C(/>+(C$;*)" $$4.%$$" +   &".,$"+&-55)<&@#'6-F'PEI'JD'EN/;I9<3- +!7$ E&C5#-8"'3 6.+4)7=8<7E79&1)' -B1H N=/9M(*C03H:6M7)MNEi+&r)h'K'>/6B'5 ("+. .=.%650843.57+*$.$!  0&.73!60-1#$(&"!3$&&3H&O,7<(D?,CCO1N&DGQ$E'"9':J!2 =)F+K0T/ C# B* - D."FB78:55=@DS<=WMV[Kl>j(,l4_3T*:#&!-'31(3<,2B63G4&B2-;(-4''7!' )%'&-)D3E5- 3", ,#.(+% 2&F0K 5-73J' OKVP&Y6I4M0J#A>OW# K./K$E "!P6@0'>+1L;@O@E>2D0;\=c+8`+1i@!kT#^I*H<$*85$#,3,:)!I+,D$)B'22(<-#20$-'!3<< 1$,! (@$:+:427'4# &*'!""! 1A?JP%"R:H?JAP?:='L61`"*h(](T2[#>6&6<&'I*-K5@H?SC@V65Z%6X9V'4L+d7eANA$;:**"%=+(EB'T91Q'1B@ **+!21*1(/71!  (#PF$Y6&L%A!> ).+?*6(-*!'.+$!"")(4735 +3 4 #9 &8*032%.(. " '+1(&:B AQ#H\!Cn"8a"GO.BKDDHTLIOD;PE:L'@-,8H)V#3o1Gn=`]$dU$yD'n@/i?!Z4 G2+15*7*'+--7(L6+Q9'U4?$9&;7'#B-?9 =7(3(12'(0',/ &!"! * 3. 0.1%. !/ 23;<.9!#3 2<@:&>+Q+W 6i;f-<`'7X4ERH3KJLFNG?@PC&LE*9A!%Ua,,i5=i$Kf ^\bd|QtK s B3B;0:+7(,42=:0CN::A*6/->*7F):3%7%1%'$' "#(%, $+&333%1$!*9MOCA*F+W %b4`!?c,3W?6QMJAZ@FWB<@T>.EM1=N,(]# d'd1HeNOhg_,o^ |QnD[E>B '=%/',"5046 &52E 9K/A!=6%,+&.:70JB.6>):9'6>32=(&9)-! !&.)0(($!"!/.!!B%2F03H+GL (? 'NX"7c-/[/,U>0GMG9XG4WG9EU.*MB&=K(#]&$_#.Y)>eNpWg_N#c]kOUD OR%J)B#"J*8*/)# ;3DJ9K$*C+<5965?"#4; ;G9MCE@I%/E*0 #&/"#, 85*27#1/)# $,1E*@F3:?,3 ;#D%FR! \$V.E<'4":>-@%JG/4.&5)"F9"WF(5P-3ND"XNMN4O#Q(W2W>RPCJ>B@)?H,<9513*9#$ 0 ""*('4*$:'7$"81!0H*6H'5@&.21",*+433A/9C8?D (88&=*!*3*!2")2&-%2/"?G=ED0JO &O9H C9>0/:1D%8E2?F'@>!->&"! ! "#8 ;$ G)[++\&,#??.AC19@90?A*EA"E+"&."!28! 1. 7+ 01 17,$ #"  ! #)&4(.(4 1GB/0'1% (/-%;*-:-,M*WB/($* $ (5=Q[T'M(L@ 96#/%.$2$5$!5"< H,$HC*TEH3=&!)!3%+$*)&!&-2'$@,&M-Q"K&A 3 ,,"##&'8D"JU V !_gZ#I;$. %&% % ++(.'4 *@ &8)-+.*,)"=*2 BE9&(+)$"%#!)'#9 G)Q>T@]GX4M*.,&7"5 , #$#( &"-%6(E0'K-\$R%A4";=69!!)0@@ER$Y+`'N):"1$$#$&.!&)+/3 6:(/''+! + ."+$4+ E#L,96*%1$&"&!21C( XV!/[0^8[9M"03'5&8'@2- &!'0" BB Y+.P(=06"4 62$'"-8 4 >;&+>+F-?*'  #!%.+/,279%< &.&&'.%$#(/-&*@&0;4;88/.%+"0'C'^"]$#X*i%>_*:S71<34#"1&G(% %+%, 4"?$D$"=&= *(#.+%!$ -) + -)/()(/-&$&)"$1 -&18950&'$#"%(/10(2'&2#*017(*), +-7-QVY%R/%Y42Y/4G7.600!03%   ! !-%7!+%+$,00$$$%! '#"  ,*+-00$0/50 +# )$+!  006 74 ( $(!)-/7-?,"813')-0$2 )%7 HU/R:SFKC*E53420+34%#*( # &!"2-&$( )#& ""(%&*"7&E!?A<:5&"+'6(+!3"8)4-'  %1'3D-[4)C+52-*+-4+6 G W',W8UGRU#JE11C1"6=1;'-&/+!  %' &+%!+ $"))$#  -#1$$2"&"&8F FD D"?,5 &*#"!% '/8.$) )$#. .%3$B.%[5)O#5=0%-"6#< ?V0'J4GB ,0$'*+ 0' 0.*8#)%&&1&$2 (  '/$'$ &  -%5 /#&'!DH FI &;&7"&.%.( $$ / $! -31$'0 .+,(0*'8(#4#+/,! .?#$5#A"!E*%*7)/!#/0(,!<+5"#-0)6:34&+53'9=*.A$$?5# *$!"!!'# -#!!' 1&,9@ &?0?+;,%,)6<2 &( %*' 72*!)0&#*+$#. '*% 0<+1,2%2##$ ,' 4-$&,#07) 93*3/4+0D#:O$6Q$3L&D$!%"&   !# * ( 8&816'#33%1&*!!1"3 " +/*.)) % ((#"" %&+*0$&(%+2$0!)="B!</9.<78G-/U%4`:Y8[#)F$",'&!! & $ )' ! % #( $!,&)""'.*)+,,//!#& %# 0 5' -$   &(%($&$' $'6/,%. - 7OS&K59,E80U-(i*1o6d.H&*A" . ! ' '$"-$'' '' % -'!/--/!1($-,&*)3) + 2 , ! "#   # )6$)(..- 0"/3-* , , ? OQ1P>AE5K,$X('W.N#I#>)-&( * %# #! #! 8:)!'*!$)- --/(1. 4&""'+ ,,$5- 1"'$+    *0%+%-.9&/&*2,5 ,#  ,"K#!S$R5V8=F-S/T&I JC$4,&,"0   !$+0);';&3#(.+- .")/>$?)9) )$(% '#'+( '##'2 4#- ., $ %0</ ()2*2*&./ 3&(+$G/&O$+G=A ;3">+ N(E@D? ./3- $( *61;>0F.<%-*:/="6$@DG" A7$,%"'&# " # &%%*")1 6)4)C C =" ' 662',/&)!+ 1*"+&* '.0%5*/*:3#7''1.11'%27'=0 $+*!"   $&& ' '!+ /#533?17#:BB ;.@$F"R$!T&;% 4-( #  ".)1/5-(1"E!O"S!J;(45 -!+ " ! $)&(- '!#!%(#*'-/(7%,&  ( +-,,%,#$$"" ! $ < B*:-7 )@(4444*4;@=">F !M'Z.P,2'!   /;'.  "&(! #  1ENO );'#'%!5'(&'#,!1$ +(#  * $#%"3%A!$B"!H '6 (2 '!*!& 0)2.40HN =!.'%   " &) #!$6$> /F'X-W3E04 A!D/ 5>2I.L8F7-,#6 / FR _\ ,M -5 #*%/))$:!'9%" /-#1!(+1'&<#&=#<?>':+-( /-'8(8A B; *!   . 1 +#""& 2.!7(@ 1F); %$1;12@-P*X#5P$66%.#":!+4 I \"f"#e)R(7*"7!7'&$2'<$!' ". 0,+1+9&%H#"LB0>$;#-$)#,,'( .2. + )   / << 3 *, #29;- - 8$* !'.-,9&U*(_2*M7*7855%0&(- )1(?$D2K1(I'6:4& ."2.41)("*'"*,""**'.*,&$. #>>@*'1%-%-*0(% #- 23( &6B E 3 6*':9>5 $%&$ !/G-Z2(^6%W;"M7#B383$<'A,<'9.24 +;$2"(-%/!5!3156,1))# /&#-1*."5,,   )+,%0!, ,!,),(/ &* 171!  2 B HC A 9 )#3;+31*=%7>)$ ?'.[5k7j>g=\EOG 4@;=232D+0G%2;'"*'*5!0* $-,("% $&' 0,%+ )*%% -8 !1(:&1& .+ 1#0 .A LS GG@ ) !%#-6-A*H!KH;"6<(3[2,q4u9gF[NPD,;@8@=>/L2 N$B ,#("*"$'-," & ##!!&(#($  %), .'*!,"! 1, 4(**+1()&+   ##0IW Z HF < ##$2-B+HNTP91;O&@f,:g8%b>QA#N=2D::7F8.G$+.$+ ' ) 2 ,.*- ' #%" "! !%3">#8$!8 #8""8$& !)% # // +"# "'*DP R H;* 3$ )%8'5-=%FOPJ$QFWZ%Mc,5O<,H83S3=J-.1 % $$ ##$!)"#(#59"+--5 ,6 !#(-3% A(A+E'=?(! " %'1 0 -$   ,BL<&;3/@'%&  $)=#?"F"JX'Y2XBQH$B:92J<9T-R&)  +#1 ,1%=#4 (%"& .(""# %% (. 52?.U4^*M 8( *+!"(&$0 /,% ' *3).%-2'1E$(8!  % 8#73D+OTP!R' S,H)51*D #C  &6"60()-$#'' 4 /&"& /#)!1#428G7Q:V7S-=6 . "+%'4-%* "!(!+&"0.42"<+%2."  *'9/5;" @ K VY%MF%8)'4.'! ). (+0)2-61(& 2 +0- !$$:*<-9)#:!(7+:>B MCI<;9>%:/$&.-+1(  !*"&)1* & !'$ &,1'=!6  '. &'& 3 C LMJF"A#')#;91318#1*-"36/ 2=#1/,,&,&!$ 6$K9K="G9;0%7*!B#E 2I>D@2A);'81)//)#& ' 5)3 $2,<.-))*)+"2 )  +' ,%'-(# 5% ;!D&=1<51539\IGB;;50+!.!#+)# ,1 )2&(',, .(L4 XMTPI/<%>@ *<;=M5L+B&8)69$56:/ "".#< FC#6..3* /#!( )/6. !-5+?6242@93E%K M"`SeXW ML33%1 # .> #1"'2 &%$ &1+K4S? KDG=B0> !C 19G5M,K'A :1/9&3!9;6 '+)8FS NJ :#"$&#$"!.543''!)6+@=B=;+8'>$DR$] 9c _` TS KK,B((#*C$C$;-.'% !*19< 7H>E;9BEH2H!EI J1D <4&20)-!6!7 , %+$+/"7ITQHK.+'' # $ 079 ,2)<+: 3B<@5B5A,H &P ?\J`VZNP 5H!:/  ! ? KL5<#(")'> *A )M6L>H J #K+G'$3<%6<.G+O,D*M )O/TR[ I^7V +R K>  $0C! P"B$?*8'14>!&G$T 2< I%G/H5@16789+524862,-9 :*<3:"!,&)$2<B09<910) ("2 )4'* " ',--%%1 51$(4+,F$I%L+M9Z#,W&0nFw=t.c)Q'Q7F2,*5!$8-A/L'L "L!J<1 F%K -8$@.L"2L 9<181;8D4>8 !<&;86>)B *5 -/+ * (0# :$:%$,9,9(B)24+1 8: 7'3, /.*/0%(<4+M!Q$D,S(1b+(i,)q6y0 +l7HC:A1;18E$)E1#F.V)Y# VG"*3(5'>*" -: 9!-E*8A&4/76)G3J,.2.+90*F7!;=21%3,$%##$+"-)#3"-0+"'$9$D ,<"4)/64++)$0!:@5*%"&3-:$=(F+9.#D/'[2m"*'-'+.*`,%D/7 C+A21M$5F#)Z("^+`*H@".40#+ & 13+1$#<.*2.(41E7L+)52/1A4)C2(B0&?;(@''($#'%$"%+&0!%,57/2&0''"(",(468 @)6#!=,.;)*$0& 4-67 09E4 n $+,*6_:5L+089/*"0..@,K+k ,] $U!E!+*# %*  1#-'&#' %)5$ =09#50-6&?3,F>*C;"23#&' $&!%/$!*# ! 5<5 +"*,"*(,$)!%2 =5,B3L3 <,,-$,+(##6)H4A E&$b+m-+B2"3+(%*.1$*2*L.[1a1J)$ ### 255#0" ()1 ,9!30/.+51"4>=46),$2';.7,.*$)=D>)0-& ,+ +&-%/+85=A2> )> BG ">&"#/'%=+A3-/, %':4/1?-I,N7J7'"8%.2&1'*&%"/7CG6!%(,13,)#*.!&#",5=5 3> B&G);/7-6.:>5F,"C6'=($ !+4 5#)"5&>)< #EJPN!K":#!,) ,"+,0(#,( +"*AII4?1)9D"*>6)$5 ::=R0M&J$0)-+"<A8.,!",% ,)!$#(,16=Y(L,R*L5K9I 7U?AI=!E@*B6#( ( " $ %!55 :KV a"$i#'P$M+%-:%? :'6$3%&%@BJ =*>;H0CB$8KF[)$>";(* %' (-&"F#2C88,[!%V!"\ J,F: OEN<L+G, . #-6'",;&2688'G5*JGNh 4v3j)!e-M=B A ;68B31K>Z: f5m1!h>T;K 7 ,("+<2"1Q5)BB72O?#T[D] @y3u51mA];QH%45 K/()#+,(9$@,2,+%65&:%"7#!/!)2'5"* 0!3; 23 '&#1-/'/9+3*K"E(1!=693&=-JIPY-<%D,#N(@N$j qs(_(eCK- 7%23*2I'A&9L1:G3G62\.0d=\1D([D3fS9aU3KT-TI9&0&4,5*)/'3-.8*7<:?-'(. 9))&&<0@ 0CF+,&-"* "-"9-7(2 1!60!?"@-G6$K8@G*?D9YGAb.9j:u*.d;!b5^70]4FCD6J8E)874U<7Y#,e";k!1Y!2N4*SI4N]1AX$*G1(,'=1F0K0#B!;1!(&/%)D.%,)0*(-45 &'.)";6(D3E)!D-,2 + '*$2;/ 6A!K-D?9PHW DW!B`3DQKINWGQ+'c7)\<&I1P? <<]/\F_LJ(OP-\>"j-$j-"W#85*AH8:G,09 /*0+E+T4]%P+:/,&-/2+8;/D>3-55#8+#$% -81@2>20/'"$$2 =*#*+-& '$( 2@)EFGYKr%;s'%i3"b1 B4 B=/R)n@lWsY_"\k'Z[*i8d3 L/'/)$8'-<-+ -E(Q/ Z#L%4%'&18,#E9;?9A519821580#(*!$%%+"A$D < "*2& /) /%=,B5"2..)(!1(1)<,5 48 9T?g5u,?v5Eg1>bLGKVNDZUGJeDMeJ)m2-N6 ?B5N)h!c@hWh![m#^g!_]#b8U? DK>/"!+'*'0 , 7M!G$$4+%(%6- 8/&B<8@9:2A64;;;,<+3>&-2*)';!9* *' /%,!.3)),$;-(-"<-@)I = F$N0a6k@k08fF>dP7UeFGgJK]eARf;'[0)P?5P/Xd?XE_H_Sg^drT(e9RD7M C 2)4,4.(( /19/ 8&&/%/%/*1,2B.5L1;M%=G,;E,1I)2F' 3%!)2 0! %)!$%0*, &'!84+B#8:*9 =DU_#%h65lP>]\=S_JGgQKgS@/_2 W@JCDZ3`$O.c8fMEWV_ZeJTC>I E(B 92%,$*(%/+5,'0- 553(&1.*,51:A >O=RENHN0I%*9%$-,. 0 %% +4.)0%,")!&-7@4 A1 <:&8DI%M1Z5(aL#ZM4MQIEWQ6X`4.X=(S?#TAOO@M!F!]9`KBb?!XUMBC>0K(H& J,;&5,$$%-!-1%36&'933#'242-:@':H$FAK ?P@F/<*- 3;, )$&',1< .B&,A8 -<**R:$S> K: A>,8$B1<:V1 SCDO1?JH?KN;TX04^:(\C!^PSD;@,J5[ U_c;\?I?G;?.6<+> 04$& $$%(-%-(,1 .>!A%G$)M07F5P?9M<9T:13G'8^5+cCQC@B)2FEDT8Z. N77C=A":A4/ (/$6,#% 2%/$/4#CO R$/\*?R7IP0OG0L7'87'2)+" ! --*=5 #;%&><16E71O1'F4&?2#6"-3**;!.D, M8K@ A>11+*".+D/")'%510-4A4-K7AU'G ,+F E;F*D#<1 C16=.?,/+*- *#& 1 2H#T,O7S&Q"6F!=F"%F;#G#!;#,/*.4&/G& F+ D0 ;4 1'4.'= ""'+4%+/*(+)"- ?755<B/8/=2;=,/#941 *"$ 568!E$-M!1G G %F(J'7 **5#9(-(**'9,$B0L")O5-KO.?U60FC#7)>$B !((";,S# H$9 2&,& $ ! !'&*- $".:$1'*'2>6)?%$4!:+(/"$@,?.C#3%&) -&#(/ -'/&6B 6#B"FA6'&6+>7!9=41:9*?;(E4%M.M(1E62;:2-7('8"8# * -'?$>?82"   ,550 <&057-27<)/71J!.L$.&/!($#GC (O&F3.0 * (($+3!$ +$&$$2(2:6#B! ,(& 6=:I&FK12K=.E9!V(*R"S ?(%07/323 1  ##)6 /D<.  # = <86%=%%<#$2.4(.8/:&K!+Q:'8D#13 &1@L&6,*"*+=.;.'1+)(' ! %,%$!)'(7/9@1Q6Z)4P74W4,W'3X$WE .&)3-4") - &, &# '3?=$*&)   .- 57$"B/0=*1:(1=./F=F(O"T*C1/2:<28D%) 6?.  (+F,A($@&/6&+!/?0H(:(+%"($&!%*$5)DB8L1P*-Q/+c%'m0g![I-%' $.0"&!% ."2(04 . 6*' +   (-%152&">$5>*0D-8F0B #C EF'A44A)AB$>G5:.#%&&)+5($82*2$2(0/3,&J9L2H39 (*."$!)!&/*4= &G#!F'N (V*d#c YD0 '!# " *+'.&1 >; 0#)7 ; )#-'%4 4 -,2,;&+?4A(=/6S(M9R>R;X@V63 ,,1&#%.)'(%1--(&!1+::DBM4L)C#3 5771!"3 =#BG!I 'TW F"3 $#$$" /%,+* 1 7 50,(69 -"$-=@&4 :2#6=(&15,7 ;% V)Y"a$%_$3a%EO$;8%4/%,$!  +')"$(0";0><K4(E$)>#4> =0+ /: ; : 9?$A""4" !! "$"!%+0+&',0!,*-*!/&5$%")#() -2"=)7 9/1/(4)., @,S#X)_2_87];5T73=1+3))0$**  % )&#*:)8-$9)0="'5$62 1(+',85 !/"#.*% &&% !$$&"2#%" !))&,'(*$#$#.$./'!!4.5 5)-,#)6 &! ,)@ Yb%a- ZA-\I5H;*85/:.22#6+#*# " * ")5/4#9%*#2/) %  ' *0-%',6",'  *"4)":"++( $!'%1 5 01*/'!#'"(.%*! 5R U2#`2Y2N?+K<+6=5)75-&4.$5%,# "!)) /- +)!,'.$0+ %%%,)   #<@!571#$&% &%1&###%$1 * #! '!3 -3.>1%.&'"3 . 2 :I'MFGFLJ#NE*@=.6@9$54-61"'$) *# 1%'/(63-$&#( 20 , &%/ 2# +?J= 7*3 .* +. '+$."&#&" - &#% (* *6'-:)C!7#"$ ' /5+KD G; I>!E>)@>2;?,':1";070!&"*( 6):*)8.2/38+,/ 0(*#-5#- '( /!  ' ! /A< +:/35-2$# -0$ )!"# &%/6-**2(8%?$6#!&+.!+5$?A&0A13+;,@#:)*.")2*7(!$%-%(-06156.A0(H,&=# (!5!'(  , +!& *"//0=>%<7//"'*5:)0! " *, +( %"/&&**+1/%2( & 8 3,/ >B"A+$$)215 8.#.-/2+?06I/7R.(T"%C%(#4)#  )& 4":+=126($.!4 #490 "$ +3#4   $))+("!-"!%. ,*&!& :A8'>)H &A*/&.3;*P ,Y'7\#.` %T(7 " #  $ "   364(,&+"*11, "!("*($."56' ' , %)(4 ) !& *#&*'"H#4" ,*1/!3EMK!-@):-+Ok7m/V![#M(4""  !   (" '')! % 3:0 &(*/-,!(.)8-5*+. 9 +)      ( 3 +#"++0/#.!2:.;# 64 3"ANU )V9DB6U e b)XUO 9' (  %'' $+ " +$3%$?.&-%&+&,04 4..'+%#,8 '4#7%/+#0:* /   *#"'0* 49./.*9"6,0 (/#H#"X Y3^6QF6Q' T&['V F 9%2%#  $ $(&/ , *% $# 1B$C9&4' &-6#.0@A6#-$0+ 12 (.#3((%(.!3'"$$ $  % % #( 0% 7)=); ?!1("#!,+C$!N)L2K*0D,@B(L3I"I"FF!1$%#  %,1,= ">71-1A3H,; -( ;(;;;<H@#3 .' /*#*&$ (%#(0)*#&#3 7/ /#%, /"/(*!500"#$"("$/-8!)8!,:$$=/45/963;%)9#!.!1 &#'"  &/0 2>>9 4 26@>7 /& $&$&%#!%$!.-!.'(,$:@ 7,/')2 1''   03 -'",!%!"3<4G&76+2,+$ *,8('*"&! !$10*9? 4*4 %6)97<2-5AP A 5 ? H%M M$2$ """  ",/*0$ 05/?F'=-%  */*    /   % -(5 &&+ 8"*<)+1!!$%,)0*2& $) # "*!69-8.5.-%4)= 2*6#4(A+ = 9" 8$ C&O'F!5    " . 3 /"(7)>/A$E&;%/#  )&!  -!$*250 %  ,'6$3!&41 -$) $#16##D+G)G +4 %+'/()3 56%7;9) 7( <"@(    * .*''< '= 'G!D ); 14 1/" %/I!D#<(%&$ :#* $9BG I7! %'&0!$%, /+& *$%,#$=&#J& GG!8%'(&'(,2>'<( 0"5 5 & ! " !.#C H "H'5 '&4'@94F"T'Y'2U(6!+2+$+/GPS T'K&3%'(!"% !'1#&#" $!&)$9(*9)">)9? '4)-%&(/ $ 2+"3*5& 3(4)  "' 5#   8 D @#1" )<#N[d&$W)'H15.,' / ,"E!O#XQ)D)/( -"0'!'!%"%!(++3'FH#N;!/+)&+-+'$ (! , ,  $ 3 9( ( #("'  +8&" - 8 G+S+_4![=Q:#G5$21 91+.$<1E,%C()7(-, ()*01 %'&!04"-"1-(9=A3&%$% 0 3#-*% ,-& ) 18 : : 8 %$0/ ($#$&#"$15"M0Z4e7f>_AOC9@2,D1"A00?*6?"4*0)(3%$+&#$$" ,;5&&*($*+330 0  " ),) '!" *'.-2. .&-, , /% #,@ S L G?/.:37C$HG<%/21=,'V0 m:{;wElHXK,?G8=>@:N6,N.2D-73&)5%&, ' +85*/!#-. 1-!"! "'+%/  $+,614:,2 ..,,  - JbR G C/!"031L"VWM*F5<=)4Z-3u7-}:%w<&hD&RH;NIM@LD>TE,R6L8 ;7",!( $"# &&,*('% $#($ .$6&:)<$5*" (( /.481>B6%.   3M WF DD ,$#;)G SW"V1N1C4TP!Ml$G}(7q;&Z:7J7>M2<5I9)*-0/'/+2 1:/#!,#*!&$ $' !/%%0+ $" & 6 <)?+$H'%HC.   1*,-@- F7 ,- &5ALE?5! 1 - 7IJ$VQ!Q+YDd]Xj Fb--M:2M0:B19,$,#%5%%?1$:+6)2)A!=$<$+!* $4"* - 1  # &-7' ;(B' I*K,H#D+ "3-<,D!6$($* " 7 A80%',"  (!4HM Y #W g4d@\N!QT(<>1D9D /"7.04$+.+41H/D* K'A%2&)" % %' . 0.!1&28B6B.O+O)T =(## '$+)#4+:'6"-$" $& %!!#*%%$$%/%2'*"  #2C' N$\![&U#Z-V:$Y= H%"B275F7$'$$-'@*K?" 4543/*$'" !-!2/)**(.46> E3P: U7 O$ :$+/&0,#2(--1" %( %!!&$%( &,%.,"1(/&, +  %$8(D)EQUQUWP PE'2$.6?@,<* 3G2Q-G)<*% #):-A5B2>(210-1 ;1O6 N2B*@ #5% 1! 3$0',,/+!,&! *.4-5%7 *.,"'.(-1 8 7##'- * ,"6" A+!K&K C(#J/O4I737U R <+$+3+ 8% 981E&F-=),&"'"!-/L'K8 D#4%1'8*9 03>-D'J$$>./1< 45%6&')%!#$% *5@GE#7%: + /'-!$ /.#$.&6 ,'!()>6B B7A/A92A=Q 2S U0L*OV["O> -# )*#(#.;.&8$F,C 21*6 8<V T WEMD8-@"+  1 DGA3)#"%$,)4#.$ 8%DFJ K.MDE!?17#*/':,+-13,*+"" &"8%A,"P\ c&\ D-65 ) #  $!"/3.)6<&D$L ;9: ? E,S D]EW"F<   ,IY"P#@9".4'-% "(% ;!HSO &E-C%6A)49&/,15-+@%(-$2%3 $-)?(?-K$\/[9H*9)(7 #4 !0 " ! ,,++=B NNQ$RNKH :K0M 6N"G3,$(A!O)W(I#!H$$F(2( ,( CFIB.E-:(3>9037,,,6(8'.< 122 #$-$;&I$!J)P7HC><=<-4 $9"9(=60 )) *')"-+5&%( :@FT\\&O(X!O2R 6W "G: 2&+52'A3"T7 _7!U.(H&&<(03'("%,:@0L7A/3/0'63?-+,!#0+5748 (5&*,3.!7H!$M&"H4%>A?G=J +C <"=#DG =);,3 /#; <&7& -8 'DXd"W a(W- R$b3c,fT7$ ,/6 .A-J>/TG4[<,X4+K'D35:5  04$>%B$%1 ".- <?$(. -,1275%6+"6+ 4","++ .:#B(;+)8=:N1Z+J8?? F &B04#6)A D E! E! ;,19 FS!G%O U) `'$w%,o2h"F*"%; #B/J<0nB9a37X-4 7+.:%54,=3)A;)+=#$'' '1 34**8*H *B+>!B"<# 3&=10 9%#FH)N% PI$H! 5.48# ;'!?(J1 Z1i/i$?3,+39$& D<]#m7\8S=64"6( #'2%7#&.104856+-3'802E00F1(005 &%+ .!'"#-/+ 2'*1-('"'/;L!M3S:Q'D037(,$,)")$/#"91.I.&M 3J)>4"A,6"@; 34&GUe c&< 3! '!"$" 9 F H6  &!45'(B1 489%"3),..4,%7*!*""204 1"&2 69&$ # (7A5NCIE<83 -="3C39'0) !&(.*13(#23 B3!:6*:"6:) 1C#MR!A(" &#&3 #<#91!,*; NQ ?#,$'/3%A/$8%5"4"%-!'"/!#4"*CWL B</)% &-'3.:+ 6 & %&-19;%D#2%#088-V2]+G" A,E31=& F#?2*0+ 37 -A/1+/%2%)!#&"4&$.HT^VNCC":%B"&?*:@8,7+! #(('-'0 <,K# U3`$ a./]20Y4'I/:82-$6$%3' /&$2&2, 9-2.=8 =(%H#=4&6$7530%&$"(0 .28548BFDS UR$P7S=J,L/O0K14$/ !*1"%5#%'&%*;2=HNUUWUQF^?cB'Z/%J!?%D&&(%!-" 3 ;!> *;)W *n .c#g(RF 3Z18E23X$3W&P;$$) !4@@"!A,'.&!&!)#"&$1( 2(+.')*8C MO'?%%H,E 3J6D39047&7&7# =5*,)L=ORj\lVq9y@tJi@X#U H>!)0)%G&9B5B3%E$,H0J 0h!&n@"vE"_Z'Gd2)U$%\$\!6#'.% <-(.>&H5E28/9#*5,$"(%*%$&#$"-)-#7D @ 0'?,<26<3.,3-C*;&=BCA+A'B/#^1-o<$y;06qKkJ^$_, \G4C&C!%?0?9+O")i&5e!&^$(C90\P4[U4Sd*1c%W X" K",8%*>&+/#!/*/0(!. /683#(.#""?-D A!3 )+ &/+:5S2N,>*9( <E@ <D=1< 0!"&'+B+&?&G$<"%#%%+(EQD> S$VS2B<"?H>G(RL4UGPMP[Q0Xh,7b-+o0,).j%q$b9O`:g-SQ(R[![K%b2l1^.$A*8+.7)@1?)?%=':<:"O7U4I#3&+/7'-99D7@ADF1@;&)B.;"8"!$4 &A-C8322#((,!,(#"!+ 2 7#: G(P6YP&H^1>Y,Jn<(r,(k1'`8S+@El5{"Et"Uj#Kj*NW%V(P5C2 -*8.+6),$ " (*?#RZO0'5!7-688U<;Q@:@P4=4:F#e;l.Km#Mk$Hs3NV'U4B;2?$2-$ ),"(!*6*K"T;1L',929<6P>CP8ID;C=-=9'F<%52&/2+7(5+) (#)$!* ).<13'-6>I9 !< "N-e-h.=e@GPM8g[;\j@Lk^BeiC't;pC%bBNB?O*JG-V+C[PdJ`"ULO2>B!>%*35285. ,.)4;*(%:-"<+8(8A1:Q/EU,GP5?Q-6M*;E,22##+0'10$ )!0)" "*,+-/2'$7&B.<"2CN"$O.$\E2Va@Vb=]hPSgMI-Z4&fF^B T>KD;O"DG >FOCIKILE7DB0N&G(&:$0$0*3)<+)/2% 20",$".+$?" #'+*!-6 ,4,= 0;)7$!9"'3)+*-@6E(T&F /$%16 (   %/*;,=19% ! $>(!J9P>S>I;72#;26? B>BV.;j9<)D:4R>3\2*]1 g=O5 D-2/=NHc4m2X77@36 24$&E0)T+,>!+) (/++5 *> &D!L"%R$"D)4>-@@6L,2P94T/,d .\%P%; -' 9 2$  #,7 2G.0A&62" /B/$G> YA WM VB=*!%(30*/6.P,%#)9*3C#._&,d2&a;P9 5B3(8"a5\)c9F9D?*4+%.+6(@2.1-)"-- .!3;#(1%? I%QT0Q%=A(C72><&L:$E&PPH)0$3 ;));803%-D&0Q$(D$)='5%((3"$=+)O3W?QKI? ;2$."%%13">.C#/C-%=1"H@M$@>9A2B88=$3; ).4*:+9"/+))"A-@'!@7+>B8H *M- :,2#)($ 4%H)]%S3H4 ?5 5.1/  4A)N&.?&"*&#(9#H!=$* ?0G"A0>!(H2I,?&"'! !9!/) ". 4 >#H/+N87I09?#2J,D ';+)"(:'G'H&)@-/-?-*H,S#&J1HACJ"/F-(1'4(, '2F$&V%S C,9' 1#0+   5+#;.&4%%#E%A9:%-&@,;-=!)?"9@%&<(,)5+/ *5 1""--4.73#7/#<1#A,#CA8!(0&9EO/)NA+P<38G8P2$V!PL*>3!)5! .%- 3IM G C :(!  %*'4 ; /.*#:.8"8*204:1I2494K!8,#-9? = )--; ,* #$4*%1).4 1!7'/2* 6<7&62;!K2L=(NG,BI;P=9Q9\)^"]F 0$&,),"%#)#>: AMA+2)!&!#  ( *1'--)E>3B/8A'(H%9L@I:].a*K3%:?&':4*+/ )$ &# //=#=$,C880 G0E,6 $#% #%(%3%G)L@DJ2R-4Q-U,bg]G-#!%&*5%5,9- 64%2.&*(8 &$/' 00+6&*73 :*)C,(M>J =O2^GK8F-9+=A#A<1D &+!"&($. 23;6#B=89.43@%M?A=76&,  "!$4%0;2N"7P%P$Wc"^"TE* "- %)(#"&, -9"5 ),3@ 5,"/$('54"#=!,C$'I 4U/M,H S7(N5.[5Y 8Z!O#5%)$" ##1-'/)/48.52'&4 #A;E!E;+<.$75 < 7# " 6)EIXTF!"F,:%, ' "!$! &-+ $, 58=(/- - 775/#0B&(H@;:<L;+V6*f ]('[(%W(,E#,6 -%! ) $+#"(0/. 0/!*6%1@B'6 ', #!%&0(2&!  $(#%,',"0  #%+-1&/!$+):83.C'"U"^%d:aI'bI4RE?9>?B8=E*77!;1/#0 &! &,$,%3#3*39,$!  ,412,#$*)" #)&:/ , !$,< '%%+#)" 1 "% / AH' Y.Z5XJ/XE5IM<;:F?/H<(=+ :$=#!))% ""*2 0 : 6%7'$#(, #% "& )! "*)- +1'%.# 0)& !"%1-#&&'5'  ! .>!AAGGK>J<*>C79=B:3F3-K#>*;5'.%2*;/75)4=@#5. 3/&*' (!")%, 41-&,0+ ;25-$$ +) + $ #  !##  ' .+%5! 3. !!  +"-%/2 :B>?%C;%E?*>G69@<20B(3G!B! -3=%F*G2+58039''=#<"-+%1 +%%&$+$'"  # -,-*.'6$=$ 9$ -.' ,      $*$$-1,<?7!,#%/ (?")# ,1.I(,G0+=>'*H$#TC*%)5(<-2@3:74=994'4'#09"&$# .) """08%<,1=$<= 8 3!)    # ""('"#33! ,#,#,  %04! %>H'G0&843.M9O1318",.6<,DA*K//Z)3Q'*'$"-7 ""!- + # &;D$?! @ A > 8',&$#&$,3( $-::56(.) #3)&"%> ?$:)/&4=8=1E!..113J'(T-&\($f*^"6$$"!   ! / =#> ? 8 :<2+ %%$**&,&*-3  !(178::)#7/#%+ 6$2.4-.,$!"&&)4MF!@(&('I$_!X#\"` \=&#  # # $,$3% 3 12 2;#0&5&+/1&)8,4''), 1'  !002*) 7%6'/2'(1)3 0!52'#":HS'J!@:W(] a[ ZI#A  ) #+&0)8"+!$ &)% ) *6?>3!>#>206+>6%&+1.2 "%"!&)+,.'5) 7659 2/39-( ($$-!>M"Z,RC@T6Z'`YOA  " $*,1" $1$<$>$$2#*&(+3,+ 5;A 5 4! A)=8+6!@ 7!#-. 0"3' ''#!-35;*10(5+;'<0#" " /.I%MP#-K-BM%J;L+%KN!"F&* % $%0 .6-C(8 & -# 6&!=/1')8$749?F A!.) /%/,#9&90%; +1!/(;=$$* .$ !,*54A)?- 8!& +'*""!./3,<#A$L(7G1%0(-((-3-30/(5) < @( 9+1- 8D9(*"-"*$( .06 390$ 0'-)  7 :+0$#&0 3$)+!!-" $5& 8 ,!*"(!(%?!: 0-,&6 '1)* 0%" &)#!0+>B#F $:&2(,.&-*8"=69%0 96   *!6!* %("%$ ))"'' '.(.01#8KC.>!8721%, *$#3;$/+ 2 (=!U b&e,#^5I.>1/".* +)(-+?3.T6,F+A,!4! " -'&" *$0()" 6 %5#,*; @<5$1"$2 1%&!& .(#,+**/#&%"# ! ) , 5"- ( % "  (* -*1EX%a/j:%c:N8B8490%65.<3>5-A5.<(*+'0&01%+-',%22%*,$ .5 5!0-0"%3*/((+. &+ ) &&.% $- +$ 5$ 8 4/& "  &'(-:GO)_5c6_:Z>FH25#862":9-@06E&*46+?8" .( /79 -- #) 26 ,,  ##%& "'%!,##-*1-4 24 .(3**+ + 06 2"FC = :+ +((5??>-":E-Q%!Q*(h/v3p?_DR<H6FAQF0GA#I:#D;;A4 1  &02& D$ 5 14' "% )* "  3$(>!7+!',(13 4828 5+ 6287-  1 9 2# K* I#I A 1  &,(< FO"Q2MJ=O:L7i%.|/'x4a9*L;1P9V?PE0H?)T@#G>9-#01-) 254 2 23 0$ '$ &%.,#/ -;*A$=+/,*/).8 18G1L1':@ :%"1."8* C-?/ BA 3 '''A "RT !V:(LE PBYERfFyCy2,g4(+C$"NC, '*1>4S*S%9'>>; ) )0':4:1: =.   7#F$F!&N,$R2[=#Z9iR _jRi!@]0,P0F+@/<.0!3/& *,0 , , 0 4 3$@)I*F1L*I"< +  &1-"E-Q+S&$'O9'K,"O(QP @/<14-D6G$F2RAF?2A,(%$/ 17-)9*65 ;4 E:N7 T4 I 8&&"2) ;0.8>18*5,&8"$19 2 /*!+0%9'%*,#$" !2= DJ)K O"V &\$V([&"`"VQ I& 6" 2 :'P1W"O9NQ GJ!+-)6"!:7"-0/1324 >4E,F E"B%+$5&84%/;56:E38A&:9#15 /- .,!-610$0+/&+ :)3" (() -4%?-M%S!N0(G-1K/ U, S5V4.E$A'%)"+:$ E(IFDI:E4I(3.$'%06 5.'6*D&I-J:=9>=1: 2/$+9&"7,#/84087.?10;.&&3(#6(<$CA$ =: 0#/".2$7#  $"* %$5/H3M7C8 7?AAF@#-..%$)* "6 C"TID'C/F7B57(0 8&$38%'2)%)405)+!)38>E/R+Q%V1W,I$ 00)3,+.*!, " * ''*6?H U O &B/E ,7 /D):8Q.O B, !7G'$N-(P2MI2&%$> D!FKC!9 3<,917!,(1 ?%';,-((*+$"2&B)E2!O)S/PDI<=;/5,6 02%&  +%( #.$' *) $1 >R b (b 7Y7Z#OA)>&O #MA!,"$& 9$L%1^/6].Z $N :"."(# *< @@8 !.$+ /!!)#&$)#-+//.0' %)5( :C#K%N(L3!NFDO 3<):)</ # &."++ 2->/ >40; $> &^ *i&n(f"&d!Z#C"9 &0 84! &" 5!D)*P5+^ 1b .d (T M7/;* &(+*.1 #>!'7-"#")(&$-;.6/0)&' 0 46 <%@! J)"N4#M;%HMNTH[)M$CEAJ <2088 2; G2F/ M'>1/9,M&\!d!!d-ZL)V,I$G>&/%;#1B7@F5U;Y>S2H2F94A4( 6:4&'$ " (&%<&":%#3*-%)#+*0- <>F!#G..@B*CPQe@m+YK GJN(H3< 89M2Q&Q' NC!4)> VJRPK)%Z$"O&8 &70+C-R=X;_QUAP9==, =!4 6 )51.!'(4*8*9">,4+'3)'-".!"% 6698##59&5A 6V,Y K? D= ? .:>5 J-T*S+TM: '4219+3 @'B+I0)N&+J"##-(!=<*5G P"` 7[D^7:;,<=1"*#0/+3$"-./=)-D,J* C,=374'6-.2,$+% *+. + %+%+$7#&A!=0 !8; *"- >*M0S0 W2Q++D3'+;+R&(G(1#.)'2-B2 <"32(F/4-I,M&25#8K R!j +Y&*)(/(1'/2,,*CD0(7:6F#/W&K#N&9616!)/"'/ . 67$2&#$&#!"5* "%( 3&& %("5J0N=PA#K<"=0*1=%D?)L8#:014 5( ##$('*557C(A 8*&&66!8@!!L#J%<4$,04$,+ *!;!O"SF/1)'%)&-$#-("#*+  &&)%1%6/8<9<4:!*O..W)7X.-V27V?<.6 '$!)*',%5"797=8;-+.:0D<'6/; !S!0i&/X##P*F:@"B3;%;*05/= +7 :D9B,?#=%$0+5))5(#N%c'`#K> 9#5'6-#61*96'4/'((/$(!!-5%8(,7&B$O'-S6*f,n.-_:.cF)L;77<<-.*%5(#5'1&*0#)'$30 /, 0&;!$6%-,8Y#6h.Co1@b),X!Q0GA?4, 87 3; +7 53484+1*#)%5&=$)?(N)!^)VSH<%D!I+-H'6G55D3-9(-:#&4"'%'-1()1*4 BP%L*`7(c;>UG`I]#S>-[8-X,)M-!B1":'%(!63 84M,?C8+IS)Ad(Fj.FU,:d$(dO#>".14 +=)> 5:$0*0,$1/!&!% - 47 /?"'K%"G!J GJLP!R)-P$4I-:J/5K)*L #A9&+&#%2%,0))56-?+W>^ M_ TPPT'eS"jD/iJ%d@$S-"O3"!##@GC"9#HSR6!J@BV*J]-:x'2m"#d$J(9"14 %<;(3")$)/#-" )&$", '')35 3&*)/ 2JS&S%(M.N ?D"GF4B# 6,)FIXaclgdrD#yE wN'M&6p$R4:2&4 &4#2%H N#NG_;,^G-RZ(CZ&:d"6s #d W;#3$"-/4 5 2$'+=9" 0% +*%#-+)4$!6FD#&;%/:%??@;53-1%8"1 .).?C= 8J0(eI'kL#tV~;"z;'|L&?+1l)`C ?MU$&L.8C'K(^:n/#a$-A6E::EF3CV(6X1a#$`0W1B ,8.2(,"!)$%7(+? @ 92! #*0 %;>"9. 4!+>'W-U(P#>$<# I%EG">>A@" C.4W92`5%m6|5 ;+.0"%$p#$GA T#R8>F3EB,P:%c,q<"k41M+;5*92@29>+?DL5#H7J==-1+")1'5.44C74L.'D8@'<10+$!+9!9C$"2 -%  3)G-JQJ A OYV K#8.F&'L22O@OT:IZ#lz$)$%$rj.!EF6W'LZ.PA(_8Q+!e@,RB(H<%00+%)3/(;# @ "= 1FF=F'<5 &= 3#5*1?4C=M38P.3@7/A>)?26.%*-.0$* 55%'+$)"5 / &3(3- 2, : M!K)X/!N3=8+;8>EIC[OPW<i,|5f-$),("/h+Q>,"QAeXhJjM\%M=+I+'A/B?38'/%!$ (!%*,F5N)R>1<$A"F,=98C?ECFIH9>M5G:*R@97+7,-3:211#&!# ,'($$ $5 K G &@ 7475@H'5H*:A?@6 5 5&A)+F7=>EI9V?F??RO.X@*v<#z>zD`MXIGX,I:)9>800:3&$+#>.5:1C7L#T>*n='sC!i@^OHT7N)L 0G4?JIL!>6B)85,?0:.13&?!!H<57).& 0& 8(%+#')1H)BW7?_#Bm#@k*Dm+@\/+I2.>,:"0+ & (. ,;,5 #/0 #,9">"=+Q6E7:: )066825&5'41BQD#Q8%U<.^0&\;P4DN2N C:,"Y#Q8>80//(%0482"6/+&(5@ =$80 59075=1:= *"3/*I%:R&2c5l6{!2l$0b*&N)2& *46 & &$ -7 *5*2$72#(!1276<9S?[IHC =1!'(/ 2@#-56!I3 L3#U*'^/Z:R'A(01;H$['S/>;00%!*+-7!74;@2?(>C5$..(:.B 4MUM((3,E?!D1&S&'a %jheZ?1/*06 ( '4-C,C$<-%"* !4*?8HA TEVK JF 93' &' +!!.B*#Q $`G'I2 @6 ,+ %@%a+bB8$?2,C@(+3> A'/<40?C)+/>3I+7-> "PZO'0?'FC!NA X3X2a$ c WK!"0,,1*00)*&(+*+/<(O1Q,$B&0$$#1%7%H5_@R>JHHD43 *'$ -BR*W%Y#F,7= '43'(N%`"e"B5$M:'H7!:$=,)<(.'2) 867Q0T/=&;J^$M!>? LL HLDB H3T$Q$B44*B"/D>DB:',/+'.# 1%0?-H++G: B1.(/;U#_6XAI= >< 30)$  )=P ZS B1&4=!3"&#P$"E4DCS/:\3"S"8%&'   + 9<;G&A>3F(M1+R2>:&9F">J;E/8=%/7<(E-Q7UEL'C575?2E*C(=4"2<-'=)&4.$)#' $= [!i+V0 Q(L+6" , &))B##O&'F!2 .*;#:-;>;3MIJNH9?!'/")  (816+*1"1-9&E.C5!G4 :3 @)B!>$2,&!@FM Y/0W43C;95F3K.H I:/"96-*4)&+  !"C!%Q&S+ L( K B ) !* (& '!$1('4.!#%'##;+(@' >$ =$=B112I.(\2/L'%+($ & #"5@6,!+&/>$872:(= 6;300+;:&/4"BN#X)#Z9%>C*6K5)N7V(VL>8'!.& #" #* >!B D) R(C%6!# ( 3 1'(0' .!0,)/,9.#B/(J6J4C:2^&"NI?S=8)(! !!% " ,, !*,62-A3CH<!B)2+%*#$2IQ# SC;Q#:Q,4Q4%Q3X'ZL@9 +!0AC <EF)9/!)0#%/"(*$&(=51,:;E?-?I%3I 7N@\$+h$N>C2().+!)!$!&- 4%4%6&'?),:!92F# SE1 0" $ / <D&-F"(T#)P*!V)\!WUM=.#*:9 -2);3)3,"(90 !+"() 0,,83-5K/4K"*J$3I@\:j$W'+;4*-=< 9?37,+! ")297A6!A1+8*97"70E"S#J,2%-#   !&% >M"SW[Z*^%K8#(  #' $ '-2/ '$-.$&0B C%%#$'&-((-"'C% S/O"R O a@9$A-:N@F9N-O'6)/&'%(* ///)8111C/16-(?1S5H)3, !%,0 1)&! 8 MPP#^\%\ ,M?((  ,63# *&$( (#/6 -+!- (5?4#G(VR& G$#@%H6V/1Q2\ =Z)1V'1I)21'8**&'&. .=%.5$:1!0?4A2705,4&=62 ) /;DL!TV#Q'!I#:%*#  ! ! 1 !!"$#%"!6 / "( ( : %D>"4"K S%#D0@[6Z%(`)3o23f61`7GG5B?)@/)5'3'$! (/ 7*4:053.*4'1 :0,!"* +0"6=GJJA-'# "  + :- ! & ))*##"/.6(0##2&<87 H3K T% ^E*eA&j@8c:LJ:X@5L<5A12:6!40&#$% (" #%(**&#43,4)' &"'#,% 0!14/%   #%+ 82'  $!* 1!. !,#$$ 4 E+A ISD']M>`HGRAR?8[<7Y4:J14H1D/)'5/6()'()3 ?:';'*#0 #("%(2#''&&%% ! #  !* ( #,> 6&   #&*)!!$)3  %+5A)E2C-&EC6JJB?GWE;Q:2U8)J7"?8!@6()=,9-80&537G#?*: % $! (."(6/-( $   ! $"3 1#1% . 60 #   %!*!+.!.$9" /+))$   #) /3:396:K94LH>>OI5Q:*N1"J.>: .B&K&H- E2&;76(9)1( ('+! !*#%# +-( 7)D 0M!=Q$JA,%6+""$$!(% + $   &(!/,"%!8 8 1 '-',)0)0#- EI G? 4!2&-,/>+ B)+/!3#(:45$;%?* 5.  (,;2M5E,)631$+5(, %/,7*I'#N+7O+K,:):*8- &$ ) * (& !  .7&=$6#-2(2%*%(,: :*56; ;? ;;-%''"8#5'2 ":$-4*?:(;&#C%3 , "  ',02>9&@0;'-+( ) "  *$- (.71"A'O7K= G> D.D2 2/*'(+ +" $  !.(<+B @&.-!))"11(40*<0:2 ?! 5348<.) (,11 4#//5!:4!B/'GE 3 , 0 "8/=>3"53'+0= 2%-&,)$(#($7$23 E<AMDGE: C332 ,-((0+"-"&6($= &8%2%3&%,1'9,, 3$ 7%6 41 ;5;&(#),0= : #8!12 81 <&@ @ <8.  (5>,6))9+!A,-:/.=3"=#.  $*,2%%#'!/ $& 1% 5F7J/; 3, 3713!)*$ /$%.%"3#8B !B%:'"!$*)+-000 * - 0 0$;#'*!55&D$F#">$/3 1#320+ -**&-%%'.$ :B. <,"9.9.6"7,+0*/ +%&0%!9)"0 */#2-'.=/70%! .,% 7" @ !?"E G+@*2#$)#!*+'1'&(! %('& $ )! )!$ ,-#<";$.*3)'0#!%$+7 ,5.4#E&[ _&P4F=79!3%$+=-9&*2"-6..2$0)" # &%#*-#*) ".&;&G A !< BE#>$,' 6$4$&$"$(-*0(+& $!  # &-$(%(- ! # (  - 0 4;BU"f-g3/a3 Q;?51)./>9/"746/6;7/!- )'#. (*!. - #(&)/"9=:48@!6!0;@3"! ,*--&'$" " " %&$ %&/'. .  % #6A ? JV,f8l8+m=)Y>D4.//)2(@F17:2?4/**3 ().1'/"/"' (#2 &+5 9( )6+0 3#:$4*2"+ ) +$/".   )$'#0# 9:7( &2$"3!:'DK[.!`4 b6f=Y@F=4?$6K;(DB(8*7(, 5 2'+#9+?8BB; '&  %$,&* %/"!4#!4#7 /; 1< 0%2 8 C 81 $# ,!3,4/ 8)=>= ,  $:,/#866F/S*Q,_!!f+"i6T7W,@ K B 2#" !    (#$2"!7!1*$)!!4+4 68667%1 :!CA 3,! ,&56;: ;2;(:=4 $4?B!A0$DGBM9K1Y3l*o+a4G;&C=64,75$0-,A(6%2#2*%,*,"--44/,;>-BB=:6#10 )* +"0 $<< 4") '3/7?2G! ?.E4 M G;, .%217?8< 49D) ?8 ' *%2#F'G+)N/-FC"MK#OJJR Eg?t/r'V30=::>9.I& O$=&4#2--;82,+*)+0>8/06%AOH?#!4;6 7)D$ L FA2,"6;4I8T3M:=3Q% J E4!".#.007.97&<6.% 2*84 >7.J*,S0-[@4U/1YE U_RbHc,S#-L4@;K;W:N-H,:) ;,)@-+9-!60!5/"!0= M> C!? =DD/S,[#I ?6 "$&.,@7/O6%R5$U6(=1$D)G >5 &&+"+(!-%!+ !  #((695!?8*K..\%=Z)@T=_71XK&IO&JHDEG=B`=V:Z@X=I1<)H4E6K9=/ )%  )301=$B#CG>)P3S/S# F' E ? +($34<;;6$/""&$/$5$1#&   %/:=>-B6,K.2Q(!F(D &E-D%)I'#M-:G,9Q/]#c.]1Q8F=N>N+P5QD A@5@*8%-.)# / : E""A#<*?4R:O:P/P%F 9  /("@1.F66:6>839320.(13"0#)$ '$6/7/( )" '"  #,//C6C/E'!F# <"'A)=+>,O3U8\ e! f U+Q.D9W>Z!U=MQQTIE;E-4 ) ## **"4/"/)!6,?0C6J<I+ J$ E@""$!0,$B7)@;BF".P 5\ )h f'U#[X9!J! Q.WBSKRNSGCK5:/4"2%(!"'#01!C3>39+ ?6E0C,><' $81:82AHF=EL2DM2IM,%:3-67 %*.)3+7"#$*/*$0""#) $%&" 52;2B*I0<<7:D*I. V& n) M#PJ#C8 4!E. H3F> E= G<K;<0--!1+ /6&D+2H%/H2B8D:< ;26"4-!'#50)5804@@/BD3FC23A'">' 1-4 > =) < 2 / %( "- 2')9)3"$ %$/,*A2CA 9G2H2AC9J7P1 6283$C#F!> ./ =4;43.;9:2E7 ?..4*! $ ;M&O,H)!B(?2<.C 58,+0!1"'39-3/3;6;:1:>*8J07<-$:475<.J K'H*A' ,)0/,"2*8/.!  %! 152!)93D #Q N-P3H236'=>%8F353*2&,0=?!/C9F">*-9'2/"&/$FW SC#3'3*5'< '7 %0/@'&48-342;05233*=,394B:D1T$V7F;B42 6'7&9%*&'+ 9/0&!, .;4 < '? .?5? .: 5968-?0B4E6.+)#!/'9& G%-T/V)PI /$#$)8!GK@A!? "/ 5%*)4) ;$2+21 *+$0!'8'M%M-M"W6WGFF8H3.7)6.1&#. 2; A!#) +(8# 26'F'>,U+a0_.Q-9-; ,: ;*F 27;1.2'6)9#-V<`I^!- $!. 5"=!=;5 % !"/2(.)7!,-"(*&&+"5IUa. \9LLDX:Z5K49 1> +5!-,)<-,:4 I5F9@73;1N 'a/p0l#%X$J. 1$ '(1*?+)@&)M!!Q*L?TL`Fd 7V&C26 0+"! %!$*-*1 2 ' &6;# 89)% %)&7*D%K&Z/"e?(VH.IT!J_Kb$0[&M H"D #G D117: 2?F<K:R5$O39.*D'Z r%#m!ZG"7. #5E /, &< #M'V:Q;U:UAX@T,< 2/8 8 /+, "  "%("<'D):.!))*# )!+%=C$T/'S>-LK%BY$FcCl&-cN H MW'I4=71 G7N9T6T6M):% ,1 2@L&\I)80$@,:#@N/2"=!U*j AT?WAQ@Y DJ<0?8 ,!,2%?(! ):45@"A"8#3'(+)+$0!,- 8?:(C9EN!00#<)PL&1+&%+!1%/")'!"1/?EMI?? 38&: 'J ([;SFJ$?<,0, */0$,6"8=/<*36%4!- 8)A<MF0S(LG >*+88"#9%6$.!@! , %2#/(3..),0/6.,"- !*&"(,#!-+/!H1OE O7I,"2.%>?KC*K'NB 5(,<$&=3>(6I*$[%J&30:*7+$<*%%AC;/++1(&)*.+/-'2#19 G E &B,7&(- 19T2^, b'M5"K10B5:449703 <=96,53F4?&< 4!- 8+F0(:(#Q#"d$Z!? $> C/B< ,L&"J0 H3 B0%,*2)B-+"1. 43#9)S3 T( j7 b<$VM)JN,EE@Q47A193/2,-652%=,>$= #/+ /7&1 6//&!*$/#F=,]=5c3/^((V)&V%3U 2L#*A-@.>,144"?;#62*5*&&*!5!D.,>*,Y2$U-%R!BFA,?5;@':JA/FA5D090<(.69&(6 (&#/ (7#7%I9 Z.fA#])QD`&QU2`H5cHKBGLDECN.,N5 =;#3)#)4-7//2@6AE-Y6\ ?YU]"ac2`U3dR6vK.j>*W,#K#8##!<J+&E- A8F-/+H;-TO+Sl+Hq(:x+o2`9'O" ;0 $ "'1 (8.:$=6 !2(4#.- 7 / 9#97LT'%W>+K@9FFXEBOS/7F."E5"B'0 %147 /(G* L'<6 3SLYR^ eY!bX'T(M-F,u9/h!)X&F:B!1!5%!RSbO H(,ID1:G/AL+@_Am*+s/g+T'#C'9&, *)64@@"4&)3,$#*(/""*" ?J!-O,#C/;9=S?-S> F474+67, 4, '+D!L.E" =1DISZkPrY!{G=(A(<"0-s2Y74P"]-Y*65'=)$W&&d'+a&'I'36#4E/-P=%.D/33 G,E&E"F;VMf=s9A'E-/8,,z&%f2!9Aa(d+D_<9HC;8/M/&\:&Y7'D2'01)B8'7C!QBHI2@ ..%2,#+$" 48#;G=R5+N8,;>(:5",6 3+ -)6:"2 ( $#;(M K J 6. 9GL$>'!A /@CMX%Tw$'"#v#]+'F#K;Q0OZ=H@8B7#67#(2+' (%6$=I4 $ #3"(,;(?(*'#7(/<".6-:E4BDJO=Je9IW83EE&N5&o*i"u:kD ^H Cc 3r+A<<QQ JE'?7/'6# +$/-B&HJ=&>"@!3&# 4()"!'3.392M;9U9@\29e;Ak9@\35]9>b:-W-)F0$ 2 6.##/!&)# &*(,(,-659", (+-,# &'2--!A:CDI<g- u(&w4fL U_<^8Y<7B1RJ&P703$)'&77 )9J L)D#9(504%+,&%+%2I38Z.7m'7t-2l-2l43h9'R6V3N,4 ') )+%%-/B .&)3"3$8/@696:2 +,(! .(=(48AIBJ,W(,e(&b6 \;FL$-V2RBH!L0-927(-%% 3%- -*;= F" E3 <=/;*6,?*7() ;60K*;^7m 3z#&s( k-j1R0G<=5%', '& %-;I5# %( ..9; >?JCF?C3<% %( #2&2/%"=#O)Z&[) O' V* + +46)=R'Q''=,/+2/02*&18+H&U&L3#C6(671:3N2RM :/*(K:*S8'd"*i sq%g&e.N/*38/+0*#)! " (/&3* 4*: -'&'(&62EAS@QBT>D21&  )  .2G( W_]F+/#"!=$b(+J1#1?+C0+?# ")."> VQ+EG+8Q/1V/J4L%T^I!V@D= =6-+ - # +A R$caX# 4/62&%&K&Q 1D49BC(H7? 29 5" C E3<%1U*`(j$$[DSX+K#49>MCF K8 Q.!T!7^I^#UJ3K/=C P: H6<."! .55'2C5%>170%1+13I0([/!h;]; J5 ?>;1+ &#<0J`bK&+.>2#K'NEC)YK*/2 ,  ,)>-?'Q!'R,7"1+!J%@<0QL@;? B6$A.,2#-#!!!(# +$.(-=$@ <.F3I8H? K4G' =)A/3'0*61Y) @ F#C&0>44635-8->&<4:*,154),-!'+22G#Q2S3G/I07! ,&$(%2 /)+1(0"0(-%&D.QTV9>21(@.&J'S?L5J7<?.!6#0"'1?8DFB:':J,/K+#M,K'A: ;$ ='/# $ /3)6R*4U1)Y,T* QMC=:"'#& 166%A)E-D.0* +4#- &&"&(&,.11517I/CK'CDA?:9#*Z/K6>F".=-?+7#.$,(1&:)4(5$5&7.2N-$W(bQ 77 2 +' -$'@0$V&)a(Y&\!W"QH>)0%&#& 3 6 /6*1) "%$"!, *!6 "-"%%17+4/1#!(<1>3G7&E.+4*<,!B*T S M AE%   %1 J!T$Y\a!!`,[I9,  , .' # & %+#.% 75!,),(#$>7$OD0Q%(KL R/B08:CA.?CGG7I,264*1+">,@0,.4:1*H"+?"*F(S -G'1%&4- / & BT^!U]!d#`'U #B,4"$    ' & $  "* !$ '3 .*35$42D=L"O JICP#Y:1Y"?RHO>O)9D/>:(46"' "* 1'=.=:68:./8).6(5'@/$!-.(C#R$X Y)b* \-$S'*C/0) % , )  " " % " $#!"  1:;<%:A&I,OQ6%Y-/d4X9j1:d>IK=ND&J9.?)"7 / (=":4+31,&2&, 8?.$'$.!0 9*@*G)F($Y( Q)$B-1**-9 9 ( *+$(*(,"  "/*) !635-<1?%/'',+ "$+ (!&."!% ( ) '5*  '+/' -)),/0 2$6,<)8)($ $' '9 !9 :- "' .* "!) "+" "($. )"# &*/4<; < A$LA6eCA`.bC*Z3#H-.44/>% 0,(*) *$)6 #1 7 $ +(+6.,5'4""4%*# " +*/5 =7 +! !", '(!&""&$)  !' 0) 48==)MB5L@EM:W>9j?2jD'`<$R:JF(8JA%D-)8(-&&5 &2&7 )"" *7 3'8:1:-,"#"373/5 8 7 #    "/ !()2)@!#?2-&# ! ,,3>*!8D36MB5CU94g=+bB#Y7C>" H:4* ! !#& +"!/7>%E#E5)$%  # &)).)1: /G!&I**O5(L:(G-1&<- G5,N43J14?+:51-9/,+'&(#** +;I%,L*-A"89:!/&  397< EF@=#", ' ""( *(8@':(?%D0 ,#& *!#"+ #8 !; $A((;5&G0C6'!5((/',,(-(' ' ) 8E G#(B1& 4((&! #(/1 >FE#G);#*8&"#"  % # &39!'A)? 8 20&!&!!(!."% +#-$:B5".0""+,#,"1&!9+"D4%?6( 1 ('''!' 31/=< * $,/$!*$(.!CL EJ*G7A85)#$.&)4 -(. $ &)..( 9#B#8'##,)0*.+-$ +!()(6.',+$(-1') * : >5"#%# 2 ' 3 "&'#.41, A#NKGAB#)<++/-+#+2"35D 7 ,, '$,'&5)#5"#1"*)%%-)32,/ %- "' " !.-0 2",2 6# 6( 0!'0-.*"    $ ( .1"*""- 11 %/ ;1G-ON @:=!%8.)40245)0 &(1/%?#C >5 <("*%)(")+(&'-$<(0,+$-*&'% '  #"%'471=0938-!(+)#,2%     & 3","+((3 . $7 (( 8(I' L K A61 1)#/3-361+7.2=*=1#;:263&"$'%%4)B.4- 1(#1(1"1  $-,2 ?0 >6Q7G5:3 51 ;- -1+" &" ! $ %% %%')*)/), .-0# +5 >@>A4%/+ ".)217)$>-:?3B;,A.G#B + *!"!#.(<4=;;8. 8%/ $.&!$&&"+#,/ E>E;R0 O: L8>0I9::+% %( )# $ #   ) )!#!%0&)"*#** 6. 4* 5-1#*69; A%7-+* 6 >((C')?+5B'AA$I;R1K# :0!+:A#A/> A925/*4%55//""!,('$/32< <8 F- E=GH K@C2 @4 9+)#&%    & % %/10!(* #++(0",# .,1 <2 3* *(,/6A&J!&9%3A$;D)F=(F@)J-?*A!/ #4C"%E*M$1G.&D&&632=;&2. " / .(' *#*+0. 2# B= ;K5H:<=-9/"3*!(!! (()&-$3<!@&6$%!"%%''# " ) ) 0.(&6?%H!M!+H'2@:>BB:A .<6'0( , )$5"$?* E("E&0E2)>/)888;$00(4&+*8 21% !' #) ./025 39 ;48*6+%6#"2'** $8*C )AGF%C,/&"*$!" '& + (%)$( 1>#E H)@17575@+B 221+#6 :%0*3%<3T'&S(+M7)KD* =:#5+363 ! $"+#!+. )) -% -+./))/"#& (# .=A BNU']/*f>,a>'U4D35*)'%7"0B6 "%&%$!-(/''2"5 =2  '..*6? ; -*!+!#' -$8$<%11,& '( )$'.., ' . /-' 1!/ /,   !&$.&=CL T$Y(&c>j?Y6L1A (*()#9+9!H);"2 8&!%*/03=0ECM? /  "$10 !%%&)$+3!:&<%;1958 11=A/ $+(&!+3(7-,1! 0 02 &18*/=2I-M &L%P%Q* [6R0K=&2&*1$,.!02:@ /-6.-:0/$4#*2.1.B3'M+J V N 3 + %  !!& )!*$=&: )0 <6 =+ 7'>) <# C ?/ %'0&7607 +/2, ,/1'  157817@1K)N*M,]%T P:&4!7,+;+1488'14+614*05%15&54:"A33=!@/ C J DM"F"7 30, ).!61 !  ,-3:55@,=7>7E1NM >&!)!06/6 (7 ,/-- 00 ".#4&<&!A)#B8)<>49:-7:!1M *X[$N $7;> ;4I0F. <;-84,619+,7#&5.6?%8.+=KYS H$B 57<BI?3 " +38%C:%T4#X>EBD8J3 H =1!)%,8>$3 #' ,$ "'#596"@1+F0.@-5C->>,D<,89L#1Q/V#1I;)A K4 L8[4\)S0'F72?>5h.X%N(-?2@CID7:::1)$%7B #I*PDD"E'N$Z,\5II. /3+=DFM.S>5QF.MJ*@78!21'!("%',6*1 .(&    #-(?4J,9L-?<>:0B34F(> B,@ >4@>!>R7^!]g+ ^+V0 O3J1O>M=BB-B%EA 4"$ 4"?$G#JA.O3T3Y3X-H'F:!61$M@.M=:J==@9?A1:3(2$!! $%.,32,=+1'!!.%=.D9@=>B<$24 ;5@:@.)C$58,:C/U"jde! d'T& O/T' d0[D HIAF4H3E1,!#)2+8$<-=7L4T;^7 V+ D+ C?1&)A:MA-VIAOD86<<,34&)( ." *% (#,%+%%2/-=$=/:$#5.*%(#! ' $1+442?;;8,5 /95A9="@506-&O(^"jg gd&^0T- ]/f<\> P>KBKAG>./+( $)&$0(.2%;1B4P3Z4V4 @2 9- )/6A>FD/JL):$$%!" #-,"/16 ,K)U$R0@ 97O1[0M!S#Z RA& >6 K< AD5?82:6Q7T;F9&2$'BQ% T)H36+&6!/33? /:))0++$6(1016<66G6+@;;H#0C%0?.$P>N, =% 1<=;.@)A>F6H.,A, F678$3!ETO!<( >( C%)2 )5 .&#+-"8)57,G?, 6,699%1154:$BL3=>227<?8&(0 '#12 >! <0 (,)*;";#5AB "K #K-> >*B,<49:NH I8033:E$T-[.O : ('/(). ## 1*A#C#7Q!D3. )#5- #3%7)"<%'4'+)*# +=D-K&O+Q<=J2G042;,8' 5+9?A /6E >?:M ;>(A+J.H);02 ?$ I*: B5 DA @L3E>C*R8[EWCZ(Q. %(0) ))*2./;/;!8'++#54=+, /"&1$!#$*,+ 4"FR)\,S=MKNZ=\-H68.; +900-$06@#@5I-T J(B;Y;T+I&37%N'^Y!C#7-%?-#H$; C :4BD.O6];X8]OPXNWXLV?E6)% ."'$ '  ! -1--*160A = ,$$)!& ?B(K4([D.RV(Ua Gf!Ag2e ^PID 8*95. K>S?NBM7K( =()5 )2*F $O&)A..)426/41B= <<;F.G%,T5]7bM[$]IRRROLB9= *$'', ,; <8:G3>'D% =&%,&+5!,,*0!<2H=%QL+Ld*;h*-b& X%#W(O.@#?"+D4=G9Q>PDP4 F*;1*5/.2&,,+034+5@1)40;H2C>3H *E*P /YKLTJYCY@`6O!$0#=0,";(1/ 4"%&; ?- BIBM:E(E$6)!4;, *.!&!)) *,/*51'7@2AK/ 4$3"$3"4&*-&7"20%,*3#567%=I&CL3HH#F5MJT[U]O%XA*X"%?./*1,$="G,E1%:1&+.' >' E5 D@:K 4B&>#6) = >%);/8+& 42.1140)$--461:-:<&6Q#7U(+P'B;0<$@MOTXL(Z<9M;=-10).<,K?J>EB1=824=0 G5C3 @>,A%8 6 +%!>&0'4?84D((H)+=#7J4I/<0 1@!MH#IN-6**73 ;<&5: )"7 1A2),4F2O(X2#UF?D:>Q#*Z6>1 &0,)1",*&@2P)N!-K4&=+GAV)IR3I4H-K'2<#H2#G?YT'VEMJ.E+4H=CFKK>/C :@!,1%(& ))6+D6%;-,N-*W//L(5J /G'C4"7G*XR2S0HC/B4A=;>$!/3=-#G&LD?&X?$[;#`>!]:`2U,+F8P7S >F9F.;=43(7-#-9!&O30K:3K='L7!O(#I-JD5?B5R2*R?&6C,:8-@&4B+)C88*,('7> 8(Q3$]2$] 5NEMLW-aN5hXW@?WE6oDn>k8T-E !TJ*A*@6,5?,%@%=(!#3/A56F5,A:!J5B"B?B4??,AR>31K04S=6E=:*=<,.59"-8/! 2/87:06?0H 8EHSUV^V(sS1u]=[[FcF6`72C118% %#2)F9+S64O0I,7)8 +/=79EM8KQ=CjK/}@p4c3L"C::1"C<0A#,E"A ,'+*%0//1?1#:/5*1 ; >P(T50J(9>)N37]B/b?/@;*3-$:#2' ,- 02 <8 L0C<BD E^Nd\_hVK%lQ2t]8~C4uN0\,6Q3/2A&5?6!L9"O/%T'R >"$: 0677CU)JR7Mm5/x3p0X+%K&$7'=' /#&>-=$K>" < ,/"(-.4C&.&5$3.'1I#%K+N%;F'Q/7_3 d9 P5 +&+##/ 5>-. @6 M0 H1GHEeOomW]["Q*G(J-=.C6a0=EI&F .Y%.U40>?5?1A"HK'9B :D"*I/G,+-5" B'..%-'C-HA.GL_ O ;+& ''4. 2C @T ^BZ7YBRIXTVN!NG):+J&N)u<)\E"8>Wi=:vW0W]57;E53C*)G1A7663/(5#EOW!P%-C -9!2*#5("/(.6.A!-L<2D?3=J75D1@D<++" 1 2 2#!#!%* !A C I@&&) +( ?, 4,1#+4 8(B*F$833020$7(!0'!(,+<80EM.EY,8R0:>,=A,7A 184<1!$&.5' $08!,5 2)>6A-7-4* 9( B) Q~. '!"%l'Q0.Y +^EM]TSV`VCQF4900,'&$)(% ,$&$#<67A!.8%1. .' /( * #!(5--7AK9R\3Pa4Ka:RP57Z% IBA / 8<3# ## -9#= = ( "  )/6 5 + 5< Jf!v##&"'j)a?LZ #N&AOH[@LQILa@/A7/3 . 5B=(3*I$,C# &-9 -0+-&+$'(";:-E(G E6#K#H%@+*2%+.(#$)/33/@?)M+-S44b1:l1Dg4A_C^@[+N# 5%8 8+)",   ! !#%5)883 ,1*'&) #!$ &(* :&I'X6q-l \*XU?U0V C/5S!'R0%A+0)':+7-,.,8,R)M-E-K(E68& ,")%'&'/D47T15b,+c&.g).i/,b9S;P@W3"=%5/ ,&(' 2 0 !  "3-FCE>82,&.-%## # 0%' 09#E$X/`a \" C<02H7CS%5^ *B"/## &*#@+3(>(F+B3!=@-7H;?)7&:!1 '<'1I.3Z(,n''m&i$c$f1T<%E6(9."1*3% 2 #&6@-&%*):FLOIE>172(0,! ("!') :D%R\a QK"/:2A,95+"S>$R1';( 0'* #8#<#Q#(V/,OC!I5%8@".K/H,LG*0";,*K0"e$(nue"h&(_%1[?2C?+82#'2""( (  '/(7 :&&-0! :-4D;NF<H5D/.($$+&2E ] [^(M*-1$*-+1$>5&f4*P<,.3$A*:!! - /EV.!`=0LL/?N,-W*"J$P !V R 7&"<#ULCHH?+73$3 ). 1!+,2-%.(0 )$=8KA VA*MH>?9(-   -> !V lcQ) =7!I B)% L44R(1E:57-5@"--' ) . <$F2"HM+8]1.`0].WLYX#;/ ?%->!76K0O W1XFW!ZU3NH>I2G? B77 0 025$&1.4%4-34&!>2'R>"[D QFB; 9-0$&  !"#0!!4 ,RS!Q?/5C,E70"<,(N+<@,=5A<5%"&%#"01"66+3%?0!O7R0S*UN f(Y7B5>&O-AD,B1J7 7':'+ ,*#(F#MJ%:)"*' %/3L'R0"K'0I,F9#H5L,2F3800 +8%15!1.,7+A!"J'K9U@YKCK5%(N #B,$% :*(8=-.<.@':( L L@B3 .,8*C4 ED N: I5'  !$'-/A(!@'4+%2 #3"7:&7U.X-TV/J'>*#P$2\APDX6W-FB";0"#&.*0>(@)-CK4W0Z -W$.!&" ,#1$7< -&%.A-0N-$W*P(MQLB ; %#&$4#?.F8H=@5 %..7:-1 %0&05+<.CF,L@D1 D-& >6=H4H2T6U$0E"#B$;-%3 0.7756//,MY'k%Y%,' ,&!C #Qc$^c`# N GA 1 -)2!7578&&&* , &1 2#0#5!.%'(2+#98#J/(@#E*E*A7CL)/X-&V*-H8!:53+(.%8*C)=)),@,Bd!R     " *, KWf"`#%^*!d%(X(!L A/"  $$$#'&&5', 6 -*$!,"0*4(G3 B4%P+C L&I5>4;<'A@C8!=A"882*'/( #67/#+0;)$Q#$DH# "# && , ) !"B!Wa+c+#[(%^$&[#%P%!C&8#%*      $ $+ #%1!. &',  " , !6!<";%S.N#JNII'R25W=Q=U%5M6AE5;7!3+))&"!$0">#B'"'", .$$#77- $44)J%\3\5$Z/a/"[/.N*+G020   ( '  $ !% &! &(% . .7> ?" I J"Q%S@?#Q&)Q 1Y 6e;3YDMR:IH,G8$<%9!(#( 4! )" 6# 4" $! #*6:- )1%-52A/C2&O1"Z2"R-,B 02-). !#- 0$ ""+ .!*#-+$)   (%#67 >A6Q 1K;5VL)X*2fK5aNZUCZN4\?-U4*V)+G;1#0 (# * 5(; 6,+.&4$0 +""!(+#.$<0:<2":3>04"*-. $# ,3 6 &  #!%+ * 1-*&"- %% $""-",#&+/0226=$@%I"$_)4jGAaH\L>bF-s@"tH%^4 S50A6. 8,/1;'KC4*23%&  $ *"3%//.8)< #D125541'*  #&/ % ,%2&15 ! # ' , ' +3!) ",-+ )!1 % !&,&.8'C( M.0Y>;P9\B6m>1tG"uHd;XA H& F6?6 :-"C)< 0' //(& ' !.+</?9> >?< #7#** ! 8>717# 42 $%"!% " $&%'-9)="(5!8 ()! & +-0#(1,! #!&;3E7F> <@85.- #3=@99 1 2)$   &%*1+C'S"K"B 6-#!(&*&1 !29)%3*B*%\28h37p9Z<F!X' Y,U;*F;)B3%;$0#!& & 1&<4?3@FC:1$" 8@FC:< 3!+$" ,# $! !-.G'U'\!QA6'(&!$#.!%)&)!&%%:#M$,Z%X249. G+ J*(T-/Q(6>%7)'2)(("("")!1$B/*5$=%A"E=("%4A>E> !D'3#%'$!  !" & #!*< K "U()XE 3"$& , % %1#F#"L&=9#4#-D*0H,<+!5!$/ +()((+$"* 9&3 8" ==!2!!%"5>C E D">(2 &'"#!!& #+ ($%!5K(N)NE6)"!%. )#,)D("%! 3 -#1*1&27#:;*74*'//+,*&,))01#(),,"""$"$$&%5CGDIC"7!$, +&2(04! ,)/* !*  !)/)#D#I(E < * +%' !!.,#1 02#+" # & 816.,)!,+(-, &# &! %&(' +:88.F!R O BQL8+,$/'4 ' 6G9 3/ )'*++#7'": $9#+%&*$- /#   $ /41'1 1("*/16 . #"##" . 4!%#4 : :+3D/M!XS A HF7*1!,*0 (/$#(;$NL : =1*+$ ''4'(7 *-,)+ "#1   !0+7,1-:'95,/.     !  !!-8 @> '6 7.K"PL D95!5$$)')+)=/"?1:10B#LC = @;1-'!2-,()&#-&"-%20($#$ ! *.+"%+ -158A? :I8@/807,7'.     !%01(?(5 #.$,3(AFA D 6. /)"0 4,@3#A4:D1E<.I-LFE6,&.,#'>)8'5-:%;6&9*$3 1)(6%&$ %+: + &#/< 78=7I9 L5 C;=<:=0/0&&     ! "0,(-", +9)*3++>!?= ;6$*'')2;& F-)K,3J)?E(PE)TA,J.:),()%% !/7=5?*A.E<9!9%2'$& (772.*5* 5( 2))% *",2 7- ?4 L7RA G@G/E7@4,)% % ,3"4$,&0&&"%,)"149 7 +! ($37CJ#(A*5E,:L+JI5JNDD?94/)#((/,>,G'M&C)'@:2D0(1'8';!1>1E(E!< -1 )' +553 >29@=B!B<&;0A0:/6!4.*!(!"*/ < A%7%(#'' $((+3 / +  !""0:F !L%(F0D,&0 %!&+ !4!A$J%I$*D.*D@*8=.7+13& E!QO!F"1%('#7(05, 30%=8+?9?1;3;&=79)3+44-7 A D'C33(#$""#&  %% *% '%/ ;E%H0=/A0E4P!4Z9A64'$) /3'1 ;$?+2D.6K>/IJ,D.8(28 G LJA"7&!#+ 78 5$27915','(&#&=,C +;*5 8;(=-3%+%  #$!!  .(1 / 26'8.23@&?4@2=54+!*==E BF(M9,L;,J7%G F'A '6/'JD B 5 - &%$*63!1$*%%&'!51+'#EK 7 7 6!0+"&*! " !!%* 1402 ,(4-6(2-1',%+*&%  1@? AKO'M,%X:$QCC*< %'$! , : >1+")%*%&)*)'/)'3& 5"2+" 0/*560 *)'!!)+,!'-, ,%"(18: 80( (%..&+##!"    +-0-5(: GGN#PQ OD=+-+%& ;0 L/:.*( .!)% 4)$<1( @#@$E C8) '+)+ "% ("!.3$1303" <%6%/ 3*22 0-.( +&'#!+' $/8 9*:5+=G LM EKC? $""-$236>>675$-03*<%%@&/ 90C-G(L JF90 "') #'& %2%0 ,8418-A@D3$7/)@ 3-C5?@+:?AC=74:;$. 0 93)$;B H P YQ@": 3&2#3 7 :) *& -2<8$E7(K@LA!?H7?9.0& " ( 4-!*'//#83:,=.+E%1C&6$$4+'!),-:*:8.:1 E/ M*T1Z5(M>BQ?8A>0?/C4 2!+%+.#3!G I H$FK#N-C@<5G1C&=*=#*"$4%77;EE#GF-ME/GDD<6-+#  #$!% &" $  ( )*-7 E1K%:A3?:97'8,,859,'9 ;%93"G RZe'n5)a5I2;C7D6I/@ K,:"!4 ,&K(S*RN&K0"A=H=V6\7F%%=. 7*5E4DM/HC4IE6GI&L9C).-"*"((0.-"3+""#!177;$F)B ,=95:2>1@-1-E$> 45#R d mk i'a&P2 O8MFBX?Q,UL7& "(3-J(/J-&J.G-J4X.e0]0,R((?2 & ;7V>1W=:D8D;7@>-E7= 5 30!)(,(!/&*(.4))8 0%,- #$"& %#0 &2 < %B )A-= (@8FDI=B(?H0-7,)" ;$\r v n'd3Z4`,e3 \SQKAF6G0D!#6! ,%.243393*>/&G0U8`:g7\0K&8 5 &(*@? QH+WG7IA63>2-/8'6;70#'/$(#-1)/;://9'/?16$2(/4 & ,$ "##( (2-=,@ !9 .H /K/P(M *D8<N( knj d+_/ ]0d- k0hEZ@S@UBH; 83*$13.22-6 5;#B2L;W?_/Y7J25* +2 CGTJ%RI0BHA0<:"5/,;<%2")&)16%8,6,.. 0+'>/1B(/')* -& ''&/ )9*>4 >B 'BN0I L= _3oj j d*P.i=e< l2`%]1R+'f<$^G!I9$,!0F$ @#)F$0:%8A"D8J3K=E3 3+)$!,?;MC#AJ*3E3!;5#37 5"78 *+678 81%9',;-6.512*.'&"("' #* &.. AV ]_E 3?O*](cb cb%T8[>T9M@Q;C%H%W/fCOF08'0I D$H(B- G1.< 736; 7;)-#!)29*@F%;H-+C:A7= 6 +&( - 0<@47>%;+6("/4,7*-.2"($#*5/8+!:Q \b'W7<N% Z N0S1 S.Z#I<CA ?: 3? B;I1:*@$O6KA;9(,('11@ 9#9,!D=D&(9+- 10$$").+=3/.+,$1.?3 26 18+ 1, 6'1 : 7&7/ 6& / )'5 7. $*;38;*3 !6GHLI#>=Q5 XS- H8 TAG> 1>'> $HB4I=>37,#;*B8:2+3/2"%)"5&2$B(Q?G./) %"$ %  2&.'"3&')!,"*-& 5; :C89G4</55 9" .!5",*7' ;? 2 :C) C96> (:C3&616-D.R([C&VEHM5J C A 9E 7J;P4Q *6 +(,./3!B#A'?8->'?$"'19%84')&(+ # !!( (6 :#C%F3F>GKAQ/C'7 ("3!./#8$; ;!9'E$PL6 <6 1G*OB%E"-5F U \SY;@J2X ` P+L 2A MGcU ]XEE.+-#7$D$ +$..7;0>(=7"&!+ -6)F6PA#SB!PKJ`?`:X0N&=B73"'00 271<"M.N9"I#='6:0D#C,C-3>#K&DA'D&;; 2R !\)X >P ?M[@eJ_O!XI$J=*   ' - 9=.9;3F.7,$$$ (( .*?A#QGNN"QXI_!@g"9a.^)P )C%!5("3316/ C;A8EA$D4F)A 9,,. D%0%.#'2*'4%,C%'N/=&5> .JY&\ 7QFW)_M$j>aB^AR;B"6 )!! "" '$=+ C:8A/;0A)0'(0+(#'!$$*',55<>%GN+Lb-Oi3?[4(c**Z*$O1G-6//0(@' EK-A< >2C&G:>#' !0"*".64+6).8'/F<*L"B5 0="D$O (J3F UKUDmE'fF"`:T%'?229-0-&?/%'-, .0:7>:6> .;-<"-4-%4#2,/,0# 31/- 1+883:B5MW@MTH(X:!L; S5(X3!J)8#-* 1G H/F9B$>&7+/** &$&$3'*&,)5'1; -C4(E<1@G6G'JKI6B SCnS&pZ8lM3d='V#);-3#/ 118%6"&6--1,?:@G5>0C%C )5..'+7!."+4)+3,:/&<,>6;5''&93:=>3F?*D>#9G0A09D1184$8.") +$5 =" 8*&5!2=1$0&.#(/#5%='.<*1%3%:86/'<&(;/$8E&,S+%FD9'4DH a\(id1jX8^57G-6 9)*><.>0>0*@.>/?=JE DK9@)D(<&=+(' /-/33!80$;4#B0/C(8M/1@4#9- () .!('"?,'R1#D8A0 ?%#L..A2$4-755(270,.C,.B(6J"1J/7"* 9(N'Fb2Wb6QWEB6N9#A%4DC=T=I>K6&I.6I"IFLFHS0E)2C)#;44)"  &#834<69D=.E<0H/1S,M)?83#!0! D)G'R"D%'E0 B3?/ 348%Z2'b50T6RGJ=R'EH1KK31D5?AD73@4/$195&<,J24:"M [+#L>5MC7=V&%Q(&@ >A QC^F ]G a>^87O'IIES 8N&G45E=&==-6% .'?27P>4BN(JF*G2'D-=:(/*&33??IBL,F#S4G<89= 57 ,?1L%&W31^ IZ YHVE!XU'gT1^Z>F]9,`B*H83,(*+# =$KM(4=3-/A$(M%%F9*&-7$.;'@G+XR ^Q"cGaDP8E0-K0O,D#C:AG 6F,?%%/'5C07I<.GI"HAC"F FF!->(:--F!<#<(%6>5B @ ;( 3/ F7 TFPK7P RQ\[mh!y\0qW-pcC]dNHY3=K15B5"* (!'-8-+LKJDH#E3)@9(:-,2'(5(!16:92 7 GS&`$6]*H7*T14[=5`*4Q+((!!5C A 9* :( JEWA`@ FL[Sf_fkpb!~M'u\4k[6eF4]X7'E+Q XG = & $)- :7 BVAm[dZc`[^\Y^Zf!kfH<#}T'yS2hA1WC#9P.U3aH-j`(QJ*CI71J;+:4*;C0&07$)!!1 N#P)I+A,H9764)+) 139"-><0BM/7P6N'"O)A%F%3$% !"8),,/ "6!8 :6' '22 ( 0 -;1W"5m CkUR QG FK^G^H rX@9I$u/j^?qH=XO3MR.:G+/<-*+7**)' (1>(@'63F +E77620)$&$ .9948JT0F\3 S-!N& A @ B 1 ;;4/% *! / &648$0%A5UARAF DS=QH:Y- v1 2D)=+l4-L19'>)]#,fN?fCMgLPPM:JV"*93=79;0643/+3#.<@8OZ>f:Z8K, Y a N 7 5695 $   $723 +&( ;0 <9 58:?7K<>N3^/c?({?0t?-U5/E/!6D"Z%7`4OOCTZIKHD2ID#>24 0$/.'-'/D$O$+>0//,&;#7&=36;.',4 1.(36;5R<a7e1[< _) a!f [C5&9>:#2 # 3, $- **7%/ )& 08#=4.83@5R: I6X2a7#aB)E0!?80I?6`?8I?9C7=@A4<-1)0+,,<)715% B'Q%)L$3>64'2-9#&3#)%'4")5':8X9l6 f4 _Ab3Y"!^J5,,3(=:; % ( &5%5F/>552*;'/! %-$7",'"(!8,S) D'b#a#RF!D50F%?+*D.9@*78-251. ;):)/,*48*/<&E2NB C3L7 D,=!%G.5'2*7+1&/05911FJ+Q>\6 f. a8#R='N'*G"1 2#&%+ ) %'"8>#AL#;F*<76 ;31( +/239(D$ S/b# [?A##4'0,%X+,V$9@&J8&V/*HB+>T7-]:&`/&SK-;$(*(EY[ b#g+b&+d#(g2*R,-J.(0//22 &  $ *#%''4B=P>D7;6</@4  ) +4G ] d"\/ F7H8=!A(BQ&[P4N=9=0-*"!% $"8' <,!QA+bB:SG@>Q<2`=$k8bM >(,*6.: I( `c \%d2Y#?c'9lA:M7919,!0"%09. &>$+I64NKGI[G>_>+_0 W!STF* ;172 1'GP !P .X ]9f0#^&Vd&T2;B !> - 7!L'N0QHKWP(NB4A1C7H%8 $.216@6'   &2?8 ?I HO ?O&=0!'# -51 4)=AA*:4#'0 * 16S?IB,J64X:J:#R?)\26Q$3R!#>' ;-$@**H#%M3BL:!`,%d"#YY0[FT"; %;,8 (-8&C!'N9GI=I3!G"(? 103.*8!56 HG5 #. 3@AE BQ 3K 06 +$ "-3:?G!C$7,&5-,,?4_+i,"`&#-D=6<( >*> '2(*)-36,==G F8/" .'+ .:3? LG>==0&(*', %B'@$T#G#(% 2#('4+'I3"A$ R"\AD-Q50]/m!/Z(1U*-R,U"P%N@4'<-(D9J0JA91.1,0%" " -*&"6+7:(C) -.$!?)Q1M*!HHG>0  "2&3-; 4; E8=B++ !2)0)((&:CO= '%%)!-8.54;.;%@=";G/U)U 3Q(4P+/K,N)C 0)#*7'&743+)2"'$ %  "%)0"(- 0F\ \#&[' Z,D&$C9,$!'/ 6)15485.0%),)'54%',-5,9"2 ""(*468)>0/:"<0/?3N27B#I3(J50D2)H::!- + -#!1:+. ' # $# %! 4X$e&-[)+]/*Z/&L(D!!< +!( (5"8&,&)(" !$&47*.*01("&"" %),,;3 G8D)&>"L0L3:.B%:E'GL#@@3A9 ;&32+ #  "- '  "## " 6"M, R9-X51[-6Z/&Y)&H$);(1  , 72!!#!///.($&(! )&$3!%:!5*F3N8E)NH >=T'-O7U>`43QD#,&#     ,% & 2, 0$*+" ') $*7!J0G) M%L)$T%C @5N$&O3W&7P>-QG@K=BK&E68" -%,# ##//;?; > 8%'(   $,28?"B73L65P/*P.#F22:',-!$%!    $ ",$ / 6$0& ."/!+3 + !)0!8D#@"%DA;*PKJ2*\H<^F@H9TT&WI!Q? 6$.0')2 9@ IE%B&A%=,!! "($( D'D3>*>5/I4*I+#B'$$  )! +(")"/ / 3!-1$/!4; .&-"+++$('*& '*//,?-H$M >Z8Ha6BJEaJ3mG*F#B9&8<=1M+Z#VH =*4&' ))3;9 J #D-H85$?9$I, 8!#! !!%&$1 $" &() !&0/ ,*#%&.4"%,5.1":7)&#."!&.'$*(3 ,@+U&>P,HM2LF>_H4&P$%OC OJE'=. I/Q&QC! :" 0 # )%: :EJE?-8.24)(!  !6?3 )-+&$-"!)* &'!$$&,-9)/6*>250,!+$/*&0*2'0,"3"F#/H+BA+I;=&?3.?+*EHU_$N1 J;*I9&M0E9 1 " %%4;" F EG85&, $+"4??8&3#47&!)$" ! -%)!&!<2#@E/V!$T!C"4-*++2+2(/8(9! !*$&4#<5**96'59,6,LL [ e'S-#T20V-"K%F9( &);7"@IE6 0 '"&  1@GB%D&F:!)%!+**//7$:(&&2@0X#cZ N8) -"/1'27',5/0%!&'/&'32(88)C$9B I!W)W%*R(!#B'+4) )   %0>"< ?!<!4!%    $8<<DJ G+:'/! $#+(*&08!1+!! %6!H#Q#Q F<   &!'!"0.( "!" % "9#3 965 *D"1O+/E3-9,#-#7#9$:++! "130+%$$ ! 9?B @NC A(9!+% (& -( /,+/%,'!$0%?!E&H=* !"(6! ! !(. :4/3(%'9%B!6)2-"+.89 '  &'($#-&& 3424-CLD HQJ <!.!!!$ /8% 3+=)2(,  ,2>>3 ' ,.*(# -/ ::5(""%"7"7 " )+  ()$- !'> I?$/C'OTG BK L@!.('!$!8 M G';! <()$*!4#%-0,# %-"  $% ,!2337 ,) )$#'!""!  &+ ''  $ 6?E&=+4;-I%O$D <BE?" /,#+&3'!8+4**CLH><<7%"$'&"(!1'5 . ,- #,8(2&%#+ "3 &5-@.>-;1=$(9 4%+"   " *4 8= 1+/"9/$D'E$H;.$9#3$%)3(?,"B2485B*%E G"DA;4&6..*!1/34"1 .$$50)B#'=)& &/%  & 3&;#%2%.)$(, 31 B5 I4 E>A<5<34,3"$   % % ) 25.%/!3+$8#<A :!0#*)(0&.0"<(%D*0H&?A+O;2P< J3 =/7,9$ ;,81;769"7'>!89!@8 5/!($)%420;.?7H7>32,2#+8 :@F4E>M;J>EB;?18')#)(,() 2 $'&(%#)%097 1!,(+-'74$;7%*D)2N/AN2IO&PG CFB<<0A+ 6-7,2B%A&E6+88 9-9-'*1).3>G;U7W3O4@-8!+$ 0E +G87 ;DFBIEG9994;5):1 7 0 ( * 7=. )$ $&.",) (%# )-8 ?"B ?#B0X&6T"?V'>X7J1@ 3/1+/"2("<!=%G'G+?'A28%4>51S/d8 Z?M8,D#+T'.S.Q%8R7L 3</'"*$4%- . 7"@ 'E(H&L!A (J-73:S3Y1O;J43$'3&2 &,,(-:;E<<:4@'3,(+/-*+%#%(1%: +   ,"+0 074,54C$1G)O-J 7G 3C *3 ')< : 1 26;&<#ISN .C:<*( J( P J!=$;.;03%.' ! - 3$.( 3 12+( .-(*(")0'!) !+4% 8)///$0'93416&<%3)*0 &* 1- 598 ? = DG 'J9E*6*#9>0 @#'? 02/ '1%/$#%,#!  ' ,/#(*( # '%#(##3% -* !! $ 0>$;$42%&*'+% &! $' %+$),* , 8 9@ @ P5M0=)%*,))0/ :'9+,),/!+ 5+3*2#6; 8 / # $ "# # #%'%  -!25'9- 52 +* !#). -#'+#$ $*$   " 2 "4#6)!%82<7#8!*=!7& $& %+;>;);5 (2*' )%3:336" = ?>87,83! ' " & & $)5"72/ 81 =A95/  #*&  &(*&# '/ 1/&,#&% .!( +#)&% #$ .)(E.2D 56%8"- ( 2,.1"?@E H" P$ ?!8 & /( '' % $ '/(4. 0183?6210-# % !-/&%+&39! -#$)5C; / $!$"(#'%$'1$0# :2 7= 8CA@ 38 %/ - : -3!:?BNOL ?;"<)5/8* 6 ,!'# *37:7;59=>:@*3+&%&#"",%  !*$7&661%.7.@'M'?#1"(')+ *'-&%6; ,4C3RAW=U:A<9<.<&A $4#-6.'< A !G!EHE)O4 FCB8F7N&9#,( &,37(3C#:;">@!?D?:3.)& "$#! ,%>&&,84 /66964830)"(.)**/(5,*50!&+"( =H Q$^5 o4h7T7CG,Z7%IC&G:!K@ZA"T0'L$8/ *14#C7'N42?;>34;1'=+>" = = 5(5(-',!%D-"928%2!(3$)*'(&1*3-+1;8G0L:O4V1J>1-&Heut!w(`)c*p,f<`G!GH0/9*65+(-/!+ + .#3);6= &E5O/R&Z %O$B5.\nn#h3a.`6t-|*!s>b5#Y9R3"N4$A*!+'481:!1;787<FG]H[1W;E52!$ 0<>HF(DD59>-'9**31 5#4-+#3(>I& O!?/ >#9.%<(6B8//,' $+)$342H )H#D M M8;I.ul e+g-_=*eM r@m)q)g2!i+$]/$`3T*171!0; !J)B!0;">AK>P8K@D< 4+"- 46AI%>(;8$B&-6,  # 1 5 -6NSUA(5;& [b!a#]1k=jDeG"];X6N$H#W4^/[7W6>"!;)$57B$!?2<4(M7@A>=G 4A(2# //9.E 0Q0&G4# 3 ',*<B EH<"8782!:1<))A( % .))!&$4!:)= PQZ"M+;K( \K(M(V8!Y<TEXIME6=G(S E$E*Q6U8G005),0'# 2#3(;("G!"G-0-9.3 ## 3& (%$) 1 . 67 />74 ++)+ +( +*" - 5 ,+'% 96 8@+6$3LH I L ?= Q$ T ?-=:I:G6#EE$9E(G>65H)< :%F+H4)>302&3*!3##,.'>($B&A$/),)   #" , 6 :-0,)2...+. $  ) '/$./!2 1-3?;BF;C &;78 ?!@ 5*G K! J/ND7K,Q+O&E> C 68 4:$. ' ")4+/084!<*!C*%)4.7 ; $ /-0),(!!!(*, 6 80 30::8C9A/2%$# , ) + ."126B*C??D)G#=&-%/- )=?"RHQ@=R[VR &I 4F?=HAC;$00" )4"#20$)!!  ,*@&>92/(&"!&% " %1'2-4? 3=ABBFBP9J3:'/: -" 47)5-4!;A4 73 .:);):'*.%*%:4 D9B81\ d \-O6O>D"IBQ>T80R>*>/,!&&3,(+ 7->083,/.#"" ' $&+$90386N$CRCS$4&/2&-"6 ; .(4/5& 8%; EA(9-#%4$*1&166-$8:'>60:9#.Q WS8H9L&CA0U7 [1 _:a1P)?"-"# .2 ,6 (3(56:.:*7*4##',0 .", '*-//*2<"3OF_'Ab1CY02Y)(\-'X2)N5$:83.+= = : =$ 1*4& BLD:3)%-%$8'#@'A1.73/KM4BA 0< EF5FG? L@_MgGf6`8 _+"Q&3#!#! %$&" .4-6)<8D .K !H B','#$&,"-+%! : 8%,/'1:6N"EZ6<^=:U3-Q8!Q-'S-T*!L /=2( @55!*$2=A ?400(#7,-:-0=<2C:0EN2=3N0P-N %R,A (+, &&)$1//(<,(B%!D&= 00.2'E%3F9'G57J>!KJ(G8,G2(L0(=*1 '++ %, /%6"!C F!3!"&%6-*=+1/;':J)JA-B/$VE$AG*-G!E9,CH?ZJfY*jV0d>/\'8O94)=$;=<:=6.@A<5/A8HEBN*I*L%B.A '0(. 10=54#@1$@-D)F *=31 *(461;.G1V1C'3;0*9($3  % &>"V*I5110+*%+.,0)-4./*@7:G0N<+A;'N9#E:%C<':)"-&*>2AM2U`6YS-Y@7V&@H#I4:I%OB?AI>+B;:G)GIIM@J*H&/F()D0'G"- ")16-74+B8 @7 T L ?9 &.8%?""I'Q*B%B*';*#.*# $9(O@eEaPIP4E>D=+>E(0R=$QL3F<=8/;+1D1)H5G#2$%'53-F96A;>O+?D6F,@GF./H+;NBQBR!FI=:/L4?F(GB0E%D3!DD D>F1 /"#'#3(+F6*A?#F C"H:*( /' 0;@B#N6#?(B&:@'4> > 145 ?4:G2`Gjce hKnDYQ'ZU+[_1Ol>'tCX?5712?-F"G$%J$D+A*12*>,8@9A7'<3+#23%!:B2JM\Ib(YQ(WRPDA?*3%'1 &;!C:?K@L!?C.2$!(A61O="AD AF#!K /J*17,?1U @H IRD.2.+I$!G" @&>% 9? U?]KWZJfdahfrliV-oY&tv7fmA;qC%Y7-ME@F$M(E5#5::?H&;K72138"06%,0*,(5;;;H!QW*M]XN[RPFF:0+#*!8=9Q3Q0U<&4&"BH40K F=?W$*_#?`)PN2]'4X->U+O@fLe[OY`W$phqtogxK)].rc>KW>>];=MC8AIE JF1C)'M61I?2A4,7C5031+,*0+ 36+53I?4UD,WG%PI LJJ<"A82/!"(29.N3U!M/62+E2'P@">F%%E> 6F(S7O%T@,e'8_"XTC" 7 >0#., ;G FVnYgYV`Wdhefr`h!jP&pL,\S3XL6\XCFPE5cEcPj2NZ@7US2:ZO]%4O76A6+8 "<' ('#$8"#D$5B!7D2'C3+H6 <>*2=$&#:%; (F!,,41 ?7H/,C/&=<*?$5 )8B.-"E"-X0P$&M' @'% + 5%), A8 Ca@{Vfx\z`x&[g)T_c^qY#j@'WK(LF+:=-+Df.g%4i:*^M*H[/R]P`!6U+7?'34'9) .$;'=:1 :>/9):(--'*"'( !50$()3=7 J>F*)I.#A+ @" 7#!$ ##"#7%&>$7+:, *3 . 0 "> , + 3D8h8zQWsVn _j)aePPXSlIi;%g@(I304D=*W)S!"`3$WE?a[:?189Q03I )]*&b:GcKNf\@Ul6I`"Mf4G%=.4,,& *)59:7E472.E,$=@%L+ N" a!hK< ?2<$"/*,, 2 ) # 1 '4 1 47"$ 4 @J5W9C%C]-:e65dAKL>NJ2ON'Q73;0915 ;K R<.R>=UHHTQFU[9TVIL-;!/*33 (&$C'K08?9C4-5<'.;63;A94F3#=9:+62=H<S2Z"Z%b#cS>9';+C*(=./&$!!! %'/+4 +4@6 >$ =*,%+@(,?4<>44P55N!ED DIIJV@%ZA212/,)U,23A=I@EIM>KP=CH1HMB?"25$.%!= D +6+#B!P-&G#:@=?=@.AA0=/8!2//6/485 O< X3f#]+R'&S$I4 01=1>,@+2###' &&$421C/GA;C,@21'.4& ;3.*7)?86E4J<F<V>N89, 04 !',C3@R3>E3H93<++D&?""*/')44);1-,F4I:A4;=#<$#@6@<<,F$8&$#$&6=@HB V8`.*i5b+4I0)G'< > .$8$;? 2""'$ + '-526G0Q9@P5G=..)28?-4&)8-/5<'K& ]1F/ 3+ &4-*N67F:I=1G8 I:,?!D'.F/77K65U'2S82Z>3Q,6=9)!<.:>8)1 9:#;7 R>ZBa%.c"3\$,Z,(L+ :# @0(+-2$"0*8$: 096G0L/E4>'=..*-'-++$5 BS&T'J-15'&+$B0.ZJ;XVI8SF-2@()-)$$'";2>/+@2BQHA>O90ZK.jT-_L.Q$,E+, /$ %.C# JH!^&!b.#W (\(%]0!J8'8625,%." *2*?5:6?.L 0A(@&A"1 # "-#%*-9 K& \.X, HA E:!&I(=E(Tb?VeN;]T&@8!) 1182':+74*BEBYLROMM6QI&f_"kW"P'!A 6"7$ 2 HNU(c7_#2Z%-\-,SG/LI+-<%2&%,&  '"9 H!#E(C1R ,M)6*)* ''&11"'?" J#[/ [8 ?G I#U'"g(Ai1JeFGfFB_C"94&..137*9A.D8CCEFE[ISW1]L(]S\7U\RA' - :K'S)Z8\"@X&1S37IH.0S*7-*   !:$"P.L /Z /[%O <"'" 8 9* 5"5 3$?. E) 3? =O,J0X*:_5BK;CKH@I?39>+#13%!;5?:A>26I2HI%POXP$dB&.F 6 1 ".+$ %6 1E1O5Z (W N;  4+@*7- 6# 8&8452 #6F+N 7(?18K3R7VAWR]'^K"c#^"V&Q)@/3 (+.&'&A' L+R,I 5@/<11'+!/ 0 *%#/+:0"% +C-P -R *X(PB0 ( ,*("B6*E/D%=%(488C!/JEJRC-V9;J:V15cA%ZB%V>TC L7!R.6^5W2U7T"OY)X -W 1T #F&>&7&0$%)%%'%64H+G+I 46++ !")!/3"5/1$  #+ <A#E :D5?0!08 8(-'$=",.$('  $$@"K(>'9 .- 6A@ $:,2-1 ,$  5 ?@E.95>24 $)/94';)>4/'482I5=07!&,1(9-63%4B B>E&6I#(V"[.!^2'S2$M4 R/= @= /"72 $)(.91!$,2'.(5&"    1*L(P%O*%A&+:#9( $ :FE&C5:'6&- (-'G'?$$:1!0<481< . 2"0)C"2:>83H,'U ?)35=,>*G9#L<#F0"M8M6 E7'0 , !+*3 - 0("& A%O"/J*1P*/Q+%F&$5+%/#!"6 DL$C$9&+%.#-)2 &7$:66<(;: :1"/ ('+=67,=87;(?5$6-)7>8$P"7FGL)FG3PB#R9D0" " % &$, *23 %!' '% ":%F*5S,>]-:Z8&R7,=1/(!,= C$4&,"#" $'"3+1-).$- "3+3+,&;'<0,977A6<4A 6 3FP+#^0Y9Q2=Y@KX09P!7-   4! 4 7C>1#%,$! %'#3-2F7=T48c72\5)M2-;.*0'$ # $&*$ !"!($0%5"1'0#'";( 2+ *)1-1@40<+<-?'EC/ LT5I":M,NU9HW3K)E7## & <?@KFA 7+#  *$=)-@0E9@S6*T0-R6)?9-/&#&% $%    "(#3"2"1<$9,6*0<" 7 '$"$ .' +!"3-2('5.0@>LC"@ NJ4JK.N+S!MD9*$$*2 @HMJQ J93!) 2$@$,?'?9%L1)S-&H1+7)'!$""!+'  " !3 9 679518?= ;+0 12(!&8$%3#-0&(4!!B+>)B?C%@3"N9(R%+O%MLB!5 8 JR NU IK:. $& .3<F(=49<6$F/$? #+"%" !!# $% / 6 0 /,, +6 4! 5)/-0& 3.3".#015643,(/-(5=.;?"F0E2(84-L*;Q#/IG !GJI!J%L"RZ PN"4&'0#."DH8=,=3/. !",3(+"0(#& %$)" # !,'%(#$2 #((/+;'2-62 %=.3!/)%<,%: !2(8(:6-/ <%@';%:-.-69>-2H"=M WP$M0"S&Z TJ@#$ %$.78 > ? &@ %:$'!'"#18 62 -(*/ "  (1*507 )8*+)%E!S7BD-I #D 61+01#9((7-A'=;.#21!;!#92$66(4.%>&JP%^$T#T+U'"X\ Q 9#-'" &$46@> $: $4 +2 #%#  /; :!8 :*B#6#&,// %50F0I!=2(  -B/LD;S#N B <-(.2-28@.CA%@&4( +"5'#40 41"@2#=($C%F%X*[-.V.5V!'Z%a# O5   +85!AC 9 (1:3-+-7:G#I'B.J@275+'#'4/#/4)C'!:@ Q P)(U12U39I-N*Q1I A . !.8$@ ; 7 #+/ , $##-4$:D&DH ;.#)*"1&;&> C'"C-?1:KD 7 >!/+(%(=0%: ,4,*!#5=.* .' <FL#S,(I2F.@ @#A& 9.  ( +-9; (&*#1.1(4%>% H @8B 3*!:*B)B '8#):&:!"!,*3 9> 7 ,%)!%&1E$.(1')!$/ 6 )4 %- ,#3<? "B($;&)498/ $* .) "#"+72)#'-9(9#7(KR S ?:& #/+A-D!-6 -0,0&"$!+0 0 66- # %:!17,-&),' ,"$)38%/ ( $ ' *'%)' -"$$-&5'  !' & !"   2:=+4"4,5/!A(@)9! NYZH4  %3-9592;//,1#"+)) +) $/&) !"&($ $2%// @ 7 $ "+0 ( *!%$%! # *  ;BC,/0)853/'J*E)>& @U[!F 6!%!!%* ; @! >!C:%;&&"0'!  $&")!!(),(!#(   ,#-51!!("1 2/6+0)1%-8$$0)1%4 *     #58<&1-/1,;2!;$>$@$6:?%=0"",/ &'!/#@GFB?;<+C,?%+()#$*"$*7+A&7 )$02"5*."#!*'168 90@/>31> ,>(:,$    (.!4,45,0-6.!5@@ 6" )+,-(+0.!:)F3E#B5#F*/J$ K)@$<%F'G0 F'/5 /'#):8894'&%%,*-'=(51E3@-8,"24305 80>6L6N;BA(7C!39*5$* ! &($""'*)'-(!#*3: 3# (3'//2%3@(O'6O1@C#HB+H@G:A2@1 F+ F/A7(;:4%*37.232*)-4"*F6"@6"55$1,7/ /+$  ---& ( # !%*!! !')- 73%::#H&,Y57P,7K-8K9H 99368*H)<3#9; =$> %15 #0 5$"E:;P<]@P;G:F/)O :4, -1,&:9=K>TGBG2;)> 2 4 72(  ** (%    '& ) 0 0.!<#&P*%V%)O(0Q2F7E 2B+9 (.+,2 4 6 =@"A I !H #I()G-IFDN; P;.G0)@%#?;*""!# .=3P5DB>D':! + ',('%-( - +#     ''&&//./&B%/T4V-R+I 9B 5A#5#0#' &) 0 6C!I %R0V&J!2: >:=@/*>,7)&8#8B/ )? A)93)4@?3$##""1 3% $ %- !#&*&)''++(. $:*C0D'A'6264+#  !  " 00CB!Q*W"7Q)01+*1*1!/3$*;; 5%'*.0 $,-#%5 3!-%+(.#6!,$$##$#)/ $2+  !, ($%&#,#"'%*/ ,! ! )$ %&  $'+;6!(GBB<<,%%!* %+5*5,)1 3 1"/03/734&8 1 * "  &#',# .,($ !"! &+)2) )6 2 "##"*%# %# ( 2 / , ) *#  $"$./%A79.* * !&-<5H577!%.-282, 21 5$ 3= 4(1,+2!"$ !   #$&/ &2 1* -0 %1! $$.&)#$   1",1#$. ,* 00.##$46(.''(!- .1 =1 ;8 #/* !6&3* 63A$J&C0 9.+,)#   #%* )6'>059'4')   %#&,%- (&"*!6.!:@#B .)!2+?!87 &$+# .0%4 '+(," **(<$ 6.,9 -0 +* !$'&1=@HKF:>=6".*%(& *.-608321)*#($"+# '+%'+ %+.8(?:B>@,0=(6&D'11#"(-!)1 !<%9/(,3  %=S/M2 N6>901 ), )( *2&' ;@ <$B%@E L.F3G8Q4L4% )':0B27,.412( 1 *#"(+ .0& "(#B#&<> B ;0>;56-45'%+ '/48M5M* >%'%'3 MY$m%g- O2 A5;>58;552&&"/ ?##I!*P- U3Q;!T>!O@^6X)? !0 .9*;(2:);0 .+6)6"64!, -)(0/6'1#%(("+67#6!=/7 2++. ".2 (7 @GU@T<C2 *'"6+@ O#h (pd$S&X7W>Q9HCE=4; #*"'+&B>-]6#]@SB%P;H?S8Q,?#8. !(&!1((13457;4".+7% = ;!: ,2&,#-$9>HKE$(6$%*0$:$.5:)/#1 * 084=@PSRLH @?"3#(83F'W%tq !`($e!o/ m4%i9'K@'PD)E6%;!*! 7#(=.:?.?LIFO=UBJ8"I/ B.1 '1/3:4(,86,?2,%.)* 1: (97(+-!@*%B%#V!#R*S.F;5+8&&)0#1- 2 * $ /7":=DBKGX GO 7G .,1#?0 L+)Y,(k.i,\4q3o!q2.m.)`,3`-3W!*R)+).<A/C5:0@EKRAW=I7?<0!# ()74;*8%9(+'/ 5 .*&$%6G)R*\**N&+G298459 3/%$ #  & ,6!86I CH2@ /IB 257O"+V+&T5$S3W<"]?c6l)!b%'c%,g#1ac\@%C4;FF,>-?@H!M6KGHJ@C 55!#(13.B%$F&>&1&*.)2B W \*"U(-I'/@!97=>>:!8(+  #() .*?*J 1P0P9 !2 4 7*K%M1(ZK dCX;"XD#^; V'K ]#h$^%g_MH65<,=!7> /ED?=K=V9J:>,,&6'4(GF'(( )! %9IPT*K16,/"66)?5!B&  '#  # +!+2#+>#U +TH *?20 (C < *@4&HK`J'R? J>JC>0NO&NQ%W!U% I-L>%#() ,! :,!F*+6 (="8G2:21-( # #   0. . 89: ,$' ( 0$#.!" !&/* )!,'#&0D/L 07 .7 OH@&<-0A /: >6CBGC!BF4H0UA!#'9# @E G'R,$J&92 !'-03<'8+,3#(" ),0! $ #  $ %"#, 27. "#  ' - ( (&3 $- &. ," 2 4" +)?FAL1J ,8 9G A++4, .P*Q-G0H1K 0JOM5"! # -/# -*>+B$1"&.%5)-,/. "*'4 , !' $ ) ( 7; 6& &' 3 &4 ,1 .- $ ( &%. /# . 2 ?& :?GC 8B &7+ , 1 #<5\*_&Z W %I 9U)T0I8D22 *&!%#)3$0!*-'   ,53/&&"$ "( 8 ;)7-2&82;1B4=1+#'(-# .: 9BR+F739-2(62 '420?6H&$R+%k`/MB\8XHT'LF'K<&H!@$5'.+# !690 $((-0,+.70($$$(%-5'+38*)<$>%:H)@E&8D-J'+F*"62('&#)4/ 5 H P=>"7'B05+.$;<>'D3#BD.7I 0^!S$G9S0@O/OOV2 ]; _'Q+N "? #1#3# 6$2+-/!-29 '>,2#.0( %0 2%%-!-2&E'-T55T2>G"7N&'V.$[2P8#C6(, 1 98 9 A3#<*J2>'B>+A FM% K8)M<2FS3@CCC'FF 6Q>D L< ^JYLX7Z.V#-R+6"(&'' /$/-01 .6 4B-@ $>@/!&"+,%& 9 5.)*$0,G+4S2*R95K.(J9H'Q&T G%+8 6" 6 8 8*%5+B)B76$DK$H+'JF.FS8TRJ<N>4H= '6F;U=^FpE!q5"_0)^,+M,C+(+-3+/.#13&*)",%5.A 5O :E 1L$@1" *#-78/9@G4 ,4)C)+L,"E5"H;M>A1$?)&?*:/1 ! ,# '> D"D>!%7#67#!:!N<'VL(RNXG"c1R>&I= :0"9;REYK lB$^L*j;5j*@`+@I,D71=(68>??C-;%91<<%H6K/G$E<2$#-1 -58 C; @<<3 /'>78=/L7G"@:85"30%1(   (%-/.C-A& =,"-=96:82<&:=0HB/LI4UN.Y/+c8!]N"G/ ,0 '&&6EB Q;'KJ&`P-bG@[3K`RK(P8!:85C$H%(D'D% B#+6"' "469= 8??:/!'*(1/:)L3:1544+5*'/ '  !!'.(D.A9OPQ"REH09A,N":Z/Bh95X=DSAY@0N0#V+\D + +-< 2;07B,=A9JC>P1HMOCM53P&EGIKH<%:8;4#C3.=@/;=C8@1$1% $05BB88.$"#)-!/-#0:';/(C$(6&#.*4'29429%9% 0+>6?O9VLe]XYF V8NAJU&Ln3.mH.rF/_BLD2eL&k$I@1!$!#+!%.2()>9)7L3&A;0,A@@4!C*4Y'FaXU#[XWFC80906-#- .E3T>O!BF-4(2#IB;+J&K%(A'?73A/J)7T(@E C;$4 '. 6< ?0 <$ 455IRDXS QpId^ZjO _WeK'_Q"Sn4NuIwJ6YBTD?d<$u;]=T8$G661.:B+#<*D/2E-+24119,I3FHK[P VU XG'OD<7$3& %R ,g-Z3T ')!1G)G%J D !L+L*/O1@H5]*#a(5f%DU*A>)!+) 67>6 *+1.8>KT]k`y T}Tii]lare)YU#iY7WaK#FR9NAYYBVUjOqX&RS1ENH;*I$-V%;X(<;).3$/=.,+-2>6%H?-XE$Z@&RJ'FG6<+),"< /Y&Z0&* ++D*%B>-)J(L67M(Q(=D&]*+b2_,S E3,) %7 '5 %3) ?QE{^wkq`Vpapck^hfb(kW9OGBCMUH_J4] 5eL2NGBuW9eWAHh+K^8Y$/S(1@B6C(>+$, 5=2=#(I4C7C@6A%'%'(!*46 89 27#7-5/'0$5. "#,%#21"4*):,E,O30X3.>*!+ 27A+52C@Ff4Hde(i4^k0Qk(J]PL$QB'9=.4=0$/-&?e&0.}Oyi-ac1Mo"Tk9])M=A?/= .*1',8)?8<@1=%10(#1.!/$!$$'-6 <9@-=#(; 7*(!+$,#*&+5+(>6'3/(+:<> 9)?78A44/c*GQQ1\!Pw%K_#\T!^H+TB+O:(;3,/2&#>"-T$o9_%nxXuIoHx+Y%$I)1!=#3 (28<4E>,:J6>B$*8112!'%');+B<4@-GKE9 '&*3'.**%4#6'>? F @> .37- -)&)P#fHsUo=h':|+@x7IXWRcHM;J4 <3%A: 1C5R'%`>=zV.]t>Dw3Ml=d6N%!@#)*%& '3<"/K/4I>/KB0(LA37 3D--(&(/5,F=/H*N"Y XK$>*$7)*5:- :+E%G( A!H I#G)J6747 &-2+.4C3O$=U-=^84a<0W@@QUASAMFG5/<=8'@#RA.L84QP4F^CId*L`9W.<&17**."!.#*,$0+!J"(Z5/I;,<61@7?8G6<";"D+:,6 >&M%$T#P! S"K A7.%;7-C=.2F-K&C)<9 :/C.I=HKB@2>&, 1!$;94DA0HE"QE-RFCFC79 ,:&@N*#@I,8B4?S98U,2U6V!0G$299=2);-) )".5(-6%@@ F?+6<1B6K69,H /B08 /0DW"T 1J,.B'"?B0,=4-@A,6?*#=)7&,0:0C4J;OOFN/ D+/$!(2CC2U#>W4CG9;<7M76: 7'**/22,+=4$W6'i--MI"B8917'8B439->.$@ ?)6%8++@"FIJ'?-1*%0/%3 1:<@ D*R"X,^(3M3,D/I*N(?,/5"52'3+%)1%2 , 3 8,;.O?RIH'G6):@)2# $?7F.U%7]<57/J'S040/1"* $'23K8,X3*L'(F"?'>/:;#;&71E=2T6AL1L61T=?JL7?7%B*C F9-4#.#!'%)"6+D1I.N#[1-R94P7 D@ C8 J-E.,$ 1#"%%$!- 4 6A#5*X2dBW!2?'9!3!<+@!0J,!4/">'V(S2D1)2EH(1ID8RQ1W 3K*9%@+50,&+$-!+3>"8+GJ!V%W-(O< @= :J 9A730/&% 0-!$'+ 5 7F2D0O&\'b%L"!63 "!2 -7 1."(%,0S)S2UF'7 ;B?CIA)B:CHG;R]:RU0RX 'R .Q$D$B*,"#.(?&!?!*Q/U*S%%T+G5=>D>@6#1.(,+ # -<"L (G&IX Q@.+*-(7!":.*#-!&5B+ H=PF2W Y U#e$@hFCsE>{H3`C=I>5-7$.=%DADJ?P*KD2UT7a \_a(b$^P"!8 ( ;#>%'A3U6Z"/M) M5B>0>:A5<1.& ) . 1" 4#B0J )U UQ =$$< ?+@* '*4% 7) 9?9?4M (N[ )b:hDh.A\7Ca@8XIM@"1 ;#1&#    0) @ (= DP^(\I`Hc$CH=9=M>CGC5J:B)G+(H3=Z-%J-V5Q3L:@"/;$2%$  ":*K4IB/ #')! # " '* :GCSPJ$6#0 ,F*?*10'*;-2<+B8 40((&,'5)@+&<9>H%EPX< QA;D8Q1$Z&]!)\$T-L*!N7:,3/0*A -=2?-;&2, (  :(?= ;#%! ()'    1?JD"B?"4'*(50H2P +>2* ;)1G"9E%B&$(-/F8/;3A;0J.%W"$Z/64D'X& S5Y3T. X1 ###-&,*!, ''( '%%4+  "! > 9')$&1&/91)#) "&8HLI!@(4 ,(!&*5/!7N*5O.,@8124B<%;P+JJ K)B$<'#1.*:#B<54>836@2,4$%3'IBFHJA)B F8'   "")*/ (! >8,$!/#& ' !.#$:+ H,N(-U/-O8+A?,(./!"0 F@6( ! "-*<''6/'6;"=084(8&A'>.<72$3,7+D::">3""3(&'0$#=+%D/+O-2W41Q>+C9-*0-( # 1/3 $!&3-E2#D0:284 :*+%%+17=,9,(-=(,31/736.9$26=7JN!M I!L*R%a X&:& ") #7 9 DHNP:&"&! %$-%68&?,,S01M93KB45=.+"/!'#  +!$ %,:&=/6,6&?25" 0@.8)3 $,%"$4(*>&;(A2%43#5"; B GK $Z+$h+'a&A!0&,-C FN]KP H>/  ","1$.6/&N5,Q7093.-*/*# $ !!%  % -;&8$-8(63; ED+D+, -(-)"%"(E,>(B*<&54 0<%&@,(P1)Z-.Y.C)?; 9 FJ G TLGI=5)' ()4%/'5"2<$97%-'))('   ! $  )) 0,"*#2 3/=$80=/;"1/((%"A$8N$1.+. ,30)" 6'(@)6L?OD>)#!*$(!!))'!.!!  .-+-,%+-&*#&"''&4/!C.@"=)11#6'67?8;1+"0."% -!')-23*A9 BB,H!9JZZR `V K: 2*(9*'+$ ( ;: =B$@'C-8(,!#% %'-$),! '"#% "",56H!:I($@78'&7 ,D%ME2 3B-70$ +5-@7$5 H 4"&'"*#(#%$'&*8(,7)$560>'@&Q*]#T'NZ [YF*)1' ,)): ><H #?.79)-# # % (*0"62%$(3(,*D/V!2P2.E17 # 9FO/P<3D ; 6%12"* 8/H2P8!:?&-B&- )#-3*<20; 0;+>D&H*S&U, Z-d%h%Z @! '! )7=:>". 1'<+7$* #'* *9?48! )(20 =+K5R'/Q.$S99* 8D49<!B/4&!,%90K!BM8O#*E*%*#.( ,((9!";H%J% P) X*T5V1$Z"!_,X*@,  .1%1&3",*4. &*")!!( , 33,=#=6')."2 5C )J(,H*(R1&PN# %4%8:3 !" *3/=15W1R D #+&)&,;,;! FQV"W3E2F*I+JP(B: (  # - 150 )*($' ,%!)*,$ <CNH9!5%**!( 1F'T+%Z-$D,EA&& // 70.*"..A*N"3E)60'/-&&#0"7%+ 4BN%H-&A'%D $:?$9F9 '"+,) $,"%#$$)+&*-'",&*'2+?" LZRC= ) 4D''Z2%]+*K*%<-723'% $ -2$2$!((> +:&6=5*4"0+ 6#+/*8< # +. 1+,),),!)"(651 $ !  "  " 0"03'*;*+8"8+!1'*3!*,&('%")"+*!&'%*,%+&!%!&, !+,&(!+'#/"(!%(*0+-&%$'#$   ! '+#&-*75>8%7.5+&5# 9"51B%=!":1&*! */A!E MMH!=%@!$C9#/' ,!#1%2')/#/&& $""%$)%(#!&#)#)*,/+?78/')<++@(!;*5!&& '!+ !$)/<8 ><'0.- '0%24 1(,5&! ,+,$* 5&"1'A'OJJ=@F;2%! %(,6+,B/4"#*!) '6!#.)"3,&5%(1 *5 0&12)551F.+:$*B/3>- @;#1;8-FCPG$=5#:>%;9&85'!.     #  ! #$ **%%$  '4.+3=9F,F$2D.08 73 :84: 91 7&;(/4684/3 /62$? 35A1N.$I+-C00<'1E'A$#4046)7"A3>G?RF9F3?-L#2 -(&$!*$ !  $ "%) %$  )'## !-&?&C$"L!$R,,Q0+> 25*<,>76,/ 0* '+ 7 75/:6>%?I"A("D 77/)E3 F.+;*15 +:'9!1 0# *#.@,K4E=7@&5 3-".#+&(#+)      !#%"%# "%!""( "% '3.H%*V)'V%'Q$(>.1/&-"-,&)/4 $5 6B 0A+G +R(K(0>"&8&2"6%#4,+2 06&8@ 3!! -="I/= @59%:: 8!1!0#2,8)8&  !   &'''# $"&!1$-"!#" ',)?!G&F@"8* ' $ & '(  #! ( = %B *D+N 2I050','/!,+2#%4!(364 5%) +0 1)+"!.4&0%--0866=3$6#'  01 0/%)%'&### $!  $ !!!+19 6##'" !+ !& &$0 #),(3?2 82/+"-"#'&2&'<' >49,%,(#13&5 (*$!"+#0"07451$ "" ( 42%'*/!("2 ."#   , ( , )& >7"'%9&F& O()#$(#)#!3&@5 85 $ % $# (6 *8 &#.*'# ('!'),(,))    ,1,&$ " %%/'2,9.   "  #" *2.,-),'2*< 3"'%2 :H N)'/ (%+ :) <.+++*,- <G(H. >.$&"$ " #' '"  & 0 A!>(5 "    !$&-(001#* "%#-$;$F$E0 ,)*21-0'.& # )4-0A= </ *16"@'4 % 2'1 ")"$ !, < JJ&C%4, / ! , 10,# . (< &D #7 '    $"*)+! )) #!+-/(=!EG@ ,:4+ //,4,4 - ';) ?- =!B 3 7 !'(8!P#%M A8(+' 0(#  " $( )5!?*'B$=<@.9'50$1.1#$2 ,*..&)  ! !"3#. + 1 ,3%+,76,?!F !G ?7,5-721 )1 637F- K0 R9 J+ E '",'3Qh b"K) >1G34)2,'()%0'#9#8%B/H1P1M*F4=4"0# ' :$6 71$2.$!)-- %++,,&113 B?,$>1.4$88 2 !>%A '2 (<#82?0<K=b= ^< U9M-6''/7,D+]td"MQ(V/S8<&=* 1"#"&#$+!/5;C7J3O0N9O6N:B-9&  5!+;/2:716(& +,-,/4+&##(2 =EN"N(*N042"2!+. :7 !15&;.'B:MJEfC`= T; I;3= 0<=3I/$gm]P"d"%h&)]"*_#*\%,M/F.1-1>A!B1??=C?KDOKL6!>'$4 ( )(%402*$1$)+4.1.&+!" 6'C2P(!X#X .M*I#5' &%%%#) * & ,2 >,9:GQL cK \GIFDJ4C/0(>9-F*,f.g,M4%b5u-o4\-g#.d0\2V2?1"BEE3?7@ FIB:45 - $#)0!@# +($& ,(1,6!#! 4C*J<$R+*\%+R0H86,%'"#  #+ 117BNKM RFQI9B '9 0"2 1;$7F,0Q?M3&L;,b4$f&)\"-h(of#e\ N#C<,IL!;(>;BC7CPGO:?4+%'# -;D0 !!&($! )! @HG&'N'2B/,B-4/!7.1& +! #'&*'28 7HCP AI292.+ "+/<"4K2)O- E:$B5,Q8!G,U"djp_\ SH-4; : ,#< 0<?<;N:W=G3=5#$*- 3B     * :7;%22-%-+&9:&<,!  !*%  $.1, &*&) %9.K:J5<,. 5% #%&).&70#;CB@@>4<<9=0':!H]` Z" `! RUH%('1@00;'=8:E2F2A544 1#     !"   !$&)$ ),% %0%! !#-+')&*(4748;/2D!P*X!.L+( , !.!%?O "<'F$F!)?%H)A$,,0:7 :$G& U,W)D>-#+"7/C-03=-%8*.+/% 4 ; '"! ! &    &/ '$!% ( ##! ."/ 1, 0%72&068= >> 33/DND 2!'+ 5? *hV+L$QK R SE5 -2%<6 E2B#6.,5"! 59" (%1.> 0 ! "%4!* '#-& )-'( $)'   !*/! -02%?: J< [QG=,2B 7 3#"$6_ &e&a(^]#S9W$,\ 4V!-31## #.!--5+9&.". /  %% &()& &!# #! %*&! * 1 ,$!).9"5",$0$  " / = J1Y3 \9 M0??1A9$ *)'5> *S6g3c$b#U(+\#+A%/*#6N)UC=\)2O..W*\!%Z!.c$0\4EaSLZ5b9 Y2PM#; *( !!'% 4')"+ ' =-'$/!&$#1#@ ":$3,'+ "6.'67!<5/="*D)70K-B,#@ 2 " 2 *&,7B'>0E8>8:7230(3!G c`7CM K_,!529E'<30-3(@P-N<DK(TVYDGB;?8 -; O@ZSbcl\_H_,"a/(a.+D+0#5/) ,4(< 0 *6,D(7,*8;48/%9G: /&# !#117!8-29-4.5-,;.M8 XE"[U%_AqFfKP@ &6 .X7 cN_c$a_!`Y$i;7i3Ff1CK-=9&C/08 28--0)2#1'H 4R0J/C8 3  *&2.9 +? -6)>6 9 1%#7+24)>0' 83/ $14  +, /<<2%%3=:/F-R#>B2T9)^D=WH/l:){ItEI<2B,C;GR&P[6K]+XP6aEGd@X`UVFE!F5(A*+://$*-.8+,0&9+#>+ :44 % +!1&8*C2> ):!A? 2*-%5,3'; (( 0 / $$' #1/.$21=?E5D0 >8+AR&6b(=c7Jb8ScJVT:h8,k1l(Q/ &"*%2$2L1E.9I-B@0fN>k;F]#FLF9.G3CG#ECJ>B<&2-7*%$32070/ !+  1-9 -A0?,5)', $'$.'#2#/211&,$ , . '<).+ 1&80 <8 AGBQWRTMVBO83A%,P&*d,4qF>wEFk?YQ1s+"sVT%#;(+0+.)>,/?-,N1*R?G7AZ-?L$C>3A8GN YWUU HF @A7-(*"#&B(*#. "! !-8$9.F7Q:J$.7 =&&B-)R1AO8<5*#&9)>47 ++./29 FJ S]NkPi Rc QNCLDK*=P!)m8lG&nWIOQX;5v:"t-l8 rB/](ABC!<87>3,T1%T:cL_J\UMR;;5) )))$( "2'?#<C +Q/G0:"B-$X"1b*(](#E$5'6@D A 8*7 6ADqV _ ] Sx MYO[N]@P)6hI dTQ`3OIVY&uEg['uq2c_;NGU;5\-5[0Z$2H%F=N0F+4 %(F$!Z=YIVKBO8?1'#+/$*-+ *0-'-$52@% 84'31A3C!G Z(h',\+&O"9)7 <F @ 0/;0 :^=X td m#VpXcQcIQ$>R=1MQ.E`P.a97b'%a'PNI"b7*['<1*()&?0)B R B4$!#,$$+#.15.A&6$7 97?%2F'-^.0F;@8E(-@,!B3/6 8 C !G/ECGO" 8$<`8EP[:e@WD_Im:T 7G')E8:?=8,4.4/V~=#\j!ig/Fm0Ce$'[%#NIJQ,*O"9 &4$E,1F/< 1I'I)*(5)$#+!" ./9?7@)&AGG.77"#+7;<;,?=&;/7-'5 C>#E0C-; 4AN;M>( (T} 8FOJ*:w0DtDdXPG4B*-@$5D,6*>O./aH bq`n=l:g"] )@"A0,@)C/!A"+L4,B2@=,=%(.#/**(41D @9 G, L VL#B# ":!-?7E;9D+C'J"N,W:`2Z 8;E1I ;A c.l1w&8s'168r?K`\QNEDE<5 5'F,%IJ3c81bC(ua4sl5_g3h/cM+H 01&27;2 E (I3S1X4^'Y-_@bS]NLG7 :@,5 ,.0+O:f@2c:%a?3YLNQZITOTQ+3'092AOD*G;,SR,T^,Kb1`&.V F#$B)8<)+$2. ;"0(4</871&.*)82=',( '-,1&3-!9$JLH A>'?10N:)U;S1P1&Z0U+_ ?W CVTa^VP;:+4-#*92Q;#T?DG3KI3,6K/(SY( J-%X*9V((@*( *# #$$=$I3"@13('27 A=)A3)<1!50, +"6>IAA'<.4(,1'(<>4>I..O.V'T 1K0A &F:R EZMWTW"Q>-C7/6+%-;4#=J-8M0629B>=< )C /220$9=!?:"1F'"S(L#)M$O=#;=)=01T(0Y =>8 0 ##$1I C)J3<51."2)-0)2%""4$0 0? J FE'H,C7(B5&K2 .;$/B**D%"T''G ->$B*8.9;U?ZCV*CJ1260#1&)*51C'4R@'.%:"D.-.402 B7''5NU#O4F0?+2M4AE1E4-MQ)=_+?(N&A #<&&&5!F6J8:>-,$(5./('*7 A H$G1F4C@E;N;K@E;%+5##?%;.3*.+CD(?$P)d"5f*6O5%:)=,%#,*&1 42>9/B0L70<5)G%`1R9/?X,F`2:N05A$(:'JP#S[LH`7/?6C8F"CD 0> )@*4#0*52$-/',##)) .(!!%(:> GH"?=<:DIG=C>@0>-5*;#4>KM H c!"`*$P6/1#-1*#&,% 557='='F5Q>DSG^'U1`;@[M@\U2WN.@A.630PLIULQ I$A2O ,S R `$Z"[%S")5- # (-'*:*&E&!F# I1C8B4E; S:K9 8660!),**%/"0";C3 G LONN>&3/=407/)$4*.-<183 @8LBAZ)Y b%c%3M919/7@*BG!E=L_ j b lm%]Q0!?$" "3#$8&$<$%G%Q/ C)C1;4H2S9H.J,7.+"!& ,8E#5A#MMQ T>%!(*6)<1::=164:.H,O4PR_&\ *]4e2Md/Fg/D_9N>;E*D9)G-8 )5'5C Q\ &ff*j7f(J# 4!-7=!@$H%F!>-70!41<2 A*9";'( (* &/(B L>O"]WWR#A"2**$A&A;4J%>9&C<J$ M' P(`-Y5] D_RH2HCKGAOL9SR=7!* "54 C O$[/V3b";S!:W,4$;&"!+ #8E#=(C&!D<"22"2'+#* '!'   & $.!+ 3:A J VWV"+?11&20+2<,(?K#0H'=%:<$9$=1=7B7#N#.U$T="T:&) 24 >M(?)L+E:K#=@ @I<;+3 &.!:A?:$52#+)    $&3#CBNNQ&&?.?5K!.8E*GJ*II(IO#C3;9"Q1(H')!#*%"-$2)9=*-- (.70<; 3=+8)2 '6$;<-.  !"    , >,=< > =#B.)70;@1>E4677;,B/F-H=#/+A-@7C-AK$3G##=6* 9=F:#&   %%*%2"'"#*3 4 # $"&-#1$"#/''8!"M(&2(0-(,+ " #2B?91"3$'4 1<(=A866J38L0@D*5O(6O+S,O:=5 6 1);:9H'0Q4#E23;-+' 8 @) E%D(D&>!0   !!#18(= >.&+#12(' 5- ?40?52L35;8300)&5+#%387. %" '03H,4R>1MH-@?)A7@7-*2<)(6&9G,=K"/C#!E+G(.'J I$J2 E% LO#D%) ' ,@!B ;@"B1('7-."+'8&';0/D76@99;?7)76,81#-. . /!( ,*J2(\>%Z:!K3766<95/=.< 514,)' 9(%//8=#+A%F (H&1&.6$F$C1K1"T.]-&R( ?"% $#4F Z#NN F.#/*1 "" $%6""<%'D32;;:2>A"7>#75''&**.%,+!=)O2!R.N( 4.A(4:# ''417(2'%5,(<9*8 !?"$!31." ?"C<)-;:4;,D3?)- ,0-"!,63 *8(&(*"!+4?+)C3.W24Y31Q)*G*4.;#=#>OR]UQK; &.+9'9'<42,0 '($2/ %%#%%$, >8=!.3'22 .!;-#:3 /46"7 03!*.&( ( &  "4/%($6,5F$!2+!3# ,4 !2%*$!$ '. 81 68+!3< ", "((=3$N3L.?7(- % ,).! $9$A4MDIC;E 4D9V ]_#_&%OP CA) ?"2 ! 15 : 7%< (<8:'!+%) !# ."-.)$* #,:6B-7E4&BI4 ,9$M(Z,"F':1 $* - +' .3#&(1#'%$#%#/<@'E4BC5JCV)`"$XU \TJ2 >)3 )$6 A>; :82<"0() !"$"",,(!(2"-" 0 '.)F#.M4.]30R@)8('GKNR+ 89+ $1) (+ .0 -27F",?*>#,3+#/((('6$@"62 (GM$R##S"*R$_[*T*G" (1+ %!:@7",!//%9- $'$'(% .%$ '/+ 1')('5 ":1>(G(X*'V7N <&3>BD@(%4*!& .06'85AO&7N"'L""9+3#)$$(-"+.-7< GO U'Q"!S Zc'^+F$1  .$//#1)-.$-') #0-),"! ( 90 ,--"%/3-=5 FG(P2 S:#M= )# # )%# '), .)7*EC;[%1U#V'G, '+ 07->E MR!R*F(M"T$U%U,C!?.(*'-'0*+.- &+-''3+.&$ !" 1? B?56-"=+': J*T.W7O6K= ,   %*#*5!.0"1+=G(;N$2O-J.B5&/##'1 !+8"DVWG)C(H=$%J&+DA?2"   &*!.'51 "'(--386..'$%8D PQ; 4 4$: D'Y2.Z7(Z:#N0$E*>83-& ,""-$3''5)#+*4C4<82:?2:./ -0+*% (!3. 1&): C5/4$5.1*7#474-  *+-+&$,!.27>0"0#%%&!; KZWF:7 -/8+%K60Y7*X;+I1: <9B9 1)/ #%(&'-53#08%+4+184$+5*'&',$#'(*00   ' %$',!/'%)(01&7#/') "*#)"&" #403=; :/),&*"+6C NH! D0! ) *$*+,60)E4/J+7>A/A6>.<3 &,%*%&1%$8&5,3&*/!$1$.!% "#  $!*"1*22+4,! '#.# ,"#0%*$ ' !!$+(& $!(/36<4'75%")+'.) *,.-+"( # !*",-33=' B% H3D8 9/ /#"+.(0)",0 ,;<!/+ ( 0%;*)."1 & -"($(!%(&9&(6+0,91>..&*+5!$!-#3)/ &  !+##(!#&5 4961&.:; -*9 3*5$!"'6 1 % ""  /#8CGI'A' 9@:# +).!-.*5.@4-')#  2"425 94/+"-)$%,*''-$.5@%8E'+70#A1<0*+(%!& ( & !""%"2(3 797%) &! +,2+.)#)"20 3 )"&-' 9$8(=$ K&M'B#92 '&&* 4$!F)5 * *)$$"+/)7*22"<97<-0153. /8"-2!3>&6A*0;-/K.0= ,('     ##'(. 7#2"' ) *-.-/*3)6457!,!%.,00*=&8/ ?- 8+ 8!,-46+$.24-%#8!3)!.$,3'.8#9>30,73"37$/ 7#10)!-/*3,$<6 69!55 ;/73=' - # %"  !&02 /$&%/+#&&."+- *8 !6#9&@&"B+7$6'7(( 1'/" '#," 9 B8!281=<30':8$9&;("I,+C,//8.((,*5 >3 )- $**H 6K9;3!-)."$##**-&   ## ), "+-"++(..0&&&% %%(, +6!.=&!O$F$<#3 '<2& $ ( . $3%0 ,4 <1 69.B ,: #>*1"&C!$?ˉ.&8 '$+4 ,#!"-L3A8A;&0!) $1*3.%$7":0    %%%*))3*.2+)6( > >!2 %$,1,1%ED=". / - " " + ) " "! * & $"(('1(; +40>,C"'?'/6)2&$;% 0! (%%',)+0+&%.+-%)#+*&(*2(=&:/!%.*#'***42+.>%';$7/ ,#!(/7 8/  ' (( *" ($ $ ("8#E$8: ;&D.#428#*=&;!0  " )$(%)")-A,> 6,")   -#/-2$6'*1 /" ! !  ! /.0.3;'9&(4 8U[.7;-,#2*%9D)C)6    !  &#*0- +* (&  1 . / !  *8'8 5- !  #,&***#%+2!,) =40464+1"( #,58%\Y50'*+%)"$& 9:!7%# ! #0 2 <% A/ 3/--#/0%1>8!5 < = 4!   !+ 3%84) *8 4%, 0:".I/>0,0*723( 1'(.-*""0%&=JE'00./6 ;"!/(/7%  3;EL)?)0%, ,+=A D 5)!" *1= 6 &  (/"0!-$ " $,$; *:%@*C 'D '9$,4)17 ,3 %+&. 74B(>"?A; ,)"5.-G. G% 6*=# 20- (  " FM$B*>$ 9 9 .! 2 6.@,;)& %  ", ( "  " % !! ,' *%&.130 '< '>%D(5 &3$, '- &.&3?8CJH VFV7P1P' 7* 5> ;$1 87@H9 9CH9 1"  /8?/ ;& 5' ;'J0 E)9/66=*,+ 0 ' (!  "!#+"()6 -)7#!J9"DD0D(:$0!1 ">< !-'2$;%CKPQW Y_VJa>V1@;-NH5>$VR"?HSP H=7*&- ") 5.;- ;,>3P4 T5J89<7-1 #$3(3*/ '&#*" !" ) !" .$ 68G!(R* H6:?-8+ - 2/. *8"MJY MR [W fMhE^:HD #F!H!(5#H*S(K#FUS'P T$N M KE) 99 = ;-<30 >> M@QJQ;?15+/&  .&( ($#"% /"'$#,& 6*?!I#L!-L'A$"5"%%" $)!  ,$K;P ZI cI [Gl>YEKB 0**03-0?8D4(D))N1TR']'d`b YZ(KF+G;:.3 8=H>O;L.A5.41'+ # )'+ %)#$"'$ -8( B'(L#(F$,?##9$+* '  &%+(+87D R?V:P= U9D9 7(":$>;&4N/L!+=85D'/A)[ pxwgg# e*I7 /C> 6 /38? G< N@ K8 B: 7& 0%1!$/ .:#$ " !% & -9)7 21&*:$/82(' #%!( (#+96.%+5.DIAG?P3 H;58#+&#9);1I%D1&6-:"F Hhs'lh( c0Y4N-00".%.8=7H<MCJDF:C 5. .   $#!' '+ # #!.#4"+ '### ' -% % *8!6+3, &.':&%D:E:6F& @=49&*;"& ('0'7&3%-. ,%8 BO! h/c5[. T.R,;)$ "4)40$N5KEJHE4B#A8.!   %+ $ (! "' ! ( ,%(! 1&81 @. =/&B!L*&O'-E E%B61%=!E D9"9#5-/"%- >.Y>U0S,V/ M)6&')/,9.25?$ H,H/I+ E"J: *"% !)/ 5 #( '!!"  " ,. / 0 , *. <@ E@<8'F&T) P))<%99.<#H +Y$]!JP&M F> /% $'*/ /1 5-<8C:B,!9''12? ?6 <FB 5 0!)%%$&# . 1 75))+'%!*   ! '" "* &, ?4NKSMXG>R$UI,8&2%3N.\ g3fZ RU%Y#0X$5A2. ? #" &-13200B-C ' ( 4/%&;%<3$#- /' 90 7+5 89!2 "' '.(/(/!"   $#  .#I2[> n9bEDO;L##>**23 -O4`q5j$%`$[&%g,7b-4Y;HD1L6/M? (#!-+$+1(<' *  % &$2#+$ (  . 5' 17 3@ ;48&62"!$(+4*.507#"  "& - -& E& ]. lN]^C^!9R!3")-;-HX3p)-_3$h!f)%_+7g61cCLL>W=_= P$FD1#( .#(-#$%& +$*'' +70.E)H)J )6"- %%05/073$B, 0 &) 3* .) (.:76Q@SV ?U2Q ,>26;5:H* QI7Z$M]@` '`+O -N@NSFXGXG\N T0X' T*O7 " )#85!)#+&.'*2 > 8 >-("'!&1%D"FR Q1 /&(%*+-@'=8!8 0 +'4 -. 2 +#1#<( G0M #M ,?/3,84A":06J)C4CK SQRXRY1O 7CEF_7 aU_a\WgIc+$Y-*c,0L6&4!*0"$3BA&.0.35 0C 1J*D > 0 "' 5)3/.'>%D-C5 -!($)#2#85 &2 "8/+ '*! 0 6?%47-??2L+#AA/Q9$X6jEf[iJj^jUNG*8)9^> dOdc'g`dR`?3k>@n,CJD8G1*?#!0+*%"(,($*8,B/I%N A.!0*1;>; 17262:!8.#'%!&$1!6 <5%%'(*! #!"-9,'B(B>>U>]?!qD$bF tO~OyCU=..!"+'K6LJ!Ud0R]&TL+fGAz?Pp-8M=I9:@.&>3-22+*(*#!!$' . 5: 8 &  &. *:6G =DC;9B#0J"6(!# 2 + ,, "*"+)/%!55.8-! 7@ $9B!?:O$Rc2\\*]V)cP#_M+yH s.M.%:'4?$!A:,:SCE HT'^S/^:>e*AR%=9;,>A&-7).7"&("$ 1 ',!! &( 4<<8 PF C,FT(4s.Pa+``,gL)i3,pPA); 77,1,;2199-+O+2T'MN+R,3N2::-879@-LR$?D!->)5+1)#*#$-(0#!*)389B=C3528<4B*N*B5-)  ! 5 9. '4 25DSTYPyOe >[=V0F1!>PR.b,@g3TM4dB,}'n g7)_<1TBA&FB'>9;;-G9)`1]54N+67(/%/!,*;2IEAH>J/%&.5!) .&2)##.#&((.92@7>519*FG &_ $O/!2-)$ 2;??<,< .A@oMxb X ]ySd=S 8R/X'a* R2&R8=:8a5'_G"eI2ae3P/ J$':*Q*X"'K&6! !- 5 DK+C64 <51N4}OX `k"a{SmN^:P*\+)O-B17-6F"+7 R*'mM7lQ=ZUC7`C"WIS9AO%tA#p'(r'S"%5+<4 2F(B -..1!,/",% ')&.)9( ;4 4?G02U+.k#=[AM30=4&53"OHM5E,J II^Oa1F'Nv)ALMS!]uKe>Y+H+8?.,GK%3G$*CA Q=/f[,ta;db)Lb-+e4S?,I7I61Y/\ A  /61:8C!L&71%)(1"&'+(B00:)9 D(@A,9,&)"7)GG$EI-AP><7:1-Q$+W*U.D FM;ISF_K[<;&9a ,6>:,Fr<7g9Z9K/F-.;74&AJ1HGY[Y^E=hhB8H,F 0$4,5-B%B8 (')..(1977, <H G @+)/)0'E05)8?'@@&K3M#$S+[CdRh"FW CJROI90."A -i5t%'/>}C:_J@]Ea1= 8#-+# %)7*8:/"6&5)((#* * "(0/;#?A@'2))((&)93J:Q=Y3 f(i0e Ck%Lr8T\ OGAF IA ;*:1 &E"*U(/^@+[M1VPGYPYCJ >L$90,)#("4X1MGN>KILECU84W eX#h,0U)8 "= 7&5'('(!2%4%)D-+J7 <3%'%.# (2./&2%$-4"9>"6,0--7A5.K7%U3d'i(i -d=lLc QX ZaRUP9D6E0 4 %%.9-)R?%PT+=DKRGM6=`/?.830/> -8 ;;-21@<.>J+AD0K*>!O,W7(8?773C-.964' ."65E@&DC%3D)34(?-&0'.* %-:J K%;'=)>2E:,35(8I&*Q$/^%8Y3U-G*,<&-?9RRZ F`.%1? 0!<$"?> ,FC(3;=)2K)L=+%?+=G'K4R:A ;?9B-73 2+17.A>DC5=*5%2/"*&  *7>@ @'53@?F<&I=(=6%73 .C=J!?B"4<%/=*%;.;&B8Y*?^+X"L731)37@NDC:*K- B5:T -`:M&?DLA.M8'A6#E.?=2R ,L/Q3F)G 4F ,7 (B$=%; "8'2#&3*4)-3+1)6')+4<> 2&>0G6 FA?A#?7,E3+;45H>EAE 59*"A1F FD$R &T TC<!=*A(&<.&<= J$I(3#K=>E $F&U )h4Z1DOCIU?@D?*;98CDQ 4N7F6: L %S #O #]Y]L!F)'(#+#"6)*#:)"5(3/#I)F(>,;6><K: U1H8F5+>+-7('>":/ ;74D'4& E+ I P>CJ)?&3-($40E *9'51@5@5AB )1R;9QR V&a%*Y/>o)Hq9:ZCD9 L/B=I;C30<&N\ d`m'd"S>")*$!,()(,'00*0*$H%$H"6 :. A;O4 R*L$K0+,'AE@ 4 ;, 0(*!<* :$-),# '( !16?A*I0J (G%*1'/ ,6<6(:"24/F)/N @6>>)"C8!#I; <+ $ "  # % %' & $! % $%- 8CF'C'@/",9,=;&A76=/3DL9(Q,D7 )9) ?83G 9-6L78A@B=3@P!=3A7G9$7()&* 2+*)7) C-.8)-.)2;1A +A#6($881;24(+"6 (      # & '*&*#/1@A<(59$K$&B85@>:L1AH#D9I- S 90:8*;7$58)7=>7?H39?:=-E+3/*''!-/<844",3-),( "%"2'!&! # 7(0*+%%1#," ! !$()) 6 1 1?:0&"%:*)I*6I3FE7NB8I>*P1%N"QE7%.0""47"4C-C'*J42M9.E/ :#-!)* )1539":$84."%)(,6/) '"1.$ . . .',$'''#+#'!-&'+"0$7)*( !+" -5 3-86&*&+273:DDFFUJT>!E%?*,"1#-+B6C E7 A,5. .%*! $&1%. %8%=((7 6!#*85 !: $71(!/ *6*012>/(A&)B#67!*)"$/ . -0*.')6&6K67^G5YI4HD*?LAR4P-U'L.> 5. *+#<:1HEHJ%8!*&""'5<<@?9F.G36+).%! %.3'J'N F>.<1) *4<<8%%!+/!4.678?%5?0I,E :.! $1;.-'#($&3%.T3.cG(i?$Y?>I :A%5=$7$9,-&"( 70.;&9#;:3(!*", !!9)@8(;7,E?%G?(F8!1802"'&!7 )G #T!'T+RC ," &- 61?-!$."+#/22>-I-F"''0M.4S5.L5&<09'2!2#&.+ 8&%N(!_#'bZH@9!*$)-,&".-%-//21'8?(!800,+7 89. -6+0#!!/!> H#J"L)D*6-1;(1)+632/)?.FG @(' 3!4(!(." % ,( '60<:Z&?L,CK/,L< 9-!2%/,2.C0U*e$g!\XM 9/ $ &!/%&)10"21-/73'#-,++%<!37/'*!(%7 C ED ;'0:6>3 %(.+<.!30JM U I&.!0( 3. %! &*$+#)12#A?#J=#CA/=B53:0&A//' :3S8[*e"mZNV G)#'!&##%#&*&..%()('(/+(!$2 5!.$ .*(( 485$!8(413B!!$ !'9*'J& S J@& 6,+& *!,$"" $'!!)::.@>!A:$>B05E'):-D1]2 e#c(W$SL C@ 2"&$- $-$!(-( -$##!)*!$ 1%(!$"' "$ ,#) % ")* /:,1B>&4N)! ,?$T K< 2(2$' %  +% ''$)*473?%C0F=9H*I#H&X^b`IB > 4 - '!* /* &$,4/"-"%!$#%-,.!$&472*!8$LH!2*)<H I"D0";%: &$ #861':*;%9!;?<# 31&H!MDV] PIK'F%68- ("*&*3 '**#,% ) %!&),,$ $++'(.+/7&7 1;%G-Q4P5H"9-* ; C >87A!>,+&$*(*08##H 'N*H#?91;);$? 9/2'24 DR. P$JP!S!R#M 85 %#( (5*=*7,*#'-"#0&1-* +(3+( ,75,/3+7E1L:S@T>J 7#, -#-) #.1(80)1*#87-->!0S%$]#%U $I237(4)/ *2--(= )FKM$Z)R%DN %T!*M E>*# !1$4-5334/#.%3##8-5,1%. 6 1 / , /1'!5/,<#H7"I>FJ&NGL8 2 % &!+)).8+4736:)7K"-W2.U'R)H%2).*2*-!#)8"H _ f# P'O#!@ C&J +H#??7   ", 8$>,:" 3++#4#$3-9.3"&)5 @ @=1 00$+9 -D*M3#N9&VC%I"B(?)4'   #+*-(,@1,::%22)E-@>6A1F 2A#; "!%1 #+&' 0 3K R=? "90=/80B16'3// ! +.987!!&*2+;%+47?-7&&('+!>M E?; - 1)*"?/L;"O=)Z *R5>3=";1 - 9 ' (..2.&?B >F,7B47??(9042!:4&,,28;( ")'!#-025. 1( 5/ 00%16#> ( &4,,,$+%5)*4289>$19)#.%%06 <74' 3% )+ "# 40 >? L!P2C A1;7?)></-+",$,+ -30</?4?307/"90@-1.+!.0;+ #," (3&2'8 #6$,3":3$2 *" '$*%!+3'5!/'-=4F8C)C 7&'&($!# +4% ,(+#: ,;2%A/?8?/ ;2/4)#&3)&7'(04(:.7%*7-15"90F 7<4 &%  %48+52-01;10&1%3 "'+$/$ *% "", 5-.+ 9 1; 1GJ!:,*( *+"/+2;. " ( !(/!/ 8(C2 >,710;,+00+3+&44*7#() *?2:C5+&" *"($,5$#2(&:.!1.(9441+& #+#+#"$ +4$>"@-CG.;6&(!)- &-.&?,!..$$,, *-$&"/&-#8D+G.6(-&2%+),&#(-2%'0&"!+')&+/-/01.!+/+#0)% "$#$-,';+&5,+8#)6)0> %6 "    2'06> >803.%./0516.8;0/) .1>#8&-(/&"0<%;( 2%',#4!5 & *# 8*82-0#0154K6%H-'S9;3$37%!(&* %$"1%.7-903!+0,20220- !     '-15#0+( *:/9)3!.33=/25-1 %-)6$29= 5('*' )8 2(/@%D,6&&)(&!E&S*V,T1&N61A1*,*&+$ (!)$-%1.72,2%#3") #*#"*..#   %1 ! ).)#50)26&98$.7+*3-4/ 23%8-2)0;D5 ) $   ,()7+C$H! 35 (4"1&@!"J*!Q3%N8:E5?311+&/$%$!$ "* -46/ ,#%"(#-#+1 8%7,+   % %    (-%19.562<6,A7*<0M)<' -','"$+ 4 4+ ' 1'$ &+#2"97@H+0. 2:.;3J $N*J0<351/?(@001*&  )"*$#.%-%-&.4)-6!62:/5$*$   "  #$!/2'01015:+6@'3AK82 ( ! #- !6#&" $ ")513$7- + $ ,'345/=;7K"O* @3*5*!6?2('$ $    $""3#-4'.5<$>( /"&#"    )".#-&1"79<22&  $(#%""!01/:9;,+(*$$ +3 K1N=9O@#,'#&(!0!?2:132'+%  '.. :$;((+"-" " (&   # & .413( % ".%6(/&-!*. /5< 8.87 7. -1'3.#$$"')3J)O=42*(&()0/7=35=46 '+)) / -&*,-/.$*"9'">4&) 4 2 #   % 47<9-#  &8 >- :$Y$\(3-,-$ /$)**!&.,), ') 0,/5!1<:*6.,1*%%'>M ?$6..+! $1., ( ; 05 2 '%; %B "6 '6'C,>.@ ?B ==12$<4!7 0*B%M" LG <+ ,;7773/ "' #* ), ("*+2# $  <? 8 7= ,+3@(8/8+*7&'2#     % $   #! !,' ', 5"5 .1)3 /7(3 '7 *8!1!K/P@LBRJ?S&IB( 42 LM %<$5+.#/% <:78'+", & 5;<35G$ G' 8*908.09 1!#!#! &#" #(7(6+-3 )9 (;02 01 &/!-(2#,; "QK^R^RdZWc4 W. P5 F 9" 62- !%!/ 8$B%<->1N* U2 F8A9/2 7 - %"+'! &'*.!"   ( 1!6"4 ">%9+13*2 10", #- !/ ))6%> JLWNdRnIuA e< \@ @@-H*9+*0.2>+E&JH X' S R"M OF <$"0"51/6*H2S3V9 PBA:-60/%  %)/"*' &&" #  &%*'10# 4'<#-&#'% # "# 1- /28S:\: k; o5p5 Z3 2('4'-$-512#44'C-GV[ec[ ]X'J57:7 +3!A0S-V: S;HA6?.94 #"#+-+$"&% !$/' *#6(8$+8 ,! &$1- !- ; .=L:W= d;c8 ^<J4/07$7$8%7%"9+ I%$Q"!UZm%t(p2c7c:YA>8#*0/L7X7c/Y0 IC 4=470('%1 ' . * #  !&%(((&)0)0 +%  !!)-- 7+ ,3 18<3M1W< [I SBB@$/6+#++A/?#I*K)T#a9i:i3o8l9YFA1(); @9O3^3T/ D)A2:814!-"%#!&#! ! !-0($## (! & ' *" &' !   $,';3B6081"0+93$K&Z4V@B84<+%0#* 0 *!5;%##(4<$ K?V>[<e@bBV8 @3, :=-"U$]<T4G I$ P&>&,(&#  ()16(, .& 3 !#)# $ 0-59I4;-#%C, M5&D1B1(_g# Q.:<3A(93342 '1 )-***6, J=PDQ=R<W9 N;D&2%%$+68#A$U( P T X X?(&),)# 06.$ !%0, ;(9#' "$ +*% " .36?C7;E5Y+W3T7C=$RXE05F J=B4I2:/"%  07CIWTF 6%(+?"<1$/4 A E ;-2?5(&!' %"" '"!3=LP VEYVL\.cR0762"$1B@I+\&X$([+7R5>E0.D6&E27D&72)3.$+-".87=:6<A3B6 *   & -">%GDD ; ()09# ?& 54:.<DC @1"3<>& , #  !#98VA u;vT"Th/_"#T9#&1'0L:Q #_'8c00a8)Y3+K60NG4PGE7;E.FE %* # .387-83: ?6 9* #&#, +,: 8&&&68-3;8<16/" :8+ ):B07-' ! $ ) ! ' <%]D p[`i#Ko(;g/&:!2 ,4I!X0],`:$aC#TB1T4X=@A/%I=%U1J7<6!#* ')) 4-9"/#$!!'(%, ) %#",$$& +.2+L -O F%?$)+5 GL*18' & //#"!'<59TKRb Xo.Bg.1W)*A -#+%.>-S'KV 2a ^ %Q/TGRO<W5OI U>O# Q%Y(=$$#$$"+-#A1';1$*", $( (:C?4' *!-$H3F#P F.*+9J >' (  $ %' (! *$#-&:#'E1%.(%-":%1!$. &!+'+'!1$4 7. >F7%-6,C:-9C)0AU3]-_2v?}Ldeip#MbCK)0.3N0 ^G ^TZVcBeCAf@J\3GI+V<X'(50?"&1!'#"0*3 0G ; H"D . )3#-74=69@617 2"76'%!+' "%+6):-4,%"(61)3 *( %(,!7:m>s<"|O&u_n_k^aTO4,,(&'E.TBVN"cJ#_M gRAtH+a63R#4D37 8A&9A';(. ,$##/(8, ? !4 ""!$. 4B 6IHJI???"6?+9%8'!"(+, 6&</?&00%<'%:2 /. ! -**15MKfR%sT3n\3gZ$sP,bS)VA:&3"+=!(.54!)&( 44;IGOBBHD @K.D"'7#(&%*(  %*1*F 4EL9QFBS3A*17,3DC&XK0\m4jb0h]&d:1W5%B -446-&5!+E,I!*HE-5W>a)CP(HT3C+884.+#.;(B&H(9/<'+### $%*':#)23-C 86:1.5&.' * '  #!( +:5W"LU_[UdM\AT &?=!W9K*IO4Ee>TNCfJ*Vc#f0!:0+:$5@#R51t3%b4.\2%A+'!'( + .4 51 =9"8$*), 2)* ( (! 03 35 >@?G?4Q8F6G6@+*?5+"2. - 1#6)= &=E,`(EoW~WzarS_?N=P&`$\,&J-:O@AR@K1&?,(Q?&JP38O?2@B8(PM(K;!N1JA w@&p1`# G#$ $ )3 +2.) > 1/-4&'$42"(* 2%,")=0>8EP9+d.&]"%K"#<'@#2- 8 EG$? 1DDHK86; $D!h5IOW UoR`GV-T P/F/4C2N@47-.!//))b/1X82LG<*R> QEJ5F81_.c 9\ *J-+1 :>&P4 S*YP6 3/6)3/.*0 1 !4/E#.F&==]))l1i(8S92E3%4?$*R) Z$3J#>E?C KCRMO;G'((, Y2r. 1~<{IqP[ Da5V('N7 C92@=K3;HA5I'DA?(0(62'%- . 0 -/:,*200"H)8R>L5?BH?6M,.T$0Y$&O!BIOHEGPP VLVI#E- 4 H )h4p7+)@f5?^.g'5X1'I5 H8%;@7&8C>*di8eg4TZV[BQK?]/*x<4U0')398A29)/.7 :8-M V<4763 *'1'$"#*--,.!4"D*_2)c'#!&*% 8+ &>456'9"8"3=##A@(6%4G1$7%"!!"!-2F?")",'./)''-&27<11A+>I1L3,U3d k1kEl)`odQ VVQZHL IG 7(' /"C$[;-oH;cJF`9@\&WX%SM>S:BB'K# (% +%31 2J6<'A#.D..4 )"75*$K;'W>"E9#" %!#325 8 %4%#3#,,- .196';3;:/C<-K.)g#o r0e Dp+TeYPPKONNN?FM=<% % !,)%TB/]\.@4? 6A 2E 9G"99F22&89')L'/53;=3&>,8)($%3+,+ <5 8J;B#;6!3(2,2?$?,0S=#NC!G?,-+22)1%/$+(?-/-.(!13?,;@7/@N03V-/f*g 'f5Z$:`5SYLNMO S` OT>E EB;1'#"+//BT->n3::-D3D1 =-&B.A3. :;%/B%;?)#'&-+"17+<042 &3'=!=0,#&,,3<)G'&N=LE,<9=))5(2 * ),*0#81! 31(;1&1:*A9,?K),\ ;X=P$0M)6=54A1@BADEV 3Z;[ 1O +?"B%-&-" P@/]J/D#O B?'?&9A2)/#D'/>,)939* #%$)488Q .J 4:8@;:161*'06=/G$/M8(D2$:'.-6/% % -%0!0/2# 4* <2*D33?3(6B%1PFX>U&A;727?$0&9'@6L ,c &b "H=D6$ #,$;AHO= F%N4!, 0<0Q!.F6\'>>I<AA'I3@AP ;F>J -[ 1O ;- 35+ 405 $7$$4$FE)3$1&.7<2) *2'!9--G24K9,D3A@ CCFB.:7B#/485 <$GH!K GD FE$I11/7 Q K@ C,A>)13'7&R T(:VPJ)@<%:@@COBHLMDO\9k$"M/@ G?E4 #*( .%F !G(1$,/ �"<H:052?& C@*!6<2E<9I60O/E2 F<&=;*&//%72; 4 4 ;E3D5421@"DD(2171 I&A(6*E5EP;T,;K *X"DKOE"2C"GL*U_QK`>$^JPO"BY#3BK$R XL9".L!@,*0*40,#/ @%7 2/D,G"D*K3&933=7)K*"B+C.@5*,1&''$502#8: !54293,I$)=&%+6&LL0D ;49H1?-/4F!R#T-&Z/KGN 8>"G4^J"a@%I?P>IAMIE>=@*P3c,R-&E#6 $&,'.786%<($?0;.3"1;G#8 <"C)E7C272(:2J) E0"+!!+% ( 4 *=(?'@*>E%F.>+%$!; QT N'D%E*P/&K06 E!$T)6I1RFJP@[<T,U*(D+.5';&6.; .G1b9d'5N369!%)% + &(),4*B3 D6826'G"Q+D-9%2",+ 3) 9& 5)06 7" , #$#&*&=/>3C"2;&-.)3-91417>,.8(B*K(A @ 5<'65!?H)5(3H/0H8JDLI?%M;"M;#K0 :)(- 7 0%%1 )> 5K8PFA,;=$+;#4 ,#' %'/=@17-/'/. ))-,- 1 "0 C'I,62- 6* + %"  $'*/!C'!A!6( .. (- ),&: A("I!7) >+-E:>H;F?/ME0[D#W;VT:#',)+/@.0 9.G&I0 SB _9O1 <0)#3% 8 *+6%?$ ?5'%/'<&< ', %* &("+&(3"0!7 6 $5'1 6)5"-'##/1 :)1&=!%:!0#&. ', +. "7(<*"4 %//(.9:C?ILAGKA;J=5_-4Z%+XE<&$0"+$".* =#TP'Z2Z6Y.:%8 L#L2?@:9761"3+&%2 ,#.'$&*0+*/2&$$3(5+)7:B&A544-($ !%&18@6! 7336$3/'%'$)'.&%2-(7'++"*;13OB5RS1bJ:XG22Y%<\5N)F:!."6;=OPX(U+D#,3(!<#@2B#5G?K$5:$6C%(7 &#-# 08(B$B$7(6+8)!/0<> %@)@.1,*" !/&5&7">)A/ >7'('%!<37+%!'%,'89(M>(gL1mH.gN"FV7R&7C E>"6 &8 1BNZ_X<&1$#$(/&-40C99I?/9&+'% +, *+,7"A$D,:-','1$?@1')!&' (1">2#Z?,j8*f5YF@E<:345%.2.?$@L H%?O+K5O&5 !  '3.#G9&B60;?C+EC?B<=*<1'*6B0'\$"W#,T"W!IF!@$*.(#0!-!"#0!72$/1@.:8!03.(+8D F 9-++(-, 5EP3S#X*P-'=/2=-"3.$,/#7' I^f)W'B$"A)8>B@.!$#(*?2H2 P6/I@5/B<"9@(<=!6C 3AFB#^1%^'^#(f)ZJ L9*!+& +-.)3$ 2$/%. 2)35 +6)#'5D=3&))#,(#$3 ;JRR""A'18'91&'""&%&"/-B(Of1 o1Z1E'C#?(B=+@.45&,*$<*B%R*'M+0A4549A!FB:<3HHM$]7 a( _*)`#/WS?."+ ,%/ /..%).$,%*",'0#0%!'(#",.0#)&  $ * ";6>(:)3=6L,*'(!:*G$X$ Y0P(K; F! DOBG/:5E9'8:+&-1 $@-DF'#?.(87; ?1:.<;V>b, b,%d)(["QI@ 0 %$)#,* ""( "")**$(-! "& #"-& *.&&.31,4G$(/! +M' S)S%IL'I': 5 7$>56<99F")E6'? "?! 6*"6#G! <9'N%\ Y >",),.CNCH=5D0Q/K!4+)'IP!B! KWO*I2A:;,4+*'/+27&:')2.!%) 3"1 %!!!#$"& )* 2+*"&,-&:4.B )H+B=, #& '-." &.$+:'LI5'&2$/+0*8)M'XUV>DC3L4.0%"$!.2@I* ]'ZN"&J4E2A-D;/ 3 # '3$A,B1$2/+.%+$$8*9".+#)&+* ." $' -02&&72BA'E,A#A7& &%!/%% *$24.397.C2K.O*Y4Y0Y4&J/2" 7* 6 '6OT U X'S'B'H'D%A-@&7!.'! )7=%=+5$*(,5++;#%>#;&!'1 3. ' 0-)*-/)); ? EQ&L#D"9*3-  #!4%/>5"7$$A0L=>:IBOCE.C0,%",J WXV#K!.?2A+>0?6:,7 "2$% '27</")%,53.>+9$9!#0&*(#,:? 1 */#*!"1< =AL*O!+@'/<$1 (#) 4.,<;7E7AH36;"EBE?0/$- ' / +( ) AB :163,24 37<0=5+-!,*#%,+14.2+;'/=1< .;%;/3(%3./!*"(%## " 0 / 9 H $@/4>520#1! 3* $%#' 2!31 ;27E<=!/3F3F84+(/&;"5*:(#% ,$$2),1+'218):61:'1 !*+)+ -6%9&0+-7 .B 3BA74,/'"% !+ *# ! '!9"6%39=:=6-1-87 0)*5(5+599M,@ 2"FA'5($$)0+01-)'! 0* 1.86#/6!(;%<* 2.0- ,& +*& $ (,%%. 6 +F (HD!<0#*'% -- (3.- #  ""%'$"+%.B 5A8=43:;3(4,0*(85 *6"!A.C -/ 1#,&%!#)5"4!*#1"6,65 050-1* #% #"! '(!)29E E%C4740"$35 5 2. -/ ). /* " &( !#! ,('1.:9 67 :#3464 # %!6&70$&*#+0+;/.965-9#92#*',-+1 #!"$!4$7-7&6$,)$%$&  $03'@?:4'43#&762>2 <41. &0 )37 5#1&"1')13 23!) '%+!1) 54!!.+(5(/#4"=(H6W?L:&0:*#4"0""("$#.$&6"6"5#5!&(&%' "       %01+$#)0-<%$9"5 $7458326 %50( 56+4"2"/ (%4 *)  $,1.3G"F&7/3613 S$O-W?V@#A<,69,3&2&#/!)* #'!,%#,!'-- .(,&"*#)'$)0%  % (!)"  &3 /@%-:&*=$,:5-<95:/8$.&$'/3" 1 9= 0  +#-+7-HI) ==(G$C'N$"R5S@Q<6G89)=>32!,&#"(( &+$"*-3(' / 3(9#/3!=+3)*$ #   '( )&0&18228+76&C5%G,I:C642-/$'  " #&" $0- ,/$;;AB= +L ,M3O6Z%$W(!K>#?@%-;75M!37)$%0*&(''%&#"$ ! !*" 42@"4I7=>5<.+*#   "$ )*+ .41)871/8.0?.+J%OP>% -)# - ! ) *,:4 65545)+' $#5$L+K>K4R(V)X98'3$C1(4?$<)4-4#! &.':%-C10.=+ @,6& *%   * 94 +8K"TN"Q)J'0$  (,+'#0- 5% ::9AE)?,04-5#' ) $7 A9CB"4EB;('+%%;8.I&H*D9%   )-$=(:*"3#*%(# !  ! #  ,<EF E- A0, "*),)&+(2:94?.H8?36<8>*3#+/)" >/G:03*0&-))&$ +(E$C F <7 #,%(## %*"- +"'"/1!8%2 #$  '# " "+/8 /*/"$  )$6'6*#.@ 8H;B 2F%D6('!;!;*C* L+4?4 !#! )7 E<74#1& #, )11!!)&*5";70! & "% # ( $ (/ *1 /+% 5%5*1 .,,6 6G;L@R5F"6>"0?:"7#6'$S ^"> K 8$3' "'3*% .<"8, , *& '! ',., 0. 3,.38"8)8( $  #   %* $ (& $. &#&3*< )6 (@'; &;.E3F06!EP.R'B@'U*!b"U A% 5: "F C6 -A *),/"2 !%)&8","%%  *.-/!3CH;6 ?&:=4 !"#',%.,"0!   '%"!$ % ' #. /:/A)8 .. *: ":+-!L9_GS'ML(U;"[,Y' R.F2*K $S 6BSAA,8+@!S#T%P.M&A:#B!$),.!(&$/)#E$)L& Y$O;I1/7 0! 2&-@"3!!.*0 /$+%$1  ,,)  ) (" 3' 12352 *0 C- c0 f5z./b-L;&7 8D(91@5:6+%B!Q'Y&c$Z'J%S)T7%98+$)+1+? #K'%T1+W:J<@D*0#%2-4+ %",(  )7(& & %' (" +- .4G"AGC`F a? t8tN^GFF%G16.))"64"1.%;-K+U&\*b1Y5aA"UA,:8-!1).**K/&\-'_)%_/$ZAC@3A%&%%%& .("%!(# ## ) #  ( ! )& 545;@"H4JL? YFYB \GZL!=D01<&P=r3q1YD$TFM2 9')"0# $"* &+9)$R8U?WE$U@$aG TJ$RF ?/#,8!:(4:%)X.f)V" O# N*@+.&0%5%9"2#!" ,' ##$04; ?3J1:)" ) ,&,'3&1,#'),(;:5=+,84A<,3)a0%h"!t(-i:#R-\-=(93B?-1 )/ *&A%D8O@V>$Y= PLXGU:%H>7@);#5 ,Mc Q V VW = .62*#! 18$=-79K6L.?+3&%) ,+405.&,(! *75N?HI',J0V<*N4M5"ih [ N(O2M8"5@ 9? 5<.8#.," ."/)8<CG5;JGTNCHMAED13$ ) 4 F?KV Q9 )3249)2;@ JG!C#I!Q(?$3 11)3+.) %/*$"%4 ?@P>KOCa2YS29&H7!M#H*$I,:8(IS)A=/OL;LM? NB ?)$) 37H I B5,+- 4# 5& ,49FY\<EV ?.8!5+()&$ #%'53OH YN]YQi6`[&E( +"-%&6"(74#1R68\;7D=?REBBF6ET,3ODD"B&",-11;589M9= E7E,0%/((. = ;#3" /- 4)*,7*59+8(?J#H2JP!< * 1*/-3,4" 6'T7VP[^!Kn"/.* - 3 & $).*#-%1 3'$)%9!%? .D,8+*,(*&8GH656,' +! 1.2&($&+#5;KI^1Oh/>c69X34>,5!'&"8!,E;QQ :c %` ,JHK (@)>!&*-# .$$$ 7,!:'B!9#+/")5(@)A6-0- + .((!$ /0**#:3K>[08`='W?,O-;@ D=5 ;ECXDl\>l ] 1<9B9@ [-h6 ^0]$Q8_D(f76O':) <# ?$$":$B3 I;7D$A %5B*F#$="&/"%$''"!(+-2./1 //% :,97 368$% 0'(/$,/%<$:%0 2="'S<'H=6A2DE@4B!Q.d!m8 h:lPdZC`>Q9?A5 =; U# aBd@d5\LmT'2&3# #& 4)&:0C32-d> xGR*wQ/o`QaZ[CN;:7("64N.M2$Q4+W8-^IcYdF#W0(A; M" L.N9A10+ >1-5 >/*51;!0! '$"- 0>0M2J =?8E/</1%4 '+&#'( !*!$('1EN!\)#I.(/66($3:-W0kK$yV<~X:xi]\&]QO6 -(1I-"9E%$B)G8JDNZ!WMdK$O+1"3LN*X>VAH2&4&+(()-5'B >>(!158>H>EEG>AYOC]N+H.%D*+&..,8M 6F'A>K:5e60h"PL '  0 <N% [+P5B,!>""?''&%&*(!%,(@@EB99 PDZG#V?%G?%F'<*. : 1/ -$1(,- >IP-_Dp XwFe Jb =U %e!S.i32Y+@K>EF+W?)1%,)'>"(;:&:G5 JH%I?'@6F;1e.4g -U!J&- 40E0 \#Y@8:#7$& &( %" !) (5CH9MB?)Z9&i:&i+$U( =&:%>C$I*;006<C8C*:;E$Q/h>u A{AxQsDg$.5+%#!13F @KCAW/(g#0q!7k+EU;;M>#7E) P'!X$*V 8PRFK;UDCU8;/&");1K5o'p&y>j"S^@a;U#,O0%LA$HD.<95=9M?FY8ZWTA(U/"J2!N"F3((I+8)5 '9$!:>*D/U<b.b$O$X$%I!9%52'*"  #. $@4=.4$?&/S1[BU'RO>J?N*,W.-X&'U+/K0HO/AILIUNON B?@8&'F>Q 1^(X'8g.+%V5)J246DAV-$UJ(B*3%(0(#'"0!2* ' !0 ?** &*00564-F==N30.)&/)0,#;<H@+ 6C /6'E:!>=*7H1X2$S*%E. &?9">-< 281=?I#LI.Q+2=19&*2/#< Z:QD MKBC&$+'13'+-*3 &<&JA&,%&!'&-*G9+3I=1BC)5R$T(h+b.T4Q/W*M$0&1%C?+4c/2<Qb# Q5+Y0QM%(0/4CE<@/#:" -%;*%!K1C7@6O"/I3<-A:=5)#)+$+!8OQ/!OLOU7A/+4"2"' &( (0)=)3(&#9.*)")@(3R/,GB%6U,Y1P!5@-35?:,91 @8 1D5X4n+[-U!(Q#=0 3B5- 8&LV \"!M+4G:2>%*?5'(%)% 0+D1R:H%==.=E877& *+  '&6 G!K,FC9A>RCK*I35&*K1."2""1>#N#X*Q*K"E> .*;%#L$MIF(>+B9'A;$$:.@ :B /G!+L"2B >KFK [^&K\5B 8/)!!%@?40>6Q7K0-)" .%@ =!!*%358*D'+H2,L=S7B-A:'D<6:&DE%%!$;>B $B3?+9D G>&70(# C C=B%D:X! G474MHNKQ;Z 0W&LOSE!XQ]\XqCR 66 (% '"#')*08I-[(N0, & *5(61!",698' @95SA-]9Z0J+>)*6,;)A$A. .0 03 ,:35/02<;0 65#)-/7#2 <$@0%O.81$'?CIAIG]C`H_OOZ8 _SfXUbNK?6$;(8%0$''0O&S*D6598 /!8!5"3,3$-%#7< 9"2.H7+V2&S4R-A!;)&/1+&( 0 !)'00=)"4$*3&1 ++'(#*986.1.3 =I@;= G3 F9 ;1?'&+,*8.,J8&9&,311,10D,#M0I4O%9 !-*"-" '-0-2'$/(-&<*-5(8$6#&;$%< :02%%0( *#9!5@>F=;"?C BM%GG _6'N29>6F1B16+6 .J@J-=5=>$-?6$&  ) #9/: CFPE>:9)81,A8E::)"6 *-- 1)< @!=*2!2+&%$! !#3/214$-$/#!-&5<&?E?>@2"H0 <. /!'#*%3;= '60BD=$RH&T4B49G8)/4#6D%<#;!0+8 49 H9"O-1M+9;-$."&! +&,4)>FTFR?Q42!?/$<;;95&.)0". 0 :#<%=& ?& .)""--&"7 #@:#&9E&A:BJMPH'PJH968 *+) #%$, 3(<0CEC6D>SK,A5&E77.5 7 DA)%C*$='/+ ?#@(Q$'C/ 7,#  /2.-=*O 3Q;R-8-&5'".'(%*24 ;<$D)I->, ,5 (3$'"-&@<.+!C"'K19'(&;!9")>#6319*$29/@,%@1<7-,$'%60773!E+O,?185'%,""! &(-4G"M'"H-@( /. *&2029):72.&L..G1;J4IJ/QB&bJQBWS #: !1-- & =B!L S:_BkC(j6V/@'.4 9 &6,4.4%0($.( 0)51))0- *-)%'*!1$4&)A$;>'873:#)"+#!$"'!6*F""K(!G(/%%*2*::-6!.<4*314J38CC?DFLFETC*d9.\/-Y M <0!,-9 <O a_2c9)i+^.A& &:+?+A5=9A)98.A6%%0#0!+ #*#);%5!-&".--,280 :'=!F.B2:5+& ' &#$''!*)453H#)H(1F)/ &'%+(.$(3",.&*(23/(C9*$-4)!>)+?*/0!21(51/4)/)4%7/=(=$%&+3   $$/(6/ <5>?  Jg! i!"le#H*"/"$$*+);C3@?A87E3EQ%@H(J?%/=)*C.4I46B(64869)/ )!"7 :#3& '/%) - (#./;295;7<,A-/-$;92%') *+";!/**(H8$R@)c=*^6W@V@":C"(7674+ K#P[# PG!V.^ -Z$K%%<+()*$!4%$L,1U)*T<8:'1#7 7 ;9#-& )2"8,!*9+L-!V2]+]+ R."I6$;3%)6!&!-;) V.j1 p- h/Y&$M.W (V$C"77'/<# 6/!#E&R!$[#-P*/+6B'&NSWW"S*'D'(34)$6-2##0>% a5l= uAo>g0]#Y*T,T7 E9"LT$:N6(.O$*QU?%/+,*4L$7U0N'N@IW;-R33])/c#0[%M$E:0&/%/,#3 /12'2#/$ ,+ +-,4+2'!%##*$" #)@JE#D"@"'8 +)%.0)284 E*[$ _8`4a>i( f_%R ]BEI#G]-8N6<'.C-#>.:&!5<(-G2H8"?-=*O+&]+(c"#XE!=2 /"'% + (%# !!$,-        -131 *' ! +4 <O$"V0_&dcB 4 8) C-+D%6K..Q/:U05U8,D@/,B/"@%8&77$-J%'B%@'BV[ S"O<9/, !"'!#,*+)% !*. %  !&  ! )+; +7 $' $ .=%9,G,T.!giM -11 2F(L1I+L3 O6)G?.7A&073,8 -N-L$"CDVU#K(@'44%03( $(/+1&'-0!)1#,'!$#' $ #$!(!**+6&@ *> $4 ; #+(%+ *0.0!?*%Q!TB&*/<!J&Y(Y%M2 G2H=G;C5%0%""1$C5N)SIM'=7:$A%B-&$ (  "1:%;(2(5& 6;6 ) + ")$$%- ,(7#7'!&$2$2:!D$B%@@9!" "/*&"("0 60#"0#?*::A4P6Y5c$O%B/I5A--%(!FL! NYWN&@%?*;.?'=*&!# + ,!1 =90.#6#>$9 4 (!!(!$#'-)++83%,.+357 CF(L% J,'<8&$!'!+"$+$ 2("=6;;8 ;DJOES2FB4'"% 'G RUU!L0? 0;1=*?1;15'3( # % *0 0()&:'"D'= 5,"$$!&1/. & 2.&$&,+6?=K%(G'J%!1$"'* $#(2":7DBHB7 8> I: M8 ;4!3 &4 -3 ,' ( 1 GF D/8:3>997,623.33 %& +  %%)%)&3#(0#2)*(&'!31/#-* &%&! ( 85 ;>.9'9E#*:+%7 /$# 32, )9B;"LAK%94 D4G35'-*:!6,-9/1"+-13.*7%59:-AD>4 4305,4).%+ '(*(  ! )(('#2&2&720$+4">-"%+(    % )38' J))I ):0"$4.*'18(E!$71'"#,*1#138+5@160*22-.0)632+&)"(#' '4 8!' +6 55 7$+,"($&+1&   '"*$2$&?1=292'0 ,-6 $%+."$ :! <6B %:&A2.7> 02#9 2#*$ & *+ 2./*!6/(1)+6&(3%$-!)()#$%& 4-% '- 8 :&4+ #'-&- 1=(7*. "+ , $, "%)$!'382801' . -51 !'4 83("0#$02. <(< ; ;".0'%*+(+!',+ 6/4+ 6&/"2"8%0 3-,'  '!'##" "'3!3!%.(&94 9A1; 01 %6 0)2&#(1 +$"(%, 5 7&2" )'")#!', ( . C =6>,(A8>E!9C7??#<(/$*') (/$&% "0"5*3&!+#.)/4+*##$ !$ $$"($(!!(2%$/!88/251/5::751"" +"45$3%," $'"3 /(*)%#%51=' 5# 325;.@!5O5(IB-DK);M4S)%>' 7(/,,1+/0!0)*&!,,!%-(/*'#-4*"  & ), !%%.(<'!8#3 14<=:B==5<%&/7$,08 5!- !(,##03!3%$- 0# 8 A&5A7A5!:7./3$+.21;= 1## $"&(4@,C59C*>&/  "&& !! '$/52#73$;.&=&:6?7F@CB4<-6/ 3& # "! " &!.-C+I'4/"2 4 2<RW-S!5X*+J3->6+.9 6137&+97!38'!:.-+!%/ "7'>'R0Q>FB9@2 13 #+$ !  $$ ',/4',21;<>K!:9)@*J3">3,.,3)B.I4M#7G!"H<"&/ -A $Z[V@5")  #* 0+<.?4:-!%*-1"(#-$       , ANV+(T5 H1?&'  ! /! * /5<@CE D=CBA8I= J;>5308$50 18??3:/64581!0 2NX\V G&B+" #&'#)2%4+)#'!!%('#% )+ "!2>&G(!H+$D& ?&!   -( /# >= DLNXSNGMEO M&C'B#D$%%$ *!"'13 -,!#+ & %  "  !/5&>$<.! $%&3 0* :5AJDZEWD[ =Q44"#5&'*#.2?)&U O ;>3 %. ( B>B B$?$#B"@.(" $!%"%&)0.?(F 420&%!) %!%**$-#B6*$ &55(>119C7P9U0J %H%@+!7/,*/F&0V Z B?%-& ".!B &G #;"C77 6):-.#   !"+(1/%>3K.MK4 61/"$+&+'#$$ /)/,-5/#1 /&" /*%"0C%1864G0C4>$E!L);;3D.2L((Y TP$E2 /73L/I6H?J 81 0 1 //2491.'%"&'2*+% 6,%)9)0<2G*S'Q@ 232&"4(4)1!% %!4% 1!0(1 #" "% $ .#5&+ !8"; ,0(308&A < A&D6 V&b,o p% Y3N8 5<-N ,R4[CQ:>"7&%?&>(I/ I#,!+3 $+5+ 21#40#37'7<4B/N,Q F!/$23&">A2)( ) 2 0, !  " # ! *+  +2$* 0+#17!7568@ [=h. z.9c8XF :D2M+J$T#&Q'M#/4*,+"5%=% M*M-<"$K0-K;5-<>"@ =/;A5M5J*X. L670)'57-7+)-) * $* &%#  (   &$% )% 002@!EE4U P> c2 t7AaI]PAR*XL&A#=$=$26)7.2*>%J3MI"K?-VB0MA:91KN@-:A!5I P' Q5K<F8;.6/""%+ +0(%*$2-)! %#3" 5"0"#( )# # "4;5I"H# K9TUF[9f8k;];]T SQ 9HKB"6'4*0')=/A,K.N;+HN,RW/\<&MG5;+?.5E:P%46>)IT['R3U6J. J'@1&2%"( &%-&..+'!'2 :-<'@8"! $$*$+$. &.  !)48.F (J$"J+;R"\H)v5nAf<V9e2Z8 @< G=8&6)&#&>$O/[1HG+O]+ZT!HP&MC7AB=6OI!QC.:9&V_WQ( I(H' H%C"=)B)1##)<75 &+,0>0G.Q(H 2')* 6 5/.%8&8(5.%F<;D*,=/&E(3E`By-z)s#T+c TH,+" ' 7, =0K>&KI'LX(O_UM,^S6IR8IV41M&=+' G_U X K@C HB'>! - "$&$&# 3 ;&!@16:C. O)M'2'!<0@% A-55 *<7'-(";0S3BH!5R+.R-%>"I=#o3#i-(o)Y#N&,W!C!1'9.2'"$&4"1:!6KBDLU(MPSQQSKI;?. "5- Q&Q L OD=#H?0 /,#&**9AKS'J+#>("G E&>N#!C5&78,7+9 ;+'*&,(I5R<G]!E`%1Y#$N ,D*?E*J;3P2G'-G7/>6'B12<.6>+(A 2%#5*;&;))';?@DD HQ =YUKXI E8/,-,1D" > ;FC>/>!5!350" &8J"R[O&H#AD&G!!J/%;=$/8)2&9""1&2.O8 VHPY?Z-\R D,&:&66.>(33B1:<.EI5@T@6AA59F:9M53 @%;4'%3&D/EHMP IG O? T4>.-(%*%!*"8 @-?* A!!BC#4& !!/".<&F-L5O2"='B >+?8E;8;)8+'(%."! " &/ ?6JQHaD] 0W*I'+H&",!/-1$7,AC9@:CDAIT ;O HK 9:S6B7J 5&9.:@&7&/4/;C> R<`9I<=97 02&*5&;/7#I!EC D )-.*5,/"-4084@!0<:,C3;49DEB .3 ,'%!% "" 0)"'4=DMAc>_0X.J$15"* (%,/ /FMHKP >R5d FP F>V0Q!D)I-)B8C2N7 *, ;1 F7Y4gBXW:I= /.42 :('A!;674#.0#1'0)8($??38<38A2@P)<$ %+?)Q*iIhS JT -K 3?*8%5+,<,6 ()"7-)3!5#6$42 763/ 8D/J"/M>54/'65:<(25;+3* ,!<%)M(:=2:D5^D g:d2 K!A'H"I8R>E4N:RM=R3>*<".:6"5%%82&.+*)? #E !H R#J)2$;=,B3I/R #:,+08? DL]4V-'*63#", 7E! QQx>$lQ3ze/gjR\'H9$B*(*)1-8?4-A+Z!X*U5 L= J>W01&$( Pb7VGRDK*%=1?: AB;7+<B= %+,--4/):<9= -=0C:D#;;#30*,$.%=8!*/*0+ = !? I/M%H"3PEL3>&1%*?* @A NFqB)cJ6lW>ec!K>.E4+( (??(S-J$!P2 RH K>20'*$  ' O#U2gHaGS3G?!:)&4-"7/ 0"  ')1!$H.E5@4G:HF.M?1J9.591)# ## * &.'' A$I1^%2rLm @WEB7S2\>`Ej VR-TI4WG&B>&* 7!?"(X4g?JJ. 4?7D *45 (#3 ?O+_2a7M)H ; !-!*(-%!$=C JII8 H1[:[=$X9/K.+?(M%6!# -"!)8%7+!>12= J P3_-~FzA~0c O %i'l&0g'>`/KU6CD-RK3*."6 6'!Z)Ch!!,2( 5E\!mh[ C D.."  ''."'3c>e+b $Z/T!)D*$642:,/* + 9 *L 7S 8D?9!J-.X;]Da/QZ<)LB&7P&1M#^ )M/R CYNJ L?OK>9 E2#E&@/ L>7D(A7HE]Ge+7c3$VP$Ya,F=8+H;.MJYlhvUy='l; ZT> 6$ );2C1"M/'T9.W8GKS?!i'^)S9MC6%3%1%>D< 7A&;(:+5"*)-988#8>:;8LI?W1#=C>!II?*1'$7!B+->?EQ4XRf[m^i0HU(PZ&6R(-D# 2%B@9I><=C<4`A9[-MVHR.?P,^?!_LG'p<#_1!W5S8!=;1D$<@ (0B#O ,Q:T4:V>7>L)?D=D0(EE';?.520 )/5#;#F$C(KD=:81.,4G0.E0C=/_+ a& M\ Y%/C7?HEEK:UBk"NX,RT>>i18e)'h+ X$3',R-P]< I!#N5c&m;n (xa/b3t<"z& [)(BE(;U9H)574Q*NEIN5M##[.2L7;494'7%7E++OFTJBA,<<"%.**#(F#N,F(XN'6. 1"4*,( )A-.D=.AG**HD&V$5Q0/>I8*%;1%=K&:]%;T2E`66Y(5i/,m.R#>+H3=; J; M(Sg!r/s/\!R4W4]3M>%!O+MCPEJ2%='970-+!2= "M.B&IH,7/-/+/# /"'C$*E%)A*$0<-:5>)9@6;0K@#!:3/7 /C"6S0(f3,j(2X0`,"I : F-8: F5 @0P]Eb>[4I5_3c7F( '#'$-]%`&*W"1H$CR/D;-?.;!=( "$)$$C#$S9G4 D% M.97+4$2"4+>1<#61&>!D,2)% :%<"/ 1%='#=/10@0"B0/<0D2!V0"'*%8'M#/\-']#)H%!J0FI"<)23 C;BDJ1K>\=!W8\>]4"e4,"+.'7'0K4K5N!DI*UC3PG5UR#::0%) 0#(1,':)#8&G)O)C0'!$ ( "3/-.(%)#-#$(00 0 4"C)I+D)>"H0DD/$T$V1"2 ,",1 #A0F-B/9&C%B!?A "(4/1@9BAf8Q7b;X1O"*,8A"LS,<`<`B`!SU+\I2[U6U\$FK 4=* " %#'#6;E#S Q+)!,$,7*!7"$-'(.; 97#S&Z*WH 3C"46$F,$O0@4* &#.,*0/;"+71 '+6/<&3 $ ).&1-CEI6\.W!C#'2'%H@#R^Bg5dLXP?XJ-_X$PR P>@;7$*$%$/DG&I), 132#2'.3++9&!-&+#,(0" A,]0]%J%?'26!1,71A<3- '(),(-#!*'/-1*"<$ !"!#*."E PC $0 FD"CP6a6h*KY.MG(I8BR ZTKD!F>41-4'+-/ # ,('6,A"-9B@=?05/,'4/2,93,*)*++9 H(Y(T A&5*(.1,3.5- *$3"&' '" (-#523&,*3$7;% " %%"<"/)#*%D@;9!8G'NM15@3?A#)3&2<' 7!>/G73AMGIH)C1;-"5'+# . &/!0%? 60()S,%R4(4:)F(254#PN1I/'B#41(+7*I3A$F=,6F#M5:F9SGWDO:7#/.11"2-&5%#&.&15: H.H, G(8,$/ '&"'0&3 "88!< >:SLXO"TJ)= '3%+ 9 4&& #:-DG1"8.%a<+Z7(8(';+0A R, V>L9 <3.!/3( I'E5I+= 0&4(E19<%'G&M*P, B* 1++6-(*!4'&L @-@?J!QK!UQ TGF *6 4* ' "-$5#;6E- S0(M2*m<-]3(I)D*$@Q.N3.D.0A)5": 69H4G*A180"&# $5 1=-:F($>8P8I7;7-%(/&!14::>OV*S0@. "$ 0#4'+'-4#80Q$ B06D4KS/MC)M !R U R *D+6!"- 4#>2 J%(T8'i90j:$o,I/21)>1B08K45944 )? +>3134&'%"$1++++%<9&F.#D+)A 1B):;0%+.0!3"? ;"C'S &N3"J04( % 2# .( 01$%.!2( )82R2+H8?FDM@@R 5P +]!U"[O!94&1-*9#E0jj)"r3*y-i,"S/!42<(0#04%FE/DD2F !>6%9(4"#5(),-.<&='*<(/7$82"=' 8 (6*2.**)')&"#1&:'H4Q/N*3Y+1R#*6 * "1."./$,.26!9-693FB7YEPTBR6R.X%WF9!0 014* @,F* b4s% ez'h,H(#1)$)++15+5<>J?Y*N >9(;26(8/+/%8*B)-D-*="0<B$?"0 %/#,*"#*.'-2 4D6M 1M*'@;4?-=1!=1?8@,,73 A/ !4$$"##!(. &-,&15 5F2E 9>$D:&B.$5!-+%-.24>17)!*/<$AG JB^Ao>a;]B OD>H$M C &> <5X+]+_"^"_"(]".p)Q&0N8"=3&<)"#%%, *3);"< .4#D:U<e9l2*]4(Z9&I=%?; 7<4=SJ r>z6o0 e#X"0f!1[5M:5I@;:B>)?2)8>'/D.C/48"30/A21L+Y)N8G$=E&KG.I5;E17F4?0E#;*:4 ))"# #.$/(' ,7(3101 ,=+5 23)- .,1),4'-'*"C+Q-^)bh&']+)Q2+CA+*G(>/ A4ZIl?~D{@z.p!^!6V9[7)N<9K\0?O61;C(.K,NI-;-7&E)"V"U(H6B @?/B4?J+>A$;H%A"AA&2-%'!)%% 03 9//)<*<"$!*'+/( -&# .GN"SP-K*$>+(07+-D:,:G3 X4 ]4 n=p;r#p^ 1d8*Z>,VG/F](JN7IMI=9P-(R"KD$<)?)0J0F&G.B;<2L1:L+2H'*G'%=&55'/& $ #),+!&+$51 #+&#$+" + 7 ? <6!5) 2* #3$524N*T) a% `" [$Xe d0a>G@MQF^+C^;@VG+"I'$U/q)jm QK+S6 R9/D3\$.^+>a7>X<:QF.5I/&D(<.E>&<=.1:1'<8 4$<O "N<"0%-% '  " *(# #'1! "      ! 3/)+ %! +*607)P-]/g)g%S2 3<=>;4HXc'c2&c;1\H-IE-7C%;<33@($B,#@&4B J< ,&1""*$    #$&+&.1$#"#%  #   ' 5! / +'# ( 4 #,,+ /$  %& &/-(8.F+$W$%P( 9/2<6? OOV) ](t6"k? WC%B?#8.&%0"&,*C!FH 40 3 6*!1#$  $)/&,+ /0*(!"%'" !%'*$ 7" 85 ",+.< $6 &; ;#5!&  !0,*#%..%14,'.+!0%2 :&?1I:R=Q#e,i8SC#9:)-!1%/D6E&LKI#:7 .8.2",+#!! ) +) .; .(!%!%)" ) ,(&+83 .(%#'/:7&F&+G%/>*+*,( <8,!$&) +78>6AJIKK.LL<$3(#/,4I I NE.46A.I*= 04'7$0 ',%#393 )"&(&!)$3-'!& .)& -7:4E#J +C%4!, 1 5.#*/-$+'8?A @?;9:3T>F65>"3 *=(>$7"#@C79CC.AC4;,5)6,( 2+6&8!  * (-2"$08'2,$+.. "    *:4 20 0)(1(-1%I E>'-$$!))<6B0>CK "E+26/-//0%2)'6*%C8'$*'":2'?90@65659,+8"'3+.2),&.&'+# '7-,#1-%)*'*5;:5 2' % !%(!)(!- $3 (/008#!56 6 -!" $ / 18 =$H%%;09 =+80-3*B*3,.&%-6481$;),,".< 543-4#)&!!'$/!/)(4.( *"# ,% *+ &ADFB8 !0*-(- $ ##) +//1 =) 0".*1 &)   23;=5!93/4'5.8$G;3%.7)7*3,1543 4+0%#5'4&8.2 8, 1"&, # .'%* (') % " ! *' %.= E G"I(B8325'4"%$&%'  #'6)9-.$(" # $& %, -# ( 3&7!2D0/;>.8?1'B9?92,)-)"(0*#$+3'2*'/ %4%'&-!3)*)!&("! $'  *)#)8C H7A391>CF@37* '/--/!($'7*3)'!-(%*%%3 2 & #.,3 999M632J0/O0/Z% J& E3-%40$935/5"1($&-&$##, . %1)4$',(<8( ! ' !#""*("*-/,%!3641A?E$=K6C%78..$?8 1 # $+"1234'1 8@>#&1 6  G!P-'I#4P58?200<-3;,#H(C.!-0/)84:41P!#;:*-)## 3#>!J0M==L,D*2" #%"$$+$.4%8 *4+&.65E 9FJF;C59#3A@3 )"* /1,>-L#M&B$$+!"8)B-U 6T'-Y1,@37-2(&3" 8+)62">A)CM6'F=71) 24 '+ '$ 6F &N8UGHF1=/21%)" &"  &  $,0:@A%22?9H=$I>=;40&4D;''&&/<44LDS*9M,/:".(- #'% B%5LBS":V*.]1,D'-&1-7E=j /q%T-F #.'&! $%9#'&=2E7H::0 )01 .   '-,9(L/V2(S2D5A3411% & 6%<)E5Q$?U0BR659&F%'E2&;2KHP$B\(2O+E9 '$ /.5 ATAq&hhF4$' *)*'+2.!01%66//$.0" -    -= S!_+!R2P/L21/*'   )48 8C=VIH!AH$CC'=9+L?0F4$,$$0(78!A8=B#07.B .7/<,M! H 0\+bjh6H6 4&  ' 5!/+(4%+09(.8*'33( // (& "$  3JQ$S0I-@&4. ' -(?3 FNLOZYLV$FE)JA0B5612.2.-(!CF"=0:72=<:? 4B*!I!Z%U%*T+/J0!C0,+, %0#++).-@8+*6(%00* /- & !     - 9'M'L$D&8&,%  *&71 DMESN`!B]*7.:,H "Q*]&Z 4;>!4'>#)"'+.0836'014>89@QY K-)(.5 * (" ++&'0 3$$ *-,/ $#+"6#"65!<)'<&'A(>40 *&B+ S1g&`)K2L@1   ,#*1+ '8:5 16BN3 `/y+ q:_AKF>O:_,ludS'?'"+!).**5*,G76C2D.6K&L"= Q^QY! F!2))*% !"  #*  !*$"!  *",#7$$!" '4*5&#> #?)D I=n$ y7{MqNWL BS#AN&P" Z$R%F$ :% 7,**7-62?? E>1R:AEDN1@P&#;,!D##UQU D(D$9 3 - ( +(0 $ -)#( (+#  -/ ,%(( ," -' *7,?))?%B4B>>Q0c@~LjL^J_Q.5?.;<8D!OK K&I% @ J: :+ #!)$ )0-0&/47,8(65!*' 1'2/ 44()6'*  $ (3, 3:#)?$F7KW?`0!WMZBd0c< UM3Q J*A0!:16"'?(<"G3":R&?`3EX"DR2JF#HD >T PB0:D[W KPKN# H H$:&% .; >5#2(=,?->(C(D79)< 7!7-43*?&;* +$@-!::".;% P'-O#H9$m4dB!d?Q7_+.n!K. <*/($!$# &*."7##?>(;K-Cf"Gb&RWWT#JS#MR2TE0+N!T,cYM JXLL!9/1$.01(!6)(F'F(<.?&= F' P. A'"@+5;6@1C'*E 07'D>%BM.+R+&D)%<(5?'M7,Y?6f9-L73f)jE :,%'- ".!+'3)->.=WSVOK]PMOVR;G$G 0 94 O9Q1Q FH%J$+G#A -!&' (3')/"6%7E'O*W-$V.G!J)]$&].+H@1E9%@CAB">A,"; D%MA%IU//X6*T.&F&+S2(B9;EAO*:K7?S!J%&@(&.9(9?%=*(3-%4" 5& * 2&C7I?EGMK[W^XKI,E 5&9>1A) :&I'>%<%@(@$?$7/ 5/.3()%?%M""Q,&d7h9U-U2#[+(T=.SG(4E?9"=8$>5.$ !D3MB(BI)5N+5L&*M0#M-48.J35AA:#A5%,:=.5@>=I/;J2=: ?1:&F?5!>&?8@>>JKV UVPE@I)A")3"11 2%C#@%G#,I.(P&H- <% 2. !(, #1(#:5#DG*SPQHM:J/ P;#RE%?K5B=/B-7 # ** 9<=PBU4T?N)BL'6.'74= B,%H<4.5>KH JE 6Y5LE-B#K1D1=-<3951=HLJWH\GYNGP)&H.; <(::(A"ANTVI$+#$')!@%&P6TDUMIO9H=GCJK 4H2: 74@;)4(%")2 'J.] ?Q"7T(CN HG1@#/6-#5"/?K;G@KE_?T JMH2!K.K=P0E-S; 7"(1<>OAaE fB qRh]RT5E /2&-$/+?C@#MC<##' *0/@!QL$P2I>JGP@N9G 64"E,G##7M!,\1:L,?SHGC&B5+L1I!3.6:AD&@ $I.b %M2i@z[s] ccKU7>+5(#,$8(5-5-:/"-3 #;8 "A=@)?.\5`:_>X +I!K$GN"2M8A2<0&6."D(3>:A@?J?#R-F.N' [7PE A@HG $8J%W#Ac)QO[H N2N.X= M7Z Q$ >' * .6 B)b2tIv_\] EU 9?0;"7*(-,=7/ ,&"1!7#BOINII([1\-h3\'#A0IQV&L7K0B('##.)#4<-Y(]R[)cO\T.WO ZZ..@-U!@c(ROV9^'^/ T0 W.U- E/-+ $ 77'L6T8l9tSa`F^;K!8@&:,@591&>;!&4@ 'I1Y%R B")C)G M&[#`"K77:B ACI-I5@4+"0# ,!<#[ ]$di@"cQ1c_4bpVB10;4.=IV W:\% ]]#hPB)4& %%H6R;Q@[3]8W@M@",(8(!:,'$ )$54H#4=-B!59'$%6!.+R*_>]OUG(pH>hWBX^ ;L5(2 2) M'V[* _( b: e;U+8($,+%"$ 0&F5OK\K^8_% R*!B%%@$07++3) 8,>&0%4D$A/K0B0<50H7BK)4B25 7#/6') ,8&?0)>G"&E#&U" c3%V.3K42;&%? 0MQWDcfh5wO8XH$MF20,/ #C_{l/l+dFI8 I!=&"-7/?.@4K<Y4a/b$ W!I$A"(7$ %'-,"(0;>LDQ8 U3R4\-3X,?R2!L5G$<" ' 1 J LG9@HSS%,^(h( o-'s/$\!2U0R)^*i,n/,a%/O+*N7V1#I#!)./0LT'j#l9 @7$@))K#(\&h$q& ~/m#3N 8H:CAaT_&ZB3VA94+7a/N/a0+ u s.b3I4($,# #!D-(\D!f=i.h+f!ov"d8[D BP 3H&;+:U$Z*d J_ORV0$a"*k-d&4V?#WE\EW8$:5#3 E+^,g.j.&N;-6)$E*&4;0+A 9T$L2GCFCG*A6E/KD4S; O2K%V)m=$4 z1$t1"oV!7,4.$)"6(K#b1&](e< ]`##i,g[0[JBP*V K 8 H(W(W8a4TE4L3-Z!1g$4[20K=,FA&K79M.OH'1@@D>:Q<S80E=(?=*K/7314"8I0- 62I?O9$?E29UE-?96 M,R!aCY|K5s-3z,"&kA1#$6/CHVD&N41W5%Z4`2m#^Y$W$%=7"2RRLW N&\*Q/S*E7+,D"3F8P09?G5>_45U#2I'NQ!B(E>MLM[QQO$TK0_B2BG3:503'+!<2$58A2 H>"Z>?S;Q; g2 c%Z1_/uHt<-r-3~4(x2e);2."  ."N:!aE%`P+^N1`B"T;O'(U+O%-O#1?+/ 8,"H#H\ `"Z#]+` $B'=!#'-19-,;3G;6T1)a+ X'K!FE&@2%O7ZP_#]`*S]5PS9S[9LkA?]@$6'- JH! DJ%,` i0e%a*],Z>~ /&b0+e3'N*q4G;2Q9J )3>Tf8)gF+cI*WE%A5 99!;7+<05;>+%:.0?!-Y#b %^"RS !Q%==#+73'314:,7O)"K&> :$,*81>(F*U C\)SO>EQCH\6IdC-D(j?I/+,>2 Q? M.[' j% , + v(k6`!!r%a5.YA(YGKD6[AO+Y9@?#AQ(H;'J;%@E;< -J-.D/,-;#HF(8"K(.P&Z*Y#YR?'60%/!()0-34/7><&* &1,-!1*F20 2/+=$0M7;]E4nJ8g70aGxOpIO/.3D7 HD G<[,~+76k?eH%q5p0(Y1F6/O&U'WA\=T1:^,F;#=%@'I'K)%?..;#DE' :-D/'RW,(E"%U P/G/1"!1',&408)0 "&# "7 *#'5658WC.m?*e2%P>iKh>I%/?@S LRCFVMwQ yL/zOeMvE'|:^C&?06:MX(J9Y7FZDI?>B09R-> - /41/0Q1W"3C/"G4=<)?C!:)>,'H#P/%;" P.P9@=$&&.01)/+0-2$/ 4!B.E$B?2S3'_."$&+ (0+,C-/W(/Z.%P1)N5K4H'&@7V D`7[UY`](e_%fYle"r`lS#:7($-*#1!-A" .$?,>%F+0>.@3';$*9303+;/ $= N!DBUHU[P]D[M:;'#9C%QZ(Dc2Ck/Mc.K@%QA4IG7JJ.F5$?) ?8 &053.,&#E!2E%(=403:,.3 1-3$):"$3! $ '/20L!O&E,=/*:180/<8.@G$ C&$D"4.32.: .A7#07*=)60> C5$-2$76(-C*J9U,"P(+P*'5J:)F^1Hd<D?=:,8D*AK<6-;6>* 7C. (%.: B:G9:32@>A:>6,.3&"-.', .%2" ),> M M- ?$0-*-'0'&54!B<,9C0M(1H!D04& 9&86!$5+CO K(d4J9 :,<'$78>DA'?%F+&>,'!2"('87+:!1. +-1 (&.0%G+BIE V:A).-4(!'#!*)4&A%&'?'"J6+<=6E21L@*=P:Q/ N71@9./) &!,, 9&!>*2&.CL%%XCI:+MI#DL/5= BMIYKJ<0@'0))!00)'?C= EIOV"F .- >8(#(&$1 0 5;:-'= Z WEC @385 *!"$"  '%'-C$6D<4h4(\ N";, 'BS. V 0O<> 8B:&31/878*1!0'"2+-/;J/9R1/G/AJ)FS?D ?733 '$!0)9!#F!N"@G IP%U*G+ !. 7:" &(1/ E2 &5,J 1S ,X#CL #O.A&.#!"$,, </A-8U=2a?)hN,4.'9?4I IN LB<9@@":*?)5&"(+7 $7$*=,=8,J8&P3,>)8=3<&7)0&#.$6*IIJO U L%I';%" (4'%%*D+'4;8HLXCM-L 1X%U MC/("' #!,$<'F1S.1^5/l#&c$M).82.6 ? 8G F@EN 3L*A 4%;(E;342 @K(C#0H#:883A($=26#?!6$*")'0"*=%KO%K)Q-+G--= *-' )+2&'%".'.;/D8TGMSLRAF8W,UH L9$$)=4+0M$#M)V3U#0`(X'P =! #/*C8J:@9T3S)K>!B +O'$E&#;:!B%J1N((B74@3<.8#.3 0-)/(1#0,$,@(P +Q4M&926F:C3G9Q4T4/[.1a.f+Y)(M/ 4 ")./)>=,EC#2>2P4J!$E)P,U=R#8M4(0;)E, F&;./A+8 3+#*.'326#);,?1H#7@(<1,=(,1! %*.+28 =:!5'); 4D AGT;e<#cA*iF._KUNCT 'N FC8[,]&^!T_#/f(1a1c(?R;B:'5"02 4;4D1MM(8I%)F,J(O%_:Y7]'?Z6->'1FK 0PEEfAo@f.^_.g!1h;PC@B9Q&-I9#9@0M6L4M=0N6D)"D!R%T7Y3T&4R:0CE-;C27:*:&"6344 + )&(($#(04) >?';*1$1&4'0266/60<.7,8()6@; S7\'"d/+c>-jB-ZODL$A&> >KNO\@pMmD!o(Y`'?PD@PSMN"I>,,:C-4I5-<9$$4:!=1"$"' ! #( 0 4, 19&=$-"#- -;-<-2'9+,"*7*GSP6%N?&PA(BEAL (J&7B9WI T=b?"j.'f b!i;2]ROUMQ.IQ3EYCBOH:?V"(QMP(L@.F K&F (<0;-30:4.A3&-5'+#%+$"&/%)1#:1 &   /6*!)!($",!,? ED.E<F4 ?G0FI0:,>/$`/m(ao #g"e7!fI[XPW"A^(EW7AS)d>9[A6LH6@P%5D%C$F3%6/:1-7:@,#-4'4"'%!#'!  '  %% ! ". % .+ 0 *& !  " "%4%51 2&+;$$/2:0Y4(_?*`0%_)$MD >NPT NP/B(X, l>j=oJ4cUBPH(:8': 4./20';/(<(."(0 )$ #!  !!   &   '*/ 0-% ## .'+#  % 6 ,$"' ))-3#89-M9;T.7H09=:J 7"%.%$'/%0"0 #2:>0S+1e3z6t+-V*!;2*2",'-./94"3#6'85 ."!& "## !"&'$ ! ! +."#','-$43) '&)5 !8 (4 " $ %$1 18%.2'! &!%"( 5'>2@EE,H`(%`) _,N8)6*-*3 .;. 9/12641;<6D"A$*$ ! -(67" '0 0(% ' -0)5$ 6*,&'' (81$+"( 9 D%?19-!05&829=5,1%/&($,<0J'3:9O4H@.@+I%C= <)%'+ 0!3:%H"R&=+(+ (/'>@&!2!#%$!!)7!'T55J:ADII58P+@*4/-2*9 D!E # # "  "1%*)3.3,6#2 . ((12"0&! % /)2.-,% EH J'11 ")!%&,)%6!E)!G,!B*);*,+2(@&;)9.<0*4&H%,O*;I-=1.@'*:)6#8#2+/ 4%!&!!   # '/*$+.'?FH@ B 7  &$$ &  !) .&0!- 7>?)" ( G%!G+,K%.B"4-"4$.!,5055/*79+./;3#A-*A)33!.-":)4(>- !)-  %$%"/ #-*-':0CN S"LD&9,& "     " +,46*1!6+#" +!"# $/";5*A61P45> ?/;+":+&4(77.$.*92(: 75A,!6(.))&2)5&9"0 $ (-( ")$$    #"!0#? $N!UJ!I8601$2$ %&%1% 5*/-1.) (( "373*,#-.--60+7;998C3,A,<<8+;16$!/"6,7*:9-7'/(5,$)"$*!(/2!"##'   #)&/%0=*M%Q .@,5$?2=35,+ ## &$ ,,' 7660"*(%/"#-(= A95*#%0/!:=19?336916>-"># 4 62>0-62+8.% )'3'>)-!$/%31)"6 8./?; ,   ##&%%"-3+*5:1=1,3:!,G1N/G$4,44*") '2 19/9=##E(=4 -=</(69=;A ;W-=?6-F=1=C!!9++/1.:7,=L1@K2396191)2/. <.J(&K1LDAD& A-   (# "# "$#67)52.* #,-0?(5M(:N .F(:5A> #9 %&'*5&98$H,0Y)$L%.>- %*+#"6-.?3 CBAP+BR186,/60.92"%0.3#;G43Z<,[@"@35#"3'2/ +03$E/O7UG/"A->+.+ ' #$! ($'2; > $0.H!3J+7O'7F)94!)?N#A&3!!&4 <A$&X*9_&7^28?-&%3- .016+LM XR$KV./N"65#2!)",7 BPMh&7q3!e3E'+"+%*%#'2'#6)#:0+632*-+!0-  . ! #/,"4? BB!:D AE+D; 4BH$; "#(4 B!O/X"7^6AZA9821.4)4&.-#FLQK+IN/>AC@4,$+17EJgOw9s"jJ0!%"(.-%5*+=:)7'&3(!.&0 ) (  ",$$1 G(J9$D:%<6 @2.2&1' -%: -N2R:I%AM/DF612=;.65(0'2'*0C5E9 6C 8:9?32$57!2H+0T-Hn*Gq"+w.!l5!L43- $", $,/4#6.56%1?&.4) %,#') & ") #  1@!G*$T4(M59: 57"*  03< 4F8Y B`'BR7?K8?N:@9=+'3'3(*F-9+734 &++25/<;39E#3` 8e&1@11&( $,-( "  $'  /?G'!M8+A8#:@/=,/  !2(, 0@6K>S18Y:?M0:F4985$6/ 0/,,G A 5&442=/82A6M"4R%5`'6W'NPIA9)!#$%+!( &-+)#.1-J+M*;) 6" 0 05%  !  -: ?$;3>C7H,E,, !  +!74=4@5I1:V>1A20:21///0.19 *CM A%LP 9I$:'7(L$.Z%9Q 7T#IOC6>$((#+#!3!0 "*.5$,,%5(D'P,N+=# 6'50 '( +' #  " $ 3DH0:58G 0O A*1'#%9"A*9"0=+=E$/?2+67,-#'')-(='G# SM+ LL?H0I#X(q+b:M-:"63 C+?$(%"2'0") /5"" 28G%=' @'M/H.)+1#4 0  ", !   % > B2 /.8:*9 .+!,/%53%'.4 ;"3$*34B*:+*,,2 0* =/ O, Z+F68H8X '`w&u "g'R$B+%2"'/'"+2&(*1+0.9FSRC?@&<'# + )(() - '    !5 3/ 1% ) #31(=4'%*   %#% '*1.6(7"2 =%O) a7aV.UM!L\9^.[kx!eP$B,,+ $-/(>.70&+%.D"V["WP F(;$$ !%+ ! %'(//&%! !/-"5-!)# ! "%./$,0(8:._;iXlkh_]h"H\9U"ce#`.P'7*%(! % "1.!=0A2@=9G'?(*9 Q!X*"a.&Q,L(!F!-' !     . 1,"+'*, +)  %#1*;& 1" * (%  *!"'1!12 5.104UOf_bh`pg` _N AW5U(G0F4'G7.//3)/6($:0.3=7@@>E;CE4?15%(,$=8E"^&,Z+K# ? 7 6 .+$!! ,.2 /,-76.!8/9->&,*<$=+ ="@! 3. (/ $'  .-2'*3'9;(&4!-5(23=G UTYnWe bNnMIN5S/D79@#.C<#6=!D&'<<'2> 8PKJKAGM!KI*D%#/54 /? 1M@GKETO"YHLS3JB$3A'O.S!R CLT Q G%9'!#'47/09C&?&D B!K(%J"#I%"E2A?>B?< :?., +$773?F7->3=3G. G),F*NF1RF*NI'V'O.M<:9*,0@:<))$;'B,7"4"<. := ;<RGRAeP[Z>J!N &C;2M7P+K$LQ!U"PI9%%"*##1%#20' "@!'Q"!QY/X/#S,W.+Q;*@A?C"E=I>@4:#0 %& 241A8:*?@C:>0&N2;J3D26E,>C+7>PE&(,4QFcO_SKU7O7E24 0; 2. 64A$ >=&">&@+ 7'%/+5+*$( )"()L#'Z1"`7"e< ]<0Z7-\H-TZDUN?.S.J/F$/&$00:.;9'K73O.3F0/@'?>)G#9A'H3 K?<&I+2D+A0=3"D !9 C3 F0 7*<6@.0A=$98"UF [Qc]cSKWFN?K31:- H!LE-D"S)G)9-,-4$/"*8'8H'JM`O aGX5"]D ZUQ\7OL:$W7K5:.(($%/5,:-/G!=GUB'J5=4)8';+%L%/N4=2;8;G=6S7C 57AA GBLD>=<(30!2,$;F'TUjVkV ^`NV!9V+)?(&>$3>/HER"W$S@,%*(! . F%RFR*SM^KWH PSKKFE6N)9S"PBJ540"!2)DBI08J'E70R7R4O15*)')@#4;&0! 3"65I8JLCIB7?<R> @DE7H+ >%&!+5%9!(:&B 5S,O(9& /+ ) 0:I$O7OMFQaCa 6=< 99*U)W+YK] WX QG R*S0 I4E4!E= $)6,/<)]/~C~\kil^ND39) *%+536!5 4-* $.:G JT#Q K '\ 9m/r/]!%G$!\[U%L4E'<901+ #" #+,';$V2pic0_N/UP6OBH59>O1PR]gSdA q! \&T+ O#S$A-,4 2&;96O3f4yMbkd UR?;!4. !'6)1!$>*"9/!8(3$5%,/=L%W&U# OG U a$g%"W.(D0-C GJ94?9910;" 2-"$!+=e p$lY1]Q-fY9RRIA!5D#A :EWLf2j g/R3e6!V)R.F>.@ ,,2/"=8TBg9h7jOYJ L; >0)D,%+ .2!4/ :384#0(1**0$+ ?1M$/Z'"F&(- -0 .D-RN&)I/57+)"5:B&@/575&?$<7(-50#+'!Y+g<XEj?"oS:a]fQ"BC3B20 5#X2a*d1Y= g1_/W!L)"H7*$ B$J:,OF(bFd;a5 f% c5 M*%F'0;)(49099,23$!64%/?2F69.?>1:88<+?";" <$6, /&0(-,& C66@ "SL*7F(g7o&!l"v%]?,=#%%$,"''#,+,A-3B-H/$L*Q#J,N)*N!M%R(L! < ,""( G \.T= .>'CD?E;j6Iu5]a$hd+sH-J9 ! -R#jr 9b;#K48" ((B6"UKpFg>e:d( |{j0 T57H49 #8)#/ 8)B'Y*/S)IOSMR:[%a#`-T/-T?QFK1) %5Oid-I<%7?.%B!%R&,S0/\9\+$M1J>RGSKY[c%`Y3gCI:J+W<[*,v*%swj2?2&,/'&2$ (9&UI5gW>yS7nPh; a p yo;W[ Ab -WN6 B#(bW)S.K=8J( X)d(_'1UAIQM>"H5"0:,;0! :(F:Y0&\,88*<.$0? 61!.+&)3;227F;WI@LSI[]UTZ>AZ."f>5|:;()xr$ZG12&%,'-4)4/6S,2`C4i>(n4 m2 p!m f$`IP`5d!'vd!P)Pe!X*`1W61B+0V3X/T+R2(O?C<&>D$)R(K:'7 #+ CAQ@*==25,=.8G&;=!D*#31-'/)6/ M* A. >2>5[@ `8 Yn$'-47+|*%!$f!Q'.& 3& '6 =P$WK/a5"m2 j1^+ N_(b"#e:(:K12j%f%V#(dg #Z*T,W+G =,)@1C :D /F.1I<(D=*>B**L!%J3K&%>6<A;:J-9L0FI7R?@E>BD>>"0C29B 3 CW HZ$U, \& X k+|~+n" 0"1#5_>F;#%% .+4?!JO#`Q$`Db2c2 U-S*Q6G%-B+71M?g7Z(lu !o,Q/O+A08 ,*$.-/1(',*>3+H'*M2!>!F%A'5.?>J@U#MZ?MUFFZ=RPMAe[4]MGB,-'J>( D,X]/ o$s rn!j,/ml*~05&|61SL#$N#9-+ L4aL aQlO^:U.D.#L-C5G;:'?<=K,-i or"[+_&M!B:#/"!*,&.A&7"8!(-'8..0'"7&<(CI4MOJ9UNAhBChM0p_$r\dN%H.8 ?7N:f8v<3/7`7m+$m\(]A j@*]W1&g+!X#+O3)&4$A3 K?`Q _L O9=:%3>.A:-9A6D,/RGEP(&^&j$e"cd*#Q&F8!+%%2 "8-%# &%9%$I '')*B4=?KM4dP6nB-iO&k^ y`g6P=I 4L RMtV|QEQt@lO%|>v+!S*:@+6H+1R,Q3"\,B`,AD8;!=P-<)C3 EP DD/G'O&1?4:37/$>-R WC=O(#Z #b2V1_,#`5%F2><*+!1.3 1- ! -553*I-*X''+!&*)17*LC0[E%hK-YH0eX(r*Y;E)O:`RduWwXS&uZ]\!;8b1(A&7=O?)Q6U3&X.Ho#OZPU;RN>3$- -+$#)#3-6<+12%";,2B8H<8W'/*0$+)%+ "(*#2L!>M04O9)@F1O0S>I1C0i-y2jUh!olp^T\"lm&~hxFC8@6/G/?81C1&O(I[$_b7/(=$$3&**!14'I9 I7!83A?FF854$'2, E&6 0,#-.-&=9,;D6IJE2KW+="/>!8(!< 5 B4L:+G56:5 '7 <>;:;A 0a mg@fO](La`qeolqZb5,;6$:7A:A\35U,DN.RSFPH\T6-d%'Z'D00* ;(LD FL*S\2ISG*:C".(,).%&((+#,71'40.:-?/6%2,;#%=!B" >'4)6"8-<>':U1:_9/OE(H=$J @9H))T,$M$H"8#. F) M5AA2W eh(S2CYSflaX_AO&#*75 4DH6HbCJVH%//<3*80867"< :3!!,/#2;$. ) 7 =.G<#.I16O;0A<7; @#&M"B'"815K#/T FH=!FS _I,=H%(L$[,(E"HR^@ `G$QJ!4H,35*0CI=EETHH\FAVT4(H=,J5!E"D ?"F D&+<2+<-,<436;&H0"L:M; B*8;@6,@866041:3 2/02$.) .& 9@ 6251#$6/*<2'-2%:"H'>,*808C0OS; @0T0[! `J B2/: @/!3PB ZQ$OE'8:1&"0"3A"*B6@C?MH5HJ:I=%??%8.&+%38F#K&%A-&8#'<+#=1S(Z?Q@@0?:C:'J&8D5?.9 />&:!)=(963>D! B%:0:0($;,*#+ 7@(*;0=71<&MB#13;=L9W1 M68+9*16 0 9H7K$ '>""H%@7 6 <"M# K. ?#/$#-*:"> 4<".?/A.69-,= 7JE3.F*&K%%7",7+=%D 7 F 9PRI!1+ @#>' 2 6*G(D 0/#J X)E "I9 (5:,=0 .50+ ' 3%+.%98)(W1\#!WA*1@ D P1P ;J.FA4%*)%%$, 3'*+#4%2<7G;8[4=T/9P%GHIAD 4CF<"#%#0#!<'8"%4); 6(3 O'Z.S"?J ?16<,)0*!%$#'6-(=E40Y&[MG* +66,@ DBVFEG&L=7"52"$9BE(-A%2@,J;)S6-E-/9 ;=9:.8) .$1#A!U#Q HJD >B2#&&(%+"  .,'"52H@M>I"3F 3O 1S /L%="2)#&-1"4,3N.3S'4JZ"O,2! &( 4 4< IM XNHQ-QE!C#J =,3A$IM#%J'*E(,<$?<(?%&1 )9#:02!$!%D#D"U QJ'B#< "7"(!*%/%0 ,#80>?PJ!MEL>=G3M)KG'?6)8/10F!#C(,L"AR9MQEB+% 93>;I?R9W%^%N$O#,O#Z,$FH&M$ S$P2P1@7=3& -4-#(4+,/(2!*NT&O 1J +:/$-::-:/;&7 ".#""8,.!>2$F2 PA#XRZGOJG?.D>$2<*?F/2>7#@%)H&3S4Pc%I C":!.0'=9A<8@%3M5MZ.c -_":b34KF/G#O$R%C.=32/!,$&,"*'33.$?/=3>#,:+3,(5 +/40A 3? /A (@81 &5"91<F0+O2.U?'`KgE`OCR /UR&I :6>(T+_#d.b `$h+V$?0%0"..)5634B?,?O$I+Q"\#c#.j#5i/(]7!CB"$;DB,4"+1." ,%6'!,!)92'0)42*))";"7/#/:.@3?4G/H*C&<0,8 (AC;%T,&\3&c< dDfFUA?G$[[.NC>J5%P' amm.r2^NQ<@D(.=3:; 2F&C7:24C(,J'URa$p"#j(!U:"J@$*A+3"3).2!#0 %..+!,(* 0#2#8.:6#)"-%-)((>1=".F!2E&+M$+P#C-09 +==< I(&P5$\I iJbMLN 0Q U+X?XLHQ4,X)-an*wDhNFs RO1PEIR%C?$)>#D6N,N O"X#^(&T4&?E#7E3,$$(""#0&&,,% *# ,! ,-1554#* & % )!2&)B(%H0.H:1D;2D/35%1).2+B$G5RIONLR LV*K;=DMH U7W+ ab].WLNe#Hp*Dk0Jl8NgI=fH3YG@C <C/> F;D1G-F4J)?5'/<.3)'&'! *'&#%  $+ +0,  !!1%7%A3 ?8+6=26%'!'%5)C:M? VNPN:RN-;5?8T,g"Zgl)ZDXZZhJb-;n5$+<6:.6,"#"%#    * * $ !+ /  ""+ '/ 5 *2/5!$/ , #!-*96F8Q7G;0D%B57@C+]-#g(_T$d2fIX^Q]#EU,1_84mG*dI,^83T>-VE94"7'6/.@' ;,7,(.%! !$ &   " $-6CG 71( $#;#>$ F)?.33#/4=7<6(Y<+_6$\2$H+T< TD INLP 1E17O:0[9*iF!i=&`>,G@+8;1--#+$&,%4!+01/" 21 &     ,&$ #   !"+5II=#2()+ - 1 A/.)#$-.&A(,2.?:4E42C'(<5:@6H ;H 6=&@0*R70b;2pA!v?o5(U5/57*#*!$3 &0-:2) &,&!(""  " //")'( -1 !1 &    %'6'@)2++74" +*.'(&#,%8 ++02'54%,0,//29,27 *:*= &18G$(Z/$h9 rBj/ W 0)&2&'+3%!("%&)'#'-)#&/1+%)-+<=, $   '")!5"7*4-"+(  #  - &! %-,.)(##"-"7(#;*&:,0# /+&+.&%-!+ 8)A:[-6c.b$aF,1"#(!))".9$.@#633*81*("# #!%/08)5!&#",!4!6/"  "%%'.268;"/))+"$.!".$& &1 $-*3./6$!/$,/:)H!&G%:#9)//&#/(;#,;18>8S-K3C$62/%*+##.&F)[--O2D68A%01(,!#&("51'#>,!,$%'$/+! ' 2+  *$1!$.)'#+&&&(')""-('.( ""2#"!1 / ,7 3-7+%8<;/G1(H 5-@)*;-!#9.MY(8(+)"*/$,@ *8(***' *&*(#HW+0X1>E0;/%3#%.$,',*,(7@!'(/ $ &88"#0%8(5$(6,$3- ((&0+/# # /)-2 73 4+ 50:)60)4.96;*2$,#=$=.%Q$)C($*$4%5+*C%3=*+..")1,)AL#V#-K)51,1"/0!33&5!5.,":((*"1 +   %5$+)"7AHC%G G 4!"' # $ !," 7' 853/&!*2.+$ ' #;&'H14U!:C#82-2103=5+:(   !   %!/,/ ;!> 2"'! (- "&(&"#$,-78,I76N.BC!982;*BA&2)8768#6163 3/8*-'%&+$9&=$0!.&1( " ") %   " $01@ 2L 2Q!JRH 5(0%!   #%6449-B0%/(%)83$2%$6"766<-=<8@:EH5K>(4>%CA.@!.8-2!'/,"1&8 687 52&&-0!.'/))0# #!$  &';%?6:?>F-F(>-":"3!2$ " ! %, /;1810&)7)0$ 5F*: (>=3G-@B1I80N>4J57C0/<*7(=L:A 59*/8;'&222=1(C-5($* /-7*#/$2)&8!4,   $-1:&G)!N3D0!4/$*3-%C&=$;)06 >; "& $( (62A'9&!;2.?3"8(- $8B/J A; M;"P>)OC&P7(C?,I<,K("814%AB@G 9G(FE0/1C!/F8A<5 %6(F%%I3B ;?>)# +",)5 09*I<"'(')%;/(L0'L+.M+#@*DRI%7 )&2*29(BB+G=P<'D2/,'(/&"6$07Q5 Z*%J$S##G!; (*$)(:MV0P<2R86P4110)7%6)**9-V7VP"MS+DB?#2 6$5*#/,L#>c(0p.&]*!O+&31#,%3# %'./%14)(7(-= :0)((   !##)$,+0& -#I%"J(/Q-9K)4C$(S%!M#>($<T$V'2O7;U9HN;A,9*3# 8/2:/'H7EM(DQ(K>N%>4 5- 7K);b,Gv-4u"fW/,$!$&%*(#!1($1(1>)3?"'8!)&$'* #  $"'+,+#)& $"%:)*>,4F,CG(8E#2C"&8 .  ):J[!.P,;J-&<- =%-)'46:4I3NC,K)8*;$,5:48Z;Bi:Ex(8t)(^0N/9& ($$!  !" %!''/ +7;;!06! )0#  ' * .003 * !"/).2/&K@.BN+0L,:.4,) <:H$Q4W/4SJ:H@7A<@38%(8"2)*0;!5><5<'!:(13&H;3CNUa#*;T&6P.D/:& !&3 =J%Q$.Y>3^H6P;<<8>547:)/!#-0,B&,/53$4&073"BL)LX)L[(Me/QN)S>E+*+&,3"(  3 ((#.909< ?1 /. $ , 0 )"!! -$! )8 @/7<GK:N0H.1 #$$  )?P!O -H79@/=@;627)+0.4#<. ?FU,FM4C&A3?:H%@K#PV$NL%VG"W-G(%5#!0)71 )"4 ,'50<2E7@1,04* 5& "+ ')%$" "/6:89@ 2E(H 7>>)!8''%%  9C H!4F@=*>9428;0,,,)(7!C X! Q8 D%A122A.:4 $( *.*/ ) 5203/ $   ) 5 :014.8 !91-C'3.3*+ , 1<?3B>:;1+,%, 0 #04% =% V,S8?e3i,Pr %.g9O&A< G%#@#5.! ( ,$ !# 4ET"L,?#5#570.(-%*,A;1 !  $:>/ ""!'"".$4"(;,#-*& ',& -1/3.0($&6+;7KN$NJ"8X5f /\qsf F"*5",%+1- / 3+/.-*/G$X#Z!S*?3934+!(" 3=/ & $),0-* *$ 3&@(6+ / " )"&0 )!"3#2/.%*FDPWJa!LhA\$=U.c%d d& Q.F2+5%1 '  4&05+;&F"8#0*C'S+\0(R;L/#:(0      ! *+."!,&!.""-( 0) )!#4> @, * # "'&#-)87'-@.5!09RdQqUwRrQiGZIc#-W0!S2KB,9K8+A2 0 /#,$! 1G9 BA3J'B;&&"(';*!R//S. H( A5$    !& *6.:6!/1=.=5;-2+ -" BG?# 8$4' #% &4,/67CQ,-M,+=1177XOgRrVnRWQIII':G@%PF'JR06P?# KO40;-1(<&K2HK:K(H%>,*;#>)!D!:C 2 0 2/( " 21"3.,.71@1D*"A(C1 8&?Q%N.?38..(+%!!('.03I/*C0#>9 9/%9/EFT>W$JdEFFCFJ,.N?(MP.CW<2 ?&B DE% 3$6&EQ9SJJF@G3<%:-<7D6 F#7: :@ CD: ,  $ /=03))%+!= 7 A#@&D!L"A)G%H'K5>1<=89*$+!/E)7;"/;!81%9%4<)1FB>"=L*ES$3+ >71K) J>OP2H D6 QIK8 / 9D.Q6]4XJVMEF :G6<26<::(= F F GH IE+" )#-$) !- %-+?#LO'G!U$X1%F<L?86"E0G,C701)"%(!8!,@M?D2*7*3='8<&*= 78 U*a0 f8M/:4B+ L-e/hG fT VYLRNFA> "< ((<@;D!C9!4! )&- ()($'(2(L!#W-^+ \((`4 \JLK N< K9'P:J?D23&# )' >,DH90K(:>&?53 DB VGDB;>2)7-.$&@&h6mCd]YmSfRZAQ?10''@$,H$BB ? 8".$$& *&7.& $&-&/#DBX<dCY?`FaIZO9E&:CCLF!?C-%+B66*,>'9&J-;C1CD&@*S2U0T+9&!+&3+U5&fIkY oae\!Q]#FR*J<"B>*5<(#L*C%E"E*7%,0%+0( 7 /-"8$/M!QJ [EhLSSPNPP2Bb2-j-;UF>@>47$7%? 0-7*5;2!E&R/NCBCCH)7-&/L1"C,Y8U0I1!JI)?>SGU 1F:5 /. "*=:.WC#kXpZwerbbT k9 UE9F -2'/!50-A3?%5B!34%(#",/+ %2C C;I?U P[ E`;Y.3^435$q(9WDEA2+4 $= A$1(25305:M#S0N1N/G14-K"H?5JFMR= D8 L4TBA>K?H?6: <$. "%,;0 QG^\ y] vZds[^;UF<@$.45'A4$;)B2#="%0- #*.#6 2FI"I*TAe7h4_2P,"i)w-l#`7G.5'5#A='967)BT^.g/a" T6 F2Z#U?A_ (Y 8J =NNRE/P>%I$3M-,<*I :# )>< -9EBTRpS{axm njf>N577),59> E%G%$J&I1?-3#,&*2A!B&IJ"S[/j+i$&h%(\2%Y_ PU"T%(;-2-%" $&$ATo o+ d*\2/a="n$ W9=E#W @HWLkLl@ r3g& O+ Q% ].SC?I-A1O =HJ:^Q"wgrij\`:F":"$/# ?+ P.&N)#M+J>=-. ,!EK#!O!C#OVZb%"_8(O1O'O#I3E'A:;1D!=%65#0-/( Y%n&!n$ r5cL&hD eB _6=>P?;^>t<s(s(h4X&[& ZDHG>G>K";B/MH0^9&^9cN'iO[EP0K8 +,:: =:%I1'K$$I2D>C1$+3D!'I'#>10,5-=!$C"L0F*=,B&OM #LG171C0M9G8#L<$4%0) G0 \2g4l2hT n[ qIR4)B-7 >(p>x;w`) S*f#^6 NC;<>C\7'UH8ZB?f85i=c.)n)g( O L$C//9>%;=$A1CK/O$6=,9%'24( 6904:7*$+$ !+&5%4)5+<'?,KYN 4:4/)?4>@"<>:;0:9A5QQ!cY+^OeS g? g;:2;0HJ._3+m2-h[* X,$T-!O2;I9A%7H'VV_R.eEFfCAq6wnpP/D/,O+2%*8#%405G"1G4F'@0(4@1)>+H*N'GV?'=> 1%/-*)-G,OFAEI"$C!%9%.77!3E2B;8V6 TISekfp]s_ Nb JP6 =#Y+8kyu y#"s6'V0-C5)52+/%K.DR4_]+~Y'tL8i91ft yu-KN?N6G*"E"'E&";9ECFK$=A30?1E&LZ']&Q7!MNB=@; +"$ / I W[.(P4."<.:-.98$38$9: 47:B?TVlV[]fp k_ S\f6#c?+x1&d%"b6P""A'-<( Q.$A$A-BNZ^&ii)\`1Q;0d  y5fKHZ5i.Z#G H )L$U=%F%'6,&@C 1S#7W,+U:?G=98'9*2=2<#-0:$;@2/3>(@'1$4%4%,'&'?E@gNkLqIwLw /i S O8TB#xM3t;Bq$-k'[ G#D$46/K3L.C;BZM\L$Y?,Z7&f's)f<YH!Je4$l0b(Z+W-Z"TLH G ()4/:"5I0(O+C1 @9HC)?K0+G<'D5"+ *.9 8I%O+$E60BC4CD09I!$1 ( /4AFSP <[<_8Y BS@>g4t?#I0yC0'#e0a a+: %5/#CO@P 4M CDO3aHg>W4Y,!a(.W1,SG1;Z4h6`/#]!6n#jQ %C A #3$*(227AD'3C%#@$'<34:G ;Q%7T23B):$4,92?,'^94dD@\IBPV:E!&+0SQ V]!N>Y>LAe1N)w|,"v1-3%)+fC#\HE%9(C!I7:L0g QMe2V7Z8F&F 6G@N"4E@1&U5 m4o)&n""~&vM!H72"#+&' -'$07,7%(,#%1"#F$W!&D'6 4"!1)C$*9C)cKCpGPZNIG;H%B5/*J1S; Se4h#t { hY {*n$h""v,'v1%iK66S@E6$,<F7?NA[VRjE Z;S, E'$@ 2?:I(F4>7R- e)jo $h +]j]: 4%+"3$ % % %&(2=)222 1512),8A3TNFgEG[7[4a&]O!52B LP"\>iBwBB=i?c6m?e6L$P7)QF>@JLVN,FB61 .'<+<:MG^V`N MFE/5568<(78G;)>,HCT7['\"j0`#qo/!Z&H$2%19 !4 - '!.,8#;@;K8)'"5#607=2S@4\8U7f1c$W"QV 0`UW!m^}]`^v^cZoIi;P%N(1h0Y4Nk pRll^#t(utfaam]|Q\*7B?R1C,CI SV8[NTb1\A8T;L9Q>,TG"AS2W*U4@*BBGC7HB$:8+<<-@')F:6H$P4 \2 P1!\E#SDK.9*+.#(8*0'2("A,B3>-)EG&KXH.'>/%-5(*&:< =@ARHSNA9I.dkDl)dr&lesvYlg`-x] xB>(ECL<-G7>P,KDBS,gH9f>?S E^#4[A)SW'!,K1[)/\;#TIF(&2-<(1@4Q! \+@/7<;2O4OGQX>c#h/j&;iKcIwYybo(nv!bc .8;@F2>OTIHGR+EE2PK;J<;_%=l!/Z/!GF;C-1FC4PQDSZ@DZA689$'+."05 8+,;:5/-L)0K7M1>$*5*,#2/"5,+4?)7C!-C*@4K1e#(n-*Z7D*0K$DCX] U(Q"F&F*R6_? MJ1R")TW*`%Cj%Ro(Ve0Xe(=O&"/=$ KA5SKO*VG,AF8?<9Z3;h+4g&V"70 A677+I.AF2FM?7I5H""7*6IY*IBG!P8/Z&/A!2 0'#79*>/ 927:1?*C5D*`$*c.(J%/7)!7 ='H,l/m'WL>$ N*X" o2W7P>=H(Q%'R7ZOR(`M+UL5/E)I+7I%0H@3XA/F66^:=S73S93O)A: J K:#:; >D,HJ$N56C*++!#0*2.*)",*= *?I!)7+1*$6!- @'@< D6Y6UYF" L. U1]&m!W$L8=E7L-(J!:O)OV0RV9CFE'1:' R13S1W0(K4,R-7_6.P,053%+%4I T$D$!H&$>;!593@+*N+!P8RD K8B$E)2V@QCM5B1A);37+ ,)4"8&33%7%0"2& 8 3& 65 ECBA K+]"R& I, D1 K0[) Z/ M)Q:D8,=0**6C&=\.?LA*@Q!)W9#9@ 7J,\!"X.%L5&CF%15*3'-.+:?,0&%=8"6,!3%@>$+D#O;VNVTEBI+'T&7T9J4E*<&<?@=82; ;8#)+64&=(7+ >8C?J< J"K!"J&!@41>:?;- <= Q:NF%9A/4&/":",H7&6J#Q+S@2L,T#P!K1C>6JG&?#A#B 3"*!"4&+)8* 5,**<,&?F#JW#C^HPA/&N-1X+-K#(E!5@%&3,6/ 76? <= <= 3'.25<6@54=?>B2@'$:.29%F E<*60H3LBBG07'+)@8C$-6K)9T7V!Q!:.%5 :)9*0H$-J!$F=1,"%/#=%:)&0033479AZ5D\&DG7+O.&W3(T7"5"$D0 O*I) =&2B 9-8+ %"-%&5;>MCB6)6="7$; E D49 5 () *6#74"*!&,0(4+*8C5F0M#'I&0'/ ? 4IIQHC'QO!7*/, %&!C K(E)2H0.@7?? 41."-3!&&%,%B-D4A#=R!-D$ -! 2/K IeGWEW,N(N#H)>#>.0D M% Q+)P'2G#.;.109?:+"+!1"'*#! !@JWI@$2$&  % %0$0"-*)%-/"/.#  ,$2)!9.D=>FDV8M6H"L,B?=)8:/&4&2!O'Z/O>'@@">3"-(1I8^ ;X 4V%K,W)&M# S Q6>F#S ^$(S"7X!;F,+ ,5*(+ "($$>MK*B-=!%"%-)9-G081;*<+/$"@,%EB!RD TH GN D?=S-E'< (I->H3 H.!>"K$#D:*W?>@91"'( / #@79OBK*Q1^`&/Y$$\# X;OM0ISZ (D4E+0"# &)$ '" & ' =)B,< &.$")#<'D.D2H:E(D 6"'" (*$6(E9)LE%WPV>SQBJ/]JF#1<1#T/'^3S$(Q%Z:hB&RG3: (7 !!)#3%!K-SN.W0["[k##k%j8c;A6:D(A*7*!$*#;8A:%1"#* " &%&+#+5$0 !:$$=-K%,\21R(0T!*O+B094(61+F!*K)'Z>YM aJXK=K W X! L66J%Vc%m*(h0gA`[0KV/5Q%#I%0, 1' *4((7D,/O'N_j"o&e8"X/78-:'5#<+"32J7B'>'.. 0*1"1%3(-) !/& =&,S.'\6,^;/[82R2L7:2.27/!G!'R%X:UIQONQ7BQX'/XACKc e$o3%vEh^)Qm,;`)2b./b0$O8E4*/(0&&/':+N#L'U0%]-*c2&Q':8//!),$& ,/<1<* 1$ 8%- ..-6& 0<&O5!^H_N,UEK7=<145/D#"K!O/Q@ RINXAZ.ND'K?E N0R\c& g?kQ$^j'Gm9:o1:j39r;+d5`1Q1 4,,4:2K4D%"J/5N'3J%!@$"3,2% # ." '&". /-$(#"$ "#!!'( */4 <3 H2UB[Q+JP=A,.0+*HF#D4KCSLIL?W$%Q&7*6@,X[Z#V.!KQ%Uh-T`*;Y;9^59g:+k:!q5#lH`:H1#15.F3G1@%=2<*@ ,  + 0,%)5!6 %!(   ),6 3:=A 79 9B /@ 1 '& 2"E:W8LC?97H+C4 9/)S.-X((Z#J/Q3NK&M]0K^90f;3t>:mA7c?f1i=$O>?6$,"=$K I%#9&3". # & /4 <!9(,3" "%!+$< R!R A= 1& &+?*J0J-?8 ,;"1%9-:<2I8>P2/S.J9H7H@#GE%;J.4Y98gDBuD:vA&k4Q5>:!18,&**&@*H$> ,$!! *4 1 698*8"0  "')+-:HSK!F *: $%   )9B :"'-)"+()6.!A8%9;8H;@80E;/8>(B77C4E :E-/S06QD>j@3<*w8a+!Z.%03/"(!18"3+1#'"&# $  5 ; 3$6 F9! ',",    "(/(7/=B6M3C!37+  #0162' 91$/01274A$BF&8<,,<:0382+7> /5*C,>9*6N+6W.(e0j0_&M') $ 1%.!'#'*&"6, &9@@"4. 5)): 7)! #!3"2#)7%D"7G78 1#'!1''+7)E7!54(*+7(G/N(O!E,95&1.!'-;+9&J"$Q ^_" M"5 %$"$ ,)=(@2+(#   58860-" #5 :)   ! */ .-< /@)4+(..",(- 3$ !9G)8/ 3(<#M*\%^F#@(2+5+#,$&*#)8.N%H&4*7*)-2%)/7<F@'2*('& ! )/."45!7-)# %) %-."0%+4+41"-)!(**'",5: " %/* 6>D ;7*(Q2Q!+D'O%L'B ?'4'//!; *-5&2;8&#$ ,#) & 0 >!D>*2'<-6D%8F@T1T#KG$&0.*+/A&+8%-6*;@229@$?1*14# 1'(4@E(7!&*(+-1,-"1 ))"+&&5 97")3$,) $1,;/;'AC #@$2" $  " *;=B(>4(=(4")= 25>>+387(16'2 +, 9! => & 5-$4+!;'- 2##" !&#2&!$  "#&** '2-7.C"C M C:#  !*(+6#B% ?". ,! "&63 2/ ,'!+)-A4062<>9IFAD7D>>78$F-"<.)2.0$%,$$/$7"+%= @! *!1! 0&%$%'"#'! ! $$'2$<,=75@)EM N B;)    '"7 231+=,6()!*&/)-#65?&F74E5:P=;P'2H&.R)>?1;!F2%B6'755 1+51&4+*5 ) ()5.' . *(#. & "    $ +0 7B!I*!B27>%)5-E( B$ = -* ##( '2&63/.1%3-$/( 2 -6(6.3!;< >B';;/L6+c'&d,)I:/@76#B=C:%9230+<#6;D1C/ ! ' (#)4!4#0%       .)3 ?IF'#K+(=*,,*4205%9970, , + .$'+0;/D&/4/0=6*428!&7*E3FA>)6D0C;)A9'H/&_$Y,S7!5G9!IFEC-:=%1);(/C<>7!0 $ "#$4;83&    #*! 5$>ET J,G#14>9$=(F(#G*?)E'F##<#' +2.+3'K"$K05@A9>B=/>,&" A3J&PA$R94CC1F7"I;)I1$X)T5 GH)G*W:K9/I0-<,6)"E#48:$% &"/0&>&; 47$!  %- ,- 7 DI#?&6&1)<-D-%G..E-'K*M&H=01 4#2&0C!*K(%R26JI9;I2:31$/$ ./!5H-IC"?K',J:-`3a3$b*T$01'4#0/7 $'+0.),=(/= /A"=&"$ %  %  #4*7= 9/<$3!0 !)02<5 H60M01R)%], I8(4"7H"O(V4)OK;H;?>?@)>#G?#+91=/BH&6S/?G$O:H A'A8+H;06E9?S::bC,i9#eV2$021 ,(,,&48#+'0''B!/B%:$)'  # % &+#9&?6 :3 ;15* !((343'@3-G+)O%(S(%<%4,%"&/4?(RU$)L39E@6;B)(A!$I-8* 00/**>,LDPI, C(=,46B5@?EGMJ@d&=p*9g&1U5%B)*+$' &"5) 2++( /8%>%3.0 '   "%&%!-:. :<506.#)-6.)C//J)$D!)>+@ *7 (+1%:#6-AK'!Q/3G;79A3&?5#6' 61)+!;".E@?:,6<," 03><PO Ri)Jo4HX/QB!?/3   $ $/&")$(.7)1"'! !  # .2 -6/*) &#/$&7'(<&(L2H2K ; 410 4'>%K*C"'F-4D49C9;,:2 8" :/#&. &./04 "" 0,:7DKTT$^Z-_QTQ="V& d `X*J914.,%   +9D)@0,01- *1 /1.&.(63H-<2 $#" )3, +)!6("! .- /* @$64 4-6+) 1(11/+%9Q,$n!z&gJ,]!+T,;8: N@%>.928.0%" 0(1)L+N :2'A#:#+0)"&*" 79' #" " "&))("$ .'$ '$( + 8 )$%*%1*$5)1# #0 .=8K%;S&6G)5E-7c/g,VP(H0 ,++/3+08 * )#+-((2)?">;4<%:##(!!$ *     ! %!"" /%#7%-22',2 ), /$ # 1 ).* ' , "  '%+/40.@1"427DBXB]Gt=bBWFKB\$2M-:M1V+2@.%%' %(% ..0&<"=#6 *' (,)7 .3 2463 +   ! '-'0$,,02A4B45)2!& - 384(-&- ) ) 32,@10:2@,4:$>@?REfDb@[8M@L8N'6HFD;BF+QL E 913,+ 0F*@>7I$(A".<!0 *1&1/.)-!B? 4    $ $ ,#.",%, 7%;+N(O!;/ / ?!=/?>3;1-".'!/!5-4B91<)61'46+G7!EPA@$0(J N6:G4;6.1+-)')$89 A#@ +8%+"51?< ;8.0#;9&5 ('#9/F2N=GN,_ a2M(<' :1 B% PX' Y5 WB KKE@FG?504 -)"*$A @ A ?H? 4!  $ 7#/5#!- $(%.#129 5$>0?;F6 E; 9; 50#0%0 6@I?L=>./$7*&99:/ (.!03"2'&-7#/8*I* Z9 _@ \CNG9638 F7 T,^'e0^HVQTQ UD D:(7"%+279 GK MB " 9+2&#%/"GN&F+O1J8G= J?!>I(=ABEB?E7+9.2.(5(#D*$K EF"I/75;/@8.89!7!536%$,<G:765LN\ZcDe9S(E76W(^!i4 lS ea^_YTCN.;#("" 43= F?! K%!4 ", :)7&"3,M/U2R5QJRAMK*G_ :d/:R!AIGK!IC%@807+1;F)F'0220<>D6>?5M%D5-%:!5E;5=>?<E'`%3s2c&R#K&/+L7+[-%n:lY tXma(aV%dX'[; F<+=&$2$/ ':#/*3,3 0% #4"B9*:% #'/?=CB \RJRBL+D^1Eg1.d)T=DCGFH8]=F-:-F0E*NB'DR0@$V"c![/V >*,821C/1XC"hUx^k` lIn@ZG:H!!61+&11(14 ;-+E&)=&-9#@#%1"34, 67-3)<+H0X 9W>6=&;!-2!74E:K&P"\$`9a4W^g]"O!I'A8< 2&((.Cd79 k: b7 Y! X3Z?>TL0MYM!h4b@ XC[B G'L 832@,K#U)&E/SV:^S&jblr de Z? M3 T6@%/'%=)L&&V!(_&["T$(c-:466%)-"-05-=#G5K-_@S;*Q-Q(II:C(8 @%C'I!!W*?!%2N0f+m: |MtD {6o1jP HB ED5 h@ t5 v-i3c3R#P. BQ;\/\$'H26PCHT?PR\Ro[jLT1OVL!-2G(#O/2a,3Y#.U4O=Q/+'# &!.% &&+#1-6-A/;::,>,I%]L@%8'D&N.N* Y*!N)>2 ;< J0 eDwGzQFIiNHC+7K1j; s>0l"&Q)(a1#V;CU9W3Q'EQACMMKM*JK%W@d4g)U H T(Q?2%Q$6P.5S1*Q&.[EV?I63!%#,&"6"@(+# -),-6?8)3$ANSI6";"B+>2H/2F<3Q:U@iLnRqRwQuNHFI5:C,f-g=n<b,U#1P+(K=1O!P59a>Lj?T[.XM+V=&V+$a'f VA$Q0,G,8.)1";@/D>,,P%%U /S183(%!< BBQ&R,!:"::P4XFYbqas^km ZwTg5I U)Z0Os2r6Z<"W*G+41F3O"@HOB^OVa%fo.Yc/S>)[9(qu_0 FF @K?E.+:,&?+'B4*;G1S'5/*'4"@OWT:UI:9/+5086#$!7)H#'2 8,(50!#5);,%6!%+/:6=LWltZso{as Jl2c)E"Nd5_[cA>]KN=VZ#Mn#n<FA.V("Y-J(%]!/W+C*=',%0'"$ +!3*@5&S7M7:5;7'04>!/B0@ # -O%I.B?I-&;8/!4): 52 47 @r0=,@3 v-`PL#Xg>iUEt=Ks'Co1"S)I7Q& 2H .Q 5a(V,S":`.E\>=TEF.P\!:]-&MIGJ!5`.!a:`=a'%f%N"C!&0),%*2-,,:= :=:?/)?8=K:6IG$;# 8UNY4!^#d+W%M96>8?#E=*,Z {6o -] A?VBrL0~FDx9Db!:V'!U&:<'6H ETNU0X1FAU)=H,::8E%1W2#E7,<@0?L*,Y;^@g8#i+0b*W $D6*# 6(/%*)80.<)2</+. <;DS(8F:=-20 7 G!['g8o;f"1]7L8AI0_.KJW>GD VLWR;BB8[5m($l*-m&2a5EP<.6-2 E)^GSQS]6a3GVCH@A0*:$(4,.7*=0;3(F5 V?c8 q.+s"-j 9\/\P0 #23'&:*"8."-&%27 8HAA,7/&+ *$1 9 ]6oQmAb=W9D,:7BC?C8B&V&i))c m f&d-Z#"U'U(VH?RW+P@#<%/)%TF$OLAN,R#AFK>OCD> ;'>"2:'=.<9*HBY2e+b$p 7`@i!8s)[!8&%)*%7/!"! 7$C+J+4R3.>,"/ (*34TYKU9Y5#PK79I4Q*H#95,;&2:9/EN.8S-G_.OTKGEGC=:1#,$0.:,;G'M@f6z0#k*'l%b,m#+a-+M0?60%5+4-$( $)8M ](kBa #@$0 & )7BE HGSGMG:V3P"HF0XFYfcyfplxq!qd$da^N _BT+-X.-.DG"R&EF6c'EY9>?9C[8?h+Jk(HZD` 8R0>1?741'8:<2,=/JC#e=l([2d/g(i:"W9*Y.C02!(80))=!$-%$>#Ich,a7"[(F!4& ('( 09EBNERR I[ 7E8@/\-gF]fbj~k}`}`q1[g(^`VE&H$3=:(H#O$JA6^9Dn)H[(KGJ=T`5O{,FoDj2[1N-FB@M1?<%>>$5?.6-<9-L)K%O7 ]0X?#QUUJQ! B*3-*%1+,1%.)"8$!Q_ ed-j;\-$F'*7%5, +$3.O<W:WCW@L5GJ 4W>b&@i0Mr'T$Q~a \|-gl/fM-A+!G :0 3P''>6CR>_;BSR?U[@Ce_BTl6?s?X FEQE2F@KF*L:$:7'00"/+.*.',.(1P2$NLJTESA@@+8# -4(48/J&(W")PbaZS)K'&6"1"#* ;HI1N1G<%]"^%UGUP@NJY&=a1+o.;!MVh#hx4\fANJ2+*,8/?3/G?5KPH?G@P?FB(LZ(Gm2NfN@Gj&;`;RKE*VPBIYSOM;-';':7HU4EgC:K>?C:FZ9E`(Fg$DO1)9> :D7;%2C5:OB%H!L%P'[ W)"F%%7$2 ;(;)V4 c(Z!ZT)U/ g-wBk3W/!A;5A#%S5p%9b9GN6NDD;>6(+DC. DQ&Kd,EX8CQE9OC>J,JB!?0 2#F, F$*?3C6G=HBCM1<]/'V7#M(F'N0dFeXT"[H1S<575-+!"""%.(=CKI!!73+<7 =$ E: >=U=a*Y!N!C/^;`4 o- i`/JA5@3@Q6`2FWEJ;96C%OHA&EB(AL#MR6HO::H9=9',%# <2+&M/;N87@/:@:DL%1U$W?Q6 O4A+&V(:V%FVHS$8A),9 44!) $  "%*(016@ ;-.=8-2;=MQE'Y3 X$S,K- @2 M5^1cBh0_ES+)H;C4$#245JJ5??66:C%2G&3M:-J8KE'BJ 4U/)M.*9,/'+ ' 0939./C/69/7H82PI)SMD]-!U,"N-P54:80 @( C:J>NT!HM-434-%%<:26->%#D!I6!D8#A<;@'1B.'P&$F9 :? G!<*1*;7?74I!0P7#LB1)<3PGOK PMF-3P:W5S%F#1*&).9&94 "7..96F8Q6M7H#D7Y7F4C /8"1$* +) /3EFJZ?O!,;),#9/B3OB+HFHA9?&)71**(B>D#-E$"Q"F 0##C&9U);F)8%"!D !Y/_#0h,=M+5X',V.*F1$:-/835+:&C:X41L0=E0C<8++?4F .,-*$'& > P KD)>&.)) 'H%G$(85%(1("3%3#-'&;5)FA PE VWJB0A'?<='A .?&'*)(*2<6*I7IB >/"6**6 ,L3Z5`7T7L36P8?G;0C$0E2'4D%%V+ U!&U. +4(,847=M:1O- @/++#69 AU4^ 0O5L.3N9:P0.E 'E3(?D1RRS,C>A/!%! #' .>!51% 6</"".&:)Q.U+C2M'@7*(3"L."W@`J fG hK SA 1P&@B<12-B68M3.A-,.. .8*WdAU)F 7(&'*4 27 8<,V-N++W5-W"$T0!J9"K:1:;6)< : $6-A ,AP2'1' , ) !$C3N'.]**j-.[0+^+/P+J9! 3%28 U/"_7gC pBpM XO 2NN :0, ?$-O".Z52W:>X7*RK!\_-?Q#0Y' T*D*()#/"*1$K!G X"$S&Z@!V2B, 1.,1-&) $/&J1M,P@$7, 3# #%+(B9!Y6 g<lD&iL/bA!T<#I.B+5,!@(!FX-]6[AfAZH:P $N V!M34@ F/O73e>.cA3\Q0KV8DV-'j1`1"a+F/'+%+%4>(Q)C2 O; P6P6>(7!)#+%"/1D&)PL4! 9)#" ' $& ,) G*T5bBmXiY(\T#PC :66*7+!J#OO#U3S8PEDJ5IF F,C90MI&Y0+]F1]W1`Z.EYA0Z1%c8l1"h.[0H'$9B-J3O7P>#J5"@+;911?MQ(,S<9UL.TQ3`U;2t?:k8+`0-c*m0k?TD4" 3 C$L%Q G(8.5"1 ,&!!1 O L $F175(*" #.+''3-?3CAFNBJ6P+C#9!/ /T+ t2^2J6%88%%B#3''(18#96$$<'U.'_H#LC.@M=MgD?>=uA>i;;[13c,[CC="2*# !4K _`E)%&"!$+(+=IN Q*O5> (  $%*%-7&1G'+M.S(N'PI; 0   # / N$b*O%E/H>,4D/>2!@>/I?&CH)LW+>l<>t:GqDIeL@h85U%A03)$*+420$EX[H /"$"2#2 = @QT+R(G#;'& #%!0;!.G,MCHR#W1P:? ,3   2D$J(&=%0=(+<5+7,;5:CA+DB*<3+E1=8(;:H7$CJ'>\==V;FZDPb;Dh3,`. QA ++6 :.8RK3' #'!!05<A >SR"$JJ011 &+&!36.M$P?F(P/Z>48D?-?=>5BY9FA5NW1GR/6i'o Y8 ,$1B80; 1%) ,7/!))"/ : OH :.A1B'='-1$ " "#9(F B 7!?+F2MDB!:( %%+$!0++7!@'=)69.2+ B*P,Q*^I/B35+53>2::-E7(>?5(F! Z`"K'!- # 7.-# ) <#<*7 2*0*# - <:@@$9).4'!0, " " 381,!66< 2;!6/1.$0& %"- ,( #5B"%>!3<G)#X%^ &RL$<9 :9&99 ""*9FH#5"/*$:>'/"9!9I > //!;0 (%" # )$.%83:68&+#"! + $. 1 / $%/0 07'+.+1%0%"(#+ ,&$:!- )&4#0;K*I"?22O14Z$)U YH(<03)*(&/*&.,!/=*+B&#MG(!%*=#=8 60%> B=1&  '.-=1 =.4(! '"&)'* +5 -*&. !,%!,-*+-!#+//0%& &<IK/.I3G9@K.*V:a8Z!"G!1"+05954%/0,8 "5"3H&.L)$F ++2&<,-/3:5)>MF:*, $*. 3/D-':&'&$"!"&/(0+&1%+/202&/0$4"+' #-%( (% 6>!D3$E>166<0(@76@*B&@!.>*'/.3(,@4$ /%-/#19 C; 4!*) 0 ( ! (+7('0%& $*-)%. %'(.+/8%G'= +0&"    ),,&0.>(H.<)#)2G; HDEB&6 3,K)9C#<:$BD6E.=$26+(#=/?;$)4,)"(4-!33"!/&/"41)1/'*&$#('"$*&*  ( +'0 ;:!1&25&D H@ 7)&    " 0 ); 6;5-1.1&4&* C&H+9/(%!>,'H,:B-CF,6P*['G//,7.!J&$D'.917(/2".5.+4%(& $ '!0,3;.-##, ) #    * =@ ADG "@?.3;!$<(B%<+8$8( .)23G3F?-$8(2(2%# 4!7!/%+5 &E-H,$I/ W%b("R)+S:'8F0'I(%J!0A(>/0;#0;39(  *0,+8' *&)"    '6 A >F N NME/(:5*,;'(:&?#F#9"((%. #437!5>":5:,4 5*2,!/.)30)1&6<40J6+JD&P9W_)Q>$8J(.W- ^,9% 01 (>4I ?B)?2%<&9%,'%(5%,>38085*9F,4L?"?GI?U\<HO$8Z0]*Z(=BG83-+>#C8-*- /%&6"= >1&     #6.?/ <2FL!I%K)>1/294%C4"I0G.L2G1(0 >$ ?;1H)M"5Q,@<./)1$.4 2$31-6-55666;E41X8ED GB(M6 NI,E]8=V9\;[1#W1<116/<-012 .4)(-#1';+B%(F"&<'" !' )!"+ :) F8J7 @)I!C!:),(8'98G3S0N)N0=%.*( :(C9DX"W")F0/;4#*77F&C$);/99-?)0B/R9+O,E3:5*9Q5MIIOVL6YJ,^J$e0H+B34215*525*!0-<(!5 C!$J!"5* # " -4.+>O7 G;C2F#B4'17C7N/V*P'B)#?!< = !37<F:!NU$S)N7.>@/5?#4-?(33-"8#%C&7L&F9)I,F-26952NF=OXML!KO&58,:( "9. M.N.NK$C>&=%86 ;;=1=G(P0?5!76*4 A7F< DATN(MO$OK$NEI-1 +#'$&(+-!.4 :0 + '"*440F0:5',4& N-D7)A"@D'6//(7/1/@??)&>#(?.2>34)7-41%$'! 8$?+-0%' 3 >+R2)P:"WJ\I e>$o?e4Z! P4+%! 4(34 9 &6 1: !' '"  #$2;.?-:)#  #<!A9-G2F%+0% &,)) )5(D6E#D'@)#79#+?"3*%#$ (&9'E 2;82"FEMEd>w7w"cS3<.1- !  +#28<&;*9$<#5) " - %&%,)"$&.6#7"-#  ,#+ #:'2'7!%+ +!(#-!4%& ;B#B0G04&:4.,9),*$ 1-.&>P=W'A4< FAI=j4 v/ !g&RC HC+8--'+(,12 >>(8-9"1*/ !7*0*32 1&..*  &(%)) (%*")0'3!(). --7<1A%>2*=): 1B2.&R)(c#f Q!B&9@?_.py!q-f6V<>9"73*B 2% ( *,#:3*20+"-$4!.,)/88 0,/&)"% $! ' & ,##**&4+ "(" ,( 1 :6(?3 < * - 6! 5".'%"N2W`W F%<9.P# U b"\?VWHL?>(;8!"<&"$0-+)&1.2.))+ 5=(0 $(07+1$ !' $( ## ""+! +,  #'! )+ - )%88)56*8))= &9!77-'D,K,H!0H1F%=:'1-+ -N0Y;J)HB@;#2&%"! ! %(.3081;,.'7", $ -)9-.'#4% #2 +&%" !$!$ >:-+.)  &# *#) +"4,&,H<' ,&1!A$B89"0'.%G6I<(@4(3*'@,L%K0 E98=!379*-?,M6R+ S _"X(P2KG7W 9A<$ 3( :+ )8:G :3 ?4 73 1*$" "(-!B@?!3%    !53+4 0(5 8>MI&$3'0:"$=,C'9"05+0:*(:CC#LB#1<:G&'F".7$(:#I+JG'O[+`JYF LI GJ@/I3 J%T+ G2EF@:G7GF95( !" %8E! @ =* C# <1 3 A!89!8/- 7$D):&(*,36%1P*.P?@ /8.: $53&'G *G,1Q`8H2'$@<"C+60#.3"<'< "#B%H%N N! d8 lR YZVUKKEF>CI-U1 a1 f1X<Q> W> G: *, # - 47 8 QWF7 ( H =#7)$9=#4//846=7=93F#&F8; 0E+C)8K8=KE,=P/9V.7O$<$)-5>;3G18">+4/9F!V%O9 EG[UXaEaCY)Z7KJ.`'l)x9sO_Fa>T9@."" ! )?N"G#&G')/($!0A 9=$*(-$7.4> 0K AL JE$Ib0X%J,U;[!;M,#@K4YCWJ FY>a:t4g5f(`0N'K7$V*`6sN'PtYzLnH U- A% *# ##"9#'A#&<.:07!".7&"0:A# A-4((68 2)O (U0L=`*3e"'^L,b ;`(AY&*^5?QK>9L/>? *-+"+' ;'1/ B) P)M* 8!@@4'I9 [Q Kc N< 11"6/./"%40$6&@!CJO- 74%25+A7!F0%/J#F FLK 4^(;i%8i#*c G%Z -_)j *\7)WL-C8 6"/,(>"[ CY cNJ1F?$6 %>6dJy @w7m$A&9,@/* $+$-8:!Y\&gkfmue {Vn3[>QD 78$4,%-?!L T Z_& FDED0A $2/')<2&2?+G%V'K+#N.$Y=k#;md U`a'`.],6A 8 / )49J< g+ Z8_0c ])P@A8*A B#:1] 6g Dw9a -I:+5.-'$'K$>S(`f+lz#jn"ieeU[4V8 P<58&45%B JY \i% h@GP C-C4NAR:'M 6_%Y%R&"U# \O,LC@D5*<03:C^IyHuTUBa[?SN+IF!G&G.O="Y3TJX` 8`5@G#?1-D*#A+Z*1Y6U]5bg,jg"cf`@Q2F)L $15<#+CQ!`!e^f$d=AO9K+81"*#,)5DAANHOH;J ;C'F 3=&PL;)>'.D":?"H'K;7IZHjongI$o6vKsREP:G; _Dr9j=_4=9C,>( AF%5Z#\, Z08Hj1bV(jQ#c-)O*GH*%K=0,)J *Y%.f!%b$)b#1^45V3//2%.4 ,+ 1$ 1+&&6)"9.@-AAB+H#CID5 360(=#J*K@+X=gYhd['rc"r9 z;sR[N#7V9tKrCoC,Z+-M'O==6 '(+&',& 4/1!"# % !"@.QDjTTI}&C8Cl-BD7_2TLFe.Qh4F`IE3E9*5K-]ph&'`@"lH#t`2rmIQfH$IT2J*>P'0X,%c.k] "6 /11'(+'* &$&*$1/? ,@ *<+)'/?'E$AR C"N&I,V5S.G/E=<HA@E($f" ;9!(9e4[cGkWAyHPu7Uj+&\3"75&B(]!foW(hDiA!uN/i_B9bD!JH 2;9)<#Q6%c=3t<q'^"E!E'+&(""31*@$.A&J0*(0=#47,/0)( B J %I,[%;s-{&d'd1ML=K-]*"E/1I*j2+, f",N9\^8}T,??]" _&#N>@ 93A 9_;v6g'W#)Y+,Y=_=#D@=6>:61+2+(L'/N;$HK`@+t?)n*.c(Y+M? !6&%.3J*H!B-"(/& :@G;:5.(%37+E/d$:l9q0q *k&T?KO5K1S(]" A9L^1L\M\(n$i2X6e@N61+*BG:!H21A"1*,IAJZ@ c-w,u!8a >`*>X-P3 , #/<"6!)$>*L=c@M%=-')  & 5(<7LBP"BEc"CU%;L?D4@1;5$10#L$'HJFa/m#s(p7g$+Y"1\4-N,;&. 1#1)/$61?f)n0t%9a(:6'  +12M<$OL#UIKXBF29&N -JGU?MVaVkmgeHcZdM!M> M8 P9BJ4B"1=->4DOMLCE;qEJyCIz(Dj%GhNbAU#/Q'/G3*&8)C&<G6T*]W 1b%&a.T?&P/8R;>"6>,;+'-6(7&&3C R p,y(1v*"46#*L+90:(=WI[!NQOXMpOE@F,?|@o @c4X*=J3<9?.,90D.&9*:*N"P"J.Y@^IVPEB#L,&>(.='(3'$3$#6$? Q+k+t*+$s),_4/I*&) ,' $ <+Q: \Am9e0Y'Z9 WL!KP1>c2*79-FzK'O.`eXTK2$('$)9.*E4:8K;ATK2YO'eFDmanV`{LX1F>n>X+DI8C?C9EA+:2+ 9:#B=*210+9)$COUgPdI^/@.!@, 9&5)7#(.:%%\#+]9%g2e-f,W'?,'/)&1/#2&>*S3!V-#f(c&i,g5dG"_A1^V:By0&6vC~.R|lY$cO*P*='30@6NN>KSC6RM3P;8bM-Z[EZ]jCTw'T|Eg?A3A;e=Hx5x J\3C1 H29),#. +?%V"#Y*&s.%]3$S..L%@(%-%2)#<,E)J+M.\%)],b9 h1a6"j3.sG7Mb*$uq3^!GW&gX0jC7?1C$CV?)eLBUT@YR.]I3OY6XaAJZQ3I\EZLK4Rf!Cb/H%-@H!Z0[L[ oJ):Lt"PM=- @,!()#& $#.#GV!$d.4N/-E,*F!#?"' 3*2;L5 \+KP&T8XInG {6t$l"!a'#JA/R\;Z([R.RE?S?V?@Q>T""b9uO%fR;LR5?>BGG8EK7=2.+69./<%K;*S@'LW$Ok=r(Z%$G$R'Z"9ZQm^]*hLJX4A1!630#&' & &.$0L'U*#?$'*'/)*$$2.6 =K?EG< S+ UOO5^D_?m9 z)o^A&'DD=P"?O(IH6J:ES)O2=UE`.h1 _J(ZM+FJ+5<-3;(/)#$*$E4F1J5%QI)C]C_,W/R7P9O0-Z#IfG^+GO0:E25331$  %&! )=;>"$ &51!%=.I ;]"ILN>N1 W$ I">:O4 ]+c7 c5 _7O&FG @2$@5.P8#IB*7A*(3&&! 0F/J!8L#6W5-TB7J"'G0GFBM I7(?%8O =Z8TI$:% ' & &"!"8 4,7$C(G,W";Y:XRO]7O+A#23":4E/N,M8RK#HD53 I*@.)?!2H>?R"$Z7(WB7W4,S5$D08J(<,",.(;"E 'B"$3#);DL ?B)3S*%bD"EA"3? I<QA LE I(3K&fA+]1&D!',)"203@513$(P15R&5=/1;%?E .J/`+!V?IC,3<,?&JBG8@"%:&G"LA,5 2&'"%2#6!$3%% -+AWW*Y2P6N#:F!A7 :, 5.- 80:"@ %E!4 /8%)*,<.T6&`(]<.Z)(A+&32+.2G@Q!BG>3P?4[>9X/4=@,2C*&I0G/G2 ?46/;B):=-?& J,F 6 8%;418!= *4(-#6*1"+DH>.LOJ#I'/A8>1:%""/$!..242:,;(2 !; "82 B"A#0*)4@(T(`%1[$\(>$'0#%= +GB]*IT4?P=Og5BZ9H@?B4:@+=>-3*@<B03J/GG1V96:*8"= 0!& ,/;$#A0B$,>('9*%" !))*L.P"&?4$"6)2#8,*B&66 %!'(EC.OCL9fC G= 9>6:$? ?$E*%E0"<83;V1)^C@ I;#63%;)(K:YIR 8H$AS9OLAN.-!*5<$G" (!!0:;0(#3= /F*/M)&U!#IL(J9-#!&#2#B*!H7^>u? r:eDCC 0> ? 5&(/>/&N3,>%34:'P/)]&)W(+R+@&)$.+'*$<,I!@31ND>VB:E5;I94?0,7,3 <5&/$#*)=A]&7$+!  , )  2+ S:,Z2b4`=i@$e9%]&%G5#80 @L.X1a+o>vF YB6D >:!5.%#54%D=6E1B;9<2%I+:V,>T16U2)I2185&'(#+'=J-J2)U*%I'1B2,2;*/"3-".& %"7"L$T). 1" -   !9)Y=b@rLhSlV"gD)J5(C-$7& 4)F%KKO#\1cB$\JWJ2GG 2(71.2H9RB,<0'!1DN I]+[<NBVHMK&C4#3D&&O,(>(5>EASTALH>EV:0fHaE#]=$]3L(>$2!(3$%;5*F7[7M459!4.)"#1"7 3.&B 3B =,/,#,* ',)- .0<,H9PFXT[aQa%;M.6;/&'+56 DX%X9%JN!=H4<$ =+,!+D*I4D@1FL9OUBB[J;lE8tF/rKa7$M1S,O'9*#6$>2:G#Z+X+ S34,#!.'2%7).!?+TP R .G-)$ !$,19,:)>9;L@VCWBT5N'7%"7#&   7Qf'W:IHDN'*9%6(!2 -9"G5NL,K\;8gI@lF0zJH>9j@:l/6X"-Q-D+$6*$="=78 D0\#]D#1#&9283>26L TY %Y(P ,;   (# %'41=-==;N$?V0Y#R(U6Q -W+L!8 ? V"V'"O9*FG!QF,276&079:/661 F>>R3@].3%,9:@6":C5['[ K3#9,%!;!+6%<%K ST%]!]#O4,!+','$:.*MB!>\3e $[FR1R@WLN.5  7&G &N,@*3?10A6<5)R/-=8A24?)3;'$727&7M.:J'>73C,-<4B/A3:'469;6;A ?J3AQ/0B( @&* $+4(-62>%IOP&K#C!K*L&5".- " ,"$1)*)B')RO A=3?G=>651" ,(0%,)' 2.3-A/+E,8?+64'E%(O-R+K0C+.;*61=1B.=4(>0+>?08I!TZ%G$),&++$37$*0(-" -%3 /& *+486,HO %FI?/7527!"2*!*! ');+A7,,55?=77-2,"%%('&3# / 20&+ B%1F(7@*N.-`"&W*W$KA/=0(=*:'$!*'1!CB<#)*&4!2&&C"2I&898)3 -%8(/"*%!.3:+ 10>@EM94-% &$/ 5 $)-37#831(1"1*$%''1*!B,(3*=(*"2 G .I3C>9Q71T2d(]%P(<),-5( )#-+&'/%>"2)+*#7+92''";/$C F 5 2 $1-5/@&#C%6&&&)( 6)C8L8>0/#"%   %,(/. ,'4& /$+20& % #$"#*()27 3*+#+ > #K58RAF=@K8.^'2p,eA$8%0'1)@%#;+">7!2(5!#J*)G*2+(4-@9(03-- %38A5O#$H%;+( &('1<5<;9",0*#&"%%$ ,$% # $/" 7$ '+. 20($!" * ")*!,( # 1 A-)Q@7SC,=3>#9J659J"/V+^&B+'44$;-1+D*0G#L A)= 5&"* *.!005,(%$)-!,   " *< A# A%?#A@ @G0664<0)73&,/.#   (,=-<5A6,7*.*)+",D$H-)K.)4";#%D-C''F%O#R W"J%(4<&D!7G.IA#R0!UMC% :&  %"+&"1/) #)22 #   ( <@/D5I6M.JV N#K.&J?/@A/65+ ?!0"4#42678483*/%1*1!6399'==/76&5*+B&?**H-I$"W"N)#GI1:Z,P8T!FJ'_-'^aQ#=#/("",(!&& 2+'#$  !!1# ?4E=I;$]0S \"T)M/,M4/B>55:/.:0= +1 /&*-163@1H51%5"7&.*!3:),7)0A42" .8%:09B.O+N61#*"!)&3+1 .$+6!57:B;6=74@J-M@C+@=1CD=H[:6[!i'_#5M-I@5E31G$(D"D G+='8""+ 03 >#2&"" ( 2$+EH$ N+ U. T%PC&I*39A3/X.3X.'T*B+= > * $$ 81H4!T=0A %>*,1*$) -<*13*$9/E/5F0H))4H,E 151:JI%0+ $  $19&0;D%K,L-W& M>"5=-5R,.[$Z%U$ B> <$4 7 3FI=RA6@!H(6/29$-8('*%5#F1#U1+L057&*!.&7&)@A4ASAFEVOY!?f%/`#a >"*$*84&5*2*6*"$(:= 7 -# "-+/#'"+ =&D4@3@.GB)-G#'W%UWD >?#: (0#553 >6 l9\8TB(#.,"  &)+6,A > 2!-)  %'*%!/?!,I*;,0,!-,!;3 *64#*,4(< ++6;#*6/#>**1*/%!!"'", "%*".%* :0C64I<SE_@f1u r&g+'S2,;<,(70 *  ##5+HH68, *  #! ,-.= %B"&=$&0! ) 4-!*'$//344 %6$. 18%=:%-+$+' " ' ( (&F/O*CO;P6h0{!)&l<*bF0FB+@)D 9"'$@!= 4"4&,0!&%,!3/*#,'%+1 &:'(3!     "(+ $8&8+E?&:13 1.)2#. 1 ',7 5(-9/#,"',$"2%#JU$C257>9/ Z%~ !5D'pN%]J#EM"@K4W$M"8' !0!; ."5%+1!924/* -!+&!*91= *$ 7   # $.&)7!C,K;$4 0-2(?+-%'") */)1D7!+% + 0))4 FF!9",+5 3% Q gq8o_$biNa!HR%=S .T#P% 3## $ #'#0)7,$,#?,=&#)&% !./<978*2%6. &-  (!&!)!8C &5*0 0/ : :, ) 0 * 0"A (;/(4).0!#"9/'-',)08(, E/KPFZCb#9X+Eb+2S$*P%#3%%-+!'*7(837+'+ 6 #9'/,(.3/?<1"<)3; .> 7 # $ $:.- # ;2 &"('6 1$!  "2#*66.87?0>2 5 2$5"+:+<')$'94?%>&&#//N YV Y-*g=3X.M 6- '( 0+"'139C2:*8&  )+"$(+1%#.8"1"!?/7:-3** #,:8/, 0!#%!6 9#1 I'$F<LL>A%857$8A#43!7!&-CP!J%"E ;. =C 5P&Ug/d4R'@,!68" 5< 5).,,++%0&/$ 03 #%#*1%97,+ 4"!# !-,)",'"   -#2%?% 6 =Q# >:O$N6:;=4*@) H!SD'@/3)0"#Z]/W0Z!T! Y<F?A^+3mZ"B!0 '( ,-' @# ;. A/ 8!&  (:8!#. '-) ,% '& %& ("*#*!(  'C" >&D* B1$H2)N6@@(J&I'L* G<)H:^5O 2! 2"""&R1[',Z&Z#k,_M`T RfB\6R(C,*8) G&K.=5 >6 K9C5 $$"6!?I$<&7"8 '  + ; 5#!-. *('!&+'&"*< D> E/J,4PE-LW1R(3Y%+W,A!V8[1 K' '&! !$'*?+N2 Q. m1j9rKbW`TRNID;5:& E'N/V7 ]FK=I@ ><1'(& 4,>&D"L:, 0 ;7,02- &#+5;"@ <8 5&<CT,S3/MK4;]2AZ$>W.2/$755/:9$2$! +1 ,7 G/B( I5 ZTjSiHb^Zg"U^ UX7J9;G+J c) |7 x>cB^8Q19( &((3 / <'>$'J-.+%% ;>2$6))%$."?A!G7B7L%F"[ g"X4)_3(SF4F[/EV)H -6/3.)&09$>%;/'<E)E8K*>!T? _VbgaaZfDi$GhF]8Z+B"9#G4Y.i;vFzRr6c6@*4!"("* #3-392 =#A9$*93"7<>! -' + 5 B I 2J9MBW9M"d wo:)h<0VH,HV(D (K ":/"#<,! 7 [% k"M/4 3?,>GOdR}O@2\!7Y 3M#8N-*8*+4+!NDoO{foW r;pAL92+*& "&#!'&:$D!KVU" <,,60*313+<D'@/3&9L1KJQK[FQ#8O"f z t#3w27gA8O 4E7H%< "* +&A# C*E6c( `*Z1 8"; " %I6q,' zf*F3>7!0 #30%E8,LV4Ym)^d&ahfLc',O)B,73 12 &&CU[g%i6,GD);L+D<34< <(F);$$6.,I/:D,CKATLV*-O"Z"b#g"0?93$+14BO;Zg8bx<]b-_['SPO-#B@%E5C<-A CG=I+%E&,LQ$O<\\J^N O;G@".E5/R*[G_ST@u*gO6,6464,B/>?/ BH D^ 7l 3l7Q*3397<#4K3)NG9[GB^DPk>OQ2QI$Q5&[#&H %8, 81,7+F,)=P13I47>7;)15$(=$,O'=M4GGEC@? :=+4)I"G$<9>Q@K>EC=D)? N#16'#,/!..%!3)M4I/3' $'+9 )<%)&- E9>99?=@/9!Q+1aXr2XrMi]p=!y@&pV/D@-),(H 'p5'iLfF=F45T I% GK ,]$f+0k8(gVe_%cO4WP3?>7/&I;))<6!4E 0>:%>V(+b*-b(e)2^>38.@61;-4@2#98(-&219+59#2.*&'(!#0A*5//#! %% - / /0.43A)-I.Y$O(/[?h3WobaX&W;[]8;58"KO"<]/)iA&e>"C-[`? >P/]!.u#/s4mP __b`*X\9@H9+!9-%$46@ 1[ K! IC)7N*)N( [&)c1+A6,2%#.."/%0:=%?@(4?'4:2 /2!0)%$ %$  61#2 8%5'C"Sf9sDm9hWp |l%xm79M8+/37=Y>\/AY@)A<>F!P; 8[)g"e% ^3tDf`)cg6QcE5M=(@%+(<(E "VbR'%;/+,3)$3.!=*+($*$,,64D5I.3,!0;(;1#, 81 3#1,'+5*$  - 7 .< ^s-;?>S0Iq2G]G;>h.Ct1HWAE"$)7)CPFY,#,(%#+/B2J0?7.+*> ? >:/-, 5IL#?(T3TITKRFO >?/95D0[AGR)Ce$+3!:F*iQEa+vP6v>8j<[8<"0@$)4'.R,Y$_&\(W#z6pBvW.bc6Rj0@Q.=%- 3$ :Q-3W6`$+qVJ0E+@P6(MQ%@\)@ SR4OY^V_G#YIx6o8_\pL0_H1^5#Q +R#5l7)e03W/&g&g! d3`6F4,C3:G)6''&D?MYDh9,u 1g R'*a5#]$@ ),;>(>1--6@33$ &6B3R$M!0!,+::3L&O1E3N.C")B0F)<; 4A/O(>O;@6.T* `)s> i=t: f'h1^JdK$iC'P.-2/,K19b45a:&]1(t"0h.%]/!K$,?FHN6*KG6/RH` ]Ti)$u*m=X-S*#U?)! % %+/6>8.$.'8Q%8I$K7C.$' +8/ 3 8&9):2G!8F6B.C, .6 $K1N0J>>Q0^*l( sz$c jD VT`B fHO0,3/4A#N>*mB@m:=h.Fl+Fn55O&/P1G>CA$AA$Y->_JZ NAK`,qEl'>P*.?*'6%$,"':!,;*#('&"C&"^&6^'9RBI=G&7'$'"3,>INCS>MR<[1 =C&BTX>L!&4>#19#4 ,&N )_ o%-&52?l+9M.:C'2/&:(Q1Y6o6.m"#^ e(U5TB%J_:.rAw6x>VEZSZ"UQ'WB5='-(26P(5P&)MG1[NBd>WrZue_XJ>@>jCc8AV>;T28K87=@0>768",* %28O\ \i+Zj)QU5M%!9$4E"0>1G,9!3.F'8d14n+&u..j)>R$5<*/1(0"#% ") ;,H'"b'm *a%r t-[8*q81nT8Mj %y1|'a?TTY)^O9b(?<*CJ'9Y0>K7.N29XBEeKAmd`jawOU2WvSb%VXFTFIV8AS=6R1DB?B &KD&C1O8?k1MxGpBX'B*@%C B%:%7(5(Q$>2E1420#K5\1/`1>Y)><+I9*=3281.=>,:A1'I.K/\-/kOm>l)q x y! _C;Na3l [S)Y?F\CYQ=e:Mj-n%q9i@"W69L>>S6BU,IA*7::+>5EG%UK![>_Z ?x8m;W0AX $e9kQPVL'ZD;C0C/E&7"03.-'%,$%!.(G.P3R!<""?!44(!GN*"#5$ + *!.!=/)&;-F)<+9."(G&K!,]Hf$NV EA 61I KA-2F/ W0m/m3l'L$C6EI9E.D5/W"?QPG'W-?f)Ls.Dx*5k:]JH?1+) &' )@ )N"*^."d, Y9GT8Y&H%:;D4?>#F&(F'W"R8!'+ )*+.),.&%,.#2<LW0bOa#Rb?O D+I7+-C6,DB^9c.R6F>:6EH2JB44O OBY9aD6aHMe-Qe;6]=$H;:<.H!4$-1%/9-9=?@9C(N"(_( S6HD9:&"@2DBF@B $F"Q GA&0'":(& 2$*5.3 % > Q R !]0b#Ra#MS ?E :7$1 &**?)-0=;=;0:>4C1A G N3&?=$c4 aG&aK@hKIaIJI,G@0#7;,A, F1 L)1C?/BJ)>L:18C&5I#(^1+b%d,?32279%7(A- ;2@$$@ C B<08&7+'/3,+1)-,+.($" ) 1C !U T'W4Z$/Y4M?N 44$1 (#/ < 8 < *L%GIJ9,)<3)T8(ZH'd3*pC>e;LN&>B%",.95E<:X0Q(.W"W"1&6 %G!*F1(7 @3 9=(%8*8!+;/./0-$( &'+$$. A D89A'K F$"Y-(V0F/H&-)!+,->-A,</65C/F!?B&; @/)/@CSE^?$_5Ae$GM+44,!5 -E EP6W@9WL.VR0KSB[@HZ"09495/+1)&+,. (#)'(DLF219O& M40U(:(?7' 5/<7I=U>NBBC?<7B :?#*:44-/8?73"&)7! #$#!!-'(<7-?4&<(-)$&*.,.*#1I !S ?$/9A/%F(;4 9E &@/*'1(2A(&?((A7,A5?@$T@+G=>C201%.*5!1&69DBAD@=CLMQUONIM2E?&4)0-*: -:> 1 9%&1+"$()!1 +('$40(5#9*%$ &$B5*DCH>O%@%B"B*+<0#+-#"-!)(!&1C%X,n.k<bMBB:1 %?<-@$C)D3;"?1+S@,[?;U%@>$@(*2*)'(-#(7"B2#=I=MNCaQ;TDm?c9I7/1 :2,B"S5P?C2B4+LA,P2;W:7B=A0-46.!"*'%81M?"PB)X8#T3$F/ (2,!%('*- / A2-$$* 0*&  $ >/Q?ZG`NaR`V_K-N.-5,&0#53)A3R Z?"dJiJ_K$5I#02(-%-."E).P EW%KH3J>(N<*ZQ!OK?L;4I#SOXJF?852 $:)=?<9CJ4XO7_Q)UZ.iM"a_YO$VJL?E+2>)C$0C+UD)^?#K;=14 !"+ 95$=7 < 5 5$,#"" ,  &/0")%00 8/::ECRPSZO_AW*1E,KIAK7; ./"!"2=@J0FoK7vP2pY3rW*p[6sR.`Y%OHB-;%.&#9PU$L;R/M>.P0E-$ 2<%A=@JI E#A&&'&"#'+*"4);,!>6=F@U ?U;[5Q-D%(?3!#$- MY1TEDP:P.;!0%#) ( $48=]@qC6vY2vY(nb8wmGtY.VQ;J=5A/#A%(2%,!A$X(a$\TAd:_)R&V)S (S"D)  <S![1"P@*GD%=K+176&.%1(#,8=U >l07xJ:v[JsoCwtHVC6K8BI9,B"7()/#3/ U:'d/2]!5X"LDI*!;! /*#9F/G!.LMK$)M%W!UE*$)&4.4-0)(?.2H0*RK!?d6j'gL&N6Y ?K 2=)0" 9 )Q,W+:L9;E76E5=3-E-+9 )<.8:.B.1A9 55 ',$' %%'7*@@=%0B?6@* )45!8$#')05. 0-'=8'G=.@71<4<7,T'#W,)U .F$@*(954872?<#6."?;CLOI1#061@E71;7,1-*'0 )!6>$F+K)L.J)5F)/G' C)@291!-4 )%*#%#1-3- 8 0 (,/31-<*1,.!,"(*&."8- 5 6++(+&;71C44H0B?(N%#]e"W(86 (;35+=/'/7"&BJU$B(.)')209H,/D)0<53!0;$'9%3708#8=1:& 764,;8H&1+*("&  %  2:(2!$"/+3@+3:7"+/"#.+!02 @23"6!!%"8!!F2.M*DI@O;9b+&j*"["Q2B"97#-'>5&6=-HO&@,4'%( '$.**E)(MH 7 %+ /+<(*?*.=.37.=5'4(%9/4!-;"E)N3A&(0'*(!!&!*).("-!8!- 3;3%-)"%(&0-'--1)(&  )-4 %E1=PHJGAQ82a/#vK3%%..(-3*@6?H;N)."1/60 '$'(.0):H 983:- 4:C6#B6#D6*74/.),"$)*6$@%M#"H%$E''2,"*,(&&&!))/!&-5*7 B8!&# !+"&!%   $<-;E:2ND1@61*(I+F I3,!+0"G, NK&B?-=&?G A9#4-*'%,.J1M8<<H5>?7H%%8!% !")3.7*=#A#7%+*%.$ %*)+#)15,20/ .2 =4+ . #,"&  ! !*(?22@<5-/)"82B924)- !A&?'3?$4='MEQ-G*(+"(#8",1?>Q8M:C4A14>!L80  +&).#=))/$&!&2%./,5 5 ??@"BD 77.!4(#! ! *  5 + !7%& +"#0"!-'-'1'G,H,L*%C5$H%$7 4/8D'P *S$Q< 521A!D)B. C(J, D)=#$4%/"%##%!#%).&8%1(2!+",,9@'C0 I6!H(G EV;);/,4#)0#'$ $%7F"J&$+8((* %# +)>49D9K$5>!4'&C389 )L0J "UK(7; .B>= Y0!^_ZP+ K1 A$)&, %! , 3() #-(2)& *0B2GB"GF#O;$P$Y UN$%W1,J,2C*+,*"#+ !3?#= +*64%/' 0 !7'F0G=DE;A$9?':$7'=+A*)D? !A7=:,A=: e3'h#"n !q^&R' 1" 61!+ 5 1 ( $* !& 2"@8JC VGZ;T$U "U*V*'Z11N85>3+,/'&0  $12%31.67 ): (*41@6 I1B>FM$A9#3(--:0 >,9! 8+?A 6P#^0GR5"g(0l,+k!jU#<: 8 3-,  ' ( % " ,/ @C(N:\7 Z0ZV`",O3'LA*K@*@:')=%3 !! 3**,61,/,3$(-" 5#&9%342 ) $"-! /+%&= M1T0F.+  $.&:,K6DF7U$AX(<`%Q?!-%$@ GD;?#(:-0'2"!; 1*##% %") *$ (,1%$,* !74!<'-GJF19I/J+[ +Q&8!"# "*++8/),+'D0A <.#8!$4 0*?D S:(W><./$ .-E3P8ICHQIR3@, 07*0$7#-+ /(.'%5##6$3, /, !$ % 2& 3$,1&!:0$5,/;#@@, 6I0=.B4 "$#+%2098+*(*%07'?="3F-M6.@/ 7,&,-.*%+0<<D6 V8\3J?Q4I)$?)!*8'7#4!% ,#()2*'7%C&2 +"$!" **)(92)9942.(!(,0 2,3&&!)"!  2*8001 3/$: A1 '%&&(:*<+,&%-()36)1*1&=$?7;3=3=@99P;[/]ai#_/)N=2:;5*DAF%<0!.)&;%I$9-,&"!  ) 2%40!75-635*&0#.##"#);# =2@9'9$2 -5,2(--+3* **#!#-'(*7.)40GC0A:P=O#Y''r,q("}:,`G;EP&AX#7U#@4 %",&$8.93,"'$&!' !&/+?<"76%<$ * #  &#6J%R4LIH44 8716 '0.)4/ $$''*"+.#! 7)? 6, &/=*=$]#+{"}:%V&ac(_U0\`,E\0TJ 3 %!&4!9- /"* *))/) +$#0#+00+ -* 1> =@40 @'*( $" "  (+)$A$J'S8P8.D 90906)+,1( 2' / 3&,5)D*<$) #+-$ 1,#B g>rT%tl$h*[q2Sa2Ba+4\"N< %!&'& # *)$(&-2&88 4 " #(/*0;5?;+3/ 73 (.!!!" #(/0+?/IH$A 0= @2 @"@%3*!!& 0"*-"4*!@- QI# -0 &. 31(+%)'0!EJ P['Xk$Rn1<`24 )G#B,*:"C= fd A< I(3( B*?C'A96K0V13*.MA;[ )i.d"BuRlJ!E/(6!%-015 ;.:* 4"/%,$$**"'(5$<0-  '4 +  (+(')* ,* )4&%,$$8 $./#Q&#R-J<1C&(I \O>"R+M /! ED!8N -C&G"Z05T29_+9`@OO%BN:4t7!zb =.$+%$*13-6#2 .9/&& &%*$5 ,-$&.&3'  '$ %/5*%'$0'%2*#E63P-&];RBB.2C=: \3 [2 X:6:B 71#)F>AC7^51^>*^@ _HfTSi@q3h)Z !6 " 7 LB25/73@,#% ,>>8&#'&" %# (%4.  &-!$& ).1%")!3 "3.>#7O; kMkYhagY!^dJW !O(:[?6c/+0/?$I4J9S$<"!+$ /" ,% (. >F`V ]XSMficb Yn1]p!lRMEF=(-E NZ' Z8 [D F:;:4*#' ,*(1 7')',"!20 2 '! :&)%%0"  -7#B+A+8/4(7< S &Z!Z09^E]IZ;> @H//+;(!1+ "!%* I3 :> B?B3#ED@[ Ohe{ Yr-Ra1RiUOP72#&AL$Z2iI`A U0Q.:( +&& '30'!!%1'2'%? '@$#.$2,(6*'0#!64 $**1'H-L/D:@>G/3R1a !o$"h1hF^CQ CH NX9J'4*&  .) M- ]2W=P<3<554J>`JY%L1>36A7%C3"27/C&7NH47?HB,K;HGCQ!9U-bk)eNZ_[ c[ kTc:R= <<%2!"1!I7o5k>l7N#,&7/'V$  rG464)05*6<=:F@:OVD^PMQ7QO.L5+K$BH+&DF ^q"0x.?z3AA4)0"(%& 6 >*I01>7,X/3P.F9!@H3M5P "aP=S]^d[uO!bQ!ZT2M''(:9&@>!K.T9+`4#E/58D@6>=2&#:)6A5T&h+w/^ E5--<>/R,(S 6KFB3BDA-CF5/ >83A &; 227PFT SN^]S\RV)O =$3O$LO%^H!b(-[8S0)I@I8-F>JH;DR(\)T+:]B/W[2[dBUa*TU'IG-:/=&B3:&;79@0A4S%=Z?` Z N9j+LfGiW-p>-f!3`3C'/N1:SB+CS'.Z=-V1&:"@S&Ya Ew6t//mF&kq bv+ie/ad-SR"4)."1 /('F("=!'I00JL/:N#;P0T1O6(03D5:A4%U>Q%B(1.4674$1,),6$ED 1  % E G @,;C 7S 9I52_.n$n b#+hNk'v[*oF8uNMMBW)N-2DJ>Y9V&.J/2.*KL?HX=u/z0*{VCy[!hg-lc1b\'RR".;"-" !-!Q!ZU!)P,%>>#-;2D$N+%3G*+?-#=! <$B A*9/B&=,">;.+#5)/!.! ' $1 !77$ <:PH"5GR-nv&o,P+33%$ !4"O0W[Q-&/"!%#+.4,4#07<5>4C.%/( 8HNJ&;*=.70;= < M(A7,C6F4!@/9>C. LBCi$!",0:6[ISiJ%@LF*eo$ZhaN!b>!T(RE5W@I3:>RS Pg;k%-j3RA>=1-$/*5#3Z0)d8Z1,?/'I7I& !!%:4U4c)6a+CU#=/">3M"N!O(F$R S[5_DgRP$aFeE^C(G8 H7(B;HR)?e-Kx+z )2(1v5WBBx;Mt!KhJHM?@6*F82;19 %O':V#/_'%t5)z3$w80|M*me4Qn*OX+86&")*/3L.6U'=X-7SC/W7Z.'/"".:BX Ag03W2:0)-6#4.84 ;DB4ODtDrEN)`T#YN-LD3A=1%1$4=9 MT!Qc&Mp%1n$7q4z7s;uBR#|C%z928?kCKN0DMCT**7BD%K#&R0f<$x0,z*!d8TFNHP,>##.$9(<<-\=6]$A\6=TE?YD2]%"9/+B)+HM4KM95E+;/74(,$!";<%:"0=&H5XOu#Ty)BT*>F)-:852(B) <#%11'+6&!B&J:'#F>NZ'J`!5V$-D- =6:831*#0, 4((A5)P,AQ: \D#PK.wF4363fDH8;>E6C#4E,Q-GYWTXA#c-)\!-Y>J%3@$'=3 1("'*7$5>M>)*!1?3-I1=2D*<,5# M(C@3I5G&A&B5I7,L1<>.H+L(QA8>.< J39DJ?e8vH|I Yd;eK [?a(K(.:/J@&eV*lP,^>A4Q6Py?-h@3F&;FP."L";>3]-ZflUS8NQ'^)3b.O)";6*)%*<#C1,-<$A P(3R&K>"A>>A-#< 0,!3 3(?"/>*3F'8FI9Z!a5`<G8 ,?NCJG6KS?m9f)M1[(,V-1M7: ,$2.5S>V]=e`GpTEpFGo=T{BSp?;e,6_87N%K5*D74)C,FKI=C=L%d$&f1#eE&Q#$9 (#$4/(5C.#V+%e)0r':h5FO$HB(=<-.#,!#*):8A4H/R9Q.f"m;)f: L? -[>MLKS$F,4V42Z(0D6"%6.)9"L)&l3Fi,Zg:}aDYO8Tr.V^/Qe2;l+F]#8;5= @/!74724 =R.#]B4dM:oE2^".G7//;,9- ;/P;j%'r#@t*7j=PV&F9.B3!>%# !$ H M)N*h![m ~&z-^. >Z 0[ T %P 9O5==6=9D-?(7:F+Jr'Et";l(HS0X;%>5'A*&G*,&"7=6O]&&W'Wt- n t4eOYM<] *j)U3J@81_BDS8AA,E/L"5U!AZ-Bc6]wBW~TZnR|XO1SnUQ6]MER@HR2[?n0"s5w#ppy"s>_F 1P"O&"B8A9_/JR&LE'P(`0$g-7](8R.=eA_d8`h8I[C`CXlYS(d;Be8UM&EX8]E`NV8OP !X'F'R46b%HV!AR7' 9/;8@#5@9811,4 1=-6O1=c'L`1[.+[$#G49A#7C',;(?>;=$254>6N#Fe7Ln= s4u+ ! y#|"p/X77VS194>(?N-?DI\>76702 &*'2=A;.1%<097!0P)#Z"*c'Fe&UZLC"A:87270H+5ADQElUtC%f7(JP)G\"+k/2d3BG/G+4CFE,V>/z&<K}&:r41Z0D8B@-" !.;')/,L7Z"0T/,W.$L58E/E ,9I(J=K3 E*)7#I#D$$% +&-5,2.!0- 05$,"'#('�6Y"Y5iRh$Y_DA";+%0*&/#893JAbcg$yM%^D-CF'/T +] 7aDM6I=QB6U?'Y?9n?Ro2Xl8EX:)QKBM8C#(=8#Q7+RAE:UG GVHW:R'$E90@$?!B/M6N0E6I <" $(,(34=77:,9"(&$ +(1$DN"]4eAgMT=M(7'+(1 >T&_EVWR%GS.1P,\('\()H#4DBDJXM=j<8dREn:OaIPOCPBC2;M0T2(J@]-)F2!EG;FPLM`V8VR&F]%BS!+U- 8/#/-8 ?6@2/: <6(!722./055`8?c\0WZIMJHRK>:CO-6R-'N$3'9,7/$ /&997/.- 6346/4)4/"@2%B$*1""$! #37'6=""E#e"1k//]!,I1N<2*0*F.L@JT;Q9==B(;W3N%L 'GI=9I4WP\P'eQ8mTLlFMQQB7F*$=<.A?2\86oK1^S7\JCNI=`@8D9B.5A%%7+,')&E#)G%5-#- 4 3+/)$<0+;+86*9)*:$)7$! !$&$$2>6#.= U!"]0,P!-="H? 29/#X6T7ILJP>FPBJJ 4Z*Q+5'K*(E AGNQ*[H9Y@>Q7K@GF-M&(`O)-62R?-cQ9Y\JD>FQ& E,8404"@2-*$-&/&),& 2-<*6=.4157 .&((G!0M@A K56/ . 3.3"!:$.&.+5#6:U,`(%Z'_-#b7&S<%7, 7?(9%<;.*E/A<)0L:7S=@UDE]I'H9 G< $3 4$(#5&!2"&&8: ; =-(),1 #('&' 23JA IM NQLNHDJ7:0%#3!9"6#-##&0-I(P?\KcK!N8*=3#1 ! 1;5IB^M]RJ&RR9KH*]F.[AHQ<4Q&&V =+ '*'7(:2ILK[LIOBI&96$4 $2, /? K IA8$"/2!$&260+&)$A,E<LJLWKZINBD6/'%:$A#4-2$("5*$WH4RXgc$mUjj_P"e]NLGLP*RB8# I$.H(!V$>V)QV1?Z*/I("B+(#4?6"C I E<&8*&,%$1$;6"1%)4* 4)!:7JE MS @RBaKIF@8ED0.'C$;i?=pQ.b&{Y"qckl3b[8EZ+CF2:3.5''>"'^*X"-k+([8=T-@J*$A$4+/5=?K G K @$+ * ((15!8#&;),<)$82 DBEU8R -Q /X &K*9, $ 0,8M.K>>L4C30:<*.3 (P"+k90vX1c5~h0ym:y~8`[?MNAGD;M809&+"!@[!3e8k&h*4W-6F/09 %.4@$GGJ JAH 9#(" ,% 3'/)!8,*7/+A2(C@.?M-5V)S!O(K)J(B)4' $; G1#EA%GB73B(361("8)++4'='O+>`%Lb:R$ ?%7'8 <(=/0N44S-'Y9.e76]1-F;$G%G7. 4&D.I+)03090/?-9=F-)YPF6,C :55*&-(#"/$%&!8,>76%/?/,P4768-)*3,1F@3SIEI4A=Rc.6bH>]b;SAH<3E==-@'*AD%%="4 6620HC EB!9? *,;+Q1W%5Z&4`3;X7AO>8H: E' A& 3()-$*5! 0 -/-,$05.)0&?, >8$7 '573A#9, 6 8%4' .""52-&-*,4;(?H3;B/=8I9'V>([=1T,5HD)%E8A/GICAF,;;%5@% KO?#%(,"53-8H5*D8&83/(&'>,G-Q6NFL%GL/HD6;H6'A, 71'*,..(# &"!+02501"2")4134$8* 25#.*.$1,/6 1(($$)< :<0H3?J:O:.\%#[-#a'0XAII&'>742H/%)9(; N Y$C++.4&58=D&,A#!B%/2.7!;*1I7C=IDGLE'E;/:E.$A;$/B%(;$9*#5.-$!"  ,*+$##(-+++,&#3/69#% ,#!0$(50!0 2# 7'%E.=L/K=)S7(V$a#[8TG<?,&4;,$,8! AI$E&0;4'8"6+5>3H+AA7%89->#L0L1<14>,5 2 & "#(-%. 3 )/=A#5*&$#")!+(   "%*7%15(7:+2*(1:- (%,,&62A<7H+@/9$,.7%&&+2("$))26.2300>(2S+S#E"<()3 26HIUBZB P4R,#F8&35+'#3 92,-50():)'=)4?';7 34723?5 ; BB"'J!$II& ?' @0) )"  %$,%+!2- !*0'$.1!3-$&*+$$(6526GEK4S%R?&BJ5 O5Y8X3L0 L+58"0()';1,05&2&:$+=$-9"8)7*)"1 9>@.>B'T9+U/#P"L"OA 83$"##"/6&'6E:&*%%&(#0<%;,:1@C=/.-+4<"6)#1/36< 7>2B55*/4K#\#\+] [5^2V'7!1/&.$398>'5 #!( 0!-$!$24"A8'OI(VL0`;)](XO ZO&)E!-5$(2%+!5(6 A ;/$"$"4-&<=H3J)U4E-6< /-/0"$*"*04-.,)96"0)63S-m|!{4 m1 E)82%!0%?9+6 7$,!"$ #1B3KE`Ih?l)af#Y(S02Q0'?1)4+$(%$/ >5-$%!*)$(28;4M)M.E9-:)6"2-(#'!-# %+! 2B5F(&7!T- z,' s%Q$@/ !%8+<*7 &1-1 - 1/.:>!L>]>i3h#lp[)J2 G2 B5"18',&%&, 53 -#% 4 72F 5A-.4*!+4,!,6 ' #-!1 !(#*0#IB#6C^4%a*!n&sycE$A&9($# .&"@2+.' $ ("/1 5; 7,-3 AM-Y- d% g%p(d4\H@I#BC%?9 3;$*'%$%&! ), *2 .%$%'8=J I.:%20'0(1'0/*1/14&!;6#?W5NL;Q/]%$V"XP F)C1> 3+,.5"*8"&) %' $..$2 =>7%"#9D)O/X0^h' c<NL)943B$0I0F0F 4/@(E T"V U/C8;,=10:$*1(! '#7$>,E64$ .-.6&%9.,G"NR!K:?A8I#6<4*"%1&10+!,<"E!E+#  %5-&B"P3%X8&S+)@(3,&:( *! ')5#E-GC>@9?;:"?+E)L#$E$/<:8(=63@'9$%-!$ " 3"@"B': 1'*&*,$7'8 *5%&6!EE! A9234)."1 -")106C<8G 5I@0!'#+(4* -%);/M?1B2DD(H6?;:/ +6." /)/ ="V1 R7Q(F2)&0#-*E+H./#5.=?C&<7538&$G"5! &$%4&70:'#. /*"&-3/>39"*6,/&4=G#6-+ / 6,;**>9J2R )H /+!1* = 6'05%1+2610,<19&<0B>=.C70A'<8) EU&R)*Z*"P;-6H.1X4%O:O> 0(3#3154"B(G(<()##* #1'-& # &&$6#7"A%#:',@ /5"-'!5! @%2"8 C L"M0H"E *H5916 -,#A5A* : - !,()!$#5"4+(<-A;DH6A9(I"#V$3]-9\>1W@,WH,G_*F`(7T,9 ("-*3!:-'<'3:,%)8 +*"&%,4%B+@.C% 4$ ,%$-*,!" "/LQ d/h4T #E 39:6 6?92F+ >&3 $17:$53'"$$-+< /A.A44@%$I(\3!gD(dZ*Vd/c_:ch;Y[0AH/1#& *!7>-/%!"09"8%.-'7&"1! 4(>4 D6B*=44/ .*),! ! (6 &D W&_.)e -V/J 3;9B 5/ /- >"4!%' '7L)Q3J;/F&4"*9&#-(,'*$-/)88\R_X(^p+Yx6ZnCkpG`dBGP"0E8$'0#,*'&@!?%" .($+/4=77 80@028), "- 0 *)#,& 4? )G)S)Z'K0D;7@09B<*.+ 5# 7B_)f0Z@D@4B#-=B5L )II!//,D 5  2(4* 2A2L9]-Z8H:L;0G$D/H&5& 0  CTgbX6 G><: ?EJZ 6n'g T&8')(,:[ &k7x&4r<,|N@:@t88[10V.D%+ =(D 4%0)$%" & ! !&+'20!,&D-N?, * (  $ .) 0= 9I=T0M :4D;H'TK-M=68>72 G mp _O&<==GHDRf @g0`K&708B>=-C78T7U!,m5s56&y7+p;+R$P> ,<'C2,$ 5( "/%!)8CG%43 - &  '2 %575>332CFJO3GN?M4;%0,Nlf!ZE( N<5J GZ Hi -S 2= 06$<>JFGNQJEMF*N^"J[?4u lU#;=$.%5#61&'&%"202+ &!$$)!#&,,-82& ,!-%%#(+9<=B"<;/4O(h ,] H 48NY X=K)_3X.$H<Bc (R!5#&@(;_(D]:YT%RD IWOzK|BjWWX; F85)"!")7(0/.11'I,#M+H @ 'E1(7,5($9&4"// (C@ !G +B >*/E2086-551.+%+%" /$!8*F-G;M9%_5c@aAWN =K (T+T @SXFYA ^<jC m:T" >#)./4KWOY VY%ZQ4:83>4A0E((C(3 97:5.==6*>=;>$(*:R f(h"6\!J--R9+F;.5<'3,9 $1$?.Q'J5X,6T0RDU>J=>I*N #LDI `E \H hJs<{G c7G/*(-2',?ANN]DF1CRF3DW/%!' Ba7p9{%e#E22-&--.7!C7MPVR"<0Dd"p 5t+D:%H,5C?4AE);>*$,#)/337* HO"i"[ d(Z-O= BE ,FG3@M?eJyKjVnNZU%?B67+62DD,GH9G@:HIB(D732/6+G!E/O%5h$)j(L#*'1-0Q4/]M1bX(dX.TT"IC"F,.-?DH$U>CSBMDPM#NK3C5< >]#(f"Fj,H0+;3.B<(PK!N<;*9 41!22)0/0?*,Q(Z[OH&<)48'; 59?*M; aKkY^WwhZX:8[<;;,:(D-)c@8YJ44@/:94B64C/:80J1JG#JPDP1V$V?/de7sp?qw9am?UW1F/%#+9540V5Cc:DH8S-AG(-D%)=I27[5>YA6+8;..V@*[DbDK1;)?>.8@(39F0/O(^"\" H =()""E0 M(K* Q3 TMMV)R{XtKb'1j2 R60NTW?2e,9_)BX)S)GZ1?W-'T=b@)JA,<"253-.M3!UlQn =^!:dLKnlJnEs>p~Bcg>L;72%-88#L6K8%>+3C""A,%B=5o7l/k U)7b,eA>k0Ei#WQ%[-`9+^S[\TO%KH9G3+N-(DA8*Kj$KvFf"PiGZwkKx|Av}LE#<$>0[8[%Q)%I#E .#)),*+&,02=<6E!"?N*F.=9K%(T(;F'N>$>F +I %N8:,2@'LJY#Z>"ZGG`?n8o0-:m(N`9^PA^NH4=T*aAiPdK!jR+[I+U:.G<9SPL%STDoQk"8g@Goa>xrDqo>gd@XLC2AB&>*3H6\%V- C80%$*&,6(,1B4W>f)DS#*J'A&$F#I %P"O$)H :JY$[#56D1Q2W'E J"Z&B8 NIHn 6v&|,93#>3Z}2AkC#=^F2~O OoG`1+]-d:^FV44SGV(.^(;e+>";tL7we4lUF^gCVHED4E,):1$/I*7V6LF8@I11U2&@*(%.(/67\:}?p:c@AN;LD>Q(+Z/gXh!{"?M|%LU3ID_ELNEEK\G=J?8,= :`F~Ex R1J@@DDr 4n/rJq]fmX nU?;(cE)rBDsER*DI91*G N!H+/j=2L1:|5 d/ T41R$3=(/1/1J1J%:9 G()I"9E)@=+AL"?<5,($:$@J>UF=c( D#-;2$6$&5.-:<8-RR6Vp7Yj6NV8@YB+LP&MS;EG*--4 < 13 7FGP9O"1l Va&pslnt]ou7aA#{<2_>e)/=G-@&'KJ&DF+fIA{DI.BD&`/'D)9W9F-/:Q8\!>YB@"=&K3O$;I(?F*;$63)*# 86!0:!V. X#&<!)4793//B4P)@+D0&L29WQ6KT5/I-"DJEQ:GTEB>;$NU [" J,JG=>C#BI.Pb'oN*sD7U,m%*|Da9#h1T +2?,SU,hiEYUCaGX+eJOX.{E6_,>IKF @F70DX#[cTM?"6B*T":\3Q..H#$2 &! ! -$?)F49/A/R.O9@FAIAC/C&D$ H7-/: 1,<;%@8EHD[<;X(dk){: d2M2G9P>"E5J@"U78b@KC`#8_$7Y).@*%1CX8Wj=etHbYJn>T>kNgH=h=@L4I95(<3;/0?/3J8%/ 5&:;'N,(V2.a+X-B-*$ */&.O8!_5$d)@g'G_(JAK;"@.>9' ( " !39#!D/'T/`p#|9 / t/ M:A6 LBMC!Q5!_<5C'>W"FX"BP)3P+/+);#S2m#V{/hAvbIGRt;bpFal3K[,DmC[+<;;="/')0$:&,& >=%BF&A92U 7`: -2+# ( &246=T)bFS@M!@@A- 29)7"8"&&1G Dn:y+DI#j&k> }8{ mO$P)>12:-:4.1D/AF)O3O%G4O>R!2k1@y0Ko-U{9ee;MOs'VS]W*^E.S9;X2HT-EH"AN)-H$H$$8));%?gh)3V$9C?< >2C8A/586(8<,:Z%DdJV"V/!_7*i'8>01B>@8/D&0&&"%5<@&F #X"#u, ~<p*v, bs 'q)d089.(32<1<)<>9O-"X$g-X%)W(2o,AePl Nc/OM1YDBM Q;0]BFb(BO#:X IZBI*8X3(]-W&<<$!#O [ !\).S19@:L7J0"F-;)30*$4H$EN"?BT(V'UB/JI1?K86C84A!-4&4$(2*N$/\0:h7h3 k8w/o4n%/sB*hI)4OA *#3>:N66e16q74n-j)c!4k/w@i KE=14 -6'AR(PZ J[*OVBU%BF-/X6l%Y-= 1)2;/#O,R!#V-2 B-'Q-2L&2H#)=#=N=9I*Q*-LM 5T*4M9@\8CM$;6,4:/7G =V7D_L_O cC~D$fH'b9)cZ3?m.)^'*W/0!4C=,V0.t26x,>yC~=M *f%k$!V!.7--#,F_:,VF-TL,NK+FG,IG ,V"`%)U!B$)B$0/%1$@0R+>0"D.V?K'5;--)2+##(.'9,1&"D*%>:#4U#+W'4]$C] RR&C3/?*8#>/+J=DD7cEe]d%jD1aE;OU-GV3%i6 p-)O0:$:NA13ZA>|@;>s$@m32-*=97-&'  !(+7-3J+V"*b".n#FcKX@8!7%,$!5,LP_-wXu+]V/PPD=V+4i8-q9#e0>q04dE9PM<@\Z+|N>z.Yf.CUF.LM!:W1J7& J%g,-gR2.*> N2L4O'@(/"*((+++5+2%8@B:B-?,#  *(00.B*P$a0d=^DQ0D!1%!5 /LG3j5l5a"$_+#]/"\C/j;9r=:sUJ\aW3X^EqKN`;ZWHQQF$3T.3^)#^8 F/?-'T<.YQScnYKbS6X^1BO74*(##<!I5#M> O*A,+,1(1;.#5:4K=#N/&= .9$/#"*426@/N)] 0^<[0R%K!7()%66 +0.&3' "3(54,C*_0c!"R'5P$-P9&!=,%H4[EaMNXHM%EN2.E*49# + -! % 8$4>04?"C:I-#=)'=!#()" 9#$'5+ #:R"]&.H:/U3&I" ?*-S,'_, e:]G_RUST;QK?d0e)G?.,V(JZaZCXWMLY[DSRB^F)Z8P"L*=4"J5*[?/aM+C"3$7#9'+"/ 0#!(50#?A,D@+B(,824)"))' +1/.-6J)K,H1'A:"8/4$7-Y-f!#a0]8*aC#HD(M,RI &L/V+f98V;OlTTTR4PL%PD*G:L *H+9.9/7<>:=C;JF6B<2+7!12,- ('C*J+ M":*".'">'*)"+*(#? F./L23<"33*%""%9,A8; 12/#%"0!;1?6:9=3026$3Q .a(]`2.gB*LA+=0A1 )<'<*9.1;5$U/8]AIkMTkS@]e S^"FX.)J-1:0: 9# = &=)3H$4R(3?1/,#2+%*;.HF ? /4#7/1/.(-. #=!)C'08%&"$ *$.88@7E9D0>2:. 9'0-13 1:94-26L-Q)'S5"Q63\2,J7#8!'8@=$TM)f0@OVWXSXOQ_P6]W%M`&@] $X%<$&!/%57H'?W;I ;O7C"4>?33&807.)-8&<)B$:4!%'  )!3& *#! #!&3,6? 2H AR5I!,E&:#268C(<21 <5(1+L"N;GNVB!K'&1$9 )"! 05DJ _SlL!F'2P+A 90#&$'4,<5?@GHP=W!$>)&,++<6U*- +!"/#"> ;2CMGG<5B#@ ))#=4PGc\#sc'wjnt*a_^FUD M*"KB..GY*X,!d'(a0%K6.V:'T+QC8##$+(+)8$E QR&E-10/&"%- B%$F L #A!%,&"(+4; :E 4M 9F A[8I#9!/)&60;++!' #>1+8GDJ>9PN :6&"U,!e9%l]1}szvts cb&TV4PD.H696;((!S&Q&X!2e5+C+#H5$V0K+ B";%#."0 ,,0& )JR<82E1H0D1>!; $#* %/3)E"@ISC #? !2&##$ %"$9"&8!$0&5$6?.0=.4<2'.@,F"$AG F ;5!!#'%& +7%$+& *5#0/%<#< G)N:HN*4wBR`#sqz?_R<4\DKKOQ.@K @E*.0<P* 94 7?7M,=-+*)2#+(7.)A, N) Q.2Y01T(+F 9 0!'%%4&F!$O)%F%,7)247=90=8994D!E;; > #5-($#*"(#!$,*61',,&&&$90/ 1' 66(D8+LC';\C(gHW&n3v|&XP<2J6+=(:.4/4#+ G'$92G>+<@.$4$+'!$/!2-&B;%= 03 7 80 ;3"3(!&+'%(' ,? 8',10/B$2E9-9(*.0:76A7BI5?BE2,G=]T4eXDhf@QSOB26/A.#% 'C'++85(FB#?E96,*5"742FC8Q 5*>%9!&*A"B-5,45*) 5"0-,($#,.,;8;9A=73I4#VD/RD?S9ADQ/HL9LG4XbER?61#%9%;=#=!%(,2-*296005#0.#'%/)A:-D=:O=FP4X?%_E3ZH/E9!H0S=-Z.:LZAW/,F404*:7$$/3 >:*5*"-).($1-&);')<4#*!(*6.?41O77N:LO7VQ.[I1\K.:A./7962@>*()<+ 9;#J#C:&00%8.#F!-T2R!;Q"BV*KC9K75D337/<4'D9(A=)86F7@:3F>3>5%$ #,319'@.4(!"&,-/-1&#0%%4,%0/*)&"&((7-C"->*6)'D/*J&#U%#+,!&+:&L&A,B%5!%(%''1/7'!32D)>'2)!-9E:$6%*<71D%D#'Q?TAMFBI7*L3)J)6=)94+D8'A1.78>3;D&AO$.NL5(*+*2 +4(6. 2"2$ 8.02+055+62--7BA"+'+*0)7&=(&-"/+)"'*A+1/4(/')*+%)2(>+#H&- $#*, , +B@^B]EP7Q)'U!@"8A =>>&E!+K%&D0 A38"64%0)% !*(#=&= 1+>7C;B>;8&&%53%-('$.)!# "(('*,44-;6 :05;&9 "5 "0' ?3 SDaB b8Z?NAH',A!A6J-K)#=)/3/+#0 3/$<+>+"9'&4,.%4!GF@/$H8)R71]-&S0G/D%<1!1&!#"# %5 )5<0J/<@4A/B/"""(15 ?2><71: 88 1* 523B9=2, ,4/, 41D% P+V4\6ZD"bQWCB,$904F!7!541?5/ 9 +!)5 0( ) (9*@=A4"ND+XG*aA(Z&S-WU $> *J*2(#- 1(B)A-0=$J!E"6# &%&!0#+,B7U- [B<95"8@-*74A8; 1-')/9$90M^x}3<{B\4B*L7,)04'D8;HC'!" ("$"- 5C6PK\Je?k/"bfU3Q4%H+"C$#5$#" 41-$=GF!5  ("$"3 ;;N8P5.9/7$9-&2:)#%*&4&:# ,.*/':4=.G'\~+/2eEE 69%?:3C %- 5>%# $0 ;# 1# 0 @D;W? d5r2u*h!W#L-G1;(7%2*!%$% .461  "4 $@1C0.F)#7-% :;),.0"" !%(1'8/5M)\m}}}\F0A,0@&#I?B= 5!0#$" ,8=9$4"(+<?)R<i;p3z+v/jCMG@6@**#&5$( " (0&  2"5;2I0>1 .)*0'89$J;+?+*+$/. 6 < ; H3Rfko` K2)J3.B*6"7" :4J:7 $, 2-5#B&B-@"C (('%!7B%F0_.j.q$ o>_FJDC4">2( +""-)+ !) #"$4*-,4/ D6H>H$+>!4:#Q/)J)=8 6F6-:< $;06E#$G$X)`)V(N3K**D3/?/,5$#& /(" $);,I"&L5T5F";!*$8>"7.M5Z-Z$ P4 F:D->$5# # .+1</D)> 3"! 1!#70E;M95S27I2-854@3P(K& 8CL% 61 +1 09,.!0!%E/(V*/K(5I$)I"2G,5B';E*$6&## (-?,V. T!!V&N8&$# 2$ :88*"<)E'!SL(=$#:!>(4!,%-!+6 6!6'# !4%*@4?0342&)26-B*= F&01-#90A06-8,'% "& #7 BW!+f*'Z J B+9%:> >7K- UF5%0$"$)*1..C!'N%+?-A4FE.<#=/ B;/MO>YQ@XF&HI0Gf-A^(.Q!2 ( &32+@'27 I2&J<+4#% 7)G -5-50;'K(F&8:% N= [DVI'bV0ZY3Ui=Xd7O\(CC(- $,*6-.<*;)1" $"BGJ&A91?/6(=/;.F* ?*9- .9!BB5 !5 9$P#i a(p 0c9S3K3O ;; 9:H9:02+ @3E/Y/V;ID-JB(D8< 36"71-E /@IHVKU\"Zd2Mj:^yBdoFkb9OI)85! !%$)/0,*1 7)'C# '-5$+80A0:41 =3 -/ 8,5&"3 3 0 %10?.Y !\%Y5[ /J:F?; <@R/ B) / 1 )0 44 G"h4f4]KPV/Q+D ;T 3Z*_%T#6,/K3G :N9v?q(?z5`D^yLi|HOa2@D(+"2 7&$/ 1 37 %#"*"*+*$AP#@!6#?A5&($,3.F (P/P.S:M=TB=J'N0c+ MO - < [lo0mDSQ =U;Pcr N,v f'S167;*Po/t):x7@ARPNsNI]E4P1 ?) /7G@5%!  #)#33!?82= ;5" ! !+- 1C0G!3M1FC=B?G3 V#a" _0d3 Y#/ K r q c,QKP_T[ewH9{##`')HD:DN1N@,I ] m#m0&v?;zI=, '1)  '%-00:!:F$=9F2A*P'` `"o' k:R2 7,  @ q #w# [+XF"EbQg OpBr+/b1X&&]MDYQFJ!@SHX 6^0ktg&&`)4Z =8>9?+*=">"(%""%&,$!61-*$(($%*/!43 *!<*/#$*.2!90(=0I!JQ Z \!lC fS MG+6"O oj1 p$[6$XS+O`,=r/\#+Y8$TG.Q91`(:YQZkbRcL]#Jo5nb(d!W,DD/M 7/(-#%'"&#' #- 3''A:)8J&NF)+!'-' 3&/'',1--#!,$'3:HGRM UR&;F5Z)K7-A7 _%X1 [!R5(dK?S[76b4:G,FDT `R kGOQj\fgLdLeEl3f]Q )B5";)#./312(5&3'#5(&4*=MQ%>3!1)+&+3 $! %%/&,  ! "1: ENW%[S!G-E0GI8`(F&4 1/A*O.O# DN,S5<=H 1G&+(4 5< XD w6 {MlW[[XdN^^jTs;j&`U ;+ ' /#5- ;993?!3(4(-&.:$;)!0638?*> )! "$!#* <'4!$* $$#!9Fal(k+je*C( =3B?=@ @<PBD?G4D$B A -$). # - $D)21& [& v: |X ohkxWsIiabPkGR+S"F6")*-$ 97C6;%P0>-:C67!2 (3 (+)607A7C,(,3 ).+--<'0B$+8 !4!/')3#@[ ms+# x4`'3$&;%5%!)+.*%25;8*3DE-:%8$3"&128.6!6B65C3"76(4.>?$B4+4.*6412C&Vf%s#{<D ~0_/52 2 -<D@U4YBa< Y0 `$W7$$9$0,20C5K$7]D[#GF$<*9)X(p2i!8 2+#A&)M&/Q0JF:M"@H'8(7('T'g9a :#&<6$C=/H1&@*;/;3821E8-9K0)[kk!kk+R/>)A, ,M 'J H,c; Z:qEsV#jO/M;A4*E)J"@(6S**\+AeG;PI=IN9;D23=(M6]9(Q72I09V118%.-)M'7UI@^\?ff(^d6IO+@'!"@%1W+4Y0EW=S3FF;K4EJ*Y'4L(=(+?6-B4)Q2%K%$?,B7CF94E7;=R1/[# ^*o"of#?.(1('47 ??EAP3 X9 gBo` _Zgd:Y]J?BP$9'?0AR7K^EAFgDNd;S\/TS ;JCHAIHV-I:DF*R1/IA"9GHk7MoZHq{GjF`4ZjBRGA4 2*.>Q%KU%KR7G;5F(M%#;<67D0-@5;"?E%9W4)S6I.C2P46^>1DAB=Db?0[6&b7m0i%Q/#'<04=5 U; o0[-h1xT%`aQ\[r=IjH7MD!*24L0DbEMKGp-QyOsRg$:m.#W6*Z(EW4=N1=3VA%OV&P_PK!=(( <)44Y/`*r/r/mL&dP S\Id UjUc5Z"?+A8>Z.FWSO6q7u1AyF6r5 l4q?Bg#(n2\3R/ G!," !$4.F5G,K+J#$Z 'W#+B(-J"2c+:R!HOAw3~)gH,;2;;]8 V +V`!_B^HJW#K.#S! T##M)'M'(GC?WHnGx,t ')#2t8AgS0.zRMC;s?-m&0uA#N=0s(9}#6rE:X4W9xL4q55U,5A3/9(+=3/=H-QB)W;/>B1-76=5791*7R:}B&JeZQeHMJFZ 1y!s*g~! &)6LB\\Ja[Tc5SLH@?7!4*>0[ Dz b_F!KG12AhPlL>w&Ykc`i00WCf(f2\4e 8NT8ZCp.p51&;/Bx;y3]0*F%(%"*$*6%GH7[C1bE6OJ7I=+*42("90kQrL}"H[]C_;DC@D+S\e)y4H>=KLNV^S_LeP3eC^*K)-- 7 *Q -n6x:-)?|!P*=TwaY&6=15G[LH6Z8;`'2N-E0/1A34KGnF"|+!#x-v*r."r1G46)-(0++56.P24VA8YFU0/$)# '"5"3gEpJ_#JDB/A8!=@+6 3/C Z%0gzJEOeO\YPcS>YN0SZ9Cb#M@2;G9SAR+;W05jAWh4bY+tO&02k4 l<-s0=^8T`TC@M3E*%F04MF@[HC{'D2KE96Fn/7R;V=T3+IK$CN8)BJ 4JD%NR<@JB;O;.Z U ^#U&a%!['K'I?<`PIHe/WL5{A6wQ`+Bn;7]54YF@K12K<.EGO:;YJRbSbGp})ZPFL?~?Jn,A_>=:J=-BR&0_-&C*! 0;%5:7P )Z 1J35+% "?"=-.$@$P<6%I:T7I78+H,(S.>X2AK/.&1!3(34]F+v1#} M"m%f$d,X-LP*g!-V6*`@6oGe%Y\2^[TX/1C17/)=+.f'3|7HhR[VVv([P=ZD:> 2;6)!*.3(!=)L)(>+2B*BN%OG!T>M+F4I/A.#$ $7.Y9[&KO5V.%b*/f7T1C&27++:&3$7$E+"D1"M!k( z8j0r% m"%N3E6'-'6+(<$D/W$_J*<)]+x*3q"9]!Kb'ZO,sE5d-CM!YK7Z9FU7D_7AT7@T/2@/C01*%0 '* 5*"C(2M1AF!RFU@R-!Q6U&(C."7#2,1>II`;/V"$r46i'@M,9M1E9+/6),@--2,//-5*H-uBl!#_2)Y7%hC(A6,0?!#)0/,;2X W `#R"(^/1t+9w5dJM&W@-G52E F77Z7KY&HX BT;Z"6^3(P3'P1:)#",#1/0>)5@">KO?]7[2+`%P!K#$E'6,-4?!IEU-T$V&1T;>]=?G=&?5-:7-.0-8.75.=G/d/ RL)DE/]$6{$6$2l,8[%2n&2j'=S2C5!1D+>*8 >K2PP@GWLCMS6]B9>W6f*i*H&6 B8<&+/H,O56J2X9;k&8c3H2>(/6'*)&/ 2*8 A%H'/ND3?H 8J"@Q&3DJ"R"J[W&^YMSQT-K_<@h:6n>*yBd5[ !pL!GgN)n82o%;YAQ (i.\$2K"2*:Y/e$/U*GBAU#OXJU*DK;9U>-,T. b iJ#3 9)9:,2/<(C/2>5D2:WDO@5&D4709>""+(.( B! O7"HXNZ@`^&YLEQ(5?0*@T%Z+4R,(K) $)'&'/$)56.48.C.-@)?;1L*)J& 7!5!)%#5.3&7;5B4N f+i%T B6'-+A H`4XD4O\GUYRQ;MK0I*LE=^0D8= M?T/J;2*'6'?!/+,4)3@3K (]'Z0Q0G+E-=*&O=HQVb`VYPKO3?\H3o1-h6sC:y`XA\[YW[`fRP[8B@$!31"D;,Q//P,#<(%(!7&A6KP@\7 Z*A1:+$I20()&,6/L-Q R"0J26Y-.J":?-C;&S@kSnI#aPLO(HS$Hb+Fg-;_(>f8OV,YGHP1_`NYgxHbz@aeGDJ);8;07,8;JJ5X@_BNT.58"(07#; /C 23G17(%+ &"!(?!"%O26@<;T=0H7 6.0$P-/d4&o4$mL [M%YW'SM[A%E\#@Z:SQ76a-L`BG\\NXx9TjLSb2WNP:"O)%G?*'>-/a=5\=9YS1WR-JH>H01=!"%5'I#OH+6#5 - +,# .-##&8 <4"FAL>%G6+@#-< 21-+ !).' 4<.#F8$>>/CP.@E867*U0h&(e+"cB*ZG,OF.Y3S>=Y#7T ??Q)#[,+cQ5aa?w[*L?'I-<#/5*=5=NC*[FDdKEyX?kQ2dd!Qg!4g*+I*+&:4 B+,K*Q*9"..907@,=:@/;*#9F,Y$!D1@"'C/?/1*%7#() !$'&3#2#'3$-&"( , &'(%6 ? =2/.(%9:(5A$9J!9J>H6:2=+N('B4%P+)Z,,I1:1+"/$:*1O%FcQP^ga^]n[PRb5XG#M]#5^&#T,7<>:; B+9<4A*<$$7%7 70,*;%N.,?/3*#'0"45=39"6 %  +/'(%,!!# /E!!H": )D "H9*,#$<2)?:2D*H(:# 8,&-'.2#P7+a>$jb.t}ImH^^8`D4M2;_ +Z%M5%AG-"U0#<,4861R-0K2*@.<)F#F!5%/-)>1+.*"$$2B#B'7#%," )$ :&B+4(($E P*Q'H 3D 'O"H(&0'.3$>54/40N89 '"!4E7B@1"F E59),N5!S@.^P%B3)NN%DA(6P;+NJ6vW:uy43l}Qh&]Z)W4.84(; B)J,E4E*&A0D-C7 C'P$%P"@33,5D2H-7 -? IC""7,(%<;&I&(H+-G85837-4-8 "H M$R:1 #!)%0+ :.- 3!(&#/0+)@2MM&OC7S6/aH8ob%~w.)p%Kh0CV7OLIO%>:M'+:!K" G0C&@&@*;":"6,!1&8.<*982 8!>&?9)1&(.$%J: #@31?1=A8F63C524$8,GPT=.#($"/'-%.$3.' "$#)2 #@"BJ4N@FN43]O#iayxug3Sd3)P7>=H@(E4-3%18A5(1+>!H@"*5$,<)4(6 6<0>57>%1I+4C%#3*2* $%# #4 JS*L"5B/=4,J4/R,8D,@5 C A&+-$5,*."%& "()+'#% )#)-0(?#B I2TCHW/9JH`Y%qv~-t0XW,1D-!03 '(%# )+!'/'$ '0 1057#* (-&-=$&I+2K/;MBB?EF,G>+C7*5:/0**+%(*GV#J.F(=12C+6K%8N7- 0) /$!!2 +&"+2(D1"3+#2)'#& #(#)36&,511#@>!K<+HC':A/7JV2Ue gh1ep7WI6E?'1"""#'$'.!A 0")6)/2.*$(9L+0S49U;9OM=F\9;^?,RC$H<$5126?:5$ !5 ? =+A ?,'N#,L1:2A:C)2)'8/:")0$2B3.N7.C0;H!6/)"  .,?()8+&00C.0U+AI:E2B98J=3FW+GP*X>+OG)8'*(+!#6&)1(>FA&/D166/&+#( $C15P3D^GE]T@Mm=ClD?]C6QE:7.:H(H5&906/-5) 2!F "H%,I!.G,/G(@*56 95/!+9#9L0(P24M+8K*6%.%/4&= +9 )"*4((<0'BFC;$J/7D1X5 H6"8@,H,/7.: : &%/"?'N&<(..:#'1&#*$5-<;.EMJJJ]MDdE@>,A:*8B+8.+$"( < !C#G%'N+)@@+!3"(,*= @"C&I #F&H>0# 3";?!C$E ,:8&A$D,I4M.2[SJAK)301+% +1 4=(:%0$*7!0%/&+5,,P,X"=H$AL-KD:W?:c@?[-BCID%=F*5@38=92KC$D@5:1 )6:;!?*A$>$+%% +4 &B A$CD%!G+< 3:,1*+BNK"+<+7!/= .G&*.)+'! ;9#:5*$6- 4*,&- *-$3%:4=$9"!4#&, 1*@<1D!Y0V:JMEW:"M2-Y)/R9E7?:B'?B+4DA.CF"DQ#7N!L=&-(/ /+514 , 7*>0 )4 '1 +>K"A%: *3 !+-*73M)?R&MOW>V/)S&8FLG ^8N,S0I%2?#0EA='HB08H=1MO'IPG,F43A2/<:4:138.4:5>G91IH(C)B(GDD$M(I) B2$4=2:-2 + '' 11+) $:3G1C4> KMTMVE$S=;-="'! %>"(!/4 *# ''-0:+ >6<421 5(*") %3(?:VQ"aEdD UNXH V6&H":B2;;9!A;,4I'6I$035%0/, >%(7'5,Q/VFO,(G0F.&V0!L8>38#+ &%! ""0$F 7A I7NCSNJL AB#-:%/%#",* 3/$7 #914 6*< >5A27@2H36,$0)1 6=)J/$X7'S?)bT0c](_RPFD+':08!>2-9:K*V!G 0*'*:1G(GJI)M<SB"_6T>H3H=#3". )%! &.51D9D1I?CP5K)/:1'-*!.,1,"F(*D$036$ 6>E'88.1@%4O*&>"(61'&7%!GM X#*_%/oD2{QI"l4J0MF >*'817CP7Z W1& $!"!*(10!07 4 P%G@T@[5^;_0Q @B =2:+3 "8(>6K<9%+( "%*!%"1-%A-*B*$H'08'>B*/D?*!3#(!"$(* ++=4&L0 E' S j h+"K"!CCU.[5 M43"$ '")")*1 9EF$ <--*: B EH,`@j= m: k3 a5R.G-0$%36+ ")*!$1%+'*+"'-+";1@,@/#<%>*(B=/T?6?,-$*" !)27-B/D# G\"i/ro"\5%Q6)H2'D",?/M8R7 <.!# )*9*<'"P!'N*M/J$4=C'E @<'Y5d7j4 c> b@S3>'0  %46 6)  "/7"&.!2.0*2153#7-&3/:0"QE3K3P.O&= 2'-)'", /( 6?(F0\%W X)R.8R,2G)3H,8:.%+2 % % "."@&(W$'Y/X2X4K 4<7 =@#="K,Z(`*R3E=B.80$$"8/H.?/;*9 , 7 !).,.C1':B)?/4=007,38!A?$G.W6R" F6A$A3 (# $:&6 X.[-$S%3S(9N5?NBCK9?O1.I.'1" '4%%I.+Z*(a%\2V3>('718#5(6%:%%I/"N)E#4<&?&%&4 B !B-C+8F :G GE :7 ') % ' ,( -@DH-D1;C$J;]<U<I4(T%N!F434 ;.0&#1)9'0$4CAI5+A'8C$D?$IK4HP3DY6=E23/%/ /.(LS .C>A:)%.#/6! >$K 8%(&",).!?/R.i7c:e1I.B&:!&#.05@#2?0-?24@)B HM (;+.6>A/I?3MO5@NO@9DA*$1  /5@9A>?8:) 94*:,=!)> 27)1.*?*E0B9 ?6 .5DQ%_%9h KgEh/\J C (= )8D4K-M.;,9(* ")="P!#U1(P/O715,#9"* ":)7L$?H;6H?6JB,IB20.>(/G&%O 2M,::,:!+/&>B>1?)1$'4.;1B-: IR&`*o#<_PwHp2a[ P /C(I4OB2 <;B0X((H*7*'3#-&"7)+7129*-I9';( 2!:!EHVO ^Ag\,R`;JiCL_8@F%:7,)"-75.C?G=0<300 $+ 6"+I 0W-1W%'Z5"?+8(&)$4-92 F1 B13!&.?!I?GH- Z k1dFk =g)Y.O (M A1 ;7-441 /7 <6I<P;[>CC&@ 2%.2E6C@C3&<(!@#HCUA\Vfi2ZqK_xJ`iFY\ALA1.;/'*.+1/+&&/,)7 $>-%$( #-%"7"D&&<8943 (/,'0!!1(3#.7@S d[Y )V0W 3L 87R*R >! ,'-4K']*j7dMOX 9O# EK_Aj+Z N*@6+J&E@IP [fOx.Py:_He|N[wGMT3=.$$/$7 )<,5 (6 #"+"+;'D%J= 15. '&0&/0<O\T$V1T BV NKK@h%d\.4% +H b"w/}L\WKTD]\kMqCj!f*O2F0GA&5MEj2"=wAETYSVeRQXQD@7($"):)J= ,* ()(! )#,+/,$B#PH<1"8)"$!#"0 ,(C(I-O#J7EDKLG Q@_-o#w qG4V w!q-tA_^biVeN LAt,%d,%Y4gUCl"OZ*ET+?9!<+<)):KI /#(! !&%#'('!,#%5,<#>2'6(-$(" +*'!! #4 0:198DD5H9M= XEk' ( tT  6[ z;!oA$jZ3Wr*PAzB3(i$i7)c9ES@JT3J[8Y+Xbk8j/M\*GW!CBM"Q#:?-J#=%#!#( ""!%6%:!8:/=3.9%9)4$'!$,%..#%$  , 8%B*U3V/]$Z- _r%|(+|-T 0! fp"x2bQ"Wl4Zt2JpLa"k.j.h" c" `' e2fFU83+7+T-i$^,IO+Y\:RoNh;B"H&U)S0X/U;OVa\a$Ii*/a"^UM=9N(!_)L#9! '( %-%$)2!:**)/*0 EJ1CA$8/5)=:7%"-##$ $'"$#"+ 2?Rd!c+W!aZ SK738-&$+J8E8 QI'F1#HS4H^HG:#/?89+VJL]=l@_L^!Ah'@eGV"\W0>H,Q'Q&.C&'1#$)(#3(+'0=,.&/0/(0A3D1#F<2A!1&))4,0 &.6#02/:&,23C MU(V !f$)iaT B ?( 1"2% 5E 0C'K6O D D ?, 12# 2 0, $M(^O VoNz:t@k'2e&FV>W3[K E5.=+D):!,&"$4&?,/79B2 5-6 6 7%J3$F?&CI#:107/-/(7>#8H5GI8:7#?Yfo p+w%#e,L#; %%6 M/ SNAH3_*^ P#=&=D?E(> *%SN 11BKMf >'7}.r$7\$8M%;N6D ; !3'#<.*F(*0$!#('/6:'39<3K,&:$+!+ )C)"A7-K"-G2L>%@;*0+;3-N/LK$EJ&6N'(BWs!# |- w6b2H+" % I#Z3^FP,kvR,9;&TL,@S (N"\0,#f31F@ )*G9E4@&%7?7:F=9GG.:M/4N+'aix(pq%e/R,0*=36+L0V/a$ dj%$Y;1FA6IG4Z8v'p%!<"|A0qZ8HP9+2=_05p*&_*0L.1O,'41++'5,?49>;N72A9DG:1;&#$ "(7 4L;S9C&=:)5;&(,#?+P7G8:'8-<$D;>;6FFDFF;8CF52[72d.)x(} q%W->,4+0</BE?YD_&j. m3p5*i?AIC7D6h!8s2&~>4yO,{\A{W8TR?>R?MK>7>8'-=& 4.7+S3T8FLYKD_ZKdECV)@'$% '9=PIWLQ,D<,:/-59;-)311>>'%G%"G%M( L53OA5QECMB<43\@(c5w28/i.#I-!1&64A=GBPKYE n:i3gK!gP;jDW*68%H0[=/fJM{n.zv.sr;vj2[q-3T)3U3XBS8LDC%>78EG!W\\rJesolftgXSGc5AA= !2/H9aPeKb<0E2!E-?%/0*):,K6N/RL$$U5S47g=7U9D>;`E,]O*oRzMx.'\6*9=)#0 D. R<jG$wT$rQwA oB j^qcvId4H&".)L>KfNN_y"VWtz\s*c+2j69v:w5Z89M1'!M2$i@)pH`BL2!?.1,>#/&",B'I,O1N.O 8g /e+s%.\*JF6YR*O[(Xifg^i&DK<IB ?H4"R5&j71449|= hOWU`XzasT+UD&3)=B@Pd6CQR(D'7.9q*@y6;@1+6d!2G4@P?^9i|4ttLtzrlf}Ze=LdL7]O*9A.'=,2f=/mD#mD(K=.>-401+,375%#D+M 9X*L'f,m'9b/AZ-=D?+?9@b)DyTpMWynXsErq5bSE]D?<(-"!+$/7R;6i6:[+:M#><1,30));&>.@!B.f2m#;k!@_!M`#GG!QX.:s"*v4Y/#-!~DDMI]J7V+6](2P%8K*1W2*>KDj \s UoLqV}1} #,`4IAX<'gQ E*'3 4.3/5v2674}28w'8_#BE#aB-e%0} "<%E#35m0 O =<&-T"+K=0RC7eM+WB"NB>[(:M>E1C,Z*2s4Nx2Oh!\`aP'`RgUDa"-q(z"'4&OC[kUbx]hn8cdVe1D99K K:z W_{+k{6NbBHw/I*EAt>\.z*4}![a nFs+-`6m?mB_'k 2S>FOP\<$i'0",+ )1j2K#,//161>8BA4\E+]E"YH!M2#O&1I4*,F i.:0Fs#TbYMZ2S> JC9T'^jz15C5ZLdgYllRof'oU\9.G99L?q9$F~+Cl?-iD2h6G6L8_t'wR, 6+Na5?>7a17i2GL:T)I$;?NT,XK"a+%h.c 7'9*&+9i).L?(6*)+4*;2KI(WD-g9$cBT*&7*6$% 0 $Z/1~ =q$ONL/F0982.)A4D1X/+kEBXF{f\eclWmdCkd(h*W5K+:3;G@K$4he0kC$d9DP:K\?acBhaIU0&;0#'$_;NXIjMIMP@M),;)+01..I8=S(+r&)x ALb8k:u&=W/.D)A:30'-0#$4 .6#DE X/%P.H 4& (,)D6U?Y?I:6*-3 ,*2&;-@KAARLB]ZKcfKP^@Cf56a&3[CO@FFI2K=IM<8 6:"E-<<*XX ;%22640:EO*>aBu=^~'VnOe 7Q9L$?@3=1>7D*55;*A!*.=?9>/7.&((.%6<77+ 2$6">5!A3@>04N=COIUSIAOCM4@S-V "NI@CY?Xy'Tt9AiHAJND>C=F&*J@9-PLTPdZ8Rb0M1L3bvff_hJR@>-E7D-;*;*-FJ&8#+9"93+/%$:+/;.8$Ps$(v. q0n(["/`(1>1P$X%7Y6Ab(=m?Pw,id8cp'Lo.AY/.aJ9.hJj Fa3GMG_@[e.Na+ZZoD4bWGea\?Tp0TY6`O#CQ/.Q2IT"RG8bDs E]"Y=8].JU!PSO83^BUZPDaX;bJ.P+!B$+H8#&3.G/"b1=X(MJ XCb:_6#O=)J=.S35T)2)$4 1:??I/5Y-)d1c 5Z3J$1B '8(,+" ,-B6"M3 =).a, 5p2_(b. H?>J5&D;!*0+ =(=3,)_RO.TG3VA.97H/!LA\)5^0WOL#i?"X07QC2_-7[3[S7Qm6-l1%N":A/ &%=.!Q9;L,VKT>b<\2#]2)g0+j()_ #C"N5 ^9]>b<X)Z7Bc;.MH29I7:G%#K7Q,$A"2+$/$5B;PGYG!a5(hB7WK6`81e/b /[ 1O*C!-;-EI S Y(_3)T?(T>.?F42<;(ILFOGTUdL7G8I2PAf7F_0B\9BbJ:kI'_= Z>!f> c=.MW*g)&[4$?7*Z5'f2.\-6R-1<02< F%N=/!KJcF2mIF\IHGJC:)]6`.S1-%+A.&6 >#$A6D5E@DZA;h4:\?QCX+@*7"3!; ,; BO7*K>)?B,?D%1H3(;;.AM6QIZO^"U'^ K"X*j',z=.t@,rKnM j?y8 ; fEIR&e7%Q;@F+;R&7P3T&+26*7Q+c%=_;D?ZFxIuTNM3IH<74O%^"$W'+=(9.9&8/2&(@3M1IK;O?@O.FF!DK:Q4'J9%-*-"'((&, /G+C7$9B-5G(0U "R'F-67?*J:P,N_8\0[5X@d%}* EA R ]H=%6d3"4XN-E.>2MCD$";+C 4U0O`?XfIR\[QNaLB>P>(DE9=HJ*=?%9!3-.$+:-$-5+D"H!P'W9),%*"!! 1$:@:UY;U>b OW$Bg*@p6P752,.,I&6T#Q)'F1+*%?'.27#4+$3#R)U%P6HE:@0 ,(.J,-TL`'WX*XG!Z[+Xi/Ti5;o<>wI@{H-qJ>p8J[(:W*:69WaKTk74_>&D8)?"+F*@C9&UGB]JHmRIiOS^W\dXVeQQa:7D-,36&F7/J42O)":" #3 +E5RCM&Q9V)D <#,=3&7%)4)B-Y-Y&.K)5J49A376."5!D>D$\D bH'oH)oF)ZM!KO,TY0QY7MV7?Y8LL@O8)T>5IXPV6QD@o-2R%)409;73<=+MD8PSFhE=gFFeR>hORjLKW3-@$%4"J*G0D"2@":;26/'&,+*-;5CN<S2U%@9#- -)=,0*30"!5<;D.P<%L699B4>P"%8,S64q>-t:$sK$iB-YB.^5 YA*YN'HH&=FJ75[,2VPBMk,V6I4>v?GE1H##>(0?03AB$M=,?BDJR.RR6H@8T6+H6/+AZ`0H &EF#;6, 4.'50%C0P5#P'(G-@ 4(9'C/-'.!!0%/- *8' /@&8:&4K56X &* !( *".#*!**8,=# E&>1'@#6(4/',##"! !'$+3-7@1?R71c0<[Ah$+6E6P6V&T,`?UAS/N2, ,8=:P?.cP:ne7p`9s\YSAI%&N&/7$62:(3C8P ->/63*>M,D=XG#U438E/!H1G/@ 5<$9:,9'.&)  + ) 8.,..,) ((. 2&&7,:+ /43 $#)018?=Pu*]X KL# I-A-+.7 66BH/@P.:Q(8#;2M-R6A)9C%.M*.D1.4*06%*=-"?(2   ) *1"1"$ )8'P,E,3!;HC'3,*@6<@??7K*F_&OW :&$)-H4&T",J$3+#(*,*;*8JC>g^@sw8]lJXH2c@8g&*Q"D:92>&J2'@:D:79Z30S3B6L05%$.$/./ E'#G2#7,)+'0-)>"1;&% %&" /$ .'&! "' G L+)_++Q$B@A,%'(<3(A9+63#C<+[HD/ -3:))846135#I@'(A?3,.;0-4/;*,C$.8!.*+(9*8%%" #* %$'"2-5$08//21,,5;")->S W!J&:9 '%'/33;0BE;%I;)&#!/(:-40IV&F8-=N<9`NGckKevMcIQr2hdNZI>4#'#0 8?IC]IT2?B%C)7$;",;-454-03G(*F'5%(9&>1 (,%" $ (3#>%C><1A?9@07H1>2B NG4- '0*>$M 7B =2"(($2#82;&QU"+SE3KU4jn?m}AI1?-2*2(*,F/-E/@ A B#52#"$'? "J*A $:#7$'63(!1"/&.6 %0#%# )56-A.7D5#4$2. &' #"*)'8>3#E;*O;LGFC:=:MCN_)ThVB!HI+6$%)3 'G"G9 %2.0 "%%"$'7$P, `5+eG$]V0R_1N_7JS2C9+B68;98/&%&!0 AF7?F1Y%.S0@5E-I =1*,)'#"6,(H4Q:$J:6Q(3?&+*$'-(&!-$*11G05M2$H9%@?"@1/93E$C4H99?-'*&)%"'/%=%M RG!<$%3&3"$"&$F1&\6/eM.Z]/_r4Th7SQ7UE+MB%ICK>"3:3,'1)!)!F"W(V 1L*L#GG!;+37'8(K2"X6&S:)]6-Z"0O"):*&: =# )&'"!&&)?1 B<;;94-,58%+'&-$5%'(/>.;%)3# -/97.L0"WF7(8'/>#,.2,!,&37.?FM/BY2Kh4N\=R[;UR'ZDXL DJ6D">81(B#=  7&M(T SJH D-2?3?+L*E$R#V_T6*'5'#D:$K#;( 7H.D88-'E::*+$-'!,G,?471+%46##A4(>$ 54!7)29./*2(30,G-M:D"A8,T36a.Df%GTOHFO4P;Q.EK66A:BA)<7%%9$:M"H?#+%7%B"A .HK!S ^SK*I*;AN2OQ+?'0#-3 #1!+)/#+2%-%% &'+,G.?G6$>)"&=",C0F$(I!&9&#)/8"!D 0;(B6T-*P$4QE?!H7(V"4e9U?S4T%@S-PR(IN8?JB%FJ=M.L<+2+='%&%++= 4A )A)> !< XL #[0Y6XT[^O_%S&E!#.0,66"0*(#%$"''27&?A=58:I7O2-02:8:18"-#$&!@"$V,7W(DM%WD+^:([/0RCJEAN,#\*.U(4O/8H(DG+RM+FS3=UH"H[;V3LJ3&>"*G+A.=!?.BL37/. 1 *%*"&%0C BR-PP(VF)UI)i>_2&P+2M 1A*KJ ?'"H'$?,0.-%,3(7#8 2124D&D/I I` agxUhE&l<'R!="%, #:")-". 1*$#G 7<28A=7=.3$2#-.%G9'VL,WP9\X:ZY#ZK]<U"(P8H AH?M$?N$CT(%D/.+*/0#(62A9].\CG.@1+92)<<3694+1 !$#.#: /IAB KM^M nS"gRUJ&L0(7$*+&#)*/#,% +&*:?!$938!2H#6I"7%/1 '+*1 O<^2%SI#F=)5*""$,!!!),(/0%5#-)")7%7=)-)40$73G'0?"4$++'-052G5'S$]"g+y8 5-h;X4L&RT- W*N#?!>: ..*&A&6.E5721&36FN" M0Q5Z8S)K':5 ,6!& &',36B:1>42@:3/4,!#*/ ('$&++(65J5@3?4;2-F#/Z<57:#)="8&/)1!/(/3=G2Q% Uk |% #x4[8T."Q%K+Z- W,V' 8/!+#6,B-A(H!K)>#1,C JC B.W1 ^4W8Q6B7 A&;#1) 1E@ !< 2. #, !()+-+$- +0,'+01<3#K1>)5:!K (\22T=:F.9)+ ,(*N+ Q- W]_hpl,,XA5]54U".K(9H-Q6F ;4%"/,#<14J/-Q*V'Q/T/@K%T?9P/Y<W=M;E:I,5  "7%C"EA() 0!<@0/,'9))(7.+4(3-&0&5&G3)j@7R.P*H45//%5( F&X$RUU!R!%\*2R6;W7BN;=F<9;=,6.6 ('**: 3H&8U'6\!4[8^9Y%.@(1+8/:(H$)M,A8S!CWBG=?1) ". &#  4 !.*0B(B4.*>-l>SGcCb(J K)H$:)4172 64./'0(35;?1O0R/FG/K@1RCGSN?KZ/IZ+>< -#(!3$'F7*P>(^4$L($E:)546/1+%-/#'F,O('B2&- &6*=*O'3_+Db+UY[e3X >N<:(7 5 !!+5)"$$,*@0R0oH z3(d3O(M*>2<0/22<:1A)9!"5B I %; 8"!0<:0K>@O=;QJBRP?NG8F;&30 '=-B>BG =HF6?6 $&07$-0.)*.) E561'9F T0!^4AlCXji`[t Ce0J(E(<%4*, =/B&6/)!( /IY('a/0J1H5J+;!7A0&><+DG3A+.)K(U+U(N2 %-<,G;4POINUELP5?B/105"!.B:HS):T-;T,:H!50!+ '," ;$6. .0 %+ -,8(8D LX?0i7DmSoanblAd%N $> 37 6="/ (8-B13E.@,''(8% :6(@1@.,<&3:(#18/-8(+;6JDZMh(;b<@d;5[9'C- ' =+&QG2`M:[F(@B%5/$2= ]5V. /*'&4%12I.[;IE"@I?'5?.>T.Z;),"##9' 7*>-?+< #<,''1*-$0#<+R)Q>7,-!$&496.>BGRY!cf0_ApAZUE j5 bE?2-%/ L Q&X/V=JQ;C5KAtC{D{$,Z6J9X;DS>GC6VcTk*C|HLs\\jZS]_PRVF6#3&*)..E+= 18/4/()"/2&.%.%(IW%I"(; 5"0' . 8%&54+#97 >AA$N9WE\Zh%Z]"jD r*m5T.3)?S O].'XPZc\WG`EN>*-W3$OF5TG1FL:X66P6g;:zFIo!\\%dU,NN0N3,>+"9"4)I%&C!'6$1=0(5"-,-';.01-2 2D8I1D.&2*/6)-)#%&-9#2<($4#(&"( +$IF*K)<8FLM[D j:~(U'4$ <' J*`/l:-gJ%mu.ql"Gw EBAl4&lL,`P?TMPSCZW8S'X+n/uOh"]g"`bJ7(R%KAA#/SE$6$'# '2)9' E%E)D9 6K,:5-/$(*/4,13%!# !&0%=6MIYB'W5[5Y:z& .&_-.&,G#an@\S&Vo(]wUzcj!GY*`4 i*_>ZNOT\ Ci0d%Q"c/`)B_KT&T3,_(`''G? A*D:0>&':7$. /9 8.5,"."* C]3 s>v/ o&!`%V.b#g(T#L): E:@H+ OU-R==OTVgPM;G@'2J#6P+TN 8R>e)Ho1 g-P$7!183)P+`>d1[%6+.( #$($' 50 D.40)-%1""C+F45FD-4&3@&8'&=/?4B @*0& J#V"M,T1b3,\ '](b%Z4E?3):6K75J&DY1]/ K11N"./(-:1AG)d+`&Q&W)*b2(]1)NI5'>177='WeZ9& 5"/ -15< ;<466. -&F+L,2J@3<&2H8#B666.%AA$IDJ=G=60%O%^$Z% g!et %f'"^1U/ @("!2-HPPG].d- a)?7 ZO [Q@Q @ nc(97..-3N'd!.j'.k)Q V:Q4P5+332@ X[(Q!=>- '0)=:C8=1($*"2 *C2D6.,!*$:,,:1J",X.V6F7'6=HD:M6!3,-7N@ED;;B+LX(VZ1I7#81*0.!>H"PKPNID@;249-%.-)% :='7%E#$J)-C19M=>D8M;*jA%k0585s7!M.-&8+A@FH= j?12* t'd<QN=`+r8 B$n(s0~s*C 7?*O FA%=$]1]&A^/EO*NE&W@#gP{PM5_@,2:-./2DF)YJ4_X1xP<Dx1e*p,m&]1EC(aJ$W-+h)o8P+,|h3=|*4|+h a (j:UV]o(ro2koSbWp]axKK_9%[;9; 5:YADtU2oP/bR)WW/8;C-3J&2M8#1AR:Q'1N0"a(f%/s+?w2Jg$P^ O`T_OmOVC/%[O,EP<:5S*I]+G_9/oE*{G"bPVsetetAy^#]P K>.05{:;H3h74G38/ B>QL)Uc;K^?LM9Y<-JFDMFHOKJ;O5.A**Z.K{0P{+Mc!J_IT.j<0q10,1/20( [ &;(E=1Y@:RG6VC7]T7cL%jJ>y<=j>8A775HC:tJ?CCq1Vm4]T2bgiK_ZBl%r1 y8"B4USca_es[\rj9nk3e_FUAZOk*D3e}McSVQcaO>4[KKS:RMdG(qL,V8,_=,b0/?$5 U7099p.Lk,TV(Y:S4NFJK!2Z)h-z3-J?]HloUekQj(zg+m=[X)X<"PG~$L{5AhH6YT+bUDdT>qgPcdjQZ=L:7<-AA;HT>BI,\8He&N|_zF>?l1J*72%$%<0.c;9X1LX dPgA.P/.M$#G/,+9P:/a48a,BN)C6$E$J&9.$.2:45V'&g@>tH?n^D^sWZXGRE6s:dZ.ZDNS\!Kg#(U: bHAJs"Bp j#qf`wHg$DR2N;0T@11 /'K$4L APbMX;C*$@ ? -. $?*)H,@Q+8@+2.:(3/%9!:&D@"8Q8McGU]ZEZq3Sx33!p9Bf0MFcEfING>?7G'221PC=\PPb8lmA\>p;c?iBJJ9K>HM?HN+@:>(E)'D(E5BV9)Tn(mtx|haPS<"S7.LB1 D;2!B+E2>F8:0@*KA +"&0))(>:&2#* +*!(5&G='C$< A#L=-K^=U[TVQb=Ko*t![83Ka1I{! }3j6W9P="93=K?/P@Fc:n{=dy@c9`DaKTxDMl?E_\9CP!@*!F$9@+9F>1BF!DV,@m6]q!uv}a5|a-eN!S3'M$16 :!'; ;0#N'G-@ <1B0M4U"!K++"3//!"-14"$ $*5L DK%D/)BLP-"PD/KNCB>E9=L4,F@@[0{' , 8zU1*H?5IA926"F<@g3W}?m4c?T=m8OB\~SOlQ*e<*1W6P)AV5YL#\:t2$d,-V5;4.<8//1"&&,"8;8 @AWH0W,3]6U6M!J7+ 1?$/.79+R- f( ! o$ _@ KSE9S2BC 'S+;NHPHRQ=4lKC_OMUJ9WL/VGQZFZB=b6'b#(EF<9MBNO*B6K1&[62^HE\U3bMU7/Q/.I<#-6$M.BY?U_4mPpI#j=a4&M6*T19`*/R"#=&-+0-@, E.\+(m7e<]7N'3<#*,&: D =C#G--I)6S,p3p2 d!bELb6NY"JH'8A+)L,9A(D2=W0,R\=KZ4L?'A3F:;D5;2V9R1&K+'@D7HQ6\P?OR;;L<4H71J%/5NC+VK);@(-:(P'e %R# a(*cBE#P+%;"6C$ M$-S(*R.*Z+/\.T 5 .))243;K+YN!qF%iD&aI%h.,u*)r4m2b(T@A B[#p)q1n15b;1I.31 7!#C+SRK YS2RO/K"? 6<EAB<69BG7Q5FbE>VI;^>/O:,_/:R0CP:=15;,$2F9V7d+ V1L,1C&9/&9'!- 50J (g-Nd!N7M gXha"Tc I)R Q'_&.Y<5iI,`A&qI!o\#bH&ZP/`OObF@P50J'08IH(k="SD%N5&?A;0I%!6-2,9O)!h3z12EAnLBG=J?)K/ Q'B&#/#-52+543C.96@;EC>VJ>`6=],KZF`3K%@<5 8!>"%H4+L=>D?1:9++;9&,=A 5K ][&cg!Pr(a8e&\"0i+q=!I#}DhRrf3mM1wS(jV9XI0=F-$I-&5A-F;2J71F1*:6!&:(=)&<7-E39G]E7kJy7q?aB9IEF2&>&T&C%690 C%,D066@<;3C.AD9K?=J-JY6Mb)5e#+M%1"!%$1()&.#"?4*89'?7 <$<% 5+((3!6<&BI&N`7VqIUDS$E^.Hi1?t7?B5ITp_%wN&F"f@,A;.0HE/$C-&9?+/3(%/!$"0%2('A66L1PZGRQ]MEnW9&)A,E:H':9(4;408:&*43-/3/=5AH2L=>]R=QZ+BQ.#>'*!6,:*'2)@5<,E/L(8.002;-932/DE?SW]Vb"[]*eq:g~Ak}:[C6W%wQ2sV@j?2O-<&#*.#0B3)T%C/;0;&3.3+N8CL>RjZ\[]UWahT_OEWF)U3-030(@/F,/N6L=09&A&*3#"#%#1#G9.Q8Ea?;R?8>BD)< 3. @$L%6"4%0#I'S(6C:A*":%) -X2;ZO]_O'iF,w[8yiFyd6ex@FxU5nE4[NAMHFD&J5$H@7.%@$Q!:"7 "3/7)N+P5C@,E=4H3A1-?B8#K&?M(ON cG*zF2y:1wD4jX-Vc5Zl>SQ:6FCIBF[(M@)ApCDdNI]D!515"B)%S4=-$33( 2; 0H%,FE66?=2K?-W03\ 8S%CBCB5cC/oE"r;-f6'n)(a;+cJ0dG7Z>)B>+J$)I%"NQ'C{(L,Ky(D_4'G5-&03:4E8;KG.?QA2`J,XR7^Hb,9p1(i8g@j?^% d;,a-"K+173.F.-YA(jp2Q2Up'Ij5E[03O!&"<$;#.8-078'3=D7CE3:H>FIJ<,IKM7@,90"R0]"];O=W'X G=& (#(,&;,;U#4Y .K.^<a=P#R/B&>&+A($II'ZJ)Yk1Rp9]WE^/B"G-;%I#0I38]1;X!8C(621EA53C>WLS+:=R:3`35s2:5!9569"8<M4V5`8K.J= 41A<-FT/;ZBNPDIb0CwIV.8!5)9&J$@Q(\\1Q\!2S"@*J,H5R?H&:>&@,"I*+B#(A(.B)0H%(B(/#4(<&0%"')$&!E5E*!0 42 '+0+>45ELE=U5-/)&9H9JUPL[ZE^C?k=6z&0` B /"B9=C<>DSf=@k:*X1I2A+6);"'*)0&D1F( ?**? 0$>+:&! !-&1%(%/(R(L$#/$4:! &$4+,G<"D999?3B;7J,7# 0C-0H2/@:<#,!,$&E75XJH[WdTUaTd_D<z/\%K#3#DB&M`0MS7AL-M=I#F!4&,3-2/#4&0E.%I"D9.)$ '.'%!%7 +$01+/ 1=)7 2M!"H"*>.0 ,.!.D7=!6I5FO,=6.!)-*$&@, C;=#1*!FB!+B32II9UCU\ao[PgGWT-w/ THI+*:1'(0!J?OS!MI%C:)<A)6'$/%4;%D)A-%6!?:.+')!#"% "(*/!-(:9-(D.6S#1N1I((:(G$B$+'***!!6 G*L3R'3+'&";(*F%I+"?: %L0W08W=7FLHJQQGZhGDZKFP)NY9U+5=/1! 0-.9$8:"<1:?*#:+-%)+2 JQRIJ$A%'.$!'++" "/7#016B3-M*2\#.['-^%%152".2)'8&'-+:+B+D3L.D&1 > +2>! E%(,>'I(U1.VL8JQDJMS=KY;!I:"Y'"g!#<&++!  !!'0,+.*59== 1@ *7+> !"-"3 ( 42/%N$Y0T:#MQ3ANM:IL*IV(LY*]$"4%#%'+2#/+3"&)*'#-%-00-"/5%4#B` e-SG RJ#VM&MJ"::67&2 #68"54+@ R$:<(IG!T)!`!&<%3#3#% "&2'-:#2E/9=:92!.'%- &!)/G21H%,W7"E5V6)>80GBA#J<N@4>48*.',)8&]'$a(G,F"A@!*5',/12 5<$H<(W>/H0+F#9*08&%($$+ -/6M+9T(#:-U!A 3>.1,:=7;6>)1.+1,+29%'D' J-H% I%?4"1"G##A-$2- EU,W?"^N'[W1_V ZPZITEPD?F+5#.() +66#P"$_ b'G JL G+4:2@/D:C4%M5'Z;'X',VI.&9%F&&%6*$))?2"L5">! >8+/$'"*-3D4*&99679/3+.#5,>06&:-;2"@3I)B78!'-/&$?(93@J#HY#\b^c]LZI OO:N7Q6I-0$!( #'I TBP!L L,/.@3B5A7!B0S+V\N ;,$:6,,=B=+ #B'3 7 +93-":"7#<%??.AQ-@53#,/"<)#<4$P!K;"!C-0=>E"-E,@+!8(:0*/9D*E^9hLrTXPRGQ6^E`$JR.;@5*:434 #&)=C#T$IF &4H&I.:*J*M $T\K/M>U-AKO5KR=!&0 ,'$2%"*&(-!#".*+,(@)9:#C7D)#"2,-:)/E.Q+B*D$"(1-<%H6%N1/=.DDC4+=2295M,/`*9g$A_"CO%@YE\!Q]#UX/FTA*IF>G 0D$4;.$53!9)D 0C1: +H"K [X )ZD\MkS\[F!d#WD(-.)1 2##)$,<0 5>(;$7@%$F H,#-+?1A(=(>0.'+..K(.M24P?@Q=GN.S9,K6D?<M:/^,8V+5\+/P,DQ2RZ5OS7GW;&TIEUM =+%(0$!4 .'5 ;.C5E%6AW_-2cAoYilWlE-r)` G!3!(&&0 %/'<0G%2< 9< /A(%523$ .2%7(#<63"77,H02H:FQDTK=HH2T:!R)2QJLQEK>Q5!L>6K5:G9=IA:/E75@%9A-P#K'F"5%$-.$%.+.59;59AJJ 1SVbgf{W(qLl<]"J@.!+6'C&1D :C"B#%:42/*)1*+&%, #*74+4;:/;T4KX7VY/KA#M<T#&W?F PQNMHDH>):*"?,(=+.? ?E5I3C&EC12#$'7(24)1,*' $,"<)!F #LCPZGiMqH-xI^2O?%0' % " !+3+B&$I D&%?8A6/6+-'#'71 "-9&)C'(J;.:T6Tc:[d/QJ#Q:M#!IV VIP!Q#O=;!7%=;E;N7E)F#K*83 6<95=>2*")##*&6"#> 3G4LTEt@t2^0L7:#!-&(*& & (&$0!>4(8 ;!72"/3"3819-!U.-O,.00+1D /J5._G4nO4mC'X9&U=Y3P]Q?H$Q E 1)(0),13D-F;%<<-7 <( A2E89><=8( 0,+ + $+ ). //4CDCb,^0O/B.1#& !&-,# &#*'2"4++2*:20D,+7"/#!/=0E68F7-_2FA778:"0D ]*g?r;mDQ@c8h.Q[YG<< 1$ %' 6/?4$<6&73!4@ L-S5 C5=/ <$.<)3 0 0 41)+ %D3? G0T+B"$,$+ &+(&),!&!%1,+ -(;%$7( 8%<8"H:1a&=>%,+!56@1;*?)/1A8<CYp n(j9c9_8i*,c'+T ,R^P9&1 ! 20 ?1=*E+K0-<2II?"=' B(?' ;%'G!=:/(1- -; KH(6 =&>)!!0)!)6$* $/+J5R4 WW!X"hg 2T11^9?{19l 2K$,H)#N"D A<'&-'-586C(4G$(K+K)E%35AG ==)A, I+I(K*C-:2(+!7 .B5J 0D +G,83)%-$!B*;H8C%,10$5+!,2/&4+ 7) N )h+=U C"KO0 ( 5) N-P,b \T,V $K$7V5NY4Jg,KZE@EJ86=,6(82.+92"EB+MK-HS"7Q.[O.*;8(#:.%;,>&C /# 6):(6& %%$163F;XIWI;M/? >.%3 9$8@EP-+@;.<* )*!.$ P)Y'W5[$)`cF$'' 1. 70 Q+V+RX X'"S.+T'7[.FN:NCGUB[UH_C?Q;=211#-<@JE1DI6<['6U,O (A$7*,$)!4575$9"FE 9#,&(""/"%B9K MG `IaJP@CHCB6/ &*#4"&0!&22-(56**=) Z \5Y/4k.-a+l*%B.8*>180L,@&$;$?,CK* M'4G4J>9S;O[BY\IRRFKJH.C5'/!!0+):C5?K=5F8&D,B!80.,)7(63!=+CF /,,, :'RDXL`TZSYYPGU >M'4 4 #  #,:)L'Y;/r=Bh9_!N ='%R3&K- 86#48''7&'*(/ 4+ ?/B)<"AA4QARN:IXLCSP)=F1NFM9>-2$!,(2-.1 ," -&+9#8 3 G .\ XlinjgelX`HM .J27,,  "-# !'1@5K=)jG:0WG8bVBUSORTQ?NR,9A -.+75CO :X8?Z/6N'-7#+-&+)!'2 3- !'*1 6>$G?^Xp gi ck_m Tc7R)<.9 6( * '((+! '  ($>-L0(7'&S$$`'$\3W/8M24<5'02R%n0l+-V+F!0:'P:$_K;d[DTY::P=1PA1373 '1<+]!1&-046#28(0,16 #&'/ 6 8 1) ##&+$!:&N =\MlUe"Qt#Bj8a(Z W%EH, Q+?,'#1.4(4+1 $%'%,0$4>A,H3)K3<< 1>%*'".3."030",4E,/ . %)#0/!# '$%#.-) ,5-Z=`Q_ ^nM[fe-c:TUJb>ND:5F M"N8U5!&6!=7"#).S,^ >P-??;3FO:PI99>0L]LiBr@LyZIfb@X_AFO/0&"'=+I'U.E9H:E 4: *!"&%+ *1-#2*3+A)%B'-.',%)%,.;"!?'3(-%7$7 5=$MMK^?[#\,e!>^'C]gVfE"QK&H.'S[\'X(W'Z:I,")>;e=j!1f.%X?BE RK)UQBM?HGJc%HlRPgkN_J\tDI#:.&0&+ ; A1B0N7F358$,+.94064++5%3D#2F-8!+1",1$$%(3>$ :6B65/0( ",#:?0@1E0V:`Gd\^)ZN\Ae9*]C K- H/ba&"U#$[3eMfP?W8 IE3%]O%G_/N[9L`@D>9?!EO ?_RY#XS#YC!D4+V4.L<#$-1<$A!*F!/FK7C$ ,/.F%3B)B*&9%? A F/A:OORqA{0!u'e%^7H4:) M1N.(c1b7"XUhcNoXEFo1,^Y>QdN;cV=SM;N6AEVBpLj(VY*U@(a3%[3K>7*I U)L%H1E( &,.-;2/A%G,C=1O ?:>5(.!#+,2!45(+E5(N@*,>??!&0(7:N;C; `4d<`/t (u0q"W" <.(0=+V+b<iZ^e&Zp(s'gw]fE_AbRVPHXK Ie ?c)L6H2[@i&Gc)TK)h53h-b#U1&:D*@98M%.>'1+00,)4)+:-080>/0/$3/%,5=35W0d.g;lAu6_3 h/{00t%,p*O$0:3 8"T*nFVR%Sa%af$we2wX`SMSO`PER@[X \bBh31d*1L"$L&X :R LC^1)u.i(8X.-B7")2"54A7 .(!!(02 57'014+L22P?1=C5=)<,:!17#*08#?7-0;)i.{1r7%y3*f75U5$`%i%)X"1X(-2HR'6 0 >! C0G?%>I#R9nReL]4"RG%K? 6?:;G@ FY7v2*n8(_7?%A"L>%S3b"#p4r#2a2R9:7* ,%62%90!** ,,8(I2G,495#J,'P7#B7(>=C+@=)2$I$!ME) \(u-!r'-h2g<+W=F:!J$/1!.)60#O(3N :A 8 C J( V9L* A V7P*R'KCSP:L.A" Dc6tNRGI'%:?C&=Z% Kn"}*bc0A/ %)1$H$@)5(02'!A0J!3>97*2S7 Y;K=8A(&N6D4?(2=)Q'Y!Zb,g)r0U(2UH#P<B?"?".,"'%>C E? B< Y1m) D7NS PQFI3*6jBW-4<1= <;>Y),f4Z0$FA.4N<$@I=H:E@^(4v 'xjp*Z3-L2 J34: >4& F7 B<_=xH@Y@ QK XbHo/m2-2H+dRCD4 ^.4:< iG T] Tt N'K.7N]F?]F_DIDLGJI=HB+?:'>@3`h,^*+R12T4W!5(-5!,F4&>QAU;H..@'*&:+A+F3"GK#/D("Q.D)2@4;8@=>DIB7sQ+K9v$}"]"L14% !*'$6%H A$i3<)5 Ol= Gc Ny;+42$S \hyZ,]`=`3Z%:J;0kK/Z@5P9V2)CG#9I- dA#V7CU@RM'H:;7*8(-6>*6_O(fP&DG$4E+'=2 0)#4% C7!??>4;<2*<6!@ 4<&0;/>7$_LgV{Gr:x+~8`='=#6$ 9-=7A/\*bHy;5 o,MG RhHr A*Cjx#}#Ys7z&j++`7-i@+`@b:a/3^=@7LIRD(V=PO;[C-SCM8%A&9;8=AdK9kE(YM-CA.<0B53L#0U! J@ 7M +C(%ED1G :Y7W"FP!RO[U#jJ qRyKi7!J;'4/1""$.G:TJ[C!jFzAHuKu2`gApK dc>,1Lˉ) |1V #&I-g@-x2(|5`-y(;m>U@F`I\XG7CJV9>I80EA)M7HBEK]\;eS@1U?2aK4hS"uV hX[SY3j#x ~*bT?/"_& ._E5M5[NxV+9+.)w;5u;Wc%nGqڄ(Vu^2HF}@'aXK.5Ɠeas&5.c]' )p-b+wd4H`5]"K}UfcWB)itp(Xp%YM+f!wh[~5VEJN8PAjЦеXgvʥmF9k7Bѭ"ےVkCt=֔ܲAJõ @KQ閚.@Q4Uq- 7G<ېUAe[ ,i}˻@<#,GaS2<,Ƃ`T,Q4KwFLpҍD+et{WM|Ħe‡PUmFg A\w zJ(X_vG s܇dW5~C [7_ޮ`^w U.!|C|08Oe)3?PǽG/`bQlPr?/>GC:e?qkᛟӔ p,7Pi&iBW.͏|&_Ғ/n E4BpѐED((- g@  5C9E Pz+d(Ć"G0aw )#:O53/ObBcВ2Bik =Flp\wA$#M|0s7<,\cIZƕx/"s$$'JV"Æ (EP%GrRAX"b04 U>ȰtXA2S"bkIp_xsŤ8M2bQ hB!ICưYD$O~N l>L)D [o?C-px|<ai77Ԥ ~cE5Y8C>I*Γ$@9M>ܠ4Q 0 %H> ~oj.ɁdZq 3JhqN=#"RZէJk\}UJ$>LKT©iȠ˅Lㄫ\KWrJ2!α3`Ħg"XքLխ=5bGRBvEQ5V<ïNhP6 [ޖ(ul$,]ݨ@XA ZJT-p%*IP`!,*^Ԋ%<(#{'V̂ 9nsk]5ڝkpQe-%$CR'>!%QmtӄV-ҚTWĨ<=`4BVJ.{+7bR5 /ʐʝH r70)fX*g.I6c85EqM%s'8.߉bT&-YA'JFaSS)k+˵Uܿ>SEHJtwy{%)TAb|Fs}= ҅XiU(z">3}GmJV*.M=b~C :`2qjT|`*=F-э8\z sAYsSJhJO5Npvk2\ fכ÷]MY 1U' o0_cpO=_T'0g0*D\T-/To/Ytyao-!u9%sn1[|-|SAF*I[Z u΂ǝó3 +"&g~k2Wm0+Tw|쥑H(sl)Ot|{d<yZ߲BɲX}i^ޛp>h~qzD|/қ'u(֓3v~)b/~NCi;ZCI6%G&9'~wt^gbvǗoqyd"W'~` /$!xlrF$We .1M`d|-s}UV{|gnk!FLKA3)$dBt2 LdUVAz-EV} SQdh *A&` 8VQpXHDb6m}Q ` dRMҗNWZsj6mxfz bHĆ8Z&H( @ q]X g`X@؁Q@#Ks?hT@Ux0hq8Ȍ= HD(̆~ۘUshxPGoXXiӦqY֐GxƑFt$ xI' ()(iؒي35"9}g0)Gqh7R.m0yRiTysx] ȏdY:9SN"DNIi[ AɖG9h)yykz$ɘY)y1P7_Y8|'/ٖny9{9(BBٚ!y09 0|7)*q)(o:ziS闍y( iN99!i]GN;visual-5.12_release/site-packages/visual/controls.py0000644000175000017500000004427611115365034017641 00000000000000from visual import * __all__ = visual._fix_symbols( globals() ) + [ 'controls','button','toggle','slider','menu'] # Bruce Sherwood, March 2002 # Import this module to create buttons, toggle switches, sliders, and pull-down menus. # See test routine at end of this module for an example of how to use controls. lastcontrols = None # the most recently created controls window gray = (0.7, 0.7, 0.7) darkgray = (0.5, 0.5, 0.5) class controls: # make a special window for buttons, sliders, and pull-down menus def __init__(self, x=0, y=0, width=300, height=320, range=100, title=None, foreground=None, background=None): global lastcontrols lastcontrols = self currentdisplay = display.get_selected() self.x = x self.y = y self.width = width self.height = height self.range = range self.title = title if title is None: title = 'Controls' if foreground is None: foreground = color.white if background is None: background = color.black self.foreground = foreground self.background = background self.display = display(title=title, x=x, y=y, range=range, width=width, height=height, fov=0.4, foreground=foreground, background=background, userzoom=0, userspin=0) self.display.lights=[distant_light(direction=(0,0,1),color=color.white)] self.focus = None self.lastpos = None self.controllist = [] currentdisplay.select() def addcontrol(self, control): self.controllist.append(control) def interact(self): if self.display.mouse.events: m = self.display.mouse.getevent() if m.press == 'left' and m.pick: picked = m.pick if self.focus: # have been moving over menu with mouse up picked = self.focus for control in self.controllist: if control.active is picked: self.focus = control control.highlight(m.pos) elif m.release == 'left': focus = self.focus self.focus = None # menu may reset self.focus for "sticky" menu if focus: focus.unhighlight(m.pos) elif self.focus: # if dragging a control pos = self.display.mouse.pos if pos != self.lastpos: self.focus.update(pos) self.lastpos = pos class ctrl(object): # common aspects of buttons, sliders, and menus # Note: ctrl is a subclass of "object" in order to be a new-type class which # permits use of the new "property" feature exploited by buttons and sliders. def __init__(self, args): if args.has_key('controls'): self.controls = args['controls'] elif lastcontrols is None: self.controls = controls() else: self.controls = lastcontrols self.controls.addcontrol(self) self.pos = vector(0,0) self.action = None if args.has_key('pos'): self.pos = vector(args['pos']) if args.has_key('value'): self.value = args['value'] if args.has_key('action'): self.action = args['action'] def highlight(self, pos): pass def unhighlight(self, pos): pass def update(self, pos): pass def execute(self): if self.action: self.action() class button(ctrl): def __init__(self, **args): self.type = 'button' self.value = 0 ctrl.__init__(self, args) width = height = 40 bcolor = gray edge = darkgray self.__text = '' if args.has_key('width'): width = args['width'] if args.has_key('height'): height = args['height'] if args.has_key('text'): self.__text = args['text'] if args.has_key('color'): bcolor = args['color'] disp = self.controls.display framewidth = width/10. self.thick = 2.*framewidth self.box1 = box(display=disp, pos=self.pos+vector(0,height/2.-framewidth/2.,0), size=(width,framewidth,self.thick), color=edge) self.box2 = box(display=disp, pos=self.pos+vector(-width/2.+framewidth/2.,0,0), size=(framewidth,height,self.thick), color=edge) self.box3 = box(display=disp, pos=self.pos+vector(width/2.-framewidth/2.,0,0), size=(framewidth,height,self.thick), color=edge) self.box4 = box(display=disp, pos=self.pos+vector(0,-height/2.+framewidth/2.,0), size=(width,framewidth,self.thick), color=edge) self.button = box(display=disp, pos=self.pos+vector(0,0,self.thick/2.+1.), size=(width-2.*framewidth,height-2.*framewidth,self.thick), color=bcolor) self.label = label(display=disp, pos=self.button.pos, color=color.black, text=self.__text, line=0, box=0, opacity=0) self.active = self.button def gettext(self): return self.label.text def settext(self, text): self.label.text = text text = property(gettext, settext) # establishes special getattr/setattr handling def highlight(self, pos): self.button.pos.z -= self.thick self.label.pos.z -= self.thick self.value = 1 def unhighlight(self, pos): self.button.pos.z += self.thick self.label.pos.z += self.thick self.value = 0 self.execute() class toggle(ctrl): def __init__(self, **args): self.type = 'toggle' self.__value = 0 ctrl.__init__(self, args) width = height = 20 self.angle = pi/6. # max rotation of toggle bcolor = gray edge = darkgray self.__text0 = '' self.__text1 = '' if args.has_key('width'): width = args['width'] if args.has_key('height'): height = args['height'] if args.has_key('text0'): self.__text0 = args['text0'] if args.has_key('text1'): self.__text1 = args['text1'] if args.has_key('color'): bcolor = args['color'] if args.has_key('value'): self.__value = args['value'] diskthick = width/4. diskradius = height/2. ballradius = 0.6*diskradius self.rodlength = 1.2*diskradius+ballradius disp = self.controls.display self.frame = frame(display=disp, pos=self.pos, axis=(1,0,0)) self.back = box(display=disp, frame=self.frame, pos=(0,0,0), size=(width,height,0.3*diskradius), color=darkgray) self.disk1 = cylinder(display=disp, frame=self.frame, pos=(-diskthick,0,0), axis=(-diskthick,0), radius=diskradius, color=gray) self.disk2 = cylinder(display=disp, frame=self.frame, pos=(diskthick,0,0), axis=(diskthick,0), radius=diskradius, color=gray) self.rod = cylinder(display=disp, frame=self.frame, pos=(0,0,0), axis=(0,0,self.rodlength), radius=width/8., color=gray) self.ball = sphere(display=disp, frame=self.frame, pos=(0,0,self.rodlength), radius=ballradius, color=gray) self.label0 = label(display=disp, frame=self.frame, pos=(0,-1.0*height), text=self.__text0, line=0, box=0, opacity=0) self.label1 = label(display=disp, frame=self.frame, pos=(0,1.0*height), text=self.__text1, line=0, box=0, opacity=0) self.settoggle(self.__value) self.active = self.ball def settoggle(self, val): self.__value = val if val == 1: newpos = self.rodlength*vector(0,sin(self.angle), cos(self.angle)) else: newpos = self.rodlength*vector(0,-sin(self.angle), cos(self.angle)) self.rod.axis = newpos self.ball.pos = newpos def getvalue(self): return self.__value def setvalue(self, val): self.settoggle(val) self.__value = val value = property(getvalue, setvalue) # establishes special getattr/setattr handling def gettext0(self): return self.label0.text def settext0(self, text): self.label0.text = text text0 = property(gettext0, settext0) # establishes special getattr/setattr handling def gettext1(self): return self.label1.text def settext1(self, text): self.label1.text = text text1 = property(gettext1, settext1) # establishes special getattr/setattr handling def unhighlight(self, pos): if self.controls.display.mouse.pick is self.active: self.__value = not(self.__value) self.settoggle(self.__value) self.execute() class slider(ctrl): def __init__(self, **args): self.type = 'slider' self.__value = 0 ctrl.__init__(self, args) self.length = 100. width = 10. shaftcolor = darkgray scolor = gray self.min = 0. self.max = 100. self.axis = vector(1,0,0) if args.has_key('axis'): self.axis = vector(args['axis']) self.length = mag(self.axis) self.axis = norm(self.axis) if args.has_key('length'): self.length = args['length'] if args.has_key('width'): width = args['width'] if args.has_key('min'): self.min = args['min'] if self.__value == 0: self.__value = self.min if args.has_key('max'): self.max = args['max'] if args.has_key('color'): scolor = args['color'] disp = self.controls.display self.shaft = box(display=disp, pos=self.pos+self.axis*self.length/2., axis=self.axis, size=(self.length,0.5*width,0.5*width), color=shaftcolor) self.indicator = box(display=disp, pos=self.pos+self.axis*self.__value*self.length/(self.max-self.min), axis=self.axis, size=(width,width,width), color=scolor) self.active = self.indicator def getvalue(self): return self.__value def setvalue(self, val): self.update(self.pos+self.axis*val*self.length/(self.max-self.min)) self.__value = val value = property(getvalue, setvalue) # establishes special getattr/setattr handling def update(self, pos): val = dot((pos-self.pos),self.axis)*(self.max-self.min)/self.length if val < self.min: val = self.min elif val > self.max: val = self.max if val != self.__value: self.indicator.pos = self.pos+self.axis*val*self.length/(self.max-self.min) self.__value = val self.execute() class menu(ctrl): def __init__(self, **args): self.type = 'menu' ctrl.__init__(self, args) self.items = [] self.width = self.height = 40 self.text = 'Menu' self.__value = None self.color = gray self.nitem = 0 self.open = 0 # true if menu display open in the window self.action = 1 # dummy placeholder; what is driven is menu.execute() if args.has_key('width'): self.width = args['width'] if args.has_key('height'): self.height = args['height'] if args.has_key('text'): self.text = args['text'] if args.has_key('color'): self.color = args['color'] self.thick = 0.2*self.width disp = self.controls.display self.active = box(display=disp, pos=self.pos+vector(0,0,self.thick), size=(self.width,self.height,self.thick), color=self.color) self.label = label(display=disp, pos=self.active.pos, color=color.black, text=self.text, line=0, box=0, opacity=0) def getvalue(self): return self.__value value = property(getvalue, None) # establishes special getattr/setattr handling def inmenu(self, pos): # return item number (0-N) where mouse is, or -1 # note that item is 0 if mouse is in menu title if self.pos.x-self.width/2. < pos.x < self.pos.x+self.width/2.: nitem = int((self.pos.y+self.height/2.-pos.y)/self.height) if 0 <= nitem <= len(self.items): return(nitem) else: return(-1) return(-1) def highlight(self, pos): # mouse down: open the menu, displaying the menu items self.nitem = self.inmenu(pos) if self.open: # "sticky" menu already open if self.nitem > 0: self.update(pos) else: self.unhighlight(pos) self.open = 0 return pos = self.pos-vector(0,self.height,0) self.boxes = [] self.highlightedbox = None disp = self.controls.display for item in self.items: self.boxes.append( (box(display=disp, pos=pos+vector(0,0,self.thick), size=(self.width,self.height,self.thick), color=self.color), label(display=disp, pos=pos+vector(0,0,self.thick), color=color.black, text=item[0], line=0, box=0, opacity=0)) ) pos = pos-vector(0,self.height,0) def unhighlight(self, pos): # mouse up: close the menu; selected item will be executed self.nitem = self.inmenu(pos) if self.nitem == 0 and not self.open: # don't close if mouse up in menu title self.controls.focus = self # restore menu to be in focus self.open = 1 return for box in self.boxes: box[0].visible = 0 box[1].visible = 0 self.boxes = [] self.open = 0 self.execute() def update(self, pos): # highlight an individual item during drag self.nitem = self.inmenu(pos) if self.nitem > 0: if self.highlightedbox is not None: self.highlightedbox.color = gray if self.items[self.nitem-1][1]: # if there is an associated action self.highlightedbox = self.boxes[self.nitem-1][0] self.highlightedbox.color = darkgray else: if self.highlightedbox is not None: self.highlightedbox.color = gray self.highlightedbox = None def execute(self): if self.nitem > 0: self.__value = self.items[self.nitem-1][0] action = self.items[self.nitem-1][1] if action: action() if __name__ == '__main__': # for testing the module # Create "call-back" routines, routines that are called by the interact # machinery when certain mouse events happen: def setdir(direction): # called on button up events cube.dir = direction def togglecubecolor(): # called on toggle switch flips if t1.value: cube.color = color.cyan else: cube.color = color.red def cubecolor(value): # called on a menu choice cube.color = value if cube.color == color.red: t1.value = 0 # make toggle switch setting consistent with menu choice else: t1.value = 1 def setrate(obj): # called on slider drag events cuberate(obj.value) # value is min-max slider position if obj is s1: s2.value = s1.value # demonstrate coupling of the two sliders else: s1.value = s2.value def cuberate(value): cube.dtheta = 2*value*pi/1e4 w = 350 display(x=w, y=0, width=w, height=w, range=1.5, forward=-vector(0,1,1), newzoom=1) cube = box(color=color.red) # In establishing the controls window, range=60 means what it usually means: # (0,0) is in the center of the window, and (60,60) is the lower right corner. # If range is not specified, the default is 100. c = controls(x=0, y=0, width=w, height=w, range=60) # Buttons have a "text" attribute (the button label) which can be read and set. # Toggles have "text0" and "text1" attributes which can be read and set. # Toggles and sliders have a "value" attribute (0/1, or location of indicator) which can be read and set. # The pos attribute for buttons, toggles, and menus is the center of the control (like "box"). # The pos attribute for sliders is at one end, and axis points to the other end (like "cylinder"). # By default a control is created in the most recently created "controls" window, but you # can change this by specifying "controls=..." when creating a button, toggle, slider, or menu. # The Python construct "lambda: setdir(-1)" below passes the location of the setdir function # to the interact machinery, which call the setdir function when an action # is to be taken. This scheme ensures that the execution of the function takes place # in the appropriate namespace context in the case of importing the controls module. bl = button(pos=(-30,30), height=30, width=40, text='Left', action=lambda: setdir(-1)) br = button(pos=(30,30), height=30, width=40, text='Right', action=lambda: setdir(1)) s1 = slider(pos=(-15,-40), width=7, length=70, axis=(1,0.7,0), action=lambda: setrate(s1)) s2 = slider(pos=(-30,-50), width=7, length=50, axis=(0,1,0), action=lambda: setrate(s2)) t1 = toggle(pos=(40,-30), width=10, height=10, text0='Red', text1='Cyan', action=lambda: togglecubecolor()) m1 = menu(pos=(0,0,0), height=7, width=25, text='Options') # After creating the menu heading, add menu items: m1.items.append(('Left', lambda: setdir(-1))) # specify menu item title and action to perform m1.items.append(('Right', lambda: setdir(1))) m1.items.append(('---------',None)) # a dummy separator m1.items.append(('Red', lambda: cubecolor(color.red))) m1.items.append(('Cyan', lambda: cubecolor(color.cyan))) s1.value = 70 # update the slider setrate(s1) # set the rotation rate of the cube setdir(-1) # set the rotation direction of the cube while 1: rate(100) c.interact() # check for events, drive actions; must be executed repeatedly in a loop cube.rotate(axis=(0,1,0), angle=cube.dir*cube.dtheta) visual-5.12_release/site-packages/visual/pan.png0000644000175000017500000000166410437410334016702 00000000000000PNG  IHDRw=bKGD pHYs  d_tIME,%AIDATHǵ]hSgo#6H{Jj~ ?`q2 ;1X'~؅$(qM榢U`FڦI5EO.9y><r{yX (w{N pXEKr vuQ8= t/ Z6h%;‰}8پJKM%B:s0gX[v2d=W`yn"Iw!oMqeЁl^Bx*@3ḰlsS:C#\]pO\![mzNH锞o2nK3"@l6˫+54[{wN@ 9GNv/p<ڪrH9_g (Dl/GonO)[aP!}lPP 3N_@d:\eS;}6iZW>FkUkxhDjgLvh8O ԲAKMףg3zJ1G3>|I;H(̃d$k پJ{|;xbliYD,Xr#+ -@}ƣ};h #endif #ifndef APIENTRY #define APIENTRY #endif #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #ifndef GLAPI #define GLAPI extern #endif /*************************************************************/ /* Header file version number, required by OpenGL ABI for Linux */ /* glext.h last updated 2007/02/12 */ /* Current version at http://www.opengl.org/registry/ */ #define GL_GLEXT_VERSION 39 #ifndef GL_VERSION_1_2 #define GL_UNSIGNED_BYTE_3_3_2 0x8032 #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 #define GL_UNSIGNED_INT_8_8_8_8 0x8035 #define GL_UNSIGNED_INT_10_10_10_2 0x8036 #define GL_RESCALE_NORMAL 0x803A #define GL_TEXTURE_BINDING_3D 0x806A #define GL_PACK_SKIP_IMAGES 0x806B #define GL_PACK_IMAGE_HEIGHT 0x806C #define GL_UNPACK_SKIP_IMAGES 0x806D #define GL_UNPACK_IMAGE_HEIGHT 0x806E #define GL_TEXTURE_3D 0x806F #define GL_PROXY_TEXTURE_3D 0x8070 #define GL_TEXTURE_DEPTH 0x8071 #define GL_TEXTURE_WRAP_R 0x8072 #define GL_MAX_3D_TEXTURE_SIZE 0x8073 #define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 #define GL_UNSIGNED_SHORT_5_6_5 0x8363 #define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 #define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 #define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 #define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 #define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 #define GL_BGR 0x80E0 #define GL_BGRA 0x80E1 #define GL_MAX_ELEMENTS_VERTICES 0x80E8 #define GL_MAX_ELEMENTS_INDICES 0x80E9 #define GL_CLAMP_TO_EDGE 0x812F #define GL_TEXTURE_MIN_LOD 0x813A #define GL_TEXTURE_MAX_LOD 0x813B #define GL_TEXTURE_BASE_LEVEL 0x813C #define GL_TEXTURE_MAX_LEVEL 0x813D #define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 #define GL_SINGLE_COLOR 0x81F9 #define GL_SEPARATE_SPECULAR_COLOR 0x81FA #define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 #define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 #define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 #define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_ALIASED_POINT_SIZE_RANGE 0x846D #define GL_ALIASED_LINE_WIDTH_RANGE 0x846E #endif #ifndef GL_ARB_imaging #define GL_CONSTANT_COLOR 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #define GL_CONSTANT_ALPHA 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 #define GL_BLEND_COLOR 0x8005 #define GL_FUNC_ADD 0x8006 #define GL_MIN 0x8007 #define GL_MAX 0x8008 #define GL_BLEND_EQUATION 0x8009 #define GL_FUNC_SUBTRACT 0x800A #define GL_FUNC_REVERSE_SUBTRACT 0x800B #define GL_CONVOLUTION_1D 0x8010 #define GL_CONVOLUTION_2D 0x8011 #define GL_SEPARABLE_2D 0x8012 #define GL_CONVOLUTION_BORDER_MODE 0x8013 #define GL_CONVOLUTION_FILTER_SCALE 0x8014 #define GL_CONVOLUTION_FILTER_BIAS 0x8015 #define GL_REDUCE 0x8016 #define GL_CONVOLUTION_FORMAT 0x8017 #define GL_CONVOLUTION_WIDTH 0x8018 #define GL_CONVOLUTION_HEIGHT 0x8019 #define GL_MAX_CONVOLUTION_WIDTH 0x801A #define GL_MAX_CONVOLUTION_HEIGHT 0x801B #define GL_POST_CONVOLUTION_RED_SCALE 0x801C #define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D #define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E #define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F #define GL_POST_CONVOLUTION_RED_BIAS 0x8020 #define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 #define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 #define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 #define GL_HISTOGRAM 0x8024 #define GL_PROXY_HISTOGRAM 0x8025 #define GL_HISTOGRAM_WIDTH 0x8026 #define GL_HISTOGRAM_FORMAT 0x8027 #define GL_HISTOGRAM_RED_SIZE 0x8028 #define GL_HISTOGRAM_GREEN_SIZE 0x8029 #define GL_HISTOGRAM_BLUE_SIZE 0x802A #define GL_HISTOGRAM_ALPHA_SIZE 0x802B #define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C #define GL_HISTOGRAM_SINK 0x802D #define GL_MINMAX 0x802E #define GL_MINMAX_FORMAT 0x802F #define GL_MINMAX_SINK 0x8030 #define GL_TABLE_TOO_LARGE 0x8031 #define GL_COLOR_MATRIX 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 #define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 #define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 #define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 #define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 #define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 #define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 #define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA #define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB #define GL_COLOR_TABLE 0x80D0 #define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 #define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 #define GL_PROXY_COLOR_TABLE 0x80D3 #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 #define GL_COLOR_TABLE_SCALE 0x80D6 #define GL_COLOR_TABLE_BIAS 0x80D7 #define GL_COLOR_TABLE_FORMAT 0x80D8 #define GL_COLOR_TABLE_WIDTH 0x80D9 #define GL_COLOR_TABLE_RED_SIZE 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF #define GL_CONSTANT_BORDER 0x8151 #define GL_REPLICATE_BORDER 0x8153 #define GL_CONVOLUTION_BORDER_COLOR 0x8154 #endif #ifndef GL_VERSION_1_3 #define GL_TEXTURE0 0x84C0 #define GL_TEXTURE1 0x84C1 #define GL_TEXTURE2 0x84C2 #define GL_TEXTURE3 0x84C3 #define GL_TEXTURE4 0x84C4 #define GL_TEXTURE5 0x84C5 #define GL_TEXTURE6 0x84C6 #define GL_TEXTURE7 0x84C7 #define GL_TEXTURE8 0x84C8 #define GL_TEXTURE9 0x84C9 #define GL_TEXTURE10 0x84CA #define GL_TEXTURE11 0x84CB #define GL_TEXTURE12 0x84CC #define GL_TEXTURE13 0x84CD #define GL_TEXTURE14 0x84CE #define GL_TEXTURE15 0x84CF #define GL_TEXTURE16 0x84D0 #define GL_TEXTURE17 0x84D1 #define GL_TEXTURE18 0x84D2 #define GL_TEXTURE19 0x84D3 #define GL_TEXTURE20 0x84D4 #define GL_TEXTURE21 0x84D5 #define GL_TEXTURE22 0x84D6 #define GL_TEXTURE23 0x84D7 #define GL_TEXTURE24 0x84D8 #define GL_TEXTURE25 0x84D9 #define GL_TEXTURE26 0x84DA #define GL_TEXTURE27 0x84DB #define GL_TEXTURE28 0x84DC #define GL_TEXTURE29 0x84DD #define GL_TEXTURE30 0x84DE #define GL_TEXTURE31 0x84DF #define GL_ACTIVE_TEXTURE 0x84E0 #define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 #define GL_MAX_TEXTURE_UNITS 0x84E2 #define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 #define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 #define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 #define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 #define GL_MULTISAMPLE 0x809D #define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E #define GL_SAMPLE_ALPHA_TO_ONE 0x809F #define GL_SAMPLE_COVERAGE 0x80A0 #define GL_SAMPLE_BUFFERS 0x80A8 #define GL_SAMPLES 0x80A9 #define GL_SAMPLE_COVERAGE_VALUE 0x80AA #define GL_SAMPLE_COVERAGE_INVERT 0x80AB #define GL_MULTISAMPLE_BIT 0x20000000 #define GL_NORMAL_MAP 0x8511 #define GL_REFLECTION_MAP 0x8512 #define GL_TEXTURE_CUBE_MAP 0x8513 #define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A #define GL_PROXY_TEXTURE_CUBE_MAP 0x851B #define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C #define GL_COMPRESSED_ALPHA 0x84E9 #define GL_COMPRESSED_LUMINANCE 0x84EA #define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB #define GL_COMPRESSED_INTENSITY 0x84EC #define GL_COMPRESSED_RGB 0x84ED #define GL_COMPRESSED_RGBA 0x84EE #define GL_TEXTURE_COMPRESSION_HINT 0x84EF #define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 #define GL_TEXTURE_COMPRESSED 0x86A1 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 #define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 #define GL_CLAMP_TO_BORDER 0x812D #define GL_COMBINE 0x8570 #define GL_COMBINE_RGB 0x8571 #define GL_COMBINE_ALPHA 0x8572 #define GL_SOURCE0_RGB 0x8580 #define GL_SOURCE1_RGB 0x8581 #define GL_SOURCE2_RGB 0x8582 #define GL_SOURCE0_ALPHA 0x8588 #define GL_SOURCE1_ALPHA 0x8589 #define GL_SOURCE2_ALPHA 0x858A #define GL_OPERAND0_RGB 0x8590 #define GL_OPERAND1_RGB 0x8591 #define GL_OPERAND2_RGB 0x8592 #define GL_OPERAND0_ALPHA 0x8598 #define GL_OPERAND1_ALPHA 0x8599 #define GL_OPERAND2_ALPHA 0x859A #define GL_RGB_SCALE 0x8573 #define GL_ADD_SIGNED 0x8574 #define GL_INTERPOLATE 0x8575 #define GL_SUBTRACT 0x84E7 #define GL_CONSTANT 0x8576 #define GL_PRIMARY_COLOR 0x8577 #define GL_PREVIOUS 0x8578 #define GL_DOT3_RGB 0x86AE #define GL_DOT3_RGBA 0x86AF #endif #ifndef GL_VERSION_1_4 #define GL_BLEND_DST_RGB 0x80C8 #define GL_BLEND_SRC_RGB 0x80C9 #define GL_BLEND_DST_ALPHA 0x80CA #define GL_BLEND_SRC_ALPHA 0x80CB #define GL_POINT_SIZE_MIN 0x8126 #define GL_POINT_SIZE_MAX 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 #define GL_POINT_DISTANCE_ATTENUATION 0x8129 #define GL_GENERATE_MIPMAP 0x8191 #define GL_GENERATE_MIPMAP_HINT 0x8192 #define GL_DEPTH_COMPONENT16 0x81A5 #define GL_DEPTH_COMPONENT24 0x81A6 #define GL_DEPTH_COMPONENT32 0x81A7 #define GL_MIRRORED_REPEAT 0x8370 #define GL_FOG_COORDINATE_SOURCE 0x8450 #define GL_FOG_COORDINATE 0x8451 #define GL_FRAGMENT_DEPTH 0x8452 #define GL_CURRENT_FOG_COORDINATE 0x8453 #define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 #define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 #define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 #define GL_FOG_COORDINATE_ARRAY 0x8457 #define GL_COLOR_SUM 0x8458 #define GL_CURRENT_SECONDARY_COLOR 0x8459 #define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A #define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B #define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C #define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D #define GL_SECONDARY_COLOR_ARRAY 0x845E #define GL_MAX_TEXTURE_LOD_BIAS 0x84FD #define GL_TEXTURE_FILTER_CONTROL 0x8500 #define GL_TEXTURE_LOD_BIAS 0x8501 #define GL_INCR_WRAP 0x8507 #define GL_DECR_WRAP 0x8508 #define GL_TEXTURE_DEPTH_SIZE 0x884A #define GL_DEPTH_TEXTURE_MODE 0x884B #define GL_TEXTURE_COMPARE_MODE 0x884C #define GL_TEXTURE_COMPARE_FUNC 0x884D #define GL_COMPARE_R_TO_TEXTURE 0x884E #endif #ifndef GL_VERSION_1_5 #define GL_BUFFER_SIZE 0x8764 #define GL_BUFFER_USAGE 0x8765 #define GL_QUERY_COUNTER_BITS 0x8864 #define GL_CURRENT_QUERY 0x8865 #define GL_QUERY_RESULT 0x8866 #define GL_QUERY_RESULT_AVAILABLE 0x8867 #define GL_ARRAY_BUFFER 0x8892 #define GL_ELEMENT_ARRAY_BUFFER 0x8893 #define GL_ARRAY_BUFFER_BINDING 0x8894 #define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 #define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 #define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 #define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 #define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D #define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F #define GL_READ_ONLY 0x88B8 #define GL_WRITE_ONLY 0x88B9 #define GL_READ_WRITE 0x88BA #define GL_BUFFER_ACCESS 0x88BB #define GL_BUFFER_MAPPED 0x88BC #define GL_BUFFER_MAP_POINTER 0x88BD #define GL_STREAM_DRAW 0x88E0 #define GL_STREAM_READ 0x88E1 #define GL_STREAM_COPY 0x88E2 #define GL_STATIC_DRAW 0x88E4 #define GL_STATIC_READ 0x88E5 #define GL_STATIC_COPY 0x88E6 #define GL_DYNAMIC_DRAW 0x88E8 #define GL_DYNAMIC_READ 0x88E9 #define GL_DYNAMIC_COPY 0x88EA #define GL_SAMPLES_PASSED 0x8914 #define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE #define GL_FOG_COORD GL_FOG_COORDINATE #define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE #define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE #define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE #define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER #define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY #define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING #define GL_SRC0_RGB GL_SOURCE0_RGB #define GL_SRC1_RGB GL_SOURCE1_RGB #define GL_SRC2_RGB GL_SOURCE2_RGB #define GL_SRC0_ALPHA GL_SOURCE0_ALPHA #define GL_SRC1_ALPHA GL_SOURCE1_ALPHA #define GL_SRC2_ALPHA GL_SOURCE2_ALPHA #endif #ifndef GL_VERSION_2_0 #define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION #define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 #define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 #define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 #define GL_CURRENT_VERTEX_ATTRIB 0x8626 #define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 #define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 #define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 #define GL_STENCIL_BACK_FUNC 0x8800 #define GL_STENCIL_BACK_FAIL 0x8801 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 #define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 #define GL_MAX_DRAW_BUFFERS 0x8824 #define GL_DRAW_BUFFER0 0x8825 #define GL_DRAW_BUFFER1 0x8826 #define GL_DRAW_BUFFER2 0x8827 #define GL_DRAW_BUFFER3 0x8828 #define GL_DRAW_BUFFER4 0x8829 #define GL_DRAW_BUFFER5 0x882A #define GL_DRAW_BUFFER6 0x882B #define GL_DRAW_BUFFER7 0x882C #define GL_DRAW_BUFFER8 0x882D #define GL_DRAW_BUFFER9 0x882E #define GL_DRAW_BUFFER10 0x882F #define GL_DRAW_BUFFER11 0x8830 #define GL_DRAW_BUFFER12 0x8831 #define GL_DRAW_BUFFER13 0x8832 #define GL_DRAW_BUFFER14 0x8833 #define GL_DRAW_BUFFER15 0x8834 #define GL_BLEND_EQUATION_ALPHA 0x883D #define GL_POINT_SPRITE 0x8861 #define GL_COORD_REPLACE 0x8862 #define GL_MAX_VERTEX_ATTRIBS 0x8869 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A #define GL_MAX_TEXTURE_COORDS 0x8871 #define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 #define GL_FRAGMENT_SHADER 0x8B30 #define GL_VERTEX_SHADER 0x8B31 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A #define GL_MAX_VARYING_FLOATS 0x8B4B #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D #define GL_SHADER_TYPE 0x8B4F #define GL_FLOAT_VEC2 0x8B50 #define GL_FLOAT_VEC3 0x8B51 #define GL_FLOAT_VEC4 0x8B52 #define GL_INT_VEC2 0x8B53 #define GL_INT_VEC3 0x8B54 #define GL_INT_VEC4 0x8B55 #define GL_BOOL 0x8B56 #define GL_BOOL_VEC2 0x8B57 #define GL_BOOL_VEC3 0x8B58 #define GL_BOOL_VEC4 0x8B59 #define GL_FLOAT_MAT2 0x8B5A #define GL_FLOAT_MAT3 0x8B5B #define GL_FLOAT_MAT4 0x8B5C #define GL_SAMPLER_1D 0x8B5D #define GL_SAMPLER_2D 0x8B5E #define GL_SAMPLER_3D 0x8B5F #define GL_SAMPLER_CUBE 0x8B60 #define GL_SAMPLER_1D_SHADOW 0x8B61 #define GL_SAMPLER_2D_SHADOW 0x8B62 #define GL_DELETE_STATUS 0x8B80 #define GL_COMPILE_STATUS 0x8B81 #define GL_LINK_STATUS 0x8B82 #define GL_VALIDATE_STATUS 0x8B83 #define GL_INFO_LOG_LENGTH 0x8B84 #define GL_ATTACHED_SHADERS 0x8B85 #define GL_ACTIVE_UNIFORMS 0x8B86 #define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 #define GL_SHADER_SOURCE_LENGTH 0x8B88 #define GL_ACTIVE_ATTRIBUTES 0x8B89 #define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B #define GL_SHADING_LANGUAGE_VERSION 0x8B8C #define GL_CURRENT_PROGRAM 0x8B8D #define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 #define GL_LOWER_LEFT 0x8CA1 #define GL_UPPER_LEFT 0x8CA2 #define GL_STENCIL_BACK_REF 0x8CA3 #define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 #define GL_STENCIL_BACK_WRITEMASK 0x8CA5 #endif #ifndef GL_VERSION_2_1 #define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F #define GL_PIXEL_PACK_BUFFER 0x88EB #define GL_PIXEL_UNPACK_BUFFER 0x88EC #define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF #define GL_FLOAT_MAT2x3 0x8B65 #define GL_FLOAT_MAT2x4 0x8B66 #define GL_FLOAT_MAT3x2 0x8B67 #define GL_FLOAT_MAT3x4 0x8B68 #define GL_FLOAT_MAT4x2 0x8B69 #define GL_FLOAT_MAT4x3 0x8B6A #define GL_SRGB 0x8C40 #define GL_SRGB8 0x8C41 #define GL_SRGB_ALPHA 0x8C42 #define GL_SRGB8_ALPHA8 0x8C43 #define GL_SLUMINANCE_ALPHA 0x8C44 #define GL_SLUMINANCE8_ALPHA8 0x8C45 #define GL_SLUMINANCE 0x8C46 #define GL_SLUMINANCE8 0x8C47 #define GL_COMPRESSED_SRGB 0x8C48 #define GL_COMPRESSED_SRGB_ALPHA 0x8C49 #define GL_COMPRESSED_SLUMINANCE 0x8C4A #define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B #endif #ifndef GL_ARB_multitexture #define GL_TEXTURE0_ARB 0x84C0 #define GL_TEXTURE1_ARB 0x84C1 #define GL_TEXTURE2_ARB 0x84C2 #define GL_TEXTURE3_ARB 0x84C3 #define GL_TEXTURE4_ARB 0x84C4 #define GL_TEXTURE5_ARB 0x84C5 #define GL_TEXTURE6_ARB 0x84C6 #define GL_TEXTURE7_ARB 0x84C7 #define GL_TEXTURE8_ARB 0x84C8 #define GL_TEXTURE9_ARB 0x84C9 #define GL_TEXTURE10_ARB 0x84CA #define GL_TEXTURE11_ARB 0x84CB #define GL_TEXTURE12_ARB 0x84CC #define GL_TEXTURE13_ARB 0x84CD #define GL_TEXTURE14_ARB 0x84CE #define GL_TEXTURE15_ARB 0x84CF #define GL_TEXTURE16_ARB 0x84D0 #define GL_TEXTURE17_ARB 0x84D1 #define GL_TEXTURE18_ARB 0x84D2 #define GL_TEXTURE19_ARB 0x84D3 #define GL_TEXTURE20_ARB 0x84D4 #define GL_TEXTURE21_ARB 0x84D5 #define GL_TEXTURE22_ARB 0x84D6 #define GL_TEXTURE23_ARB 0x84D7 #define GL_TEXTURE24_ARB 0x84D8 #define GL_TEXTURE25_ARB 0x84D9 #define GL_TEXTURE26_ARB 0x84DA #define GL_TEXTURE27_ARB 0x84DB #define GL_TEXTURE28_ARB 0x84DC #define GL_TEXTURE29_ARB 0x84DD #define GL_TEXTURE30_ARB 0x84DE #define GL_TEXTURE31_ARB 0x84DF #define GL_ACTIVE_TEXTURE_ARB 0x84E0 #define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 #define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 #endif #ifndef GL_ARB_transpose_matrix #define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 #define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 #define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 #define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 #endif #ifndef GL_ARB_multisample #define GL_MULTISAMPLE_ARB 0x809D #define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E #define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F #define GL_SAMPLE_COVERAGE_ARB 0x80A0 #define GL_SAMPLE_BUFFERS_ARB 0x80A8 #define GL_SAMPLES_ARB 0x80A9 #define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA #define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB #define GL_MULTISAMPLE_BIT_ARB 0x20000000 #endif #ifndef GL_ARB_texture_env_add #endif #ifndef GL_ARB_texture_cube_map #define GL_NORMAL_MAP_ARB 0x8511 #define GL_REFLECTION_MAP_ARB 0x8512 #define GL_TEXTURE_CUBE_MAP_ARB 0x8513 #define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A #define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C #endif #ifndef GL_ARB_texture_compression #define GL_COMPRESSED_ALPHA_ARB 0x84E9 #define GL_COMPRESSED_LUMINANCE_ARB 0x84EA #define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB #define GL_COMPRESSED_INTENSITY_ARB 0x84EC #define GL_COMPRESSED_RGB_ARB 0x84ED #define GL_COMPRESSED_RGBA_ARB 0x84EE #define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF #define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 #define GL_TEXTURE_COMPRESSED_ARB 0x86A1 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 #define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 #endif #ifndef GL_ARB_texture_border_clamp #define GL_CLAMP_TO_BORDER_ARB 0x812D #endif #ifndef GL_ARB_point_parameters #define GL_POINT_SIZE_MIN_ARB 0x8126 #define GL_POINT_SIZE_MAX_ARB 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 #define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 #endif #ifndef GL_ARB_vertex_blend #define GL_MAX_VERTEX_UNITS_ARB 0x86A4 #define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 #define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 #define GL_VERTEX_BLEND_ARB 0x86A7 #define GL_CURRENT_WEIGHT_ARB 0x86A8 #define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 #define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA #define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB #define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC #define GL_WEIGHT_ARRAY_ARB 0x86AD #define GL_MODELVIEW0_ARB 0x1700 #define GL_MODELVIEW1_ARB 0x850A #define GL_MODELVIEW2_ARB 0x8722 #define GL_MODELVIEW3_ARB 0x8723 #define GL_MODELVIEW4_ARB 0x8724 #define GL_MODELVIEW5_ARB 0x8725 #define GL_MODELVIEW6_ARB 0x8726 #define GL_MODELVIEW7_ARB 0x8727 #define GL_MODELVIEW8_ARB 0x8728 #define GL_MODELVIEW9_ARB 0x8729 #define GL_MODELVIEW10_ARB 0x872A #define GL_MODELVIEW11_ARB 0x872B #define GL_MODELVIEW12_ARB 0x872C #define GL_MODELVIEW13_ARB 0x872D #define GL_MODELVIEW14_ARB 0x872E #define GL_MODELVIEW15_ARB 0x872F #define GL_MODELVIEW16_ARB 0x8730 #define GL_MODELVIEW17_ARB 0x8731 #define GL_MODELVIEW18_ARB 0x8732 #define GL_MODELVIEW19_ARB 0x8733 #define GL_MODELVIEW20_ARB 0x8734 #define GL_MODELVIEW21_ARB 0x8735 #define GL_MODELVIEW22_ARB 0x8736 #define GL_MODELVIEW23_ARB 0x8737 #define GL_MODELVIEW24_ARB 0x8738 #define GL_MODELVIEW25_ARB 0x8739 #define GL_MODELVIEW26_ARB 0x873A #define GL_MODELVIEW27_ARB 0x873B #define GL_MODELVIEW28_ARB 0x873C #define GL_MODELVIEW29_ARB 0x873D #define GL_MODELVIEW30_ARB 0x873E #define GL_MODELVIEW31_ARB 0x873F #endif #ifndef GL_ARB_matrix_palette #define GL_MATRIX_PALETTE_ARB 0x8840 #define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 #define GL_MAX_PALETTE_MATRICES_ARB 0x8842 #define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 #define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 #define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 #define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 #define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 #define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 #define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 #endif #ifndef GL_ARB_texture_env_combine #define GL_COMBINE_ARB 0x8570 #define GL_COMBINE_RGB_ARB 0x8571 #define GL_COMBINE_ALPHA_ARB 0x8572 #define GL_SOURCE0_RGB_ARB 0x8580 #define GL_SOURCE1_RGB_ARB 0x8581 #define GL_SOURCE2_RGB_ARB 0x8582 #define GL_SOURCE0_ALPHA_ARB 0x8588 #define GL_SOURCE1_ALPHA_ARB 0x8589 #define GL_SOURCE2_ALPHA_ARB 0x858A #define GL_OPERAND0_RGB_ARB 0x8590 #define GL_OPERAND1_RGB_ARB 0x8591 #define GL_OPERAND2_RGB_ARB 0x8592 #define GL_OPERAND0_ALPHA_ARB 0x8598 #define GL_OPERAND1_ALPHA_ARB 0x8599 #define GL_OPERAND2_ALPHA_ARB 0x859A #define GL_RGB_SCALE_ARB 0x8573 #define GL_ADD_SIGNED_ARB 0x8574 #define GL_INTERPOLATE_ARB 0x8575 #define GL_SUBTRACT_ARB 0x84E7 #define GL_CONSTANT_ARB 0x8576 #define GL_PRIMARY_COLOR_ARB 0x8577 #define GL_PREVIOUS_ARB 0x8578 #endif #ifndef GL_ARB_texture_env_crossbar #endif #ifndef GL_ARB_texture_env_dot3 #define GL_DOT3_RGB_ARB 0x86AE #define GL_DOT3_RGBA_ARB 0x86AF #endif #ifndef GL_ARB_texture_mirrored_repeat #define GL_MIRRORED_REPEAT_ARB 0x8370 #endif #ifndef GL_ARB_depth_texture #define GL_DEPTH_COMPONENT16_ARB 0x81A5 #define GL_DEPTH_COMPONENT24_ARB 0x81A6 #define GL_DEPTH_COMPONENT32_ARB 0x81A7 #define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A #define GL_DEPTH_TEXTURE_MODE_ARB 0x884B #endif #ifndef GL_ARB_shadow #define GL_TEXTURE_COMPARE_MODE_ARB 0x884C #define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D #define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E #endif #ifndef GL_ARB_shadow_ambient #define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF #endif #ifndef GL_ARB_window_pos #endif #ifndef GL_ARB_vertex_program #define GL_COLOR_SUM_ARB 0x8458 #define GL_VERTEX_PROGRAM_ARB 0x8620 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 #define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 #define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 #define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 #define GL_PROGRAM_LENGTH_ARB 0x8627 #define GL_PROGRAM_STRING_ARB 0x8628 #define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E #define GL_MAX_PROGRAM_MATRICES_ARB 0x862F #define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 #define GL_CURRENT_MATRIX_ARB 0x8641 #define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 #define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 #define GL_PROGRAM_ERROR_POSITION_ARB 0x864B #define GL_PROGRAM_BINDING_ARB 0x8677 #define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A #define GL_PROGRAM_ERROR_STRING_ARB 0x8874 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 #define GL_PROGRAM_FORMAT_ARB 0x8876 #define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 #define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 #define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 #define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 #define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 #define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 #define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 #define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 #define GL_PROGRAM_PARAMETERS_ARB 0x88A8 #define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 #define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA #define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB #define GL_PROGRAM_ATTRIBS_ARB 0x88AC #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD #define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE #define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF #define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 #define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 #define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 #define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 #define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 #define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 #define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 #define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 #define GL_MATRIX0_ARB 0x88C0 #define GL_MATRIX1_ARB 0x88C1 #define GL_MATRIX2_ARB 0x88C2 #define GL_MATRIX3_ARB 0x88C3 #define GL_MATRIX4_ARB 0x88C4 #define GL_MATRIX5_ARB 0x88C5 #define GL_MATRIX6_ARB 0x88C6 #define GL_MATRIX7_ARB 0x88C7 #define GL_MATRIX8_ARB 0x88C8 #define GL_MATRIX9_ARB 0x88C9 #define GL_MATRIX10_ARB 0x88CA #define GL_MATRIX11_ARB 0x88CB #define GL_MATRIX12_ARB 0x88CC #define GL_MATRIX13_ARB 0x88CD #define GL_MATRIX14_ARB 0x88CE #define GL_MATRIX15_ARB 0x88CF #define GL_MATRIX16_ARB 0x88D0 #define GL_MATRIX17_ARB 0x88D1 #define GL_MATRIX18_ARB 0x88D2 #define GL_MATRIX19_ARB 0x88D3 #define GL_MATRIX20_ARB 0x88D4 #define GL_MATRIX21_ARB 0x88D5 #define GL_MATRIX22_ARB 0x88D6 #define GL_MATRIX23_ARB 0x88D7 #define GL_MATRIX24_ARB 0x88D8 #define GL_MATRIX25_ARB 0x88D9 #define GL_MATRIX26_ARB 0x88DA #define GL_MATRIX27_ARB 0x88DB #define GL_MATRIX28_ARB 0x88DC #define GL_MATRIX29_ARB 0x88DD #define GL_MATRIX30_ARB 0x88DE #define GL_MATRIX31_ARB 0x88DF #endif #ifndef GL_ARB_fragment_program #define GL_FRAGMENT_PROGRAM_ARB 0x8804 #define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 #define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 #define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 #define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 #define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 #define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A #define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B #define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C #define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D #define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E #define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F #define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 #define GL_MAX_TEXTURE_COORDS_ARB 0x8871 #define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 #endif #ifndef GL_ARB_vertex_buffer_object #define GL_BUFFER_SIZE_ARB 0x8764 #define GL_BUFFER_USAGE_ARB 0x8765 #define GL_ARRAY_BUFFER_ARB 0x8892 #define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 #define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 #define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 #define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 #define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 #define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 #define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D #define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F #define GL_READ_ONLY_ARB 0x88B8 #define GL_WRITE_ONLY_ARB 0x88B9 #define GL_READ_WRITE_ARB 0x88BA #define GL_BUFFER_ACCESS_ARB 0x88BB #define GL_BUFFER_MAPPED_ARB 0x88BC #define GL_BUFFER_MAP_POINTER_ARB 0x88BD #define GL_STREAM_DRAW_ARB 0x88E0 #define GL_STREAM_READ_ARB 0x88E1 #define GL_STREAM_COPY_ARB 0x88E2 #define GL_STATIC_DRAW_ARB 0x88E4 #define GL_STATIC_READ_ARB 0x88E5 #define GL_STATIC_COPY_ARB 0x88E6 #define GL_DYNAMIC_DRAW_ARB 0x88E8 #define GL_DYNAMIC_READ_ARB 0x88E9 #define GL_DYNAMIC_COPY_ARB 0x88EA #endif #ifndef GL_ARB_occlusion_query #define GL_QUERY_COUNTER_BITS_ARB 0x8864 #define GL_CURRENT_QUERY_ARB 0x8865 #define GL_QUERY_RESULT_ARB 0x8866 #define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 #define GL_SAMPLES_PASSED_ARB 0x8914 #endif #ifndef GL_ARB_shader_objects #define GL_PROGRAM_OBJECT_ARB 0x8B40 #define GL_SHADER_OBJECT_ARB 0x8B48 #define GL_OBJECT_TYPE_ARB 0x8B4E #define GL_OBJECT_SUBTYPE_ARB 0x8B4F #define GL_FLOAT_VEC2_ARB 0x8B50 #define GL_FLOAT_VEC3_ARB 0x8B51 #define GL_FLOAT_VEC4_ARB 0x8B52 #define GL_INT_VEC2_ARB 0x8B53 #define GL_INT_VEC3_ARB 0x8B54 #define GL_INT_VEC4_ARB 0x8B55 #define GL_BOOL_ARB 0x8B56 #define GL_BOOL_VEC2_ARB 0x8B57 #define GL_BOOL_VEC3_ARB 0x8B58 #define GL_BOOL_VEC4_ARB 0x8B59 #define GL_FLOAT_MAT2_ARB 0x8B5A #define GL_FLOAT_MAT3_ARB 0x8B5B #define GL_FLOAT_MAT4_ARB 0x8B5C #define GL_SAMPLER_1D_ARB 0x8B5D #define GL_SAMPLER_2D_ARB 0x8B5E #define GL_SAMPLER_3D_ARB 0x8B5F #define GL_SAMPLER_CUBE_ARB 0x8B60 #define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 #define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 #define GL_SAMPLER_2D_RECT_ARB 0x8B63 #define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 #define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 #define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 #define GL_OBJECT_LINK_STATUS_ARB 0x8B82 #define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 #define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 #define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 #define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 #define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 #define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 #endif #ifndef GL_ARB_vertex_shader #define GL_VERTEX_SHADER_ARB 0x8B31 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A #define GL_MAX_VARYING_FLOATS_ARB 0x8B4B #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D #define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 #define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A #endif #ifndef GL_ARB_fragment_shader #define GL_FRAGMENT_SHADER_ARB 0x8B30 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B #endif #ifndef GL_ARB_shading_language_100 #define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C #endif #ifndef GL_ARB_texture_non_power_of_two #endif #ifndef GL_ARB_point_sprite #define GL_POINT_SPRITE_ARB 0x8861 #define GL_COORD_REPLACE_ARB 0x8862 #endif #ifndef GL_ARB_fragment_program_shadow #endif #ifndef GL_ARB_draw_buffers #define GL_MAX_DRAW_BUFFERS_ARB 0x8824 #define GL_DRAW_BUFFER0_ARB 0x8825 #define GL_DRAW_BUFFER1_ARB 0x8826 #define GL_DRAW_BUFFER2_ARB 0x8827 #define GL_DRAW_BUFFER3_ARB 0x8828 #define GL_DRAW_BUFFER4_ARB 0x8829 #define GL_DRAW_BUFFER5_ARB 0x882A #define GL_DRAW_BUFFER6_ARB 0x882B #define GL_DRAW_BUFFER7_ARB 0x882C #define GL_DRAW_BUFFER8_ARB 0x882D #define GL_DRAW_BUFFER9_ARB 0x882E #define GL_DRAW_BUFFER10_ARB 0x882F #define GL_DRAW_BUFFER11_ARB 0x8830 #define GL_DRAW_BUFFER12_ARB 0x8831 #define GL_DRAW_BUFFER13_ARB 0x8832 #define GL_DRAW_BUFFER14_ARB 0x8833 #define GL_DRAW_BUFFER15_ARB 0x8834 #endif #ifndef GL_ARB_texture_rectangle #define GL_TEXTURE_RECTANGLE_ARB 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 #endif #ifndef GL_ARB_color_buffer_float #define GL_RGBA_FLOAT_MODE_ARB 0x8820 #define GL_CLAMP_VERTEX_COLOR_ARB 0x891A #define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B #define GL_CLAMP_READ_COLOR_ARB 0x891C #define GL_FIXED_ONLY_ARB 0x891D #endif #ifndef GL_ARB_half_float_pixel #define GL_HALF_FLOAT_ARB 0x140B #endif #ifndef GL_ARB_texture_float #define GL_TEXTURE_RED_TYPE_ARB 0x8C10 #define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 #define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 #define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 #define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 #define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 #define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 #define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 #define GL_RGBA32F_ARB 0x8814 #define GL_RGB32F_ARB 0x8815 #define GL_ALPHA32F_ARB 0x8816 #define GL_INTENSITY32F_ARB 0x8817 #define GL_LUMINANCE32F_ARB 0x8818 #define GL_LUMINANCE_ALPHA32F_ARB 0x8819 #define GL_RGBA16F_ARB 0x881A #define GL_RGB16F_ARB 0x881B #define GL_ALPHA16F_ARB 0x881C #define GL_INTENSITY16F_ARB 0x881D #define GL_LUMINANCE16F_ARB 0x881E #define GL_LUMINANCE_ALPHA16F_ARB 0x881F #endif #ifndef GL_ARB_pixel_buffer_object #define GL_PIXEL_PACK_BUFFER_ARB 0x88EB #define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC #define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF #endif #ifndef GL_EXT_abgr #define GL_ABGR_EXT 0x8000 #endif #ifndef GL_EXT_blend_color #define GL_CONSTANT_COLOR_EXT 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #define GL_CONSTANT_ALPHA_EXT 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #define GL_BLEND_COLOR_EXT 0x8005 #endif #ifndef GL_EXT_polygon_offset #define GL_POLYGON_OFFSET_EXT 0x8037 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 #endif #ifndef GL_EXT_texture #define GL_ALPHA4_EXT 0x803B #define GL_ALPHA8_EXT 0x803C #define GL_ALPHA12_EXT 0x803D #define GL_ALPHA16_EXT 0x803E #define GL_LUMINANCE4_EXT 0x803F #define GL_LUMINANCE8_EXT 0x8040 #define GL_LUMINANCE12_EXT 0x8041 #define GL_LUMINANCE16_EXT 0x8042 #define GL_LUMINANCE4_ALPHA4_EXT 0x8043 #define GL_LUMINANCE6_ALPHA2_EXT 0x8044 #define GL_LUMINANCE8_ALPHA8_EXT 0x8045 #define GL_LUMINANCE12_ALPHA4_EXT 0x8046 #define GL_LUMINANCE12_ALPHA12_EXT 0x8047 #define GL_LUMINANCE16_ALPHA16_EXT 0x8048 #define GL_INTENSITY_EXT 0x8049 #define GL_INTENSITY4_EXT 0x804A #define GL_INTENSITY8_EXT 0x804B #define GL_INTENSITY12_EXT 0x804C #define GL_INTENSITY16_EXT 0x804D #define GL_RGB2_EXT 0x804E #define GL_RGB4_EXT 0x804F #define GL_RGB5_EXT 0x8050 #define GL_RGB8_EXT 0x8051 #define GL_RGB10_EXT 0x8052 #define GL_RGB12_EXT 0x8053 #define GL_RGB16_EXT 0x8054 #define GL_RGBA2_EXT 0x8055 #define GL_RGBA4_EXT 0x8056 #define GL_RGB5_A1_EXT 0x8057 #define GL_RGBA8_EXT 0x8058 #define GL_RGB10_A2_EXT 0x8059 #define GL_RGBA12_EXT 0x805A #define GL_RGBA16_EXT 0x805B #define GL_TEXTURE_RED_SIZE_EXT 0x805C #define GL_TEXTURE_GREEN_SIZE_EXT 0x805D #define GL_TEXTURE_BLUE_SIZE_EXT 0x805E #define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F #define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 #define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 #define GL_REPLACE_EXT 0x8062 #define GL_PROXY_TEXTURE_1D_EXT 0x8063 #define GL_PROXY_TEXTURE_2D_EXT 0x8064 #define GL_TEXTURE_TOO_LARGE_EXT 0x8065 #endif #ifndef GL_EXT_texture3D #define GL_PACK_SKIP_IMAGES_EXT 0x806B #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #define GL_TEXTURE_3D_EXT 0x806F #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #define GL_TEXTURE_DEPTH_EXT 0x8071 #define GL_TEXTURE_WRAP_R_EXT 0x8072 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #endif #ifndef GL_SGIS_texture_filter4 #define GL_FILTER4_SGIS 0x8146 #define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 #endif #ifndef GL_EXT_subtexture #endif #ifndef GL_EXT_copy_texture #endif #ifndef GL_EXT_histogram #define GL_HISTOGRAM_EXT 0x8024 #define GL_PROXY_HISTOGRAM_EXT 0x8025 #define GL_HISTOGRAM_WIDTH_EXT 0x8026 #define GL_HISTOGRAM_FORMAT_EXT 0x8027 #define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 #define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 #define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A #define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B #define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C #define GL_HISTOGRAM_SINK_EXT 0x802D #define GL_MINMAX_EXT 0x802E #define GL_MINMAX_FORMAT_EXT 0x802F #define GL_MINMAX_SINK_EXT 0x8030 #define GL_TABLE_TOO_LARGE_EXT 0x8031 #endif #ifndef GL_EXT_convolution #define GL_CONVOLUTION_1D_EXT 0x8010 #define GL_CONVOLUTION_2D_EXT 0x8011 #define GL_SEPARABLE_2D_EXT 0x8012 #define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 #define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 #define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 #define GL_REDUCE_EXT 0x8016 #define GL_CONVOLUTION_FORMAT_EXT 0x8017 #define GL_CONVOLUTION_WIDTH_EXT 0x8018 #define GL_CONVOLUTION_HEIGHT_EXT 0x8019 #define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A #define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B #define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C #define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D #define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E #define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F #define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 #define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 #define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 #define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 #endif #ifndef GL_SGI_color_matrix #define GL_COLOR_MATRIX_SGI 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 #define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 #define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 #define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 #define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 #define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 #define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 #define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 #define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA #define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB #endif #ifndef GL_SGI_color_table #define GL_COLOR_TABLE_SGI 0x80D0 #define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 #define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 #define GL_PROXY_COLOR_TABLE_SGI 0x80D3 #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 #define GL_COLOR_TABLE_SCALE_SGI 0x80D6 #define GL_COLOR_TABLE_BIAS_SGI 0x80D7 #define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 #define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF #endif #ifndef GL_SGIS_pixel_texture #define GL_PIXEL_TEXTURE_SGIS 0x8353 #define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 #define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 #define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 #endif #ifndef GL_SGIX_pixel_texture #define GL_PIXEL_TEX_GEN_SGIX 0x8139 #define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B #endif #ifndef GL_SGIS_texture4D #define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 #define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 #define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 #define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 #define GL_TEXTURE_4D_SGIS 0x8134 #define GL_PROXY_TEXTURE_4D_SGIS 0x8135 #define GL_TEXTURE_4DSIZE_SGIS 0x8136 #define GL_TEXTURE_WRAP_Q_SGIS 0x8137 #define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 #define GL_TEXTURE_4D_BINDING_SGIS 0x814F #endif #ifndef GL_SGI_texture_color_table #define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC #define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD #endif #ifndef GL_EXT_cmyka #define GL_CMYK_EXT 0x800C #define GL_CMYKA_EXT 0x800D #define GL_PACK_CMYK_HINT_EXT 0x800E #define GL_UNPACK_CMYK_HINT_EXT 0x800F #endif #ifndef GL_EXT_texture_object #define GL_TEXTURE_PRIORITY_EXT 0x8066 #define GL_TEXTURE_RESIDENT_EXT 0x8067 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 #define GL_TEXTURE_3D_BINDING_EXT 0x806A #endif #ifndef GL_SGIS_detail_texture #define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 #define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 #define GL_LINEAR_DETAIL_SGIS 0x8097 #define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 #define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 #define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A #define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B #define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C #endif #ifndef GL_SGIS_sharpen_texture #define GL_LINEAR_SHARPEN_SGIS 0x80AD #define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE #define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF #define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 #endif #ifndef GL_EXT_packed_pixels #define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 #define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 #define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 #define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 #define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 #endif #ifndef GL_SGIS_texture_lod #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif #ifndef GL_SGIS_multisample #define GL_MULTISAMPLE_SGIS 0x809D #define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E #define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F #define GL_SAMPLE_MASK_SGIS 0x80A0 #define GL_1PASS_SGIS 0x80A1 #define GL_2PASS_0_SGIS 0x80A2 #define GL_2PASS_1_SGIS 0x80A3 #define GL_4PASS_0_SGIS 0x80A4 #define GL_4PASS_1_SGIS 0x80A5 #define GL_4PASS_2_SGIS 0x80A6 #define GL_4PASS_3_SGIS 0x80A7 #define GL_SAMPLE_BUFFERS_SGIS 0x80A8 #define GL_SAMPLES_SGIS 0x80A9 #define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA #define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB #define GL_SAMPLE_PATTERN_SGIS 0x80AC #endif #ifndef GL_EXT_rescale_normal #define GL_RESCALE_NORMAL_EXT 0x803A #endif #ifndef GL_EXT_vertex_array #define GL_VERTEX_ARRAY_EXT 0x8074 #define GL_NORMAL_ARRAY_EXT 0x8075 #define GL_COLOR_ARRAY_EXT 0x8076 #define GL_INDEX_ARRAY_EXT 0x8077 #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 #endif #ifndef GL_EXT_misc_attribute #endif #ifndef GL_SGIS_generate_mipmap #define GL_GENERATE_MIPMAP_SGIS 0x8191 #define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 #endif #ifndef GL_SGIX_clipmap #define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 #define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 #define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 #define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 #define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 #define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 #define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 #define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 #define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 #define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D #define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E #define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F #endif #ifndef GL_SGIX_shadow #define GL_TEXTURE_COMPARE_SGIX 0x819A #define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B #define GL_TEXTURE_LEQUAL_R_SGIX 0x819C #define GL_TEXTURE_GEQUAL_R_SGIX 0x819D #endif #ifndef GL_SGIS_texture_edge_clamp #define GL_CLAMP_TO_EDGE_SGIS 0x812F #endif #ifndef GL_SGIS_texture_border_clamp #define GL_CLAMP_TO_BORDER_SGIS 0x812D #endif #ifndef GL_EXT_blend_minmax #define GL_FUNC_ADD_EXT 0x8006 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #define GL_BLEND_EQUATION_EXT 0x8009 #endif #ifndef GL_EXT_blend_subtract #define GL_FUNC_SUBTRACT_EXT 0x800A #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #endif #ifndef GL_EXT_blend_logic_op #endif #ifndef GL_SGIX_interlace #define GL_INTERLACE_SGIX 0x8094 #endif #ifndef GL_SGIX_pixel_tiles #define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E #define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F #define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 #define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 #define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 #define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 #define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 #define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 #endif #ifndef GL_SGIS_texture_select #define GL_DUAL_ALPHA4_SGIS 0x8110 #define GL_DUAL_ALPHA8_SGIS 0x8111 #define GL_DUAL_ALPHA12_SGIS 0x8112 #define GL_DUAL_ALPHA16_SGIS 0x8113 #define GL_DUAL_LUMINANCE4_SGIS 0x8114 #define GL_DUAL_LUMINANCE8_SGIS 0x8115 #define GL_DUAL_LUMINANCE12_SGIS 0x8116 #define GL_DUAL_LUMINANCE16_SGIS 0x8117 #define GL_DUAL_INTENSITY4_SGIS 0x8118 #define GL_DUAL_INTENSITY8_SGIS 0x8119 #define GL_DUAL_INTENSITY12_SGIS 0x811A #define GL_DUAL_INTENSITY16_SGIS 0x811B #define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C #define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D #define GL_QUAD_ALPHA4_SGIS 0x811E #define GL_QUAD_ALPHA8_SGIS 0x811F #define GL_QUAD_LUMINANCE4_SGIS 0x8120 #define GL_QUAD_LUMINANCE8_SGIS 0x8121 #define GL_QUAD_INTENSITY4_SGIS 0x8122 #define GL_QUAD_INTENSITY8_SGIS 0x8123 #define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 #define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 #endif #ifndef GL_SGIX_sprite #define GL_SPRITE_SGIX 0x8148 #define GL_SPRITE_MODE_SGIX 0x8149 #define GL_SPRITE_AXIS_SGIX 0x814A #define GL_SPRITE_TRANSLATION_SGIX 0x814B #define GL_SPRITE_AXIAL_SGIX 0x814C #define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D #define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E #endif #ifndef GL_SGIX_texture_multi_buffer #define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E #endif #ifndef GL_EXT_point_parameters #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #endif #ifndef GL_SGIS_point_parameters #define GL_POINT_SIZE_MIN_SGIS 0x8126 #define GL_POINT_SIZE_MAX_SGIS 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 #define GL_DISTANCE_ATTENUATION_SGIS 0x8129 #endif #ifndef GL_SGIX_instruments #define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 #define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 #endif #ifndef GL_SGIX_texture_scale_bias #define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 #define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A #define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B #define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C #endif #ifndef GL_SGIX_framezoom #define GL_FRAMEZOOM_SGIX 0x818B #define GL_FRAMEZOOM_FACTOR_SGIX 0x818C #define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D #endif #ifndef GL_SGIX_tag_sample_buffer #endif #ifndef GL_FfdMaskSGIX #define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 #define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 #endif #ifndef GL_SGIX_polynomial_ffd #define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 #define GL_TEXTURE_DEFORMATION_SGIX 0x8195 #define GL_DEFORMATIONS_MASK_SGIX 0x8196 #define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 #endif #ifndef GL_SGIX_reference_plane #define GL_REFERENCE_PLANE_SGIX 0x817D #define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E #endif #ifndef GL_SGIX_flush_raster #endif #ifndef GL_SGIX_depth_texture #define GL_DEPTH_COMPONENT16_SGIX 0x81A5 #define GL_DEPTH_COMPONENT24_SGIX 0x81A6 #define GL_DEPTH_COMPONENT32_SGIX 0x81A7 #endif #ifndef GL_SGIS_fog_function #define GL_FOG_FUNC_SGIS 0x812A #define GL_FOG_FUNC_POINTS_SGIS 0x812B #define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C #endif #ifndef GL_SGIX_fog_offset #define GL_FOG_OFFSET_SGIX 0x8198 #define GL_FOG_OFFSET_VALUE_SGIX 0x8199 #endif #ifndef GL_HP_image_transform #define GL_IMAGE_SCALE_X_HP 0x8155 #define GL_IMAGE_SCALE_Y_HP 0x8156 #define GL_IMAGE_TRANSLATE_X_HP 0x8157 #define GL_IMAGE_TRANSLATE_Y_HP 0x8158 #define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 #define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A #define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B #define GL_IMAGE_MAG_FILTER_HP 0x815C #define GL_IMAGE_MIN_FILTER_HP 0x815D #define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E #define GL_CUBIC_HP 0x815F #define GL_AVERAGE_HP 0x8160 #define GL_IMAGE_TRANSFORM_2D_HP 0x8161 #define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 #define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 #endif #ifndef GL_HP_convolution_border_modes #define GL_IGNORE_BORDER_HP 0x8150 #define GL_CONSTANT_BORDER_HP 0x8151 #define GL_REPLICATE_BORDER_HP 0x8153 #define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 #endif #ifndef GL_INGR_palette_buffer #endif #ifndef GL_SGIX_texture_add_env #define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE #endif #ifndef GL_EXT_color_subtable #endif #ifndef GL_PGI_vertex_hints #define GL_VERTEX_DATA_HINT_PGI 0x1A22A #define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B #define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C #define GL_MAX_VERTEX_HINT_PGI 0x1A22D #define GL_COLOR3_BIT_PGI 0x00010000 #define GL_COLOR4_BIT_PGI 0x00020000 #define GL_EDGEFLAG_BIT_PGI 0x00040000 #define GL_INDEX_BIT_PGI 0x00080000 #define GL_MAT_AMBIENT_BIT_PGI 0x00100000 #define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 #define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 #define GL_MAT_EMISSION_BIT_PGI 0x00800000 #define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 #define GL_MAT_SHININESS_BIT_PGI 0x02000000 #define GL_MAT_SPECULAR_BIT_PGI 0x04000000 #define GL_NORMAL_BIT_PGI 0x08000000 #define GL_TEXCOORD1_BIT_PGI 0x10000000 #define GL_TEXCOORD2_BIT_PGI 0x20000000 #define GL_TEXCOORD3_BIT_PGI 0x40000000 #define GL_TEXCOORD4_BIT_PGI 0x80000000 #define GL_VERTEX23_BIT_PGI 0x00000004 #define GL_VERTEX4_BIT_PGI 0x00000008 #endif #ifndef GL_PGI_misc_hints #define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 #define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD #define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE #define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 #define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 #define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 #define GL_ALWAYS_FAST_HINT_PGI 0x1A20C #define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D #define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E #define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F #define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 #define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 #define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 #define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 #define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 #define GL_FULL_STIPPLE_HINT_PGI 0x1A219 #define GL_CLIP_NEAR_HINT_PGI 0x1A220 #define GL_CLIP_FAR_HINT_PGI 0x1A221 #define GL_WIDE_LINE_HINT_PGI 0x1A222 #define GL_BACK_NORMALS_HINT_PGI 0x1A223 #endif #ifndef GL_EXT_paletted_texture #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #endif #ifndef GL_EXT_clip_volume_hint #define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 #endif #ifndef GL_SGIX_list_priority #define GL_LIST_PRIORITY_SGIX 0x8182 #endif #ifndef GL_SGIX_ir_instrument1 #define GL_IR_INSTRUMENT1_SGIX 0x817F #endif #ifndef GL_SGIX_calligraphic_fragment #define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 #endif #ifndef GL_SGIX_texture_lod_bias #define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E #define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F #define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 #endif #ifndef GL_SGIX_shadow_ambient #define GL_SHADOW_AMBIENT_SGIX 0x80BF #endif #ifndef GL_EXT_index_texture #endif #ifndef GL_EXT_index_material #define GL_INDEX_MATERIAL_EXT 0x81B8 #define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 #define GL_INDEX_MATERIAL_FACE_EXT 0x81BA #endif #ifndef GL_EXT_index_func #define GL_INDEX_TEST_EXT 0x81B5 #define GL_INDEX_TEST_FUNC_EXT 0x81B6 #define GL_INDEX_TEST_REF_EXT 0x81B7 #endif #ifndef GL_EXT_index_array_formats #define GL_IUI_V2F_EXT 0x81AD #define GL_IUI_V3F_EXT 0x81AE #define GL_IUI_N3F_V2F_EXT 0x81AF #define GL_IUI_N3F_V3F_EXT 0x81B0 #define GL_T2F_IUI_V2F_EXT 0x81B1 #define GL_T2F_IUI_V3F_EXT 0x81B2 #define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 #define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 #endif #ifndef GL_EXT_compiled_vertex_array #define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 #define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 #endif #ifndef GL_EXT_cull_vertex #define GL_CULL_VERTEX_EXT 0x81AA #define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB #define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC #endif #ifndef GL_SGIX_ycrcb #define GL_YCRCB_422_SGIX 0x81BB #define GL_YCRCB_444_SGIX 0x81BC #endif #ifndef GL_SGIX_fragment_lighting #define GL_FRAGMENT_LIGHTING_SGIX 0x8400 #define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 #define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 #define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 #define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 #define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 #define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 #define GL_LIGHT_ENV_MODE_SGIX 0x8407 #define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 #define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 #define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A #define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B #define GL_FRAGMENT_LIGHT0_SGIX 0x840C #define GL_FRAGMENT_LIGHT1_SGIX 0x840D #define GL_FRAGMENT_LIGHT2_SGIX 0x840E #define GL_FRAGMENT_LIGHT3_SGIX 0x840F #define GL_FRAGMENT_LIGHT4_SGIX 0x8410 #define GL_FRAGMENT_LIGHT5_SGIX 0x8411 #define GL_FRAGMENT_LIGHT6_SGIX 0x8412 #define GL_FRAGMENT_LIGHT7_SGIX 0x8413 #endif #ifndef GL_IBM_rasterpos_clip #define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 #endif #ifndef GL_HP_texture_lighting #define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 #define GL_TEXTURE_POST_SPECULAR_HP 0x8168 #define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 #endif #ifndef GL_EXT_draw_range_elements #define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 #define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 #endif #ifndef GL_WIN_phong_shading #define GL_PHONG_WIN 0x80EA #define GL_PHONG_HINT_WIN 0x80EB #endif #ifndef GL_WIN_specular_fog #define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC #endif #ifndef GL_EXT_light_texture #define GL_FRAGMENT_MATERIAL_EXT 0x8349 #define GL_FRAGMENT_NORMAL_EXT 0x834A #define GL_FRAGMENT_COLOR_EXT 0x834C #define GL_ATTENUATION_EXT 0x834D #define GL_SHADOW_ATTENUATION_EXT 0x834E #define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F #define GL_TEXTURE_LIGHT_EXT 0x8350 #define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 #define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 /* reuse GL_FRAGMENT_DEPTH_EXT */ #endif #ifndef GL_SGIX_blend_alpha_minmax #define GL_ALPHA_MIN_SGIX 0x8320 #define GL_ALPHA_MAX_SGIX 0x8321 #endif #ifndef GL_SGIX_impact_pixel_texture #define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 #define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 #define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 #define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 #define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 #define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 #define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A #endif #ifndef GL_EXT_bgra #define GL_BGR_EXT 0x80E0 #define GL_BGRA_EXT 0x80E1 #endif #ifndef GL_SGIX_async #define GL_ASYNC_MARKER_SGIX 0x8329 #endif #ifndef GL_SGIX_async_pixel #define GL_ASYNC_TEX_IMAGE_SGIX 0x835C #define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D #define GL_ASYNC_READ_PIXELS_SGIX 0x835E #define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F #define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 #define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 #endif #ifndef GL_SGIX_async_histogram #define GL_ASYNC_HISTOGRAM_SGIX 0x832C #define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D #endif #ifndef GL_INTEL_texture_scissor #endif #ifndef GL_INTEL_parallel_arrays #define GL_PARALLEL_ARRAYS_INTEL 0x83F4 #define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 #define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 #define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 #define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 #endif #ifndef GL_HP_occlusion_test #define GL_OCCLUSION_TEST_HP 0x8165 #define GL_OCCLUSION_TEST_RESULT_HP 0x8166 #endif #ifndef GL_EXT_pixel_transform #define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 #define GL_PIXEL_MAG_FILTER_EXT 0x8331 #define GL_PIXEL_MIN_FILTER_EXT 0x8332 #define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 #define GL_CUBIC_EXT 0x8334 #define GL_AVERAGE_EXT 0x8335 #define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 #define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 #define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 #endif #ifndef GL_EXT_pixel_transform_color_table #endif #ifndef GL_EXT_shared_texture_palette #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #endif #ifndef GL_EXT_separate_specular_color #define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 #define GL_SINGLE_COLOR_EXT 0x81F9 #define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA #endif #ifndef GL_EXT_secondary_color #define GL_COLOR_SUM_EXT 0x8458 #define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 #define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A #define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B #define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C #define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D #define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E #endif #ifndef GL_EXT_texture_perturb_normal #define GL_PERTURB_EXT 0x85AE #define GL_TEXTURE_NORMAL_EXT 0x85AF #endif #ifndef GL_EXT_multi_draw_arrays #endif #ifndef GL_EXT_fog_coord #define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 #define GL_FOG_COORDINATE_EXT 0x8451 #define GL_FRAGMENT_DEPTH_EXT 0x8452 #define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 #define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 #define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 #define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 #define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 #endif #ifndef GL_REND_screen_coordinates #define GL_SCREEN_COORDINATES_REND 0x8490 #define GL_INVERTED_SCREEN_W_REND 0x8491 #endif #ifndef GL_EXT_coordinate_frame #define GL_TANGENT_ARRAY_EXT 0x8439 #define GL_BINORMAL_ARRAY_EXT 0x843A #define GL_CURRENT_TANGENT_EXT 0x843B #define GL_CURRENT_BINORMAL_EXT 0x843C #define GL_TANGENT_ARRAY_TYPE_EXT 0x843E #define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F #define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 #define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 #define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 #define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 #define GL_MAP1_TANGENT_EXT 0x8444 #define GL_MAP2_TANGENT_EXT 0x8445 #define GL_MAP1_BINORMAL_EXT 0x8446 #define GL_MAP2_BINORMAL_EXT 0x8447 #endif #ifndef GL_EXT_texture_env_combine #define GL_COMBINE_EXT 0x8570 #define GL_COMBINE_RGB_EXT 0x8571 #define GL_COMBINE_ALPHA_EXT 0x8572 #define GL_RGB_SCALE_EXT 0x8573 #define GL_ADD_SIGNED_EXT 0x8574 #define GL_INTERPOLATE_EXT 0x8575 #define GL_CONSTANT_EXT 0x8576 #define GL_PRIMARY_COLOR_EXT 0x8577 #define GL_PREVIOUS_EXT 0x8578 #define GL_SOURCE0_RGB_EXT 0x8580 #define GL_SOURCE1_RGB_EXT 0x8581 #define GL_SOURCE2_RGB_EXT 0x8582 #define GL_SOURCE0_ALPHA_EXT 0x8588 #define GL_SOURCE1_ALPHA_EXT 0x8589 #define GL_SOURCE2_ALPHA_EXT 0x858A #define GL_OPERAND0_RGB_EXT 0x8590 #define GL_OPERAND1_RGB_EXT 0x8591 #define GL_OPERAND2_RGB_EXT 0x8592 #define GL_OPERAND0_ALPHA_EXT 0x8598 #define GL_OPERAND1_ALPHA_EXT 0x8599 #define GL_OPERAND2_ALPHA_EXT 0x859A #endif #ifndef GL_APPLE_specular_vector #define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 #endif #ifndef GL_APPLE_transform_hint #define GL_TRANSFORM_HINT_APPLE 0x85B1 #endif #ifndef GL_SGIX_fog_scale #define GL_FOG_SCALE_SGIX 0x81FC #define GL_FOG_SCALE_VALUE_SGIX 0x81FD #endif #ifndef GL_SUNX_constant_data #define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 #define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 #endif #ifndef GL_SUN_global_alpha #define GL_GLOBAL_ALPHA_SUN 0x81D9 #define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA #endif #ifndef GL_SUN_triangle_list #define GL_RESTART_SUN 0x0001 #define GL_REPLACE_MIDDLE_SUN 0x0002 #define GL_REPLACE_OLDEST_SUN 0x0003 #define GL_TRIANGLE_LIST_SUN 0x81D7 #define GL_REPLACEMENT_CODE_SUN 0x81D8 #define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 #define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 #define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 #define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 #define GL_R1UI_V3F_SUN 0x85C4 #define GL_R1UI_C4UB_V3F_SUN 0x85C5 #define GL_R1UI_C3F_V3F_SUN 0x85C6 #define GL_R1UI_N3F_V3F_SUN 0x85C7 #define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 #define GL_R1UI_T2F_V3F_SUN 0x85C9 #define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA #define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB #endif #ifndef GL_SUN_vertex #endif #ifndef GL_EXT_blend_func_separate #define GL_BLEND_DST_RGB_EXT 0x80C8 #define GL_BLEND_SRC_RGB_EXT 0x80C9 #define GL_BLEND_DST_ALPHA_EXT 0x80CA #define GL_BLEND_SRC_ALPHA_EXT 0x80CB #endif #ifndef GL_INGR_color_clamp #define GL_RED_MIN_CLAMP_INGR 0x8560 #define GL_GREEN_MIN_CLAMP_INGR 0x8561 #define GL_BLUE_MIN_CLAMP_INGR 0x8562 #define GL_ALPHA_MIN_CLAMP_INGR 0x8563 #define GL_RED_MAX_CLAMP_INGR 0x8564 #define GL_GREEN_MAX_CLAMP_INGR 0x8565 #define GL_BLUE_MAX_CLAMP_INGR 0x8566 #define GL_ALPHA_MAX_CLAMP_INGR 0x8567 #endif #ifndef GL_INGR_interlace_read #define GL_INTERLACE_READ_INGR 0x8568 #endif #ifndef GL_EXT_stencil_wrap #define GL_INCR_WRAP_EXT 0x8507 #define GL_DECR_WRAP_EXT 0x8508 #endif #ifndef GL_EXT_422_pixels #define GL_422_EXT 0x80CC #define GL_422_REV_EXT 0x80CD #define GL_422_AVERAGE_EXT 0x80CE #define GL_422_REV_AVERAGE_EXT 0x80CF #endif #ifndef GL_NV_texgen_reflection #define GL_NORMAL_MAP_NV 0x8511 #define GL_REFLECTION_MAP_NV 0x8512 #endif #ifndef GL_EXT_texture_cube_map #define GL_NORMAL_MAP_EXT 0x8511 #define GL_REFLECTION_MAP_EXT 0x8512 #define GL_TEXTURE_CUBE_MAP_EXT 0x8513 #define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A #define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C #endif #ifndef GL_SUN_convolution_border_modes #define GL_WRAP_BORDER_SUN 0x81D4 #endif #ifndef GL_EXT_texture_env_add #endif #ifndef GL_EXT_texture_lod_bias #define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD #define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 #define GL_TEXTURE_LOD_BIAS_EXT 0x8501 #endif #ifndef GL_EXT_texture_filter_anisotropic #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif #ifndef GL_EXT_vertex_weighting #define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH #define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 #define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX #define GL_MODELVIEW1_MATRIX_EXT 0x8506 #define GL_VERTEX_WEIGHTING_EXT 0x8509 #define GL_MODELVIEW0_EXT GL_MODELVIEW #define GL_MODELVIEW1_EXT 0x850A #define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B #define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C #define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D #define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E #define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F #define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 #endif #ifndef GL_NV_light_max_exponent #define GL_MAX_SHININESS_NV 0x8504 #define GL_MAX_SPOT_EXPONENT_NV 0x8505 #endif #ifndef GL_NV_vertex_array_range #define GL_VERTEX_ARRAY_RANGE_NV 0x851D #define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E #define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F #define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 #define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 #endif #ifndef GL_NV_register_combiners #define GL_REGISTER_COMBINERS_NV 0x8522 #define GL_VARIABLE_A_NV 0x8523 #define GL_VARIABLE_B_NV 0x8524 #define GL_VARIABLE_C_NV 0x8525 #define GL_VARIABLE_D_NV 0x8526 #define GL_VARIABLE_E_NV 0x8527 #define GL_VARIABLE_F_NV 0x8528 #define GL_VARIABLE_G_NV 0x8529 #define GL_CONSTANT_COLOR0_NV 0x852A #define GL_CONSTANT_COLOR1_NV 0x852B #define GL_PRIMARY_COLOR_NV 0x852C #define GL_SECONDARY_COLOR_NV 0x852D #define GL_SPARE0_NV 0x852E #define GL_SPARE1_NV 0x852F #define GL_DISCARD_NV 0x8530 #define GL_E_TIMES_F_NV 0x8531 #define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 #define GL_UNSIGNED_IDENTITY_NV 0x8536 #define GL_UNSIGNED_INVERT_NV 0x8537 #define GL_EXPAND_NORMAL_NV 0x8538 #define GL_EXPAND_NEGATE_NV 0x8539 #define GL_HALF_BIAS_NORMAL_NV 0x853A #define GL_HALF_BIAS_NEGATE_NV 0x853B #define GL_SIGNED_IDENTITY_NV 0x853C #define GL_SIGNED_NEGATE_NV 0x853D #define GL_SCALE_BY_TWO_NV 0x853E #define GL_SCALE_BY_FOUR_NV 0x853F #define GL_SCALE_BY_ONE_HALF_NV 0x8540 #define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 #define GL_COMBINER_INPUT_NV 0x8542 #define GL_COMBINER_MAPPING_NV 0x8543 #define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 #define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 #define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 #define GL_COMBINER_MUX_SUM_NV 0x8547 #define GL_COMBINER_SCALE_NV 0x8548 #define GL_COMBINER_BIAS_NV 0x8549 #define GL_COMBINER_AB_OUTPUT_NV 0x854A #define GL_COMBINER_CD_OUTPUT_NV 0x854B #define GL_COMBINER_SUM_OUTPUT_NV 0x854C #define GL_MAX_GENERAL_COMBINERS_NV 0x854D #define GL_NUM_GENERAL_COMBINERS_NV 0x854E #define GL_COLOR_SUM_CLAMP_NV 0x854F #define GL_COMBINER0_NV 0x8550 #define GL_COMBINER1_NV 0x8551 #define GL_COMBINER2_NV 0x8552 #define GL_COMBINER3_NV 0x8553 #define GL_COMBINER4_NV 0x8554 #define GL_COMBINER5_NV 0x8555 #define GL_COMBINER6_NV 0x8556 #define GL_COMBINER7_NV 0x8557 /* reuse GL_TEXTURE0_ARB */ /* reuse GL_TEXTURE1_ARB */ /* reuse GL_ZERO */ /* reuse GL_NONE */ /* reuse GL_FOG */ #endif #ifndef GL_NV_fog_distance #define GL_FOG_DISTANCE_MODE_NV 0x855A #define GL_EYE_RADIAL_NV 0x855B #define GL_EYE_PLANE_ABSOLUTE_NV 0x855C /* reuse GL_EYE_PLANE */ #endif #ifndef GL_NV_texgen_emboss #define GL_EMBOSS_LIGHT_NV 0x855D #define GL_EMBOSS_CONSTANT_NV 0x855E #define GL_EMBOSS_MAP_NV 0x855F #endif #ifndef GL_NV_blend_square #endif #ifndef GL_NV_texture_env_combine4 #define GL_COMBINE4_NV 0x8503 #define GL_SOURCE3_RGB_NV 0x8583 #define GL_SOURCE3_ALPHA_NV 0x858B #define GL_OPERAND3_RGB_NV 0x8593 #define GL_OPERAND3_ALPHA_NV 0x859B #endif #ifndef GL_MESA_resize_buffers #endif #ifndef GL_MESA_window_pos #endif #ifndef GL_EXT_texture_compression_s3tc #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 #endif #ifndef GL_IBM_cull_vertex #define GL_CULL_VERTEX_IBM 103050 #endif #ifndef GL_IBM_multimode_draw_arrays #endif #ifndef GL_IBM_vertex_array_lists #define GL_VERTEX_ARRAY_LIST_IBM 103070 #define GL_NORMAL_ARRAY_LIST_IBM 103071 #define GL_COLOR_ARRAY_LIST_IBM 103072 #define GL_INDEX_ARRAY_LIST_IBM 103073 #define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 #define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 #define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 #define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 #define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 #define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 #define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 #define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 #define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 #define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 #define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 #define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 #endif #ifndef GL_SGIX_subsample #define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 #define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 #define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 #define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 #define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 #endif #ifndef GL_SGIX_ycrcb_subsample #endif #ifndef GL_SGIX_ycrcba #define GL_YCRCB_SGIX 0x8318 #define GL_YCRCBA_SGIX 0x8319 #endif #ifndef GL_SGI_depth_pass_instrument #define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 #define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 #define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 #endif #ifndef GL_3DFX_texture_compression_FXT1 #define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 #define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 #endif #ifndef GL_3DFX_multisample #define GL_MULTISAMPLE_3DFX 0x86B2 #define GL_SAMPLE_BUFFERS_3DFX 0x86B3 #define GL_SAMPLES_3DFX 0x86B4 #define GL_MULTISAMPLE_BIT_3DFX 0x20000000 #endif #ifndef GL_3DFX_tbuffer #endif #ifndef GL_EXT_multisample #define GL_MULTISAMPLE_EXT 0x809D #define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E #define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F #define GL_SAMPLE_MASK_EXT 0x80A0 #define GL_1PASS_EXT 0x80A1 #define GL_2PASS_0_EXT 0x80A2 #define GL_2PASS_1_EXT 0x80A3 #define GL_4PASS_0_EXT 0x80A4 #define GL_4PASS_1_EXT 0x80A5 #define GL_4PASS_2_EXT 0x80A6 #define GL_4PASS_3_EXT 0x80A7 #define GL_SAMPLE_BUFFERS_EXT 0x80A8 #define GL_SAMPLES_EXT 0x80A9 #define GL_SAMPLE_MASK_VALUE_EXT 0x80AA #define GL_SAMPLE_MASK_INVERT_EXT 0x80AB #define GL_SAMPLE_PATTERN_EXT 0x80AC #define GL_MULTISAMPLE_BIT_EXT 0x20000000 #endif #ifndef GL_SGIX_vertex_preclip #define GL_VERTEX_PRECLIP_SGIX 0x83EE #define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF #endif #ifndef GL_SGIX_convolution_accuracy #define GL_CONVOLUTION_HINT_SGIX 0x8316 #endif #ifndef GL_SGIX_resample #define GL_PACK_RESAMPLE_SGIX 0x842C #define GL_UNPACK_RESAMPLE_SGIX 0x842D #define GL_RESAMPLE_REPLICATE_SGIX 0x842E #define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F #define GL_RESAMPLE_DECIMATE_SGIX 0x8430 #endif #ifndef GL_SGIS_point_line_texgen #define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 #define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 #define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 #define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 #define GL_EYE_POINT_SGIS 0x81F4 #define GL_OBJECT_POINT_SGIS 0x81F5 #define GL_EYE_LINE_SGIS 0x81F6 #define GL_OBJECT_LINE_SGIS 0x81F7 #endif #ifndef GL_SGIS_texture_color_mask #define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF #endif #ifndef GL_EXT_texture_env_dot3 #define GL_DOT3_RGB_EXT 0x8740 #define GL_DOT3_RGBA_EXT 0x8741 #endif #ifndef GL_ATI_texture_mirror_once #define GL_MIRROR_CLAMP_ATI 0x8742 #define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 #endif #ifndef GL_NV_fence #define GL_ALL_COMPLETED_NV 0x84F2 #define GL_FENCE_STATUS_NV 0x84F3 #define GL_FENCE_CONDITION_NV 0x84F4 #endif #ifndef GL_IBM_texture_mirrored_repeat #define GL_MIRRORED_REPEAT_IBM 0x8370 #endif #ifndef GL_NV_evaluators #define GL_EVAL_2D_NV 0x86C0 #define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 #define GL_MAP_TESSELLATION_NV 0x86C2 #define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 #define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 #define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 #define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 #define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 #define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 #define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 #define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA #define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB #define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC #define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD #define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE #define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF #define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 #define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 #define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 #define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 #define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 #define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 #define GL_MAX_MAP_TESSELLATION_NV 0x86D6 #define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 #endif #ifndef GL_NV_packed_depth_stencil #define GL_DEPTH_STENCIL_NV 0x84F9 #define GL_UNSIGNED_INT_24_8_NV 0x84FA #endif #ifndef GL_NV_register_combiners2 #define GL_PER_STAGE_CONSTANTS_NV 0x8535 #endif #ifndef GL_NV_texture_compression_vtc #endif #ifndef GL_NV_texture_rectangle #define GL_TEXTURE_RECTANGLE_NV 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 #endif #ifndef GL_NV_texture_shader #define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C #define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D #define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E #define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 #define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA #define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB #define GL_DSDT_MAG_INTENSITY_NV 0x86DC #define GL_SHADER_CONSISTENT_NV 0x86DD #define GL_TEXTURE_SHADER_NV 0x86DE #define GL_SHADER_OPERATION_NV 0x86DF #define GL_CULL_MODES_NV 0x86E0 #define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 #define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 #define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 #define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV #define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV #define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV #define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 #define GL_CONST_EYE_NV 0x86E5 #define GL_PASS_THROUGH_NV 0x86E6 #define GL_CULL_FRAGMENT_NV 0x86E7 #define GL_OFFSET_TEXTURE_2D_NV 0x86E8 #define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 #define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA #define GL_DOT_PRODUCT_NV 0x86EC #define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED #define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE #define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 #define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 #define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 #define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 #define GL_HILO_NV 0x86F4 #define GL_DSDT_NV 0x86F5 #define GL_DSDT_MAG_NV 0x86F6 #define GL_DSDT_MAG_VIB_NV 0x86F7 #define GL_HILO16_NV 0x86F8 #define GL_SIGNED_HILO_NV 0x86F9 #define GL_SIGNED_HILO16_NV 0x86FA #define GL_SIGNED_RGBA_NV 0x86FB #define GL_SIGNED_RGBA8_NV 0x86FC #define GL_SIGNED_RGB_NV 0x86FE #define GL_SIGNED_RGB8_NV 0x86FF #define GL_SIGNED_LUMINANCE_NV 0x8701 #define GL_SIGNED_LUMINANCE8_NV 0x8702 #define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 #define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 #define GL_SIGNED_ALPHA_NV 0x8705 #define GL_SIGNED_ALPHA8_NV 0x8706 #define GL_SIGNED_INTENSITY_NV 0x8707 #define GL_SIGNED_INTENSITY8_NV 0x8708 #define GL_DSDT8_NV 0x8709 #define GL_DSDT8_MAG8_NV 0x870A #define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B #define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C #define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D #define GL_HI_SCALE_NV 0x870E #define GL_LO_SCALE_NV 0x870F #define GL_DS_SCALE_NV 0x8710 #define GL_DT_SCALE_NV 0x8711 #define GL_MAGNITUDE_SCALE_NV 0x8712 #define GL_VIBRANCE_SCALE_NV 0x8713 #define GL_HI_BIAS_NV 0x8714 #define GL_LO_BIAS_NV 0x8715 #define GL_DS_BIAS_NV 0x8716 #define GL_DT_BIAS_NV 0x8717 #define GL_MAGNITUDE_BIAS_NV 0x8718 #define GL_VIBRANCE_BIAS_NV 0x8719 #define GL_TEXTURE_BORDER_VALUES_NV 0x871A #define GL_TEXTURE_HI_SIZE_NV 0x871B #define GL_TEXTURE_LO_SIZE_NV 0x871C #define GL_TEXTURE_DS_SIZE_NV 0x871D #define GL_TEXTURE_DT_SIZE_NV 0x871E #define GL_TEXTURE_MAG_SIZE_NV 0x871F #endif #ifndef GL_NV_texture_shader2 #define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF #endif #ifndef GL_NV_vertex_array_range2 #define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 #endif #ifndef GL_NV_vertex_program #define GL_VERTEX_PROGRAM_NV 0x8620 #define GL_VERTEX_STATE_PROGRAM_NV 0x8621 #define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 #define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 #define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 #define GL_CURRENT_ATTRIB_NV 0x8626 #define GL_PROGRAM_LENGTH_NV 0x8627 #define GL_PROGRAM_STRING_NV 0x8628 #define GL_MODELVIEW_PROJECTION_NV 0x8629 #define GL_IDENTITY_NV 0x862A #define GL_INVERSE_NV 0x862B #define GL_TRANSPOSE_NV 0x862C #define GL_INVERSE_TRANSPOSE_NV 0x862D #define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E #define GL_MAX_TRACK_MATRICES_NV 0x862F #define GL_MATRIX0_NV 0x8630 #define GL_MATRIX1_NV 0x8631 #define GL_MATRIX2_NV 0x8632 #define GL_MATRIX3_NV 0x8633 #define GL_MATRIX4_NV 0x8634 #define GL_MATRIX5_NV 0x8635 #define GL_MATRIX6_NV 0x8636 #define GL_MATRIX7_NV 0x8637 #define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 #define GL_CURRENT_MATRIX_NV 0x8641 #define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 #define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 #define GL_PROGRAM_PARAMETER_NV 0x8644 #define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 #define GL_PROGRAM_TARGET_NV 0x8646 #define GL_PROGRAM_RESIDENT_NV 0x8647 #define GL_TRACK_MATRIX_NV 0x8648 #define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 #define GL_VERTEX_PROGRAM_BINDING_NV 0x864A #define GL_PROGRAM_ERROR_POSITION_NV 0x864B #define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 #define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 #define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 #define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 #define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 #define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 #define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 #define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 #define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 #define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 #define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A #define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B #define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C #define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D #define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E #define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F #define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 #define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 #define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 #define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 #define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 #define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 #define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 #define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 #define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 #define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 #define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A #define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B #define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C #define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D #define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E #define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F #define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 #define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 #define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 #define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 #define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 #define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 #define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 #define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 #define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 #define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 #define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A #define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B #define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C #define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D #define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E #define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F #endif #ifndef GL_SGIX_texture_coordinate_clamp #define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 #define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A #define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B #endif #ifndef GL_SGIX_scalebias_hint #define GL_SCALEBIAS_HINT_SGIX 0x8322 #endif #ifndef GL_OML_interlace #define GL_INTERLACE_OML 0x8980 #define GL_INTERLACE_READ_OML 0x8981 #endif #ifndef GL_OML_subsample #define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 #define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 #endif #ifndef GL_OML_resample #define GL_PACK_RESAMPLE_OML 0x8984 #define GL_UNPACK_RESAMPLE_OML 0x8985 #define GL_RESAMPLE_REPLICATE_OML 0x8986 #define GL_RESAMPLE_ZERO_FILL_OML 0x8987 #define GL_RESAMPLE_AVERAGE_OML 0x8988 #define GL_RESAMPLE_DECIMATE_OML 0x8989 #endif #ifndef GL_NV_copy_depth_to_color #define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E #define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F #endif #ifndef GL_ATI_envmap_bumpmap #define GL_BUMP_ROT_MATRIX_ATI 0x8775 #define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 #define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 #define GL_BUMP_TEX_UNITS_ATI 0x8778 #define GL_DUDV_ATI 0x8779 #define GL_DU8DV8_ATI 0x877A #define GL_BUMP_ENVMAP_ATI 0x877B #define GL_BUMP_TARGET_ATI 0x877C #endif #ifndef GL_ATI_fragment_shader #define GL_FRAGMENT_SHADER_ATI 0x8920 #define GL_REG_0_ATI 0x8921 #define GL_REG_1_ATI 0x8922 #define GL_REG_2_ATI 0x8923 #define GL_REG_3_ATI 0x8924 #define GL_REG_4_ATI 0x8925 #define GL_REG_5_ATI 0x8926 #define GL_REG_6_ATI 0x8927 #define GL_REG_7_ATI 0x8928 #define GL_REG_8_ATI 0x8929 #define GL_REG_9_ATI 0x892A #define GL_REG_10_ATI 0x892B #define GL_REG_11_ATI 0x892C #define GL_REG_12_ATI 0x892D #define GL_REG_13_ATI 0x892E #define GL_REG_14_ATI 0x892F #define GL_REG_15_ATI 0x8930 #define GL_REG_16_ATI 0x8931 #define GL_REG_17_ATI 0x8932 #define GL_REG_18_ATI 0x8933 #define GL_REG_19_ATI 0x8934 #define GL_REG_20_ATI 0x8935 #define GL_REG_21_ATI 0x8936 #define GL_REG_22_ATI 0x8937 #define GL_REG_23_ATI 0x8938 #define GL_REG_24_ATI 0x8939 #define GL_REG_25_ATI 0x893A #define GL_REG_26_ATI 0x893B #define GL_REG_27_ATI 0x893C #define GL_REG_28_ATI 0x893D #define GL_REG_29_ATI 0x893E #define GL_REG_30_ATI 0x893F #define GL_REG_31_ATI 0x8940 #define GL_CON_0_ATI 0x8941 #define GL_CON_1_ATI 0x8942 #define GL_CON_2_ATI 0x8943 #define GL_CON_3_ATI 0x8944 #define GL_CON_4_ATI 0x8945 #define GL_CON_5_ATI 0x8946 #define GL_CON_6_ATI 0x8947 #define GL_CON_7_ATI 0x8948 #define GL_CON_8_ATI 0x8949 #define GL_CON_9_ATI 0x894A #define GL_CON_10_ATI 0x894B #define GL_CON_11_ATI 0x894C #define GL_CON_12_ATI 0x894D #define GL_CON_13_ATI 0x894E #define GL_CON_14_ATI 0x894F #define GL_CON_15_ATI 0x8950 #define GL_CON_16_ATI 0x8951 #define GL_CON_17_ATI 0x8952 #define GL_CON_18_ATI 0x8953 #define GL_CON_19_ATI 0x8954 #define GL_CON_20_ATI 0x8955 #define GL_CON_21_ATI 0x8956 #define GL_CON_22_ATI 0x8957 #define GL_CON_23_ATI 0x8958 #define GL_CON_24_ATI 0x8959 #define GL_CON_25_ATI 0x895A #define GL_CON_26_ATI 0x895B #define GL_CON_27_ATI 0x895C #define GL_CON_28_ATI 0x895D #define GL_CON_29_ATI 0x895E #define GL_CON_30_ATI 0x895F #define GL_CON_31_ATI 0x8960 #define GL_MOV_ATI 0x8961 #define GL_ADD_ATI 0x8963 #define GL_MUL_ATI 0x8964 #define GL_SUB_ATI 0x8965 #define GL_DOT3_ATI 0x8966 #define GL_DOT4_ATI 0x8967 #define GL_MAD_ATI 0x8968 #define GL_LERP_ATI 0x8969 #define GL_CND_ATI 0x896A #define GL_CND0_ATI 0x896B #define GL_DOT2_ADD_ATI 0x896C #define GL_SECONDARY_INTERPOLATOR_ATI 0x896D #define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E #define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F #define GL_NUM_PASSES_ATI 0x8970 #define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 #define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 #define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 #define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 #define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 #define GL_SWIZZLE_STR_ATI 0x8976 #define GL_SWIZZLE_STQ_ATI 0x8977 #define GL_SWIZZLE_STR_DR_ATI 0x8978 #define GL_SWIZZLE_STQ_DQ_ATI 0x8979 #define GL_SWIZZLE_STRQ_ATI 0x897A #define GL_SWIZZLE_STRQ_DQ_ATI 0x897B #define GL_RED_BIT_ATI 0x00000001 #define GL_GREEN_BIT_ATI 0x00000002 #define GL_BLUE_BIT_ATI 0x00000004 #define GL_2X_BIT_ATI 0x00000001 #define GL_4X_BIT_ATI 0x00000002 #define GL_8X_BIT_ATI 0x00000004 #define GL_HALF_BIT_ATI 0x00000008 #define GL_QUARTER_BIT_ATI 0x00000010 #define GL_EIGHTH_BIT_ATI 0x00000020 #define GL_SATURATE_BIT_ATI 0x00000040 #define GL_COMP_BIT_ATI 0x00000002 #define GL_NEGATE_BIT_ATI 0x00000004 #define GL_BIAS_BIT_ATI 0x00000008 #endif #ifndef GL_ATI_pn_triangles #define GL_PN_TRIANGLES_ATI 0x87F0 #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 #define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 #define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 #define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 #define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 #define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 #define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 #define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 #endif #ifndef GL_ATI_vertex_array_object #define GL_STATIC_ATI 0x8760 #define GL_DYNAMIC_ATI 0x8761 #define GL_PRESERVE_ATI 0x8762 #define GL_DISCARD_ATI 0x8763 #define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 #define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 #define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 #define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 #endif #ifndef GL_EXT_vertex_shader #define GL_VERTEX_SHADER_EXT 0x8780 #define GL_VERTEX_SHADER_BINDING_EXT 0x8781 #define GL_OP_INDEX_EXT 0x8782 #define GL_OP_NEGATE_EXT 0x8783 #define GL_OP_DOT3_EXT 0x8784 #define GL_OP_DOT4_EXT 0x8785 #define GL_OP_MUL_EXT 0x8786 #define GL_OP_ADD_EXT 0x8787 #define GL_OP_MADD_EXT 0x8788 #define GL_OP_FRAC_EXT 0x8789 #define GL_OP_MAX_EXT 0x878A #define GL_OP_MIN_EXT 0x878B #define GL_OP_SET_GE_EXT 0x878C #define GL_OP_SET_LT_EXT 0x878D #define GL_OP_CLAMP_EXT 0x878E #define GL_OP_FLOOR_EXT 0x878F #define GL_OP_ROUND_EXT 0x8790 #define GL_OP_EXP_BASE_2_EXT 0x8791 #define GL_OP_LOG_BASE_2_EXT 0x8792 #define GL_OP_POWER_EXT 0x8793 #define GL_OP_RECIP_EXT 0x8794 #define GL_OP_RECIP_SQRT_EXT 0x8795 #define GL_OP_SUB_EXT 0x8796 #define GL_OP_CROSS_PRODUCT_EXT 0x8797 #define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 #define GL_OP_MOV_EXT 0x8799 #define GL_OUTPUT_VERTEX_EXT 0x879A #define GL_OUTPUT_COLOR0_EXT 0x879B #define GL_OUTPUT_COLOR1_EXT 0x879C #define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D #define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E #define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F #define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 #define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 #define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 #define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 #define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 #define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 #define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 #define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 #define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 #define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 #define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA #define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB #define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC #define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD #define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE #define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF #define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 #define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 #define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 #define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 #define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 #define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 #define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 #define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 #define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 #define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 #define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA #define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB #define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC #define GL_OUTPUT_FOG_EXT 0x87BD #define GL_SCALAR_EXT 0x87BE #define GL_VECTOR_EXT 0x87BF #define GL_MATRIX_EXT 0x87C0 #define GL_VARIANT_EXT 0x87C1 #define GL_INVARIANT_EXT 0x87C2 #define GL_LOCAL_CONSTANT_EXT 0x87C3 #define GL_LOCAL_EXT 0x87C4 #define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 #define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 #define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 #define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 #define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA #define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE #define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF #define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 #define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 #define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 #define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 #define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 #define GL_X_EXT 0x87D5 #define GL_Y_EXT 0x87D6 #define GL_Z_EXT 0x87D7 #define GL_W_EXT 0x87D8 #define GL_NEGATIVE_X_EXT 0x87D9 #define GL_NEGATIVE_Y_EXT 0x87DA #define GL_NEGATIVE_Z_EXT 0x87DB #define GL_NEGATIVE_W_EXT 0x87DC #define GL_ZERO_EXT 0x87DD #define GL_ONE_EXT 0x87DE #define GL_NEGATIVE_ONE_EXT 0x87DF #define GL_NORMALIZED_RANGE_EXT 0x87E0 #define GL_FULL_RANGE_EXT 0x87E1 #define GL_CURRENT_VERTEX_EXT 0x87E2 #define GL_MVP_MATRIX_EXT 0x87E3 #define GL_VARIANT_VALUE_EXT 0x87E4 #define GL_VARIANT_DATATYPE_EXT 0x87E5 #define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 #define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 #define GL_VARIANT_ARRAY_EXT 0x87E8 #define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 #define GL_INVARIANT_VALUE_EXT 0x87EA #define GL_INVARIANT_DATATYPE_EXT 0x87EB #define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC #define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED #endif #ifndef GL_ATI_vertex_streams #define GL_MAX_VERTEX_STREAMS_ATI 0x876B #define GL_VERTEX_STREAM0_ATI 0x876C #define GL_VERTEX_STREAM1_ATI 0x876D #define GL_VERTEX_STREAM2_ATI 0x876E #define GL_VERTEX_STREAM3_ATI 0x876F #define GL_VERTEX_STREAM4_ATI 0x8770 #define GL_VERTEX_STREAM5_ATI 0x8771 #define GL_VERTEX_STREAM6_ATI 0x8772 #define GL_VERTEX_STREAM7_ATI 0x8773 #define GL_VERTEX_SOURCE_ATI 0x8774 #endif #ifndef GL_ATI_element_array #define GL_ELEMENT_ARRAY_ATI 0x8768 #define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 #define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A #endif #ifndef GL_SUN_mesh_array #define GL_QUAD_MESH_SUN 0x8614 #define GL_TRIANGLE_MESH_SUN 0x8615 #endif #ifndef GL_SUN_slice_accum #define GL_SLICE_ACCUM_SUN 0x85CC #endif #ifndef GL_NV_multisample_filter_hint #define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 #endif #ifndef GL_NV_depth_clamp #define GL_DEPTH_CLAMP_NV 0x864F #endif #ifndef GL_NV_occlusion_query #define GL_PIXEL_COUNTER_BITS_NV 0x8864 #define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 #define GL_PIXEL_COUNT_NV 0x8866 #define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 #endif #ifndef GL_NV_point_sprite #define GL_POINT_SPRITE_NV 0x8861 #define GL_COORD_REPLACE_NV 0x8862 #define GL_POINT_SPRITE_R_MODE_NV 0x8863 #endif #ifndef GL_NV_texture_shader3 #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 #define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 #define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 #define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 #define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 #define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A #define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B #define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C #define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D #define GL_HILO8_NV 0x885E #define GL_SIGNED_HILO8_NV 0x885F #define GL_FORCE_BLUE_TO_ONE_NV 0x8860 #endif #ifndef GL_NV_vertex_program1_1 #endif #ifndef GL_EXT_shadow_funcs #endif #ifndef GL_EXT_stencil_two_side #define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 #define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 #endif #ifndef GL_ATI_text_fragment_shader #define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 #endif #ifndef GL_APPLE_client_storage #define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 #endif #ifndef GL_APPLE_element_array #define GL_ELEMENT_ARRAY_APPLE 0x8768 #define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769 #define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A #endif #ifndef GL_APPLE_fence #define GL_DRAW_PIXELS_APPLE 0x8A0A #define GL_FENCE_APPLE 0x8A0B #endif #ifndef GL_APPLE_vertex_array_object #define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 #endif #ifndef GL_APPLE_vertex_array_range #define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D #define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E #define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F #define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 #define GL_STORAGE_CACHED_APPLE 0x85BE #define GL_STORAGE_SHARED_APPLE 0x85BF #endif #ifndef GL_APPLE_ycbcr_422 #define GL_YCBCR_422_APPLE 0x85B9 #define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA #define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB #endif #ifndef GL_S3_s3tc #define GL_RGB_S3TC 0x83A0 #define GL_RGB4_S3TC 0x83A1 #define GL_RGBA_S3TC 0x83A2 #define GL_RGBA4_S3TC 0x83A3 #endif #ifndef GL_ATI_draw_buffers #define GL_MAX_DRAW_BUFFERS_ATI 0x8824 #define GL_DRAW_BUFFER0_ATI 0x8825 #define GL_DRAW_BUFFER1_ATI 0x8826 #define GL_DRAW_BUFFER2_ATI 0x8827 #define GL_DRAW_BUFFER3_ATI 0x8828 #define GL_DRAW_BUFFER4_ATI 0x8829 #define GL_DRAW_BUFFER5_ATI 0x882A #define GL_DRAW_BUFFER6_ATI 0x882B #define GL_DRAW_BUFFER7_ATI 0x882C #define GL_DRAW_BUFFER8_ATI 0x882D #define GL_DRAW_BUFFER9_ATI 0x882E #define GL_DRAW_BUFFER10_ATI 0x882F #define GL_DRAW_BUFFER11_ATI 0x8830 #define GL_DRAW_BUFFER12_ATI 0x8831 #define GL_DRAW_BUFFER13_ATI 0x8832 #define GL_DRAW_BUFFER14_ATI 0x8833 #define GL_DRAW_BUFFER15_ATI 0x8834 #endif #ifndef GL_ATI_pixel_format_float #define GL_TYPE_RGBA_FLOAT_ATI 0x8820 #define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 #endif #ifndef GL_ATI_texture_env_combine3 #define GL_MODULATE_ADD_ATI 0x8744 #define GL_MODULATE_SIGNED_ADD_ATI 0x8745 #define GL_MODULATE_SUBTRACT_ATI 0x8746 #endif #ifndef GL_ATI_texture_float #define GL_RGBA_FLOAT32_ATI 0x8814 #define GL_RGB_FLOAT32_ATI 0x8815 #define GL_ALPHA_FLOAT32_ATI 0x8816 #define GL_INTENSITY_FLOAT32_ATI 0x8817 #define GL_LUMINANCE_FLOAT32_ATI 0x8818 #define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 #define GL_RGBA_FLOAT16_ATI 0x881A #define GL_RGB_FLOAT16_ATI 0x881B #define GL_ALPHA_FLOAT16_ATI 0x881C #define GL_INTENSITY_FLOAT16_ATI 0x881D #define GL_LUMINANCE_FLOAT16_ATI 0x881E #define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F #endif #ifndef GL_NV_float_buffer #define GL_FLOAT_R_NV 0x8880 #define GL_FLOAT_RG_NV 0x8881 #define GL_FLOAT_RGB_NV 0x8882 #define GL_FLOAT_RGBA_NV 0x8883 #define GL_FLOAT_R16_NV 0x8884 #define GL_FLOAT_R32_NV 0x8885 #define GL_FLOAT_RG16_NV 0x8886 #define GL_FLOAT_RG32_NV 0x8887 #define GL_FLOAT_RGB16_NV 0x8888 #define GL_FLOAT_RGB32_NV 0x8889 #define GL_FLOAT_RGBA16_NV 0x888A #define GL_FLOAT_RGBA32_NV 0x888B #define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C #define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D #define GL_FLOAT_RGBA_MODE_NV 0x888E #endif #ifndef GL_NV_fragment_program #define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 #define GL_FRAGMENT_PROGRAM_NV 0x8870 #define GL_MAX_TEXTURE_COORDS_NV 0x8871 #define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 #define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 #define GL_PROGRAM_ERROR_STRING_NV 0x8874 #endif #ifndef GL_NV_half_float #define GL_HALF_FLOAT_NV 0x140B #endif #ifndef GL_NV_pixel_data_range #define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 #define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 #define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A #define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B #define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C #define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D #endif #ifndef GL_NV_primitive_restart #define GL_PRIMITIVE_RESTART_NV 0x8558 #define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 #endif #ifndef GL_NV_texture_expand_normal #define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F #endif #ifndef GL_NV_vertex_program2 #endif #ifndef GL_ATI_map_object_buffer #endif #ifndef GL_ATI_separate_stencil #define GL_STENCIL_BACK_FUNC_ATI 0x8800 #define GL_STENCIL_BACK_FAIL_ATI 0x8801 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 #define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 #endif #ifndef GL_ATI_vertex_attrib_array_object #endif #ifndef GL_OES_read_format #define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A #define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B #endif #ifndef GL_EXT_depth_bounds_test #define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 #define GL_DEPTH_BOUNDS_EXT 0x8891 #endif #ifndef GL_EXT_texture_mirror_clamp #define GL_MIRROR_CLAMP_EXT 0x8742 #define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 #define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 #endif #ifndef GL_EXT_blend_equation_separate #define GL_BLEND_EQUATION_RGB_EXT GL_BLEND_EQUATION #define GL_BLEND_EQUATION_ALPHA_EXT 0x883D #endif #ifndef GL_MESA_pack_invert #define GL_PACK_INVERT_MESA 0x8758 #endif #ifndef GL_MESA_ycbcr_texture #define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA #define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB #define GL_YCBCR_MESA 0x8757 #endif #ifndef GL_EXT_pixel_buffer_object #define GL_PIXEL_PACK_BUFFER_EXT 0x88EB #define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC #define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF #endif #ifndef GL_NV_fragment_program_option #endif #ifndef GL_NV_fragment_program2 #define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 #define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 #define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 #define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 #define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 #endif #ifndef GL_NV_vertex_program2_option /* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ /* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */ #endif #ifndef GL_NV_vertex_program3 /* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ #endif #ifndef GL_EXT_framebuffer_object #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 #define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 #define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 #define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 #define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC #define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD #define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF #define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 #define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 #define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 #define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 #define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 #define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 #define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 #define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 #define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 #define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 #define GL_COLOR_ATTACHMENT10_EXT 0x8CEA #define GL_COLOR_ATTACHMENT11_EXT 0x8CEB #define GL_COLOR_ATTACHMENT12_EXT 0x8CEC #define GL_COLOR_ATTACHMENT13_EXT 0x8CED #define GL_COLOR_ATTACHMENT14_EXT 0x8CEE #define GL_COLOR_ATTACHMENT15_EXT 0x8CEF #define GL_DEPTH_ATTACHMENT_EXT 0x8D00 #define GL_STENCIL_ATTACHMENT_EXT 0x8D20 #define GL_FRAMEBUFFER_EXT 0x8D40 #define GL_RENDERBUFFER_EXT 0x8D41 #define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 #define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 #define GL_STENCIL_INDEX1_EXT 0x8D46 #define GL_STENCIL_INDEX4_EXT 0x8D47 #define GL_STENCIL_INDEX8_EXT 0x8D48 #define GL_STENCIL_INDEX16_EXT 0x8D49 #define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 #define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 #define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 #define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 #define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 #define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 #endif #ifndef GL_GREMEDY_string_marker #endif #ifndef GL_EXT_packed_depth_stencil #define GL_DEPTH_STENCIL_EXT 0x84F9 #define GL_UNSIGNED_INT_24_8_EXT 0x84FA #define GL_DEPTH24_STENCIL8_EXT 0x88F0 #define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 #endif #ifndef GL_EXT_stencil_clear_tag #define GL_STENCIL_TAG_BITS_EXT 0x88F2 #define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 #endif #ifndef GL_EXT_texture_sRGB #define GL_SRGB_EXT 0x8C40 #define GL_SRGB8_EXT 0x8C41 #define GL_SRGB_ALPHA_EXT 0x8C42 #define GL_SRGB8_ALPHA8_EXT 0x8C43 #define GL_SLUMINANCE_ALPHA_EXT 0x8C44 #define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 #define GL_SLUMINANCE_EXT 0x8C46 #define GL_SLUMINANCE8_EXT 0x8C47 #define GL_COMPRESSED_SRGB_EXT 0x8C48 #define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 #define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A #define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B #define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F #endif #ifndef GL_EXT_framebuffer_blit #define GL_READ_FRAMEBUFFER_EXT 0x8CA8 #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 #define GL_READ_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT #define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CAA #endif #ifndef GL_EXT_framebuffer_multisample #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 #define GL_MAX_SAMPLES_EXT 0x8D57 #endif #ifndef GL_MESAX_texture_stack #define GL_TEXTURE_1D_STACK_MESAX 0x8759 #define GL_TEXTURE_2D_STACK_MESAX 0x875A #define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B #define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C #define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D #define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E #endif #ifndef GL_EXT_timer_query #define GL_TIME_ELAPSED_EXT 0x88BF #endif #ifndef GL_EXT_gpu_program_parameters #endif #ifndef GL_APPLE_flush_buffer_range #define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 #define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 #endif #ifndef GL_NV_gpu_program4 #define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 #define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 #define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 #define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 #define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 #define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 #define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 #define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 #endif #ifndef GL_NV_geometry_program4 #define GL_LINES_ADJACENCY_EXT 0x000A #define GL_LINE_STRIP_ADJACENCY_EXT 0x000B #define GL_TRIANGLES_ADJACENCY_EXT 0x000C #define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D #define GL_GEOMETRY_PROGRAM_NV 0x8C26 #define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 #define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 #define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA #define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB #define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 #define GL_PROGRAM_POINT_SIZE_EXT 0x8642 #endif #ifndef GL_EXT_geometry_shader4 #define GL_GEOMETRY_SHADER_EXT 0x8DD9 /* reuse GL_GEOMETRY_VERTICES_OUT_EXT */ /* reuse GL_GEOMETRY_INPUT_TYPE_EXT */ /* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */ /* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */ #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD #define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE #define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 /* reuse GL_LINES_ADJACENCY_EXT */ /* reuse GL_LINE_STRIP_ADJACENCY_EXT */ /* reuse GL_TRIANGLES_ADJACENCY_EXT */ /* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */ /* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */ /* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */ /* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */ /* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ /* reuse GL_PROGRAM_POINT_SIZE_EXT */ #endif #ifndef GL_NV_vertex_program4 #define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD #endif #ifndef GL_EXT_gpu_shader4 #define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 #define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 #define GL_SAMPLER_BUFFER_EXT 0x8DC2 #define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 #define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 #define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 #define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 #define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 #define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 #define GL_INT_SAMPLER_1D_EXT 0x8DC9 #define GL_INT_SAMPLER_2D_EXT 0x8DCA #define GL_INT_SAMPLER_3D_EXT 0x8DCB #define GL_INT_SAMPLER_CUBE_EXT 0x8DCC #define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD #define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE #define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF #define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 #define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 #define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 #define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 #define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 #define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 #endif #ifndef GL_EXT_draw_instanced #endif #ifndef GL_EXT_packed_float #define GL_R11F_G11F_B10F_EXT 0x8C3A #define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B #define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C #endif #ifndef GL_EXT_texture_array #define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 #define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 #define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A #define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B #define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C #define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D #define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF #define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E /* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ #endif #ifndef GL_EXT_texture_buffer_object #define GL_TEXTURE_BUFFER_EXT 0x8C2A #define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B #define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D #define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E #endif #ifndef GL_EXT_texture_compression_latc #define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 #define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 #define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 #define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 #endif #ifndef GL_EXT_texture_compression_rgtc #define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB #define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC #define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD #define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE #endif #ifndef GL_EXT_texture_shared_exponent #define GL_RGB9_E5_EXT 0x8C3D #define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E #define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F #endif #ifndef GL_NV_depth_buffer_float #define GL_DEPTH_COMPONENT32F_NV 0x8DAB #define GL_DEPTH32F_STENCIL8_NV 0x8DAC #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD #define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF #endif #ifndef GL_NV_fragment_program4 #endif #ifndef GL_NV_framebuffer_multisample_coverage #define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB #define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 #define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 #define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 #endif #ifndef GL_EXT_framebuffer_sRGB #define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 #define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA #endif #ifndef GL_NV_geometry_shader4 #endif #ifndef GL_NV_parameter_buffer_object #define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 #define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 #define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 #define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 #define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 #endif #ifndef GL_EXT_draw_buffers2 #endif #ifndef GL_NV_transform_feedback #define GL_BACK_PRIMARY_COLOR_NV 0x8C77 #define GL_BACK_SECONDARY_COLOR_NV 0x8C78 #define GL_TEXTURE_COORD_NV 0x8C79 #define GL_CLIP_DISTANCE_NV 0x8C7A #define GL_VERTEX_ID_NV 0x8C7B #define GL_PRIMITIVE_ID_NV 0x8C7C #define GL_GENERIC_ATTRIB_NV 0x8C7D #define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 #define GL_ACTIVE_VARYINGS_NV 0x8C81 #define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 #define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 #define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 #define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 #define GL_PRIMITIVES_GENERATED_NV 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 #define GL_RASTERIZER_DISCARD_NV 0x8C89 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B #define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C #define GL_SEPARATE_ATTRIBS_NV 0x8C8D #define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F #endif #ifndef GL_EXT_bindable_uniform #define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 #define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 #define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 #define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED #define GL_UNIFORM_BUFFER_EXT 0x8DEE #define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF #endif #ifndef GL_EXT_texture_integer #define GL_RGBA32UI_EXT 0x8D70 #define GL_RGB32UI_EXT 0x8D71 #define GL_ALPHA32UI_EXT 0x8D72 #define GL_INTENSITY32UI_EXT 0x8D73 #define GL_LUMINANCE32UI_EXT 0x8D74 #define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 #define GL_RGBA16UI_EXT 0x8D76 #define GL_RGB16UI_EXT 0x8D77 #define GL_ALPHA16UI_EXT 0x8D78 #define GL_INTENSITY16UI_EXT 0x8D79 #define GL_LUMINANCE16UI_EXT 0x8D7A #define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B #define GL_RGBA8UI_EXT 0x8D7C #define GL_RGB8UI_EXT 0x8D7D #define GL_ALPHA8UI_EXT 0x8D7E #define GL_INTENSITY8UI_EXT 0x8D7F #define GL_LUMINANCE8UI_EXT 0x8D80 #define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 #define GL_RGBA32I_EXT 0x8D82 #define GL_RGB32I_EXT 0x8D83 #define GL_ALPHA32I_EXT 0x8D84 #define GL_INTENSITY32I_EXT 0x8D85 #define GL_LUMINANCE32I_EXT 0x8D86 #define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 #define GL_RGBA16I_EXT 0x8D88 #define GL_RGB16I_EXT 0x8D89 #define GL_ALPHA16I_EXT 0x8D8A #define GL_INTENSITY16I_EXT 0x8D8B #define GL_LUMINANCE16I_EXT 0x8D8C #define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D #define GL_RGBA8I_EXT 0x8D8E #define GL_RGB8I_EXT 0x8D8F #define GL_ALPHA8I_EXT 0x8D90 #define GL_INTENSITY8I_EXT 0x8D91 #define GL_LUMINANCE8I_EXT 0x8D92 #define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 #define GL_RED_INTEGER_EXT 0x8D94 #define GL_GREEN_INTEGER_EXT 0x8D95 #define GL_BLUE_INTEGER_EXT 0x8D96 #define GL_ALPHA_INTEGER_EXT 0x8D97 #define GL_RGB_INTEGER_EXT 0x8D98 #define GL_RGBA_INTEGER_EXT 0x8D99 #define GL_BGR_INTEGER_EXT 0x8D9A #define GL_BGRA_INTEGER_EXT 0x8D9B #define GL_LUMINANCE_INTEGER_EXT 0x8D9C #define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D #define GL_RGBA_INTEGER_MODE_EXT 0x8D9E #endif #ifndef GL_GREMEDY_frame_terminator #endif /*************************************************************/ #include #ifndef GL_VERSION_2_0 /* GL type for program/shader text */ typedef char GLchar; /* native character */ #endif #ifndef GL_VERSION_1_5 /* GL types for handling large vertex buffer objects */ #ifndef __APPLE__ typedef ptrdiff_t GLintptr; typedef ptrdiff_t GLsizeiptr; #endif #endif #ifndef GL_ARB_vertex_buffer_object /* GL types for handling large vertex buffer objects */ typedef ptrdiff_t GLintptrARB; typedef ptrdiff_t GLsizeiptrARB; #endif #ifndef GL_ARB_shader_objects /* GL types for handling shader object handles and program/shader text */ typedef char GLcharARB; /* native character */ typedef unsigned int GLhandleARB; /* shader object handle */ #endif /* GL types for "half" precision (s10e5) float data in host memory */ #ifndef GL_ARB_half_float_pixel typedef unsigned short GLhalfARB; #endif #ifndef GL_NV_half_float typedef unsigned short GLhalfNV; #endif #ifndef GLEXT_64_TYPES_DEFINED /* This code block is duplicated in glext.h, so must be protected */ #define GLEXT_64_TYPES_DEFINED /* Define int32_t, int64_t, and uint64_t types for UST/MSC */ /* (as used in the GL_EXT_timer_query extension). */ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #include #elif defined(__sun__) #include #if defined(__STDC__) #if defined(__arch64__) typedef long int int64_t; typedef unsigned long int uint64_t; #else typedef long long int int64_t; typedef unsigned long long int uint64_t; #endif /* __arch64__ */ #endif /* __STDC__ */ #elif defined( __VMS ) #include #elif defined(__SCO__) || defined(__USLC__) #include #elif defined(__UNIXOS2__) || defined(__SOL64__) typedef long int int32_t; typedef long long int int64_t; typedef unsigned long long int uint64_t; #elif defined(_WIN32) && defined(__GNUC__) #include #elif defined(_WIN32) typedef __int32 int32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #else #include /* Fallback option */ #endif #endif #ifndef GL_EXT_timer_query typedef int64_t GLint64EXT; typedef uint64_t GLuint64EXT; #endif #ifndef GL_VERSION_1_2 #define GL_VERSION_1_2 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf); GLAPI void APIENTRY glBlendEquation (GLenum); GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei); GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *); GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei); GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat); GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint); GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei); GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *); GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean); GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean); GLAPI void APIENTRY glResetHistogram (GLenum); GLAPI void APIENTRY glResetMinmax (GLenum); GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); #endif #ifndef GL_VERSION_1_3 #define GL_VERSION_1_3 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glActiveTexture (GLenum); GLAPI void APIENTRY glClientActiveTexture (GLenum); GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble); GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat); GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint); GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort); GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *); GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble); GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat); GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint); GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort); GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *); GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint); GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort); GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *); GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort); GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *); GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *); GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *); GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *); GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *); GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean); GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); #endif #ifndef GL_VERSION_1_4 #define GL_VERSION_1_4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum); GLAPI void APIENTRY glFogCoordf (GLfloat); GLAPI void APIENTRY glFogCoordfv (const GLfloat *); GLAPI void APIENTRY glFogCoordd (GLdouble); GLAPI void APIENTRY glFogCoorddv (const GLdouble *); GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei); GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat); GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *); GLAPI void APIENTRY glPointParameteri (GLenum, GLint); GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *); GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte); GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *); GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *); GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *); GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint); GLAPI void APIENTRY glSecondaryColor3iv (const GLint *); GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort); GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *); GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte); GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *); GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint); GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *); GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort); GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *); GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble); GLAPI void APIENTRY glWindowPos2dv (const GLdouble *); GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat); GLAPI void APIENTRY glWindowPos2fv (const GLfloat *); GLAPI void APIENTRY glWindowPos2i (GLint, GLint); GLAPI void APIENTRY glWindowPos2iv (const GLint *); GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort); GLAPI void APIENTRY glWindowPos2sv (const GLshort *); GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glWindowPos3dv (const GLdouble *); GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glWindowPos3fv (const GLfloat *); GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint); GLAPI void APIENTRY glWindowPos3iv (const GLint *); GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort); GLAPI void APIENTRY glWindowPos3sv (const GLshort *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); #endif #ifndef GL_VERSION_1_5 #define GL_VERSION_1_5 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *); GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *); GLAPI GLboolean APIENTRY glIsQuery (GLuint); GLAPI void APIENTRY glBeginQuery (GLenum, GLuint); GLAPI void APIENTRY glEndQuery (GLenum); GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *); GLAPI void APIENTRY glBindBuffer (GLenum, GLuint); GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *); GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *); GLAPI GLboolean APIENTRY glIsBuffer (GLuint); GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum); GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *); GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *); GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum); GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum); GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum); GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *); GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum); GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint); GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint); GLAPI void APIENTRY glAttachShader (GLuint, GLuint); GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *); GLAPI void APIENTRY glCompileShader (GLuint); GLAPI GLuint APIENTRY glCreateProgram (void); GLAPI GLuint APIENTRY glCreateShader (GLenum); GLAPI void APIENTRY glDeleteProgram (GLuint); GLAPI void APIENTRY glDeleteShader (GLuint); GLAPI void APIENTRY glDetachShader (GLuint, GLuint); GLAPI void APIENTRY glDisableVertexAttribArray (GLuint); GLAPI void APIENTRY glEnableVertexAttribArray (GLuint); GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *); GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *); GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *); GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *); GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *); GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *); GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *); GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *); GLAPI GLboolean APIENTRY glIsProgram (GLuint); GLAPI GLboolean APIENTRY glIsShader (GLuint); GLAPI void APIENTRY glLinkProgram (GLuint); GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *); GLAPI void APIENTRY glUseProgram (GLuint); GLAPI void APIENTRY glUniform1f (GLint, GLfloat); GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat); GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glUniform1i (GLint, GLint); GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint); GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint); GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glValidateProgram (GLuint); GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble); GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat); GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort); GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *); GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *); GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *); GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *); GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *); GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *); GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); #endif #ifndef GL_VERSION_2_1 #define GL_VERSION_2_1 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); #endif #ifndef GL_ARB_multitexture #define GL_ARB_multitexture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glActiveTextureARB (GLenum); GLAPI void APIENTRY glClientActiveTextureARB (GLenum); GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); #endif #ifndef GL_ARB_transpose_matrix #define GL_ARB_transpose_matrix 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *); GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *); GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *); GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); #endif #ifndef GL_ARB_multisample #define GL_ARB_multisample 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); #endif #ifndef GL_ARB_texture_env_add #define GL_ARB_texture_env_add 1 #endif #ifndef GL_ARB_texture_cube_map #define GL_ARB_texture_cube_map 1 #endif #ifndef GL_ARB_texture_compression #define GL_ARB_texture_compression 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); #endif #ifndef GL_ARB_texture_border_clamp #define GL_ARB_texture_border_clamp 1 #endif #ifndef GL_ARB_point_parameters #define GL_ARB_point_parameters 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat); GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); #endif #ifndef GL_ARB_vertex_blend #define GL_ARB_vertex_blend 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *); GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *); GLAPI void APIENTRY glWeightivARB (GLint, const GLint *); GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *); GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *); GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *); GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *); GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *); GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glVertexBlendARB (GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); #endif #ifndef GL_ARB_matrix_palette #define GL_ARB_matrix_palette 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint); GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *); GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *); GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *); GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); #endif #ifndef GL_ARB_texture_env_combine #define GL_ARB_texture_env_combine 1 #endif #ifndef GL_ARB_texture_env_crossbar #define GL_ARB_texture_env_crossbar 1 #endif #ifndef GL_ARB_texture_env_dot3 #define GL_ARB_texture_env_dot3 1 #endif #ifndef GL_ARB_texture_mirrored_repeat #define GL_ARB_texture_mirrored_repeat 1 #endif #ifndef GL_ARB_depth_texture #define GL_ARB_depth_texture 1 #endif #ifndef GL_ARB_shadow #define GL_ARB_shadow 1 #endif #ifndef GL_ARB_shadow_ambient #define GL_ARB_shadow_ambient 1 #endif #ifndef GL_ARB_window_pos #define GL_ARB_window_pos 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble); GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *); GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat); GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *); GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint); GLAPI void APIENTRY glWindowPos2ivARB (const GLint *); GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort); GLAPI void APIENTRY glWindowPos2svARB (const GLshort *); GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *); GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *); GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint); GLAPI void APIENTRY glWindowPos3ivARB (const GLint *); GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort); GLAPI void APIENTRY glWindowPos3svARB (const GLshort *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); #endif #ifndef GL_ARB_vertex_program #define GL_ARB_vertex_program 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble); GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat); GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort); GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *); GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *); GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *); GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *); GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *); GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *); GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint); GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint); GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint); GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *); GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *); GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *); GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *); GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *); GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *); GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *); GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *); GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *); GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *); GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *); GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *); GLAPI GLboolean APIENTRY glIsProgramARB (GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); #endif #ifndef GL_ARB_fragment_program #define GL_ARB_fragment_program 1 /* All ARB_fragment_program entry points are shared with ARB_vertex_program. */ #endif #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint); GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *); GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *); GLAPI GLboolean APIENTRY glIsBufferARB (GLuint); GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum); GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum); GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); #endif #ifndef GL_ARB_occlusion_query #define GL_ARB_occlusion_query 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *); GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *); GLAPI GLboolean APIENTRY glIsQueryARB (GLuint); GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint); GLAPI void APIENTRY glEndQueryARB (GLenum); GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); #endif #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB); GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum); GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB); GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum); GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); GLAPI void APIENTRY glCompileShaderARB (GLhandleARB); GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB); GLAPI void APIENTRY glLinkProgramARB (GLhandleARB); GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB); GLAPI void APIENTRY glValidateProgramARB (GLhandleARB); GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat); GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat); GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glUniform1iARB (GLint, GLint); GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint); GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint); GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *); GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *); GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *); GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *); GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *); GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *); GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *); GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *); GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); #endif #ifndef GL_ARB_vertex_shader #define GL_ARB_vertex_shader 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *); GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); #endif #ifndef GL_ARB_fragment_shader #define GL_ARB_fragment_shader 1 #endif #ifndef GL_ARB_shading_language_100 #define GL_ARB_shading_language_100 1 #endif #ifndef GL_ARB_texture_non_power_of_two #define GL_ARB_texture_non_power_of_two 1 #endif #ifndef GL_ARB_point_sprite #define GL_ARB_point_sprite 1 #endif #ifndef GL_ARB_fragment_program_shadow #define GL_ARB_fragment_program_shadow 1 #endif #ifndef GL_ARB_draw_buffers #define GL_ARB_draw_buffers 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); #endif #ifndef GL_ARB_texture_rectangle #define GL_ARB_texture_rectangle 1 #endif #ifndef GL_ARB_color_buffer_float #define GL_ARB_color_buffer_float 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glClampColorARB (GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); #endif #ifndef GL_ARB_half_float_pixel #define GL_ARB_half_float_pixel 1 #endif #ifndef GL_ARB_texture_float #define GL_ARB_texture_float 1 #endif #ifndef GL_ARB_pixel_buffer_object #define GL_ARB_pixel_buffer_object 1 #endif #ifndef GL_EXT_abgr #define GL_EXT_abgr 1 #endif #ifndef GL_EXT_blend_color #define GL_EXT_blend_color 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); #endif #ifndef GL_EXT_polygon_offset #define GL_EXT_polygon_offset 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); #endif #ifndef GL_EXT_texture #define GL_EXT_texture 1 #endif #ifndef GL_EXT_texture3D #define GL_EXT_texture3D 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); #endif #ifndef GL_SGIS_texture_filter4 #define GL_SGIS_texture_filter4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); #endif #ifndef GL_EXT_subtexture #define GL_EXT_subtexture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); #endif #ifndef GL_EXT_copy_texture #define GL_EXT_copy_texture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei); GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); #endif #ifndef GL_EXT_histogram #define GL_EXT_histogram 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *); GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean); GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean); GLAPI void APIENTRY glResetHistogramEXT (GLenum); GLAPI void APIENTRY glResetMinmaxEXT (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); #endif #ifndef GL_EXT_convolution #define GL_EXT_convolution 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat); GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint); GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei); GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); #endif #ifndef GL_SGI_color_matrix #define GL_SGI_color_matrix 1 #endif #ifndef GL_SGI_color_table #define GL_SGI_color_table 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei); GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); #endif #ifndef GL_SGIX_pixel_texture #define GL_SGIX_pixel_texture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPixelTexGenSGIX (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); #endif #ifndef GL_SGIS_pixel_texture #define GL_SGIS_pixel_texture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint); GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *); GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat); GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *); GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *); GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); #endif #ifndef GL_SGIS_texture4D #define GL_SGIS_texture4D 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); #endif #ifndef GL_SGI_texture_color_table #define GL_SGI_texture_color_table 1 #endif #ifndef GL_EXT_cmyka #define GL_EXT_cmyka 1 #endif #ifndef GL_EXT_texture_object #define GL_EXT_texture_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *); GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint); GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *); GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *); GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint); GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *); #endif /* GL_GLEXT_PROTOTYPES */ typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); #endif #ifndef GL_SGIS_detail_texture #define GL_SGIS_detail_texture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *); GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); #endif #ifndef GL_SGIS_sharpen_texture #define GL_SGIS_sharpen_texture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *); GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); #endif #ifndef GL_EXT_packed_pixels #define GL_EXT_packed_pixels 1 #endif #ifndef GL_SGIS_texture_lod #define GL_SGIS_texture_lod 1 #endif #ifndef GL_SGIS_multisample #define GL_SGIS_multisample 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean); GLAPI void APIENTRY glSamplePatternSGIS (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); #endif #ifndef GL_EXT_rescale_normal #define GL_EXT_rescale_normal 1 #endif #ifndef GL_EXT_vertex_array #define GL_EXT_vertex_array 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glArrayElementEXT (GLint); GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei); GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *); GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *); GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); #endif #ifndef GL_EXT_misc_attribute #define GL_EXT_misc_attribute 1 #endif #ifndef GL_SGIS_generate_mipmap #define GL_SGIS_generate_mipmap 1 #endif #ifndef GL_SGIX_clipmap #define GL_SGIX_clipmap 1 #endif #ifndef GL_SGIX_shadow #define GL_SGIX_shadow 1 #endif #ifndef GL_SGIS_texture_edge_clamp #define GL_SGIS_texture_edge_clamp 1 #endif #ifndef GL_SGIS_texture_border_clamp #define GL_SGIS_texture_border_clamp 1 #endif #ifndef GL_EXT_blend_minmax #define GL_EXT_blend_minmax 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendEquationEXT (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); #endif #ifndef GL_EXT_blend_subtract #define GL_EXT_blend_subtract 1 #endif #ifndef GL_EXT_blend_logic_op #define GL_EXT_blend_logic_op 1 #endif #ifndef GL_SGIX_interlace #define GL_SGIX_interlace 1 #endif #ifndef GL_SGIX_pixel_tiles #define GL_SGIX_pixel_tiles 1 #endif #ifndef GL_SGIX_texture_select #define GL_SGIX_texture_select 1 #endif #ifndef GL_SGIX_sprite #define GL_SGIX_sprite 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat); GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *); GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint); GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); #endif #ifndef GL_SGIX_texture_multi_buffer #define GL_SGIX_texture_multi_buffer 1 #endif #ifndef GL_EXT_point_parameters #define GL_EXT_point_parameters 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat); GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); #endif #ifndef GL_SGIS_point_parameters #define GL_SGIS_point_parameters 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat); GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); #endif #ifndef GL_SGIX_instruments #define GL_SGIX_instruments 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *); GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *); GLAPI void APIENTRY glReadInstrumentsSGIX (GLint); GLAPI void APIENTRY glStartInstrumentsSGIX (void); GLAPI void APIENTRY glStopInstrumentsSGIX (GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); #endif #ifndef GL_SGIX_texture_scale_bias #define GL_SGIX_texture_scale_bias 1 #endif #ifndef GL_SGIX_framezoom #define GL_SGIX_framezoom 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFrameZoomSGIX (GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); #endif #ifndef GL_SGIX_tag_sample_buffer #define GL_SGIX_tag_sample_buffer 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTagSampleBufferSGIX (void); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); #endif #ifndef GL_SGIX_polynomial_ffd #define GL_SGIX_polynomial_ffd 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); GLAPI void APIENTRY glDeformSGIX (GLbitfield); GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); #endif #ifndef GL_SGIX_reference_plane #define GL_SGIX_reference_plane 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); #endif #ifndef GL_SGIX_flush_raster #define GL_SGIX_flush_raster 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFlushRasterSGIX (void); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); #endif #ifndef GL_SGIX_depth_texture #define GL_SGIX_depth_texture 1 #endif #ifndef GL_SGIS_fog_function #define GL_SGIS_fog_function 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *); GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); #endif #ifndef GL_SGIX_fog_offset #define GL_SGIX_fog_offset 1 #endif #ifndef GL_HP_image_transform #define GL_HP_image_transform 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint); GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat); GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); #endif #ifndef GL_HP_convolution_border_modes #define GL_HP_convolution_border_modes 1 #endif #ifndef GL_SGIX_texture_add_env #define GL_SGIX_texture_add_env 1 #endif #ifndef GL_EXT_color_subtable #define GL_EXT_color_subtable 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); #endif #ifndef GL_PGI_vertex_hints #define GL_PGI_vertex_hints 1 #endif #ifndef GL_PGI_misc_hints #define GL_PGI_misc_hints 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glHintPGI (GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); #endif #ifndef GL_EXT_paletted_texture #define GL_EXT_paletted_texture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); #endif #ifndef GL_EXT_clip_volume_hint #define GL_EXT_clip_volume_hint 1 #endif #ifndef GL_SGIX_list_priority #define GL_SGIX_list_priority 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *); GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat); GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *); GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint); GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); #endif #ifndef GL_SGIX_ir_instrument1 #define GL_SGIX_ir_instrument1 1 #endif #ifndef GL_SGIX_calligraphic_fragment #define GL_SGIX_calligraphic_fragment 1 #endif #ifndef GL_SGIX_texture_lod_bias #define GL_SGIX_texture_lod_bias 1 #endif #ifndef GL_SGIX_shadow_ambient #define GL_SGIX_shadow_ambient 1 #endif #ifndef GL_EXT_index_texture #define GL_EXT_index_texture 1 #endif #ifndef GL_EXT_index_material #define GL_EXT_index_material 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); #endif #ifndef GL_EXT_index_func #define GL_EXT_index_func 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); #endif #ifndef GL_EXT_index_array_formats #define GL_EXT_index_array_formats 1 #endif #ifndef GL_EXT_compiled_vertex_array #define GL_EXT_compiled_vertex_array 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei); GLAPI void APIENTRY glUnlockArraysEXT (void); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); #endif #ifndef GL_EXT_cull_vertex #define GL_EXT_cull_vertex 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *); GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); #endif #ifndef GL_SGIX_ycrcb #define GL_SGIX_ycrcb 1 #endif #ifndef GL_SGIX_fragment_lighting #define GL_SGIX_fragment_lighting 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum); GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat); GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint); GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat); GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *); GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint); GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *); GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat); GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint); GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *); GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); #endif #ifndef GL_IBM_rasterpos_clip #define GL_IBM_rasterpos_clip 1 #endif #ifndef GL_HP_texture_lighting #define GL_HP_texture_lighting 1 #endif #ifndef GL_EXT_draw_range_elements #define GL_EXT_draw_range_elements 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); #endif #ifndef GL_WIN_phong_shading #define GL_WIN_phong_shading 1 #endif #ifndef GL_WIN_specular_fog #define GL_WIN_specular_fog 1 #endif #ifndef GL_EXT_light_texture #define GL_EXT_light_texture 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glApplyTextureEXT (GLenum); GLAPI void APIENTRY glTextureLightEXT (GLenum); GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); #endif #ifndef GL_SGIX_blend_alpha_minmax #define GL_SGIX_blend_alpha_minmax 1 #endif #ifndef GL_EXT_bgra #define GL_EXT_bgra 1 #endif #ifndef GL_SGIX_async #define GL_SGIX_async 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint); GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *); GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *); GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei); GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei); GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); #endif #ifndef GL_SGIX_async_pixel #define GL_SGIX_async_pixel 1 #endif #ifndef GL_SGIX_async_histogram #define GL_SGIX_async_histogram 1 #endif #ifndef GL_INTEL_parallel_arrays #define GL_INTEL_parallel_arrays 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *); GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *); GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *); GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer); typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); #endif #ifndef GL_HP_occlusion_test #define GL_HP_occlusion_test 1 #endif #ifndef GL_EXT_pixel_transform #define GL_EXT_pixel_transform 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint); GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat); GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); #endif #ifndef GL_EXT_pixel_transform_color_table #define GL_EXT_pixel_transform_color_table 1 #endif #ifndef GL_EXT_shared_texture_palette #define GL_EXT_shared_texture_palette 1 #endif #ifndef GL_EXT_separate_specular_color #define GL_EXT_separate_specular_color 1 #endif #ifndef GL_EXT_secondary_color #define GL_EXT_secondary_color 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *); GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *); GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *); GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint); GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *); GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort); GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *); GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *); GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *); GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort); GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *); GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); #endif #ifndef GL_EXT_texture_perturb_normal #define GL_EXT_texture_perturb_normal 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTextureNormalEXT (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); #endif #ifndef GL_EXT_multi_draw_arrays #define GL_EXT_multi_draw_arrays 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); #endif #ifndef GL_EXT_fog_coord #define GL_EXT_fog_coord 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFogCoordfEXT (GLfloat); GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *); GLAPI void APIENTRY glFogCoorddEXT (GLdouble); GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *); GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); #endif #ifndef GL_REND_screen_coordinates #define GL_REND_screen_coordinates 1 #endif #ifndef GL_EXT_coordinate_frame #define GL_EXT_coordinate_frame 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte); GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *); GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *); GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *); GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint); GLAPI void APIENTRY glTangent3ivEXT (const GLint *); GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort); GLAPI void APIENTRY glTangent3svEXT (const GLshort *); GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte); GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *); GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *); GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *); GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint); GLAPI void APIENTRY glBinormal3ivEXT (const GLint *); GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort); GLAPI void APIENTRY glBinormal3svEXT (const GLshort *); GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); #endif #ifndef GL_EXT_texture_env_combine #define GL_EXT_texture_env_combine 1 #endif #ifndef GL_APPLE_specular_vector #define GL_APPLE_specular_vector 1 #endif #ifndef GL_APPLE_transform_hint #define GL_APPLE_transform_hint 1 #endif #ifndef GL_SGIX_fog_scale #define GL_SGIX_fog_scale 1 #endif #ifndef GL_SUNX_constant_data #define GL_SUNX_constant_data 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFinishTextureSUNX (void); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); #endif #ifndef GL_SUN_global_alpha #define GL_SUN_global_alpha 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte); GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort); GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint); GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat); GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble); GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte); GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort); GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); #endif #ifndef GL_SUN_triangle_list #define GL_SUN_triangle_list 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint); GLAPI void APIENTRY glReplacementCodeusSUN (GLushort); GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte); GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *); GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *); GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *); GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer); #endif #ifndef GL_SUN_vertex #define GL_SUN_vertex 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *); GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *); GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *); GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *); GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *); GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *); GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *); GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); #endif #ifndef GL_EXT_blend_func_separate #define GL_EXT_blend_func_separate 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); #endif #ifndef GL_INGR_blend_func_separate #define GL_INGR_blend_func_separate 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); #endif #ifndef GL_INGR_color_clamp #define GL_INGR_color_clamp 1 #endif #ifndef GL_INGR_interlace_read #define GL_INGR_interlace_read 1 #endif #ifndef GL_EXT_stencil_wrap #define GL_EXT_stencil_wrap 1 #endif #ifndef GL_EXT_422_pixels #define GL_EXT_422_pixels 1 #endif #ifndef GL_NV_texgen_reflection #define GL_NV_texgen_reflection 1 #endif #ifndef GL_SUN_convolution_border_modes #define GL_SUN_convolution_border_modes 1 #endif #ifndef GL_EXT_texture_env_add #define GL_EXT_texture_env_add 1 #endif #ifndef GL_EXT_texture_lod_bias #define GL_EXT_texture_lod_bias 1 #endif #ifndef GL_EXT_texture_filter_anisotropic #define GL_EXT_texture_filter_anisotropic 1 #endif #ifndef GL_EXT_vertex_weighting #define GL_EXT_vertex_weighting 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexWeightfEXT (GLfloat); GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *); GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); #endif #ifndef GL_NV_light_max_exponent #define GL_NV_light_max_exponent 1 #endif #ifndef GL_NV_vertex_array_range #define GL_NV_vertex_array_range 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); #endif #ifndef GL_NV_register_combiners #define GL_NV_register_combiners 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *); GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat); GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *); GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint); GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum); GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); #endif #ifndef GL_NV_fog_distance #define GL_NV_fog_distance 1 #endif #ifndef GL_NV_texgen_emboss #define GL_NV_texgen_emboss 1 #endif #ifndef GL_NV_blend_square #define GL_NV_blend_square 1 #endif #ifndef GL_NV_texture_env_combine4 #define GL_NV_texture_env_combine4 1 #endif #ifndef GL_MESA_resize_buffers #define GL_MESA_resize_buffers 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glResizeBuffersMESA (void); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); #endif #ifndef GL_MESA_window_pos #define GL_MESA_window_pos 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble); GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *); GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat); GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *); GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint); GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *); GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort); GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *); GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *); GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *); GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint); GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *); GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort); GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *); GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *); GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *); GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint); GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *); GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort); GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); #endif #ifndef GL_IBM_cull_vertex #define GL_IBM_cull_vertex 1 #endif #ifndef GL_IBM_multimode_draw_arrays #define GL_IBM_multimode_draw_arrays 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint); GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); #endif #ifndef GL_IBM_vertex_array_lists #define GL_IBM_vertex_array_lists 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint); GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride); typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); #endif #ifndef GL_SGIX_subsample #define GL_SGIX_subsample 1 #endif #ifndef GL_SGIX_ycrcba #define GL_SGIX_ycrcba 1 #endif #ifndef GL_SGIX_ycrcb_subsample #define GL_SGIX_ycrcb_subsample 1 #endif #ifndef GL_SGIX_depth_pass_instrument #define GL_SGIX_depth_pass_instrument 1 #endif #ifndef GL_3DFX_texture_compression_FXT1 #define GL_3DFX_texture_compression_FXT1 1 #endif #ifndef GL_3DFX_multisample #define GL_3DFX_multisample 1 #endif #ifndef GL_3DFX_tbuffer #define GL_3DFX_tbuffer 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTbufferMask3DFX (GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); #endif #ifndef GL_EXT_multisample #define GL_EXT_multisample 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean); GLAPI void APIENTRY glSamplePatternEXT (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); #endif #ifndef GL_SGIX_vertex_preclip #define GL_SGIX_vertex_preclip 1 #endif #ifndef GL_SGIX_convolution_accuracy #define GL_SGIX_convolution_accuracy 1 #endif #ifndef GL_SGIX_resample #define GL_SGIX_resample 1 #endif #ifndef GL_SGIS_point_line_texgen #define GL_SGIS_point_line_texgen 1 #endif #ifndef GL_SGIS_texture_color_mask #define GL_SGIS_texture_color_mask 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); #endif #ifndef GL_SGIX_igloo_interface #define GL_SGIX_igloo_interface 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); #endif #ifndef GL_EXT_texture_env_dot3 #define GL_EXT_texture_env_dot3 1 #endif #ifndef GL_ATI_texture_mirror_once #define GL_ATI_texture_mirror_once 1 #endif #ifndef GL_NV_fence #define GL_NV_fence 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *); GLAPI GLboolean APIENTRY glIsFenceNV (GLuint); GLAPI GLboolean APIENTRY glTestFenceNV (GLuint); GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); GLAPI void APIENTRY glFinishFenceNV (GLuint); GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); #endif #ifndef GL_NV_evaluators #define GL_NV_evaluators 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *); GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *); GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); #endif #ifndef GL_NV_packed_depth_stencil #define GL_NV_packed_depth_stencil 1 #endif #ifndef GL_NV_register_combiners2 #define GL_NV_register_combiners2 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *); GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); #endif #ifndef GL_NV_texture_compression_vtc #define GL_NV_texture_compression_vtc 1 #endif #ifndef GL_NV_texture_rectangle #define GL_NV_texture_rectangle 1 #endif #ifndef GL_NV_texture_shader #define GL_NV_texture_shader 1 #endif #ifndef GL_NV_texture_shader2 #define GL_NV_texture_shader2 1 #endif #ifndef GL_NV_vertex_array_range2 #define GL_NV_vertex_array_range2 1 #endif #ifndef GL_NV_vertex_program #define GL_NV_vertex_program 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *); GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint); GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *); GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *); GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *); GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *); GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *); GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *); GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *); GLAPI GLboolean APIENTRY glIsProgramNV (GLuint); GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *); GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *); GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *); GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *); GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *); GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *); GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum); GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble); GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat); GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort); GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *); GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *); GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *); GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *); GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *); GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *); GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *); GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *); GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *); GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *); GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *); GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *); GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *); GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *); GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *); GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *); #endif /* GL_GLEXT_PROTOTYPES */ typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); #endif #ifndef GL_SGIX_texture_coordinate_clamp #define GL_SGIX_texture_coordinate_clamp 1 #endif #ifndef GL_SGIX_scalebias_hint #define GL_SGIX_scalebias_hint 1 #endif #ifndef GL_OML_interlace #define GL_OML_interlace 1 #endif #ifndef GL_OML_subsample #define GL_OML_subsample 1 #endif #ifndef GL_OML_resample #define GL_OML_resample 1 #endif #ifndef GL_NV_copy_depth_to_color #define GL_NV_copy_depth_to_color 1 #endif #ifndef GL_ATI_envmap_bumpmap #define GL_ATI_envmap_bumpmap 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *); GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *); GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *); GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); #endif #ifndef GL_ATI_fragment_shader #define GL_ATI_fragment_shader 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint); GLAPI void APIENTRY glBindFragmentShaderATI (GLuint); GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint); GLAPI void APIENTRY glBeginFragmentShaderATI (void); GLAPI void APIENTRY glEndFragmentShaderATI (void); GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum); GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum); GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); #endif #ifndef GL_ATI_pn_triangles #define GL_ATI_pn_triangles 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint); GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); #endif #ifndef GL_ATI_vertex_array_object #define GL_ATI_vertex_array_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum); GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint); GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum); GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *); GLAPI void APIENTRY glFreeObjectBufferATI (GLuint); GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *); GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *); GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint); GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); #endif #ifndef GL_EXT_vertex_shader #define GL_EXT_vertex_shader 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBeginVertexShaderEXT (void); GLAPI void APIENTRY glEndVertexShaderEXT (void); GLAPI void APIENTRY glBindVertexShaderEXT (GLuint); GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint); GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint); GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint); GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint); GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint); GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint); GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint); GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *); GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *); GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *); GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *); GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *); GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *); GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *); GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *); GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *); GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *); GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *); GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint); GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint); GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum); GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum); GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum); GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum); GLAPI GLuint APIENTRY glBindParameterEXT (GLenum); GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum); GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *); GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *); GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *); GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *); GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr); typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data); typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); #endif #ifndef GL_ATI_vertex_streams #define GL_ATI_vertex_streams 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort); GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *); GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint); GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *); GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat); GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *); GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble); GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *); GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort); GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *); GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint); GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *); GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat); GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *); GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble); GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *); GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *); GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint); GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *); GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *); GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *); GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort); GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *); GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *); GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *); GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *); GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte); GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *); GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort); GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *); GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint); GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *); GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *); GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *); GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum); GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint); GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); #endif #ifndef GL_ATI_element_array #define GL_ATI_element_array 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *); GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei); GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); #endif #ifndef GL_SUN_mesh_array #define GL_SUN_mesh_array 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); #endif #ifndef GL_SUN_slice_accum #define GL_SUN_slice_accum 1 #endif #ifndef GL_NV_multisample_filter_hint #define GL_NV_multisample_filter_hint 1 #endif #ifndef GL_NV_depth_clamp #define GL_NV_depth_clamp 1 #endif #ifndef GL_NV_occlusion_query #define GL_NV_occlusion_query 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *); GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *); GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint); GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint); GLAPI void APIENTRY glEndOcclusionQueryNV (void); GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); #endif #ifndef GL_NV_point_sprite #define GL_NV_point_sprite 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint); GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); #endif #ifndef GL_NV_texture_shader3 #define GL_NV_texture_shader3 1 #endif #ifndef GL_NV_vertex_program1_1 #define GL_NV_vertex_program1_1 1 #endif #ifndef GL_EXT_shadow_funcs #define GL_EXT_shadow_funcs 1 #endif #ifndef GL_EXT_stencil_two_side #define GL_EXT_stencil_two_side 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); #endif #ifndef GL_ATI_text_fragment_shader #define GL_ATI_text_fragment_shader 1 #endif #ifndef GL_APPLE_client_storage #define GL_APPLE_client_storage 1 #endif #ifndef GL_APPLE_element_array #define GL_APPLE_element_array 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *); GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei); GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei); GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei); GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer); typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); #endif #ifndef GL_APPLE_fence #define GL_APPLE_fence 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *); GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *); GLAPI void APIENTRY glSetFenceAPPLE (GLuint); GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint); GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint); GLAPI void APIENTRY glFinishFenceAPPLE (GLuint); GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint); GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); #endif #ifndef GL_APPLE_vertex_array_object #define GL_APPLE_vertex_array_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint); GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *); GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *); GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); #endif #ifndef GL_APPLE_vertex_array_range #define GL_APPLE_vertex_array_range 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *); GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *); GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); #endif #ifndef GL_APPLE_ycbcr_422 #define GL_APPLE_ycbcr_422 1 #endif #ifndef GL_S3_s3tc #define GL_S3_s3tc 1 #endif #ifndef GL_ATI_draw_buffers #define GL_ATI_draw_buffers 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); #endif #ifndef GL_ATI_pixel_format_float #define GL_ATI_pixel_format_float 1 /* This is really a WGL extension, but defines some associated GL enums. * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string. */ #endif #ifndef GL_ATI_texture_env_combine3 #define GL_ATI_texture_env_combine3 1 #endif #ifndef GL_ATI_texture_float #define GL_ATI_texture_float 1 #endif #ifndef GL_NV_float_buffer #define GL_NV_float_buffer 1 #endif #ifndef GL_NV_fragment_program #define GL_NV_fragment_program 1 /* Some NV_fragment_program entry points are shared with ARB_vertex_program. */ #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat); GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble); GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *); GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *); GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *); GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); #endif #ifndef GL_NV_half_float #define GL_NV_half_float 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV); GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *); GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *); GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *); GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *); GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *); GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *); GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV); GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *); GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV); GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *); GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *); GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *); GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV); GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *); GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *); GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *); GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *); GLAPI void APIENTRY glFogCoordhNV (GLhalfNV); GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *); GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *); GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV); GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *); GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV); GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *); GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *); GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *); GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *); GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *); GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *); GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *); GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); #endif #ifndef GL_NV_pixel_data_range #define GL_NV_pixel_data_range 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *); GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer); typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); #endif #ifndef GL_NV_primitive_restart #define GL_NV_primitive_restart 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glPrimitiveRestartNV (void); GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); #endif #ifndef GL_NV_texture_expand_normal #define GL_NV_texture_expand_normal 1 #endif #ifndef GL_NV_vertex_program2 #define GL_NV_vertex_program2 1 #endif #ifndef GL_ATI_map_object_buffer #define GL_ATI_map_object_buffer 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint); GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); #endif #ifndef GL_ATI_separate_stencil #define GL_ATI_separate_stencil 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum); GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); #endif #ifndef GL_ATI_vertex_attrib_array_object #define GL_ATI_vertex_attrib_array_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint); GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *); GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); #endif #ifndef GL_OES_read_format #define GL_OES_read_format 1 #endif #ifndef GL_EXT_depth_bounds_test #define GL_EXT_depth_bounds_test 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); #endif #ifndef GL_EXT_texture_mirror_clamp #define GL_EXT_texture_mirror_clamp 1 #endif #ifndef GL_EXT_blend_equation_separate #define GL_EXT_blend_equation_separate 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); #endif #ifndef GL_MESA_pack_invert #define GL_MESA_pack_invert 1 #endif #ifndef GL_MESA_ycbcr_texture #define GL_MESA_ycbcr_texture 1 #endif #ifndef GL_EXT_pixel_buffer_object #define GL_EXT_pixel_buffer_object 1 #endif #ifndef GL_NV_fragment_program_option #define GL_NV_fragment_program_option 1 #endif #ifndef GL_NV_fragment_program2 #define GL_NV_fragment_program2 1 #endif #ifndef GL_NV_vertex_program2_option #define GL_NV_vertex_program2_option 1 #endif #ifndef GL_NV_vertex_program3 #define GL_NV_vertex_program3 1 #endif #ifndef GL_EXT_framebuffer_object #define GL_EXT_framebuffer_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint); GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint); GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *); GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *); GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei); GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *); GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint); GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint); GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *); GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *); GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum); GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint); GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint); GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint); GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint); GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *); GLAPI void APIENTRY glGenerateMipmapEXT (GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); #endif #ifndef GL_GREMEDY_string_marker #define GL_GREMEDY_string_marker 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string); #endif #ifndef GL_EXT_packed_depth_stencil #define GL_EXT_packed_depth_stencil 1 #endif #ifndef GL_EXT_stencil_clear_tag #define GL_EXT_stencil_clear_tag 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); #endif #ifndef GL_EXT_texture_sRGB #define GL_EXT_texture_sRGB 1 #endif #ifndef GL_EXT_framebuffer_blit #define GL_EXT_framebuffer_blit 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); #endif #ifndef GL_EXT_framebuffer_multisample #define GL_EXT_framebuffer_multisample 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); #endif #ifndef GL_MESAX_texture_stack #define GL_MESAX_texture_stack 1 #endif #ifndef GL_EXT_timer_query #define GL_EXT_timer_query 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *); GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); #endif #ifndef GL_EXT_gpu_program_parameters #define GL_EXT_gpu_program_parameters 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); #endif #ifndef GL_APPLE_flush_buffer_range #define GL_APPLE_flush_buffer_range 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint); GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); #endif #ifndef GL_NV_gpu_program4 #define GL_NV_gpu_program4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *); GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *); GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *); GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *); GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *); GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *); GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *); GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); #endif #ifndef GL_NV_geometry_program4 #define GL_NV_geometry_program4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint); GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint); GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint); GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); #endif #ifndef GL_EXT_geometry_shader4 #define GL_EXT_geometry_shader4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); #endif #ifndef GL_NV_vertex_program4 #define GL_NV_vertex_program4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint); GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint); GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint); GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint); GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint); GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint); GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *); GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *); GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *); GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *); GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *); GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *); GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *); GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *); GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); #endif #ifndef GL_EXT_gpu_shader4 #define GL_EXT_gpu_shader4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *); GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *); GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *); GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint); GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint); GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint); GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *); GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *); GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *); GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); #endif #ifndef GL_EXT_draw_instanced #define GL_EXT_draw_instanced 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei); GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); #endif #ifndef GL_EXT_packed_float #define GL_EXT_packed_float 1 #endif #ifndef GL_EXT_texture_array #define GL_EXT_texture_array 1 #endif #ifndef GL_EXT_texture_buffer_object #define GL_EXT_texture_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); #endif #ifndef GL_EXT_texture_compression_latc #define GL_EXT_texture_compression_latc 1 #endif #ifndef GL_EXT_texture_compression_rgtc #define GL_EXT_texture_compression_rgtc 1 #endif #ifndef GL_EXT_texture_shared_exponent #define GL_EXT_texture_shared_exponent 1 #endif #ifndef GL_NV_depth_buffer_float #define GL_NV_depth_buffer_float 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble); GLAPI void APIENTRY glClearDepthdNV (GLdouble); GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); #endif #ifndef GL_NV_fragment_program4 #define GL_NV_fragment_program4 1 #endif #ifndef GL_NV_framebuffer_multisample_coverage #define GL_NV_framebuffer_multisample_coverage 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); #endif #ifndef GL_EXT_framebuffer_sRGB #define GL_EXT_framebuffer_sRGB 1 #endif #ifndef GL_NV_geometry_shader4 #define GL_NV_geometry_shader4 1 #endif #ifndef GL_NV_parameter_buffer_object #define GL_NV_parameter_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *); GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *); GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); #endif #ifndef GL_EXT_draw_buffers2 #define GL_EXT_draw_buffers2 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *); GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *); GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint); GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint); GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); #endif #ifndef GL_NV_transform_feedback #define GL_NV_transform_feedback 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum); GLAPI void APIENTRY glEndTransformFeedbackNV (void); GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum); GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr); GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint); GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLint *, GLenum); GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *); GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *); GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); #endif #ifndef GL_EXT_bindable_uniform #define GL_EXT_bindable_uniform 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint); GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint); GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); #endif #ifndef GL_EXT_texture_integer #define GL_EXT_texture_integer 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *); GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *); GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *); GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *); GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint); GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); #endif #ifndef GL_GREMEDY_frame_terminator #define GL_GREMEDY_frame_terminator 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); #endif #ifdef __cplusplus } #endif #endif visual-5.12_release/include/renderable.hpp0000644000175000017500000001567211065525614015644 00000000000000#ifndef VPYTHON_RENDERABLE_HPP #define VPYTHON_RENDERABLE_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/rgba.hpp" #include "util/extent.hpp" #include "util/thread.hpp" #include "util/displaylist.hpp" #include "util/texture.hpp" #include "util/gl_extensions.hpp" #include #include namespace cvisual { using boost::shared_ptr; class renderable; const int N_LIGHT_TYPES = 1; /** A depth sorting criterion for STL-compatable sorting algorithms. This implementation only performs 4 adds, 6 multiplies, and one comparison. It could be made faster if the virtual function get_center() was somehow made non-virtual, but that isn't possible right now since some bodies have such a different notion of the "center" of the body compared to the other objects. */ class z_comparator { private: /** A unit vector along the visual depth axis.*/ vector forward; public: /** Create a new comparator based on the specified depth direction. * @param fore A unit vector along the sorting axis. */ z_comparator( const vector& fore) : forward( fore) {} /** Apply the sorting criteria. @return true if lhs is farther away than rhs. */ inline bool operator()( const shared_ptr lhs, const shared_ptr rhs) const; /** Apply the sorting criteria. This version is faster than the shared_ptr version above, by an amount that varies from OS to OS. @return true if lhs is farther away than rhs. */ inline bool operator()( const renderable* lhs, const renderable* rhs) const; /** Apply the sorting criteria. This version is used by view::scen_objects to sort them in depth-order as they are added to it. @return true if lhs is farther away than rhs. */ inline bool operator()( const vector& lhs, const vector& rhs) const; }; /** This primarily serves as a means of communicating information down to the various primitives that may or may not need it from the render_surface. Most of the members are simply references to the real values in the owning render_surface. */ struct view { /// The position of the camera in world space. vector camera; /// The direction the camera is pointing - a unit vector. vector forward; /// The center of the scene in world space. vector center; /// The true up direction of the scene in world space. vector up; /// The width of the viewport in pixels. int view_width; /// The height of the viewport in pixels. int view_height; /// True if the forward vector changed since the last rending operation. bool forward_changed; /// The Global Scaling Factor double gcf; /// The vector version of the Global Scaling Factor, for scene.uniform=0 vector gcfvec; /// True if gcf changed since the last render cycle. bool gcf_changed; /// The user adjustment to the level-of-detail. int lod_adjust; /// True in anaglyph stereo rendering modes. bool anaglyph; /// True in coloranaglyph stereo rendering modes. bool coloranaglyph; double tan_hfov_x; ///< The tangent of half the horzontal field of view. double tan_hfov_y; ///< The tangent of half the vertical field of view. gl_extensions& glext; tmatrix camera_world; int light_count[N_LIGHT_TYPES]; std::vector light_pos, light_color; // in eye coordinates! typedef std::multimap screen_objects_t; mutable screen_objects_t screen_objects; bool enable_shaders; view( vector n_forward, vector n_center, int n_width, int n_height, bool n_forward_changed, double n_gcf, vector n_gcfvec, bool n_gcf_changed, gl_extensions& glext); /** Called on a copy of a parent view to make this a view in a child * frame. pft is a transform from the parent to the frame coordinate * space. */ void apply_frame_transform( const tmatrix& pft); // Compute the apparent diameter, in pixels, of a circle that is parallel // to the screen, with a center at pos, and some radius. If pos is behind // the camera, it will return negative. double pixel_coverage( const vector& pos, double radius) const; }; /** Virtual base class for all renderable objects and composites. */ class renderable { public: /** The base color of this body. Ignored by the variable-color composites * (curve, faces, frame). */ rgb color; virtual ~renderable(); /** Applies materials and other general features and calls gl_render(). * For now, also calls refresh_cache(), but that might be moved back in * order to make that function compute center. */ virtual void outer_render(const view&); /** Called when rendering for mouse hit testing. Since the result is not * visible, subclasses should not perform texture mapping or blending, * and should use the lowest-quality level of detail that covers the * geometry. */ virtual void gl_pick_render( const view&); /** Report the total extent of the object. */ virtual void grow_extent( extent&); /** Report the approximate center of the object. This is used for depth * sorting of the transparent models. */ virtual vector get_center() const = 0; virtual void set_material( shared_ptr m ); virtual shared_ptr get_material(); virtual void get_material_matrix( const view&, tmatrix& out ) {}; // object coordinates -> material coordinates virtual bool translucent(); virtual void render_lights( view& ) {} virtual bool is_light() { return false; } virtual void get_children( std::vector< boost::shared_ptr >& all ) {} protected: renderable(); // Fully opaque is 1.0, fully transparent is 0.0: float opacity; shared_ptr mat; /** True if the object should be rendered on the screen. */ bool visible; /** Called by outer_render when drawing to the screen. The default * is to do nothing. */ virtual void gl_render(const view&); }; inline bool z_comparator::operator()( const shared_ptr lhs, const shared_ptr rhs) const { return forward.dot( lhs->get_center()) > forward.dot( rhs->get_center()); } inline bool z_comparator::operator()( const renderable* lhs, const renderable* rhs) const { return forward.dot( lhs->get_center()) > forward.dot( rhs->get_center()); } inline bool z_comparator::operator()( const vector& lhs, const vector& rhs) const { return forward.dot( lhs) > forward.dot( rhs); } /** A utility function that clamps a value to within a specified range. * @param lower The lower bound for the value. * @param value The value to be clamped. * @param upper The upper bound for the value. * @return value if it is between lower and upper, otherwise one of the bounds. */ template T clamp( T const& lower, T const& value, T const& upper) { if (lower > value) return lower; if (upper < value) return upper; return value; } } // !namespace cvisual #endif // !defined VPYTHON_RENDERABLE_HPP visual-5.12_release/include/material.hpp0000644000175000017500000000157611050670044015325 00000000000000#ifndef VPYTHON_MATERIAL_HPP #define VPYTHON_MATERIAL_HPP #pragma once #include "util/texture.hpp" #include "util/shader_program.hpp" namespace cvisual { class material { public: material(); void set_textures( std::vector< boost::shared_ptr< texture > > ); std::vector< boost::shared_ptr< texture > > get_textures(); void set_shader( const std::string& ); std::string get_shader(); void set_translucent( bool ); bool get_translucent(); shader_program* get_shader_program() { return shader.get(); } private: friend class apply_material; std::vector< boost::shared_ptr< texture > > textures; boost::scoped_ptr< shader_program > shader; bool translucent; }; class apply_material { public: apply_material( const view& v, material* m, tmatrix& material_matrix ); ~apply_material(); private: const view& v; use_shader_program sp; }; } // namespace cvisual #endif visual-5.12_release/include/light.hpp0000644000175000017500000000314111064627315014634 00000000000000#ifndef VPYTHON_LIGHT_HPP #define VPYTHON_LIGHT_HPP #pragma once // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/tmatrix.hpp" #include "util/rgba.hpp" #include "renderable.hpp" namespace cvisual { class light : public renderable { protected: rgb color; virtual vertex get_vertex(double gcf) = 0; public: virtual rgb get_color() { return color; } virtual void set_color( const rgb& r ) { color = r; } // renderable protocol virtual void outer_render( const view& ) {} virtual vector get_center() const { return vector(); } virtual void set_material( shared_ptr ) { throw std::invalid_argument("light object does not have a material."); } virtual shared_ptr get_material() { throw std::invalid_argument("light object does not have a material."); } virtual bool is_light() { return true; } virtual void render_lights( view& ); }; class local_light : public light { protected: vector position; virtual vertex get_vertex(double gcf) { return vertex( position*gcf, 1.0 ); } public: virtual const vector& get_pos() { return position; } virtual void set_pos(const vector& v) { position = v; } }; class distant_light : public light { protected: vector direction; virtual vertex get_vertex(double gcf) { return vertex( direction, 0.0 ); } public: virtual const vector& get_direction() { return direction; } virtual void set_direction(const vector& v) { direction = v.norm(); } }; } // !namespace cvisual #endif visual-5.12_release/include/pyramid.hpp0000644000175000017500000000160611050446342015170 00000000000000#ifndef VPYTHON_PYRAMID_HPP #define VPYTHON_PYRAMID_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "rectangular.hpp" #include "util/displaylist.hpp" #include namespace cvisual { using boost::scoped_ptr; class pyramid : public rectangular { private: static displaylist model; static void init_model(); friend class arrow; protected: virtual void gl_pick_render( const view&); virtual void gl_render( const view&); virtual void grow_extent( extent&); virtual vector get_center() const; virtual void get_material_matrix( const view&, tmatrix& out ); PRIMITIVE_TYPEINFO_DECL; }; } // !namespace cvisual #endif // !defined VPYTHON_PYRAMID_HPP visual-5.12_release/include/primitive.hpp0000644000175000017500000000454111050576531015540 00000000000000#ifndef VPYTHON_SIMPLE_DISPLAYOBJECT_HPP #define VPYTHON_SIMPLE_DISPLAYOBJECT_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "util/tmatrix.hpp" #include namespace cvisual { // All primitive subclasses should use this pair of macros to help with standard // error messages. This allows functions to use the exact name of a virtual class. #define PRIMITIVE_TYPEINFO_DECL virtual const std::type_info& get_typeid() const #define PRIMITIVE_TYPEINFO_IMPL(base) \ const std::type_info& \ base::get_typeid() const \ { return typeid(*this); } class primitive : public renderable { protected: // The position and orientation of the body in World space. shared_vector axis; shared_vector up; shared_vector pos; // Returns a tmatrix that performs reorientation of the object from model // orientation to world (and view) orientation. tmatrix model_world_transform( double world_scale = 0.0, const vector& object_scale = vector(1,1,1) ) const; // Generate a displayobject at the origin, with up pointing along +y and // an axis = vector(1, 0, 0). primitive(); primitive( const primitive& other); // See above for PRIMITIVE_TYPEINFO_DECL/IMPL. virtual const std::type_info& get_typeid() const; // Used when obtaining the center of the body. virtual vector get_center() const; public: virtual ~primitive(); // Manually overload this member since the default arguments are variables. void rotate( double angle, const vector& axis, const vector& origin); void set_pos( const vector& n_pos); shared_vector& get_pos(); void set_x( double x); double get_x(); void set_y( double y); double get_y(); void set_z( double z); double get_z(); void set_axis( const vector& n_axis); shared_vector& get_axis(); void set_up( const vector& n_up); shared_vector& get_up(); void set_color( const rgb& n_color); rgb get_color(); void set_red( float x); double get_red(); void set_green( float x); double get_green(); void set_blue( float x); double get_blue(); void set_opacity( float x); double get_opacity(); }; } // !namespace cvisual #endif // !defined VPYTHON_SIMPLE_DISPLAYOBJECT_HPP visual-5.12_release/include/.cvsignore0000644000175000017500000000001210154672721015006 00000000000000.sconsign visual-5.12_release/include/frame.hpp0000644000175000017500000000727511243332661014627 00000000000000#ifndef VPYTHON_FRAME_HPP #define VPYTHON_FRAME_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "util/tmatrix.hpp" #include #include #include namespace cvisual { using boost::indirect_iterator; /* Operations on frame objects include: get_center() : Use the average of all its children. update_z_sort() : Never called. Always re-sort this body's translucent children in gl_render(). gl_render() : Calls gl_render() on all its children. grow_extent() : Calls grow_extent() for each of its children, then transforms the vertexes of the bounding box and uses those as its bounds. gl_pick_render() : PushName() on to the Name Stack, and renders its children. When looking up names later, the render_core calls lookup_name() with a vector, which the frame uses to recursively look through frames to find the right object. oolie case: When the frame is scaled up to a superhuge universe and the child is very small, the frame_world_transform may overflow OpenGL. The problem lies in the scale variable. another oolie: A transparent object that intersects a frame containing other transparent object's will not be rendered in the right order. */ class frame : public renderable { private: shared_vector pos; shared_vector axis; shared_vector up; //shared_vector scale; // Disable frame.scale in Visual 4.0 /** Establishes the coordinate system into which this object's children are rendered. @param gcf: the global correction factor, propogated from gl_render(). */ vector world_zaxis() const; tmatrix frame_world_transform( const double gcf) const; tmatrix world_frame_transform() const; std::list > children; typedef indirect_iterator >::iterator> child_iterator; typedef indirect_iterator >::const_iterator> const_child_iterator; std::vector > trans_children; typedef indirect_iterator >::iterator> trans_child_iterator; typedef indirect_iterator >::const_iterator> const_trans_child_iterator; public: frame(); frame( const frame& other); virtual ~frame(); void rotate( double angle, const vector& axis, const vector& origin); void add_renderable( shared_ptr child); void remove_renderable( shared_ptr child); std::vector > get_objects(); void set_pos( const vector& n_pos); shared_vector& get_pos(); void set_x( double x); double get_x(); void set_y( double y); double get_y(); void set_z( double z); double get_z(); void set_axis( const vector& n_axis); shared_vector& get_axis(); void set_up( const vector& n_up); shared_vector& get_up(); vector frame_to_world(const vector& p) const; vector world_to_frame(const vector& p) const; // void set_scale( const vector& n_scale); // shared_vector& get_scale(); // Lookup the target that belongs to this name. shared_ptr lookup_name( const unsigned int* name_top, const unsigned int* name_end); virtual void get_children( std::vector< boost::shared_ptr >& all ); protected: virtual vector get_center() const; virtual void outer_render( const view&); virtual void gl_render( const view&); virtual void gl_pick_render( const view&); virtual void grow_extent( extent&); virtual void render_lights( view& ); }; } // !namespace cvisual #endif // !defined VPYTHON_FRAME_HPP visual-5.12_release/include/mac/0000777000175000017500000000000011243357451013641 500000000000000visual-5.12_release/include/mac/font_renderer.hpp0000644000175000017500000000134211030310453017103 00000000000000#ifndef VPYTHON_WIN32_FONT_RENDERER_HPP #define VPYTHON_WIN32_FONT_RENDERER_HPP #pragma once // See text.hpp for public interface #include "text.hpp" namespace cvisual { class font_renderer { public: // Create a font_renderer for the requested font. // Must support 'verdana' or 'sans-serif' // Should support 'times new roman' or 'serif', and 'courier new' or 'monospace' font_renderer( const std::wstring& description, int height ); // Returns true if the requested font was available. bool ok(); // Render text and call tx.set_image() void gl_render_to_texture( const struct view&, const std::wstring& text, layout_texture& tx ); ~font_renderer(); private: int fontID, height; }; } // namespace cvisual #endifvisual-5.12_release/include/mac/display.hpp0000644000175000017500000000504111107622505015725 00000000000000#ifndef VPYTHON_MAC_DISPLAY_HPP #define VPYTHON_MAC_DISPLAY_HPP #include #include #include "display_kernel.hpp" #include "util/atomic_queue.hpp" #include "mouseobject.hpp" #include // Apparently check is defined in Carbon.h, so we have to include after the boost include #include #include namespace cvisual { class display : public display_kernel { public: display(); virtual ~display(); // Called by the gui_main class below (or render_manager as its agent) void create(); void destroy(); void paint(); void swap() { gl_swap_buffers(); } // Tells the application where it can find its data. // Mac doesn't use this information. static void set_dataroot( const std::wstring& ) {}; // Implements key display_kernel virtual methods virtual void activate( bool active ); EXTENSION_FUNCTION getProcAddress( const char* name ); private: bool initWindow( std::string title, int x, int y, int width, int height ); void update_size(); void on_destroy(); // Functions to manipulate the OpenGL context void gl_begin(); void gl_end(); void gl_swap_buffers(); OSStatus vpWindowHandler (EventHandlerCallRef target, EventRef event); OSStatus vpMouseHandler (EventHandlerCallRef target, EventRef event); OSStatus vpKeyboardHandler (EventHandlerCallRef target, EventRef event); static OSStatus vpEventHandler (EventHandlerCallRef target, EventRef event, void * data); int getShiftKey(); int getAltKey(); int getCtrlKey(); private: // data static display* current; WindowRef window; AGLContext gl_context; bool user_close; // true if user closed the window int yadjust; // set to height of title bar when creating a window bool window_visible; UInt32 keyModState; }; /***************** gui_main implementation ********************/ class gui_main { private: // Components of the startup sequence. static void init_thread(void); gui_main(); //< This is the only nonstatic member function that doesn't run in the gui thread! void event_loop(); void poll(); static gui_main* self; int gui_thread; mutex init_lock; condition initialized; public: // Calls the given function in the GUI thread. static void call_in_gui_thread( const boost::function< void() >& f ); // This signal is invoked when the user closes the program (closes a display // with display.exit = True). // wrap_display_kernel() connects a signal handler that forces Python to // exit. static boost::signal on_shutdown; }; } // !namespace cvisual #endif /*VPYTHON_MAC_DISPLAY_HPP*/ visual-5.12_release/include/ellipsoid.hpp0000644000175000017500000000155311050446342015510 00000000000000#ifndef VPYTHON_ELLIPSOID_HPP #define VPYTHON_ELLIPSOID_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "sphere.hpp" namespace cvisual { class ellipsoid : public sphere { private: double height; double width; public: ellipsoid(); void set_length( double l); double get_length(); void set_height( double h); double get_height(); void set_width( double w); double get_width(); vector get_size(); void set_size( const vector&); protected: virtual vector get_scale(); virtual void grow_extent( extent&); virtual bool degenerate(); PRIMITIVE_TYPEINFO_DECL; }; } // !namespace cvisual #endif // !defined VPYTHON_ELLIPSOID_HPp visual-5.12_release/include/sphere.hpp0000644000175000017500000000350611050446342015012 00000000000000#ifndef VPYTHON_SPHERE_HPP #define VPYTHON_SPHERE_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "axial.hpp" #include "util/displaylist.hpp" namespace cvisual { /** A simple monochrome sphere. */ class sphere : public axial { private: /** The level-of-detail cache. It is stored for the life of the program, and initialized when the first sphere is rendered. At one time there were going to be additional entries for the textured case, but that was not implemented. */ static displaylist lod_cache[6]; /// True until the first sphere is rendered, then false. static void init_model(); public: /** Construct a unit sphere at the origin. */ sphere(); sphere( const sphere& other); virtual ~sphere(); protected: /** Renders a simple sphere with the #2 level of detail. */ virtual void gl_pick_render( const view&); /** Renders the sphere. All of the spheres share the same basic set of * models, and then use matrix transforms to shape and position them. */ virtual void gl_render( const view&); /** Extent reported using extent::add_sphere(). */ virtual void grow_extent( extent&); /** Exposed for the benefit of the ellipsoid object, which overrides it. * The default is to use for the scale. */ virtual vector get_scale(); /** Returns true if this object should not be drawn. Conditions are: * zero radius, or visible is false. (overridden by the ellipsoid class). */ virtual bool degenerate(); virtual void get_material_matrix( const view&, tmatrix& out ); PRIMITIVE_TYPEINFO_DECL; }; } // !namespace cvisual #endif // !defined VPYTHON_SPHERE_HPP visual-5.12_release/include/label.hpp0000644000175000017500000000455111112332334014576 00000000000000#ifndef VPYTHON_LABEL_HPP #define VPYTHON_LABEL_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "text.hpp" #include namespace cvisual { class label : public renderable { public: label(); label( const label& other); virtual ~label(); void set_pos( const vector& n_pos); shared_vector& get_pos(); void set_x( double x); double get_x(); void set_y( double y); double get_y(); void set_z( double z); double get_z(); void set_color( const rgb& n_color); rgb get_color(); void set_red( float x); double get_red(); void set_green( float x); double get_green(); void set_blue( float x); double get_blue(); void set_opacity( float); double get_opacity(); void set_text( const std::wstring& t); std::wstring get_text(); void set_space( double space); double get_space(); void set_xoffset( double xoffset); double get_xoffset(); void set_yoffset( double yoffset); double get_yoffset(); void set_border( double border); double get_border(); void set_font_family( const std::wstring& name); std::wstring get_font_family(); void set_font_size(double); double get_font_size(); void render_box( bool); bool has_box(); void render_line( bool); bool has_line(); void set_linecolor( const rgb& color); rgb get_linecolor(); protected: // In world space: shared_vector pos; double space; // In pixels: double xoffset; // offset from pos + space to the box double yoffset; double border; // space between text and box /// A common name for the font. std::wstring font_description; /// The nominal size of the font, in pixels. double font_size; bool box_enabled; ///< True to draw a box around the text bool line_enabled; ///< True to draw a line to the text. // bitmap_font* font; rgb linecolor; ///< The color of the lines in the label. (color is for text) float opacity; ///< The opacity of the background for the text. std::wstring text; bool text_changed; boost::shared_ptr text_layout; virtual void gl_render( const view&); virtual vector get_center() const; virtual void grow_extent( extent& ); }; } // !namespace cvisual #endif // !defined VPYTHON_LABEL_HPP visual-5.12_release/include/ring.hpp0000644000175000017500000000311211064032035014447 00000000000000#ifndef VPYTHON_RING_HPP #define VPYTHON_RING_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "axial.hpp" #ifdef __GNUC__ # define NONNULL __attribute__((nonnull)) #else # define NONNULL #endif namespace cvisual { // This model representation is intended to be "sort of like" what a next generation // two phase renderer would use. Eventually, therefore, it should be replaced with // the real thing. struct fvertex { union { float v[3]; struct { float x, y, z; }; }; fvertex() {} // uninitialized! fvertex( const vector& v ) : x(v.x), y(v.y), z(v.z) {} }; class model { public: std::vector< unsigned short > indices; std::vector< fvertex > vertex_pos; std::vector< fvertex > vertex_normal; }; class ring : public axial { private: // The radius of the ring's body. If not specified, it is set to 1/10 of // the radius of the body. double thickness; PRIMITIVE_TYPEINFO_DECL; bool degenerate(); cvisual::model model; int model_rings, model_bands; double model_radius, model_thickness; public: ring(); virtual ~ring(); void set_thickness( double t); double get_thickness(); protected: virtual void gl_pick_render( const view&); virtual void gl_render( const view&); virtual void grow_extent( extent&); void get_material_matrix(const view&, tmatrix& out); void create_model( int rings, int bands, class model& m ); }; } // !namespace cvisual #endif visual-5.12_release/include/arrow.hpp0000644000175000017500000000402611050576531014660 00000000000000#ifndef VPYTHON_ARROW_HPP #define VPYTHON_ARROW_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "primitive.hpp" #include "util/displaylist.hpp" #include namespace cvisual { using boost::scoped_ptr; /** A 3D 4-sided arrow, with adjustable head and shaft. **/ class arrow : public primitive { private: /** True if the width of the point and shaft should not vary with the length of the arrow. */ bool fixedwidth; /** If zero, then use automatic scaling for the width's of the parts of the arrow. If nonzero, they specify proportions for the arrow in world space. */ double headwidth; double headlength; double shaftwidth; displaylist shaft_model; void init_model(); bool degenerate(); /** Initializes these four variables with the effective geometry for the arrow. The resulting geometry is scaled to view space, but oriented and positioned in model space. The only requred transforms are reorientation and translation. */ void effective_geometry( double& headwidth, double& shaftwidth, double& length, double& headlength, double gcf); public: /** Default arrow. Pointing along +x, unit length, */ arrow(); arrow( const arrow& other); virtual ~arrow(); void set_headwidth( double hw); double get_headwidth(); void set_headlength( double hl); double get_headlength(); void set_shaftwidth( double sw); double get_shaftwidth(); void set_fixedwidth( bool fixed); bool is_fixedwidth(); void set_length( double l); double get_length(); protected: virtual void gl_pick_render( const view&); virtual void gl_render( const view&); virtual void grow_extent( extent&); virtual vector get_center() const; virtual void get_material_matrix(const view&, tmatrix& out); PRIMITIVE_TYPEINFO_DECL; }; } // !namespace cvisual #endif // !defined VPYTHON_ARROW_HPP visual-5.12_release/include/cylinder.hpp0000644000175000017500000000150211050446342015327 00000000000000#ifndef VPYTHON_CYLINDER_HPP #define VPYTHON_CYLINDER_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "axial.hpp" namespace cvisual { class cylinder : public axial { private: static void init_model(); bool degenerate(); public: cylinder(); cylinder( const cylinder&); virtual ~cylinder(); void set_length( double l); double get_length(); protected: virtual void gl_pick_render( const view&); virtual void gl_render( const view&); virtual void grow_extent( extent&); virtual vector get_center() const; PRIMITIVE_TYPEINFO_DECL; }; } // !namespace cvisual #endif // !defined VPYTHON_CONE_HPP visual-5.12_release/include/rectangular.hpp0000644000175000017500000000114311050446342016026 00000000000000#ifndef VPYTHON_RECTANGULAR_HPP #define VPYTHON_RECTANGULAR_HPP #include "primitive.hpp" namespace cvisual { class rectangular : public primitive { protected: double width; double height; rectangular(); rectangular( const rectangular& other); void apply_transform( const view& ); public: virtual ~rectangular(); void set_length( double l); double get_length(); void set_height( double h); double get_height(); void set_width( double w); double get_width(); vector get_size(); void set_size( const vector&); }; } // !namespace cvisual #endif // !defined VPYTHON_RECTANGULAR_HPP visual-5.12_release/include/vpython-config.h0000644000175000017500000000052011106660045016127 00000000000000#ifndef VPYTHON_CONFIG_H #define VPYTHON_CONFIG_H #include #ifndef M_PI # define M_PI 3.14159265359 #endif #if defined _MSC_VER # pragma warning(disable: 4996) # pragma warning(disable: 4005) # pragma warning(disable: 4715) # pragma warning(disable: 4244) #define isnan _isnan #endif #define BOOST_DATE_TIME_NO_LIB #endif visual-5.12_release/include/util/0000777000175000017500000000000011243357451014056 500000000000000visual-5.12_release/include/util/thread.hpp0000644000175000017500000000266710243415525015761 00000000000000#ifndef VPYTHON_UTIL_THREAD_HPP #define VPYTHON_UTIL_THREAD_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include #include #include #include "python/gil.hpp" namespace cvisual { #ifdef NDEBUG using boost::mutex; typedef mutex::scoped_lock lock; inline void assert_locked( const mutex&) { // Empty. } inline void assert_unlocked( const mutex&) { // Empty. } #else typedef boost::try_mutex mutex; typedef mutex::scoped_lock lock; inline void assert_locked( mutex& m) { try { mutex::scoped_try_lock L(m); } catch (boost::lock_error&) { return; } bool mutex_locked = false; assert( mutex_locked == true); } inline void assert_unlocked( mutex& m) { try { mutex::scoped_try_lock L(m); } catch (boost::lock_error&) { bool mutex_locked = true; assert( mutex_locked == false); } return; } #endif // using boost::condition; class condition : public boost::condition { public: template void py_wait( Lock& L) { python::gil_release R; boost::condition::wait(L); } }; } // !namesapce cvisual #endif // !defined VPYTHON_UTIL_THREAD_HPP visual-5.12_release/include/util/atomic_queue.hpp0000644000175000017500000000264010763324777017200 00000000000000#ifndef VPYTHON_UTIL_ATOMIC_QUEUE_HPP #define VPYTHON_UTIL_ATOMIC_QUEUE_HPP #include "util/thread.hpp" #include namespace cvisual { // This class exists to separate out code that is not templated (and therefore // doesn't need to be in a header file) from code that is. This prevents // picking up the whole Python runtine throughout all of cvisual, thus making // compilation faster. class atomic_queue_impl { protected: volatile bool waiting; volatile bool empty; condition ready; mutable mutex barrier; atomic_queue_impl() : waiting(false), empty(true) {} void push_notify(); void py_pop_wait( lock& L); }; template class atomic_queue : private atomic_queue_impl { private: std::queue data; /** * Precondition - the buggar is locked, at least one item is in data */ T pop_impl() { T ret = data.front(); data.pop(); if (data.empty()) empty = true; return ret; } public: atomic_queue() {} void push( const T& item) { lock L(barrier); data.push( item); push_notify(); } // It's assumed that the caller of py_pop() holds the Python GIL T py_pop() { lock L(barrier); py_pop_wait( L); return pop_impl(); } size_t size() const { lock L(barrier); return data.size(); } void clear() { lock L(barrier); while (!data.empty()) data.pop(); empty = true; } }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_ATOMIC_QUEUE_HPP visual-5.12_release/include/util/vector.hpp0000644000175000017500000001751111243332661016006 00000000000000#ifndef VPYTHON_UTIL_VECTOR_HPP #define VPYTHON_UTIL_VECTOR_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "wrap_gl.hpp" #include #include #include #include #include #include "util/thread.hpp" namespace cvisual { class vector { public: double x; double y; double z; public: explicit vector( double a = 0.0, double b = 0.0, double c = 0.0) throw() : x(a), y(b), z(c) {} inline explicit vector( const double* v) : x(v[0]), y(v[1]), z(v[2]) {} // Overloaded binary +, -, *, and / inline vector operator+( const vector& v) const throw() { return vector( x+v.x, y+v.y, z+v.z); } inline vector operator-( const vector& v) const throw() { return vector( x-v.x, y-v.y, z-v.z); } inline vector operator*( const double s) const throw() { return vector( s*x, s*y, s*z); } // Element-wise multiplication used in frame.cpp; not exposed to users inline vector operator*( const vector& v) const throw() { return vector( x*v.x, y*v.y, z*v.z); } inline vector operator/( const double s) const throw() { return vector( x/s, y/s, z/s); } // This operator describes a strict weak ordering as defined by the STL. bool stl_cmp( const vector& v) const; inline bool operator==( const vector& v) const throw() { return (v.x == this->x && v.y == this->y && v.z == this->z); } inline bool operator!=( const vector& v) const throw() { return !(v == *this); } // Overloaded uniary !, probably bad coding practice. inline bool operator!( void) const throw() { return !x && !y && !z; } bool nonzero() const throw() { return x || y || z; } // Overloaded assignment: +=, -=, *=, /= inline const vector& operator+=( const vector& v) throw() { x=x+v.x; y=y+v.y; z=z+v.z; return *this; } inline const vector& operator-=( const vector& v) throw() { x=x-v.x; y=y-v.y; z=z-v.z; return *this; } inline const vector& operator*=( const double s) throw() { x=x*s; y=y*s; z=z*s; return *this; } inline const vector& operator/=( const double s) throw() { x=x/s; y=y/s; z=z/s; return *this; } inline vector operator-() const throw() { return vector( -x, -y, -z); } // return the magnitude of this vector inline double mag( void) const throw() { return std::sqrt( x*x + y*y + z*z); } // This is a magnitude algorithm that is intended to be stable at values // greater than 1e154 (or so). It is much slower since it uses sin, cos, // and atan to get the result. double stable_mag(void) const; // return the square of the this vector's magnitude inline double mag2( void) const throw() { return (x*x + y*y + z*z); } // return the unit vector of this vector vector norm( void) const throw(); inline void set_mag( double m) throw() { *this = norm()*m; } inline void set_mag2( double m2) throw() { *this = norm()*std::sqrt(m2); } // Pythonic function to provide a "representation" of this object. // object.__repr__() should return a string that, were it executed as python // code, should regenerate the object. std::string repr() const; // return the dot product of this vector and another inline double dot( const vector& v) const throw() { return ( v.x * this->x + v.y * this->y + v.z * this->z); } // Return the cross product of this vector and another. vector cross( const vector& v) const throw(); // Return the scalar triple product double dot_b_cross_c( const vector& b, const vector& c) const throw(); // Return the vector triple product vector cross_b_cross_c( const vector& b, const vector& c) const throw(); // Scalar projection of this to v double comp( const vector& v) const throw(); // Vector projection of this to v vector proj( const vector& v) const throw(); // Returns the angular difference between two vectors, in radians, between 0 and pi. double diff_angle( const vector& v) const throw(); // Scale this vector to another, by elementwise multiplication inline vector scale( const vector& v) const throw() { return vector( this->x*v.x, this->y*v.y, this->z*v.z); } // Inversely scale this vector to another, by elementwise division inline vector scale_inv( const vector& v) const throw() { return vector( x/v.x, y/v.y, z/v.z); } vector rotate( double angle, vector axis = vector(0,0,1)) throw(); // Last ditch direct read/write access to the private variables inline double get_x( void) const throw() { return x; } inline void set_x( double s) throw() { this->x = s; } inline double get_y( void) const throw() { return y; } inline void set_y( double s) throw() { this->y = s; } inline double get_z( void) const throw() { return z; } inline void set_z( double s) throw() { this->z = s; } // zero the state of the vector. Potentially useful for reusing a temporary. inline void clear( void) { x=0.0; y=0.0; z=0.0; } inline int py_len() { return 3; } double py_getitem( int i) const; void py_setitem(int i, double value); inline double& operator[]( size_t ref) { assert( ref < 3); switch (ref) { case 0: return x; case 1: return y; case 2: return z; default: assert( true == false); } } inline const double& operator[]( size_t ref) const { assert( ref < 3); switch (ref) { case 0: return x; case 1: return y; case 2: return z; } } inline vector fabs() const { return vector( std::fabs(x), std::fabs(y), std::fabs(z)); } inline void gl_render() const { glVertex3dv( &x); } inline void gl_normal() const { glNormal3dv( &x); } inline double sum() const { return x + y + z; } }; // Free functions for mag, mag2, dot, unit, cross, and tripleproducts. // All of these functions merely call their class-member variants to save code. inline double mag( const vector& v) { return v.mag(); } inline double mag2( const vector& v) { return v.mag2(); } inline vector norm( const vector& v) { return v.norm(); } inline double dot( const vector& v1, const vector& v2) { return v1.dot( v2); } inline vector cross( const vector& v1, const vector& v2) { return v1.cross( v2); } inline double a_dot_b_cross_c( const vector& a, const vector& b, const vector& c) { return a.dot_b_cross_c( b, c); } inline vector a_cross_b_cross_c( const vector& a, const vector& b, const vector& c) { return a.cross_b_cross_c( b, c); } // Scalar projection of v1 -> v2 inline double comp( const vector& v1, const vector& v2) { return v1.comp( v2); } // Vector projection of v1 to v2 inline vector proj( const vector& v1, const vector& v2) { return v1.proj( v2); } // Returns the angular difference between two vectors, in radians, from 0 - pi. inline double diff_angle( const vector& v1, const vector& v2) { return v1.diff_angle( v2); } inline vector rotate( vector v, double angle, const vector axis = vector( 0,0,1)) { return v.rotate( angle, axis); } // Definitions of the global functions for operator *, with a vector on the RHS, // and scalar on the LHS. inline vector operator*( const double& s, const vector& v) { return vector( s*v.x, s*v.y, s*v.z); } } // !namespace cvisual // We should not need to place this in namespace std, but GCC's Koenig L/U fails // if we don't. namespace std { // Insertion operator. Example output: // Based on "The C++ Standard Library", N. M. Josuttis, section 13.12.1 template basic_ostream& operator<<( basic_ostream& stream, const cvisual::vector& v) { basic_ostringstream s; s.copyfmt( stream); s.width( 0); s << "<" << v.x << ", " << v.y << ", " << v.z << ">"; stream << s.str(); return stream; } } // !namespace std namespace cvisual { typedef vector shared_vector; } // !namespace cvisual #endif // !VPYTHON_UTIL_VECTOR_HPP visual-5.12_release/include/util/icososphere.hpp0000644000175000017500000000130310434362566017027 00000000000000#ifndef VPYTHON_UTIL_ICOSOSPHERE_HPP #define VPYTHON_UTIL_ICOSOSPHERE_HPP #include namespace cvisual { class icososphere { boost::shared_array verts; boost::shared_array indices; int nverts; int ni; inline float* newe( int span) { float* e = verts.get() + 3*(nverts - 1); // one before the beginning nverts += span-1; return e; } void subdivide( int span, float* v1, float* v2, float *v3, float* s1, float* s2, float* s3, float* e1, float* e2, float* e3 ); public: icososphere( int depth); void gl_render(); }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_ICOSOSPHERE_HPP visual-5.12_release/include/util/gl_extensions.hpp0000644000175000017500000000323411064022025017351 00000000000000#ifndef VPYTHON_UTIL_GL_EXTENSIONS_HPP #define VPYTHON_UTIL_GL_EXTENSIONS_HPP #pragma once #include "wrap_gl.hpp" namespace cvisual { // GL extension functions wrapper - just the functions we currently need // This could be replaced by a library like GLEW, if it becomes a hassle to maintain. class gl_extensions { public: // All extensions will be unavailable until init() is called. gl_extensions(); // Must be initialized and used with the same OpenGL context current void init( class display_kernel& d ); // Extension: ARB_shader_objects bool ARB_shader_objects; PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; PFNGLLINKPROGRAMARBPROC glLinkProgramARB; PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; PFNGLSHADERSOURCEARBPROC glShaderSourceARB; PFNGLCOMPILESHADERARBPROC glCompileShaderARB; PFNGLATTACHOBJECTARBPROC glAttachObjectARB; PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; PFNGLGETHANDLEARBPROC glGetHandleARB; PFNGLUNIFORM1IARBPROC glUniform1iARB; PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB; PFNGLUNIFORM4FVARBPROC glUniform4fvARB; PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; PFNGLGETINFOLOGARBPROC glGetInfoLogARB; // Extension: EXT_texture3D bool EXT_texture3D; PFNGLTEXIMAGE3DEXTPROC glTexImage3D; PFNGLTEXSUBIMAGE3DEXTPROC glTexSubImage3D; // Extension: ARB_multitexture bool ARB_multitexture; PFNGLACTIVETEXTUREARBPROC glActiveTexture; // Extension: ARB_point_parameters bool ARB_point_parameters; PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB; }; } #endif visual-5.12_release/include/util/gl_enable.hpp0000644000175000017500000000142510434400210016374 00000000000000#ifndef VPYTHON_UTIL_GL_ENABLE_HPP #define VPYTHON_UTIL_GL_ENABLE_HPP #include "wrap_gl.hpp" namespace cvisual { // Stack-unwind safe versions of gl{Enable,Disable}{ClientState,}() class gl_enable { private: GLenum value; public: inline gl_enable( GLenum v) : value(v) { glEnable( value); } inline ~gl_enable() { glDisable( value); } }; class gl_enable_client { private: GLenum value; public: inline gl_enable_client( GLenum v) : value(v) { glEnableClientState( value); } inline ~gl_enable_client() { glDisableClientState( value); } }; class gl_disable { private: GLenum value; public: inline gl_disable( GLenum v) : value(v) { glDisable( value); } inline ~gl_disable() { glEnable( value); } }; } // !namespace cvisual #endif /*VPYTHON_UTIL_GL_ENABLE_HPP*/ visual-5.12_release/include/util/shader_program.hpp0000644000175000017500000000303711052433563017500 00000000000000#ifndef VPYTHON_UTIL_SHADER_PROGRAM_HPP #define VPYTHON_UTIL_SHADER_PROGRAM_HPP #pragma once #include "display_kernel.hpp" #ifdef __APPLE__ // The following are needed in order to be able to query the rendering properties #include #include #include #endif namespace cvisual { class shader_program { public: shader_program( const std::string& source ); ~shader_program(); const std::string& get_source() const { return source; } int get_uniform_location( const view& v, const char* name ); void set_uniform_matrix( const view& v, int loc, const tmatrix& in ); private: friend class use_shader_program; void realize( const view& ); void compile( const view&, int type, const std::string& source ); std::string getSection( const std::string& name ); static void gl_free( PFNGLDELETEOBJECTARBPROC, int ); std::string source; std::map uniforms; int program; PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; }; class use_shader_program { public: // use_shader_program(NULL) does nothing, rather than enabling the fixed function // pipeline explicitly. This is convenient, but maybe we need a way to do the other thing? use_shader_program( const view& v, shader_program* program ); use_shader_program( const view& v, shader_program& program ); ~use_shader_program(); bool ok() { return m_ok; } // true if the shader program was successfully invoked private: const view& v; int oldProgram; bool m_ok; void init( shader_program* program ); }; } #endif visual-5.12_release/include/util/.cvsignore0000644000175000017500000000001210154672721015763 00000000000000.sconsign visual-5.12_release/include/util/displaylist.hpp0000644000175000017500000000201210776021527017041 00000000000000#ifndef VPYTHON_UTIL_DISPLAYLIST_HPP #define VPYTHON_UTIL_DISPLAYLIST_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include namespace cvisual { using boost::shared_ptr; /** A manager for OpenGL displaylists */ class displaylist { private: shared_ptr impl; public: /** Begin compiling a new displaylist. Nothing is drawn to the screen when rendering commands into the displaylist. Be sure to call gl_compile_end() when you are done. */ void gl_compile_begin(); /** Completes compiling the displaylist. */ void gl_compile_end(); /** Perform the OpenGL commands cached with gl_compile_begin() and gl_compile_end(). */ void gl_render() const; /** @return true iff this object contains a compiled OpenGL program. */ operator bool() const; }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_DISPLAYLIST_HPP visual-5.12_release/include/util/errors.hpp0000644000175000017500000000533110771771334016026 00000000000000#ifndef VPYTHON_UTIL_ERRORS_HPP #define VPYTHON_UTIL_ERRORS_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. //AS changed __PRETTY_FUNCTION to __FUNCTION__ for VC++ compatibility #include "wrap_gl.hpp" #include #include namespace cvisual { /** Report the existance of a critical error to cerr. */ #define VPYTHON_CRITICAL_ERROR(msg) write_critical( __FILE__, __LINE__, \ __FUNCTION__, msg) /** Report a warning to the user that can probably be corrected, through cerr. */ #define VPYTHON_WARNING(msg) write_warning( __FILE__, __LINE__, \ __FUNCTION__, msg) #define VPYTHON_NOTE(msg) write_note( __FILE__, __LINE__, msg) // This should only be used within Win32-specific code. #define WIN32_CRITICAL_ERROR(msg) win32_write_critical( __FILE__, __LINE__, \ __FUNCTION__, msg) void win32_write_critical( std::string file, int line, std::string func, std::string msg); void write_critical( std::string file, int line, std::string function, std::string message); void write_warning( std::string file, int line, std::string function, std::string message); void write_note( std::string file, int line, std::string message); void write_stderr( const std::string& message ); /** Obtains the active OpenGL transformation matrix and dumps it to stderr. */ void dump_glmatrix(); /** Clears the OpenGL error state. If NDEBUG is set, this function is a no-op. */ void clear_gl_error_real( void); /** Checks the OpenGL error state and throws gl_error if it is anything other than GL_NO_ERROR. If NDEBUG is set, this function is a no-op. */ void check_gl_error_real(const char* file, int line); // Forward the call to the real function. #ifdef NDEBUG # define check_gl_error() do {} while (false) # define clear_gl_error() do {} while (false) #else # define check_gl_error() check_gl_error_real(__FILE__, __LINE__) # define clear_gl_error() clear_gl_error_real() #endif /** Exception class thrown by check_gl_error() */ class gl_error : public std::runtime_error { private: GLenum error; public: /** Returns the OpenGL error code that triggered this exception. */ inline GLenum get_error_code() const { return error; } /** Construct an error in preparation to throw it. @param msg A human-readable error message that will be used for what(). @param code The triggering OpenGL error code. */ gl_error( const char* msg, const GLenum code); /** Construct an error in preparation to throw it. This should not be used. @param msg A human-readable error message that will be used for what(). */ gl_error( const char* msg); }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_ERRORS_HPP visual-5.12_release/include/util/quadric.hpp0000644000175000017500000000547411050446342016137 00000000000000#ifndef VPYTHON_UTIL_QUADRIC_HPP #define VPYTHON_UTIL_QUADRIC_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. class GLUquadric; namespace cvisual { /** A thin wrapper around GLU quadric objects. This may be used as a factory to render some predefined quadrics. */ class quadric { private: GLUquadric* q; ///< The GLU resource being managed. public: enum drawing_style { POINT, LINE, FILL, SILHOUETTE }; enum normal_style { NONE, FLAT, SMOOTH }; enum orientation { OUTSIDE, INSIDE }; /** Create a new quadric object with smooth normals, filled drawing style, outside orientation, and no texture coordinates. */ quadric(); // Free up any resources that GLU required for the object. ~quadric(); /** Set the drawing style to be used for subsequently rendered objects. */ void set_draw_style( drawing_style); /** Set the style of generated normal vectors used for subsequently rendered objects. */ void set_normal_style( normal_style); /** Set the direction of teh normal vectors used for rendered objects. */ void set_orientation( orientation); /** Draw a sphere centered at the origin, with the N pole pointing along the y axis. radius The radius of the generated sphere. slices The number of subdivisions around the y axis (similar to lines of longitude). stacks The number of subdivisions along the y axis (similar to lines of latitude). */ void render_sphere( double radius, int slices, int stacks); /** Draw a cylinder with these properties. The cylinder's base is centered at the origin, pointing along the +x axis. Only the outer curve of the cylinder is rendered, not the ends. base_radius The radius of the base end. top_radius The radius of the top end. height The distance along +x between the top and bottom. slices The number of subdivisions around the x axis. stacks The number of subdivisions along the x axis. */ void render_cylinder( double base_radius, double top_radius, double height, int slices, int stacks); /** Draw a cylinder with constant radius, as above. */ void render_cylinder( double radius, double height, int slices, int stacks); /** Draw a flat filled disk with these properties. The disk is centered on the origin, rendered in the yz plane. @param radius The outer radius of the disk. @param slices The number of radial slices to subdivide the disk into. @param rings The number of circumferential subdivisions for the disk. @param rotation +1 for right end of cylinder, -1 for left end (or base of cone) */ void render_disk( double radius, int slices, int rings, GLfloat rotation); }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_QUADRIC_HPP visual-5.12_release/include/util/extent.hpp0000644000175000017500000000530211107053640016002 00000000000000#ifndef VPYTHON_UTIL_EXTENT_HPP #define VPYTHON_UTIL_EXTENT_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/vector.hpp" #include "util/tmatrix.hpp" namespace cvisual { class extent_data { private: friend class extent; double cot_hfov, invsin_hfov, sin_hfov, cos_hfov; vector mins, maxs; double camera_z; size_t buffer_depth; ///< The required depth of the selection buffer. bool is_empty() const; public: extent_data( double tan_hfov ); // The following functions represent the interface for render_surface objects. /** Returns the center position of the scene in world space. */ vector get_center() const; /** Returns distance that are nearest and farthest toward center along forward. */ void get_near_and_far( const vector& forward, double& nearest, double& farthest) const; /** Determines the range that the axes need to be to include the bounding * box. */ vector get_range( vector center) const; double get_camera_z() const { return camera_z; } /** Returns the size for the select buffer when rendering in select mode, * after having traversed the world. */ size_t get_select_buffer_depth() { return buffer_depth; } }; /** A helper class to determine the extent of the rendered universe in world space. */ class extent { private: extent_data& data; tmatrix l_cw; int frame_depth; public: extent( extent_data& data, const tmatrix& local_to_centered_world ); extent( extent& parent, const tmatrix& local_to_parent ); ~extent(); //< Might be necessary to "flush" local cached results into parent // The following functions represent the interface for renderable objects. /** Extend the range to include this point. @param point a point in world space coordinates. */ void add_point( vector point); /** Extend the range to include this sphere. @param center The center of the sphere. @param radius The radius of the bounding sphere. */ void add_sphere( vector center, double radius); /** Extend the range to include the region of local coordinate system from min to max **/ void add_box( const tmatrix& local_to_world, const vector& min, const vector& max ); /** Extend the range to include this circle */ void add_circle( const vector& center, const vector& normal, double radius ); /** Report the number of bodies that this object represents. This is used * for the calculation of the hit buffer size. */ void add_body(); /** See implementation of frame::grow_extent() */ }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_EXTENT_HPP visual-5.12_release/include/util/texture.hpp0000644000175000017500000000543711107137734016213 00000000000000#ifndef VPYTHON_UTIL_TEXTURE_HPP #define VPYTHON_UTIL_TEXTURE_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include #include #include "util/gl_free.hpp" #include "util/thread.hpp" #include "wrap_gl.hpp" namespace cvisual { using boost::shared_ptr; /** A class to assist in managing OpenGL texture resources. */ class texture { private: bool damaged; unsigned int handle; public: /** Release the handle to OpenGL. Subclasses must not call glDeleteTextures() on this class's handle. */ virtual ~texture(); /** True iff the texture object is managing something. */ // operator bool() const; /** Make this texture active. This function constitutes use under the "initialize on first use" rule, and will incur a one-time speed and continuous graphics memory penalty. Precondition: an OpenGL context must be active. */ void gl_activate(const struct view& scene); /** Determine whether or not this texture has an opacity channel. @returns True iff there is an opacity channel for this texture. */ bool has_opacity() const; /** Returns e.g. GL_TEXTURE_2D - the thing to be enabled to make this texture work with the fixed function pipeline. */ virtual int enable_type() const; protected: // A unique identifier for the texture, to be obtained from glGenTextures(). bool have_opacity; // Perform zero initialization of POD members. texture(); // Make this class noncopyable. texture( const texture&); const texture& operator=( const texture&); // Sets handle and registers it to be freed at shutdown void set_handle( const view&, unsigned int handle ); unsigned get_handle() { return handle; } // Called by gl_activate() on the first use and whenever damaged. // Postcondition: handle refers to an initialized OpenGL texture object. virtual void gl_init(const view&) = 0; // Perform any texture transformation matrix initialization that might be // required. Default: do nothing. // This function must assume that the active matrix is GL_MODELVIEW and must // return in that state. virtual void gl_transform(); // This function will be called by gl_activate() so that subclasses can // detect asynchronous changes to themselves virtual void damage_check(); // Mutable subclasses must call this function whenever their texture data // needs to be reloaded into OpenGL. void damage(); public: // Should be protected; makeing this public works around a GCC 3.4.2 bug static void gl_free( GLuint handle ); }; #ifdef __GNUC__ #define PURE __attribute__((pure)) #else #define PURE #endif size_t next_power_of_two(size_t arg) PURE ; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_TEXTURE_HPP visual-5.12_release/include/util/tmatrix.hpp0000644000175000017500000001551311064627315016200 00000000000000#ifndef VPYTHON_UTIL_TMATRIX_HPP #define VPYTHON_UTIL_TMATRIX_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/vector.hpp" #include namespace cvisual { struct vertex { double x; double y; double z; double w; inline vertex( double _x=0, double _y=0, double _z=0, double _w=1.0) : x(_x), y(_y), z(_z), w(_w) {} explicit inline vertex( const vector& v, double _w = 1.0) : x( v.x), y(v.y), z(v.z), w(_w) {} vector project() const { double w_i = 1.0/w; return vector( x*w_i, y*w_i, z*w_i); } inline void gl_render() const { glVertex4d( x, y, z, w); } double& operator[] (int i) { return (&x)[i]; } double operator[] (int i) const { return (&x)[i]; } }; /** A double-precision 3D affine transformation matrix. */ class tmatrix { private: /** This is a double-precision matrix in _COLUMN MAJOR ORDER_. User's beware. It is in this order since that is what OpenGL uses internally - thus eliminating a reformatting penalty. */ double M[4][4]; friend void inverse( tmatrix& ret, const tmatrix& arg); public: /** Returns the address of the first element in the matrix. Ideally, this * function should not exist. */ inline const double* matrix_addr() const { return M[0]; } /** Create a new tmatrix, initialized to the identity matrix. */ inline tmatrix() throw() { ident(); } /** Make a deep copy of t. */ inline tmatrix( const tmatrix& t ) throw() { std::memcpy(M, t.M, sizeof(M)); } /** Initialize this matrix to A * B */ inline tmatrix( const tmatrix& A, const tmatrix& B ) throw() { *this = A * B; } /** Returns the identity matrix. */ static const tmatrix& identity() throw(); /** Sets this matrix to the identity and returns an rvalue reference to self. */ inline const tmatrix& ident( void) throw() { x_column(); y_column(); z_column(); w_column(); w_row(); return *this; } /** Address an individual element of the tmatrix. The internal format of the matrix may be anything, so use this function to reliably get the individual elements. */ inline const double& operator()( size_t row, size_t column) const { return M[column][row]; } /** Address an individual element of the tmatrix. The internal format of the matrix may be anything, so use this function to reliably get the individual elements. */ inline double& operator()( size_t row, size_t column) { return M[column][row]; } /** Sets the first column to v */ inline void x_column( const vector& v) throw() { M[0][0] = v.x; M[0][1] = v.y; M[0][2] = v.z; } /** Sets the second column to v */ inline void y_column( const vector& v) throw() { M[1][0] = v.x; M[1][1] = v.y; M[1][2] = v.z; } /** Sets the third column to v */ inline void z_column( const vector& v) throw() { M[2][0] = v.x; M[2][1] = v.y; M[2][2] = v.z; } /** Sets the fourth column to v */ inline void w_column( const vector& v) throw() { M[3][0] = v.x; M[3][1] = v.y; M[3][2] = v.z; } /** Sets the first column to x, y, z */ inline void x_column( double x=1, double y=0, double z=0) throw() { M[0][0] = x; M[0][1] = y; M[0][2] = z; } /** Sets the second column to x, y, z */ inline void y_column( double x=0, double y=1, double z=0) throw() { M[1][0] = x; M[1][1] = y; M[1][2] = z; } /** Sets the third column to x, y, z */ inline void z_column( double x=0, double y=0, double z=1) throw() { M[2][0] = x; M[2][1] = y; M[2][2] = z; } /** Sets the fourth column to x, y, z */ inline void w_column(double x=0, double y=0, double z=0) throw() { M[3][0] = x; M[3][1] = y; M[3][2] = z; } /** Sets the bottom row to x, y, z, w */ inline void w_row(double x=0, double y=0, double z=0, double w=1) throw() { M[0][3]=x; M[1][3]=y; M[2][3]=z; M[3][3]=w; } /** Projects v using the current tmatrix values. */ vertex project(const vector& v) const throw(); /** An alias for operator*= */ void concat(const tmatrix& A, const tmatrix& B) throw(); // Right-multiply this matrix by a scaling matrix. void scale( const vector& v, const double w = 1); // Right multiply the matrix by a translation matrix void translate( const vector& v ); /** Postcondition: *this == *this * other */ const tmatrix& operator*=( const tmatrix& other); /** Multiply this matrix by another one. */ tmatrix operator*( const tmatrix& other) const; void invert_ortho(const tmatrix& A) throw(); /** M^-1 * [x y z w] */ vector times_inv( const vector& v, double w = 1.0) const throw(); /** multiplication by a vector [x y z 0] */ vector times_v( const vector& v) const throw(); /** multiplication by a point [x y z 1] */ vector operator*( const vector& v) const throw(); /** multiplication by an arbirary vertex [x y z w] */ vertex operator*( const vertex& v) const throw(); /** multiplication by [0 0 0 1] **/ vector origin() const throw(); /** Overwrites the currently active matrix in OpenGL with this one. */ inline void gl_load(void) const { glLoadMatrixd( M[0]); } /** Multiplies the active OpenGL matrix by this one. */ inline void gl_mult(void) const { glMultMatrixd( M[0]); } /** Initialize this tmatrix with the contents of the OpenGL modelview, * texture, color, or projection matricies. * @return *this. */ tmatrix& gl_modelview_get(); tmatrix& gl_texture_get(); tmatrix& gl_color_get(); tmatrix& gl_projection_get(); /** * Dump this matrix to a formatted string. */ std::string to_string() const; }; // Compute the inverse of arg, and store it in ret. void inverse( tmatrix& ret, const tmatrix& arg); // Returns a rotation matrix to perform rotations about an axis passing through // the origin through an angle in the direction specified by the Right Hand Rule. tmatrix rotation( double angle, const vector& axis); // Returns a rotation matrix to perform rotations about an axis passing through // origin in the direction axis as specified by the Right Hand Rule. tmatrix rotation( double angle, const vector& axis, const vector& origin); // Pushes its constructor argument onto the active OpenGL matrix stack, and // multiplies the active matrix by the new one when constructed, and pops it off // when destructed. class gl_matrix_stackguard { private: // Avoid calls that are nonsensical for this class. gl_matrix_stackguard( const gl_matrix_stackguard&); const gl_matrix_stackguard& operator=( const gl_matrix_stackguard&); public: // A stackguard that only performs a push onto the matrix stack. // Postcondition: the stack is one matrix taller, but identical to before. inline gl_matrix_stackguard() { glPushMatrix(); } gl_matrix_stackguard( const tmatrix&); inline ~gl_matrix_stackguard() { glPopMatrix(); } }; } // !namespace cvisual #endif // !VPYTHON_UTIL_TMATRIX_HPP visual-5.12_release/include/util/rate.hpp0000644000175000017500000000066710106455464015447 00000000000000#ifndef VPYTHON_UTIL_RATE_HPP #define VPYTHON_UTIL_RATE_HPP namespace cvisual { // This function is stateful and allows an application to control its loop // execution rate. When calling rate() once per iteration, rate inserts a small // delay that is calibrated such that the loop will execute at about 'freq' // iterations per second. void rate( const double& freq); } // !namespace cvisual #endif // !defined VPYTHON_UTIL_RATE_HPP visual-5.12_release/include/util/render_manager.hpp0000644000175000017500000000120210776172221017447 00000000000000#ifndef VPYTHON_UTIL_RENDER_MANAGER_HPP #define VPYTHON_UTIL_RENDER_MANAGER_HPP #pragma once #include namespace cvisual { struct render_manager { // Called by the platform drivers to paint and swaps all of the given displays, // returning the number of seconds to wait before calling this function again. // Takes care of a lot of platform-independent policy and implementation, including // the tradeoff between frame rate and Python program performance, vertical retrace // synchronization, etc. static double paint_displays( const std::vector< class display* >&, bool swap_single_threaded = false ); }; }; #endif visual-5.12_release/include/util/timer.hpp0000644000175000017500000000106610761631745015633 00000000000000#ifndef VPYTHON_UTIL_TIMER_HPP #define VPYTHON_UTIL_TIMER_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. namespace cvisual { class timer { private: double start; ///< The system time at the last lap_start() call. double inv_tick_count; public: /** Construct a new timer. */ timer(); /** Time elapsed since timer was created. */ double elapsed(); }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_TIMER_HPP visual-5.12_release/include/util/gl_free.hpp0000644000175000017500000000230410776021527016107 00000000000000#ifndef VPYTHON_UTIL_GL_FREE_HPP #define VPYTHON_UTIL_GL_FREE_HPP #include #include "thread.hpp" namespace cvisual { class gl_free_manager { public: // The callback will be called if the OpenGL context(s) are destroyed template void connect( T callback ) { on_shutdown().connect( callback ); } // The callback will be called the next time OpenGL objects may be freed, and // will no longer be called on shutdown(). template void free( T callback ) { on_next_frame().connect( callback ); on_shutdown().disconnect( callback ); } // Call with OpenGL context active void frame(); // Call when the context(s) are destroyed. The gl_free_manager can be reused. void shutdown(); private: boost::signal< void() > &on_shutdown(); boost::signal< void() > &on_next_frame(); }; // At present, there is just one of these, because all OpenGL contexts share server // objects through wglShareLists or equivalent. It is shutdown when all contexts are // shut down. If this design is changed in the // future, there will need to be an instance for each context. extern gl_free_manager on_gl_free; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_GL_FREE_HPP visual-5.12_release/include/util/rgba.hpp0000644000175000017500000000455311107116223015412 00000000000000#ifndef VPYTHON_UTIL_RGBA_HPP #define VPYTHON_UTIL_RGBA_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "wrap_gl.hpp" namespace cvisual { /** A helper class to manage OpenGL color attributes. The data is layout compatable with OpenGL's needs for the various vector forms of commands, like glColor4fv(), and glColorPointer(). */ class rgba { public: /** Red channel intensity, clamped to [0,1] */ float red; /** Green channel intensity, clamped to [0,1] */ float green; /** Blue channel intensity, clamped to [0,1] */ float blue; /** Opacity, clamped to [0,1] */ float opacity; /** Defaults to opaque white. */ inline rgba() : red(1.0), green(1.0), blue(1.0), opacity(1.0) {} /** Allocate a new color. */ inline rgba( float r, float g, float b, float a = 1.0) : red(r), green(g), blue(b), opacity(a) {} inline explicit rgba( const float* c) : red(c[0]), green(c[1]), blue(c[2]), opacity( c[3]) {} /** Convert to HSVA, lower saturation by 50%, convert back to RGBA. @return The desaturated color. */ rgba desaturate() const; /** Convert to greyscale, accounting for differences in perception. This function makes 4 calls to std::pow(), and is very slow. @return The scaled color. */ rgba grayscale() const; /** Make this the active OpenGL color using glColor(). */ inline void gl_set() const { glColor4fv( &red); } }; class rgb { public: float red; float green; float blue; inline rgb() : red(1.0f), green(1.0f), blue(1.0f) {} inline rgb( float r, float g, float b) : red(r), green(g), blue(b) {} inline explicit rgb( float bw) : red(bw), green(bw), blue(bw) {} inline explicit rgb( const float* c) : red(c[0]), green(c[1]), blue(c[2]) {} inline explicit rgb( const double* c) : red(c[0]), green(c[1]), blue(c[2]) {} inline rgb( const rgb& other) : red( other.red), green( other.green), blue(other.blue) {} inline operator rgb() const { return rgb( red, green, blue); } rgb desaturate() const; rgb grayscale() const; float operator[](int i) const { return (&red)[i]; } inline void gl_set(float opacity) const { glColor4f( red, green, blue, opacity); } }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_RGBA_HPP visual-5.12_release/include/util/sorted_model.hpp0000644000175000017500000001133411107137734017164 00000000000000#ifndef VPYTHON_UTIL_SORTED_MODEL_HPP #define VPYTHON_UTIL_SORTED_MODEL_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/vector.hpp" #include namespace cvisual { /** A helper class for texture coordinates. */ struct tcoord { GLfloat s; GLfloat t; inline tcoord( GLfloat s_ = 0, GLfloat t_ = 0) : s(s_), t(t_) {} inline explicit tcoord( const vector& v) : s((GLfloat) v.x), t((GLfloat) v.y) {} inline void gl_render() const { glTexCoord2f( s,t); } }; /** A single triangular face whose corners are ordered counterclockwise in the forward facing direction. The normals, corners, and center are all constant. Arrays of these objects are not layout-compatable with any OpenGL function calls. */ struct triangle { vector corner[3]; ///< The vertex coordinates. vector normal; ///< The bodies flat normal vector. vector center; ///< The center of the body, used for depth sorting. triangle() {} /** Construct a new triangle with these corners. normal and center are computed automatically. */ triangle( const vector& v1, const vector& v2, const vector& v3); /** Render the triangle to OpenGL. */ void gl_render() const; }; inline triangle::triangle( const vector& v1, const vector& v2, const vector& v3) { corner[0] = v1; corner[1] = v2; corner[2] = v3; center = (v1 + v2 + v3) / 3.0; normal = -(corner[0] - corner[1]).cross( corner[2] - corner[1]).norm(); } inline void triangle::gl_render() const { normal.gl_normal(); corner[0].gl_render(); corner[1].gl_render(); corner[2].gl_render(); } /** A single 4-sided face whose corners are ordered counterclockwise in the forward-facing direction. All of its geometry is constant. */ struct quad { vector corner[4]; ///< The vertexes of this quad. They must be coplanar. vector normal; ///< The flat-shaded normal vector for this quad. vector center; ///< The center of the quad, used for depth sorting. quad() {} /** Construct a new quad with these corners. normal and center are computed automatically. */ quad( const vector& v1, const vector& v2, const vector& v3, const vector& v4); /** Render the triangle to OpenGL. */ void gl_render() const; }; inline quad::quad( const vector& v1, const vector& v2, const vector& v3, const vector& v4) { corner[0] = v1; corner[1] = v2; corner[2] = v3; corner[3] = v4; center = (v1 + v2 + v3 + v4) * 0.25; normal = -(corner[0] - corner[1]).cross( corner[2] - corner[1]).norm(); } inline void quad::gl_render() const { normal.gl_normal(); corner[0].gl_render(); corner[1].gl_render(); corner[2].gl_render(); corner[3].gl_render(); } /** A quadrilateral object that also uses texture coordinates. */ struct tquad : public quad { tcoord tex[4]; ///< The texture coordinates. tquad() {} tquad( const vector& v1, const tcoord& t1, const vector& v2, const tcoord& t2, const vector& v3, const tcoord& t3, const vector& v4, const tcoord& t4); void gl_render() const; }; inline tquad::tquad( const vector& v1, const tcoord& t1, const vector& v2, const tcoord& t2, const vector& v3, const tcoord& t3, const vector& v4, const tcoord& t4) : quad( v1, v2, v3, v4) { tex[0] = t1; tex[1] = t2; tex[2] = t3; tex[3] = t4; } inline void tquad::gl_render() const { normal.gl_normal(); tex[0].gl_render(); corner[0].gl_render(); tex[1].gl_render(); corner[1].gl_render(); tex[2].gl_render(); corner[2].gl_render(); tex[3].gl_render(); corner[3].gl_render(); } /** A depth-sorting criteria for the sorting algorithms in the STL. It is a model of BinaryPredicate. */ class face_z_comparator { private: vector forward; ///< The axis along which to sort. public: /** Construct a new comparison object. @param axis The depth axis along which to compare. */ face_z_comparator( const vector& axis) throw() : forward(axis) {} /** Test the sorting criterion. This varient is for pointer types. @param lhs A face to be compared. @param rhs Another face to be compared @return true if the lhs is farther away than rhs, false otherwise. */ template inline bool operator()( const Face* lhs, const Face* rhs) const throw() { return forward.dot( lhs->center) > forward.dot( rhs->center); } /** Test the sorting criterion. This varient is for reference types. @param lhs A face to be compared. @param rhs Another face to be compared @return true if the lhs is farther away than rhs, false otherwise. */ template inline bool operator()( const Face& lhs, const Face& rhs) const throw() { return forward.dot( lhs.center) > forward.dot( rhs.center); } }; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_SORTED_MODEL_HPP visual-5.12_release/include/box.hpp0000644000175000017500000000157311050446342014316 00000000000000#ifndef VPYTHON_BOX_HPP #define VPYTHON_BOX_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "rectangular.hpp" #include "util/displaylist.hpp" namespace cvisual { class box : public rectangular { private: // True if the box should not be rendered. bool degenerate(); static displaylist model; static void init_model(displaylist& model, bool skip_right_face); friend class arrow; protected: virtual void gl_pick_render( const view&); virtual void gl_render( const view&); virtual void grow_extent( extent& ); virtual void get_material_matrix( const view&, tmatrix& out ); PRIMITIVE_TYPEINFO_DECL; }; } // !namespace cvisual #endif // !defined VPYTHON_BOX_HPP visual-5.12_release/include/text.hpp0000644000175000017500000000610710775002067014515 00000000000000#ifndef VPYTHON_TEXT_HPP #define VPYTHON_TEXT_HPP #pragma once /* New text rendering organization: This module defines the platform-independent part of the text renderer. The public classes are font and layout. layout_texture is only for the use of the platform-specific font_renderer. On all platforms, text rendering is expected to work in essentially the same way: an entire text string is rendered by the platform's text renderer into a texture (layout), which is then rendered as many times as called for. Each platform needs to provide {platform}/font_renderer.hpp with the following public interface (in namespace cvisual): class font_renderer { public: // Create a font_renderer for the requested font. // Must support 'verdana' or 'sans-serif' // Should support 'times new roman' or 'serif', and 'courier new' or 'monospace' font_renderer( const std::wstring& description, int height ); // Returns true if the requested font was available. bool ok(); // Render text and call tx.set_image() void gl_render_to_texture( const struct view&, const std::wstring& text, layout_texture& tx ); }; */ #include "util/texture.hpp" #include "util/vector.hpp" namespace cvisual { class font; class layout; class layout_texture : texture { public: // But only for use by font_renderer! // Takes similar parameters to glTexImage2D, but always accepts rectangular textures. // Pass a negative height if the image is bottom-up. // alignment is GL_UNPACK_ALIGNMENT // Typically the format should be either GL_ALPHA (for simple antialiasing) or // GL_RGB or GL_BGR_EXT (for color antialiasing e.g. ClearType) void set_image( int width, int height, int gl_internal_format, int gl_format, int gl_type, int alignment, void* data ); private: layout_texture( const boost::shared_ptr& text_font, const std::wstring& text ); ~layout_texture(); boost::shared_ptr text_font; std::wstring text; virtual void gl_init( const view& ); friend class layout; vector coord[4]; vector tcoord[4]; int width, height; int internal_format; }; class font { public: // Call this to get a font. If possible, call only when the font changes. static boost::shared_ptr find_font( const std::wstring& desc = std::wstring(), int height = -1); // Get a layout for some text. This needn't be called with an OpenGL // context, but it should be called as infrequently as possible (only when // text changes). boost::shared_ptr lay_out( const std::wstring& text ); private: friend class layout_texture; font( class font_renderer* ); boost::weak_ptr self; boost::scoped_ptr< class font_renderer > renderer; }; class layout { public: // Renders the text with its lower left hand corner (NOT its baseline) // at the given position. void gl_render( const view& v, const vector& pos_ll ); // Return the size of the text in pixels (x,y,0) vector extent( const view& ); private: friend class font; layout( const boost::shared_ptr& font, const std::wstring& text ); void draw_quad(); layout_texture tx; }; } // namespace cvisual #endif visual-5.12_release/include/axial.hpp0000644000175000017500000000105310761631745014630 00000000000000#ifndef VPYTHON_AXIAL_HPP #define VPYTHON_AXIAL_HPP #include "primitive.hpp" namespace cvisual { /** A subbase class used to only export 'radius' as a property once to Python. */ class axial : public primitive { protected: /// The radius of whatever body inherits from this class. double radius; axial(); axial( const axial& other); public: virtual ~axial(); void set_radius(double r); double get_radius(); virtual void get_material_matrix( const view&, tmatrix& out ); }; } // !namespace cvisual #endif // !defined VPYTHON_AXIAL_HPP visual-5.12_release/include/mouseobject.hpp0000644000175000017500000001457211166017045016052 00000000000000#ifndef VPYTHON_MOUSEOBJECT_HPP #define VPYTHON_MOUSEOBJECT_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "util/atomic_queue.hpp" #include #include #include namespace cvisual { /** This common base class implements common functionality for event and mouse. * It should never be used directly. */ class mousebase { protected: std::string button_name(); std::bitset<4> modifiers; std::bitset<5> eventtype; std::bitset<3> buttons; public: mousebase() {} virtual ~mousebase(); // The position of the mouse, either currently, or when the even happened. vector position; // The position of the camera in the scene. vector cam; // The object nearest to the cursor when this event happened. shared_ptr pick; // The position on the object that intersects with ray. vector pickpos; /* 'buttonstate' contains the following state flags as defined by 'button'. */ enum modifiers_t { shift, ctrl, alt, command }; /* 'eventtype' contains state flags as defined by 'event'. */ enum event_t { press, release, click, drag, drop }; enum button_t { left, right, middle }; inline bool is_press() const { return eventtype.test( press); } inline bool is_release() const { return eventtype.test( release); } inline bool is_click() const { return eventtype.test( click); } inline bool is_drag() const { return eventtype.test( drag); } inline bool is_drop() const { return eventtype.test( drop); } std::string* get_buttons() const; inline bool is_shift() const { return modifiers.test( shift); } inline bool is_ctrl() const { return modifiers.test( ctrl); } inline bool is_alt() const { return modifiers.test( alt); } // option on Mac keyboard inline bool is_command() const { return modifiers.test( command); } inline vector get_pos() const { return position; } inline vector get_camera() const { return cam; } inline vector get_ray() const { return (position - cam).norm(); } inline vector get_pickpos() const { return pickpos; } shared_ptr get_pick(); inline void set_shift( bool _shift) { modifiers.set( shift, _shift); } inline void set_ctrl( bool _ctrl) { modifiers.set( ctrl, _ctrl); } inline void set_alt( bool _alt) { modifiers.set( alt, _alt); } // option on Mac keyboard inline void set_command( bool _command) { modifiers.set( command, _command); } inline void set_press( bool _press) { eventtype.set( press, _press); } inline void set_release( bool _release) { eventtype.set( release, _release); } inline void set_click( bool _click) { eventtype.set( click, _click); } inline void set_drag( bool _drag) { eventtype.set( drag, _drag); } inline void set_drop( bool _drop) { eventtype.set( drop, _drop); } inline void set_leftdown( bool _ld) { buttons.set( left, _ld); } inline void set_rightdown( bool _rd) { buttons.set( right, _rd); } inline void set_middledown( bool _md) { buttons.set( middle, _md); } vector project1( vector normal, double dist); vector project2( vector normal, vector point = vector(0,0,0)); // These functions will return an object constructed from std::string, or None. std::string get_press(); std::string get_release(); std::string get_click(); std::string get_drag(); std::string get_drop(); }; /* Objects of this class represent the state of the mouse at a distinct event: * either press, release, click, drag, or drop. */ class event: public mousebase { public: event(){} }; /* A class exported to python as the single object display.mouse. * All of the python access for data within this class get the present value of * the data. */ class mouse_t : public mousebase { private: // The bool tells whether or not the click was a left click or not. atomic_queue > events; int click_count; // number of queued events which are left clicks public: mouse_t() : click_count(0) {} virtual ~mouse_t(); // The following member functions are synchronized - no additional locking // is requred. int num_events() const; void clear_events(int); int num_clicks() const; // Exposed as the function display.mouse.getevent() shared_ptr pop_event(); // Exposed as the function mouse.getclick() shared_ptr pop_click(); /** Push a new event onto the queue. This function is not exposed to Python. */ void push_event( shared_ptr); }; // Convenience functions for creating event objects. // which represents which mouse button is involved: // 1 for left // 2 for right // 3 for middle // no other number is valid. shared_ptr click_event( int which, const mouse_t& mouse); shared_ptr drop_event( int which, const mouse_t& mouse); shared_ptr press_event( int which, const mouse_t& mouse); shared_ptr drag_event( int which, const mouse_t& mouse); shared_ptr release_event( int which, const mouse_t& mouse); // Utility object for tracking mouse press, release, clicks, drags, and drops. struct mousebutton { bool down; bool dragging; float last_down_x; float last_down_y; mousebutton() : down(false), dragging(false), last_down_x(-1.0f), last_down_y(-1.0f) {} // When the button is pressed, call this function with its screen // coordinate position. It returns true if this is a unique event bool press( float x, float y) { if (down) { return false; } down = true; last_down_x = x; last_down_y = y; dragging = false; return true; } // Returns true when a drag event should be generated, false otherwise bool is_dragging() { if (down && !dragging) { dragging = true; return true; } return false; } // Returns (is_unique, is_drop) std::pair release() { bool unique = down; down = false; last_down_x = -1; last_down_y = -1; return std::make_pair(unique, dragging); } }; /* * A thin wrapper for buffering cursor visibility information between the python loop * and the rendering loop. */ class cursor_object { public: //mutex mtx; bool visible; // whether cursor should be visible bool last_visible; // previous state of cursor visibility inline cursor_object() : visible(true), last_visible(true) {} void set_visible( bool vis) { visible = vis; } //bool get_visible() { mutex::lock L(mtx); return visible; } bool get_visible() { return visible; } }; } // !namespace cvisual #endif // !VPYTHON_MOUSEOBJECT_HPP visual-5.12_release/include/stamp-h10000644000175000017500000000003711243356601014366 00000000000000timestamp for include/config.h visual-5.12_release/include/python/0000777000175000017500000000000011243357451014422 500000000000000visual-5.12_release/include/python/scalar_array.hpp0000644000175000017500000000607610167042572017522 00000000000000#ifndef VPYTHON_PYTHON_SCALAR_ARRAY_HPP #define VPYTHON_PYTHON_SCALAR_ARRAY_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "util/vector.hpp" #include #include namespace cvisual { namespace python { class vector_array; class scalar_array { private: std::deque data; friend class vector_array; public: typedef std::deque::iterator iterator; typedef std::deque::const_iterator const_iterator; inline scalar_array( int size = 0, double fill = 0) : data( size, fill) {} // Construct from a continuous 1-D sequence (tuple or list) explicit scalar_array( const boost::python::list& sequence); explicit scalar_array( const boost::python::numeric::array& sequence); inline scalar_array( const scalar_array& other) : data( other.data) {} boost::python::handle as_array() const; inline iterator begin() { return data.begin(); } inline const_iterator begin() const { return data.begin(); } inline iterator end() { return data.end(); } inline const_iterator end() const { return data.end(); } // Append a single element to the array. void append( double s); // Prepend a single element the the array. void prepend( double s); // Remove a single element from the beginning of the array void head_clip(); // Remove i elemnts from the beginning of the array. void head_crop( int i); // Remove a single element from the end of the array. void tail_clip(); // Remove i elements from the end of the array. void tail_crop( int i); scalar_array operator*( double s) const; scalar_array operator*( const scalar_array& s) const; vector_array operator*( const vector_array& v) const; vector_array operator*( const vector& v) const; const scalar_array& operator*=( double s); const scalar_array& operator*=( const scalar_array& s); scalar_array operator/( double s) const; scalar_array operator/( const scalar_array& s) const; const scalar_array& operator/=( double s); const scalar_array& operator/=( const scalar_array& s); scalar_array operator+( const scalar_array& s) const; scalar_array operator+( double s) const; const scalar_array& operator+=( double s); const scalar_array& operator+=( const scalar_array& s); scalar_array operator-( const scalar_array& s) const; scalar_array operator-( double s) const; const scalar_array& operator-=( double s); const scalar_array& operator-=( const scalar_array& s); scalar_array operator-() const; inline double& operator[]( int i) { return data[i]; } inline const double& operator[]( int i) const { return data[i]; } // Returns the number of elemnts in the array. inline int size() const { return data.size(); } double py_getitem( int index); void py_setitem( int index, double value); double sum() const; }; void wrap_scalar_array(); } } // !namepace cvisual::python #endif // !VPYTHON_PYTHON_SCALAR_ARRAY_HPP visual-5.12_release/include/python/slice.hpp0000644000175000017500000000460510107527032016143 00000000000000#ifndef VPYTHON_PYTHON_SLICE_HPP #define VPYTHON_PYTHON_SLICE_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include #include #include #include namespace cvisual { namespace python { using boost::python::slice_nil; namespace detail = boost::python::detail; class slice : public boost::python::object { public: // Equivalent to slice(::) slice(); // Each argument must be int, slice_nil, or implicitly convertable to int template slice( Integer1 start, Integer2 stop) : boost::python::object( boost::python::detail::new_reference( PySlice_New( object(start).ptr(), object(stop).ptr(), NULL))) {} template slice( Integer1 start, Integer2 stop, Integer3 stride) : boost::python::object( boost::python::detail::new_reference( PySlice_New( object(start).ptr(), object(stop).ptr(), object(stride).ptr()))) {} // Get the Python objects associated with the slice. In principle, these // may be any arbitrary Python type, but in practice they are usually // integers. If one or more parameter is ommited in the Python expression // that created this slice, than that parameter is None here, and compares // equal to a default-constructed boost::python::object. // If a user-defined type wishes to support slicing, then support for the // special meaning associated with negative indicies is up to the user. boost::python::object start(); boost::python::object stop(); boost::python::object step(); public: // This declaration, in conjunction with the specialization of // object_manager_traits<> below, allows C++ functions accepting slice // arguments to be called from from Python. These constructors should never // be used in client code. BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(slice, boost::python::object) }; } } // !namespace cvisual::python namespace boost { namespace python { namespace converter { template<> struct object_manager_traits : pytype_object_manager_traits<&PySlice_Type, cvisual::python::slice> { }; } } }// !namesapce boost::python::converter #endif // !defined VVPYTHON_PYTHON_SLICE_HPP visual-5.12_release/include/python/num_util_impl.hpp0000644000175000017500000000214010432124303017704 00000000000000#ifndef VPYTHON_PYTHON_NUM_UTIL_IMPL_HPP #define VPYTHON_PYTHON_NUM_UTIL_IMPL_HPP /** This file contains the set of function pointers that will be called by the utility functions in num_util. They are declared here, and defined in num_util.cpp. They are initialized to NULL statically, and the functions init_numarray() in num_util_numarray.{h,h}pp and init_numeric() in num_util_numeric.{h,c}pp initialize both their internal function pointers and set the implementation function pointers to their independant implementations. */ #include "python/num_util.hpp" #ifdef HAVE_CONFIG_H # include "config.h" #else // A slightly more sane default? # define VISUAL_HAVE_NUMERIC # undef VISUAL_HAVE_NUMARRAY #endif namespace cvisual { namespace python { extern array (*makeNum_impl)(std::vector, array_types); extern array_types (*type_impl)(array); extern std::vector (*shape_impl)(array); extern bool (*iscontiguous_impl)(array); extern char* (*data_impl)(const array&); extern array (*astype_impl)(array, array_types); } } // !namespace cvisual::python #endif // !defined VISUAL_NUM_UTIL_IMPL_HPP visual-5.12_release/include/python/wrap_vector.hpp0000644000175000017500000000052310170030554017370 00000000000000#ifndef CVISUAL_PYTHON_WRAP_VECTOR_HPP #define CVISUAL_PYTHON_WRAP_VECTOR_HPP #include "util/vector.hpp" #include namespace cvisual { // Convert a general Python object to a Visual vector. This function may // throw. cvisual::vector tovector( boost::python::object); } // !namespace cvisual::python #endif visual-5.12_release/include/python/numeric_texture.hpp0000644000175000017500000000432111104430054020254 00000000000000// Copyright (c) 2006 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #ifndef VPYTHON_PYTHON_NUMERIC_TEXTURE_HPP #define VPYTHON_PYTHON_NUMERIC_TEXTURE_HPP #include #include "util/texture.hpp" #include "python/num_util.hpp" #include "wrap_gl.hpp" //AS removed include added typedef for VC++ compatibility. //#include typedef unsigned uint32_t; namespace cvisual { namespace python { /** * Python users can specify a texture as NxMxC, where N and M are preferred to * be powers of 2. C is the number of color channels, and must be one of * 1, 2, 3, or 4. The meaning of the texture is determined by its channels: * 1: luminance or opacity map (default: luminance) * 2: luminance-opacity * 3: RGB * 4: RGBA * * */ class numeric_texture : public texture { private: boost::python::numeric::array texdata; // A texture is data_width x data_height x data_channels size_t data_width; size_t data_height; size_t data_depth; size_t data_channels; NPY_TYPES data_type; // The type of C data in the memory object GLenum data_textype; // The type of GL texture object (GL_ALPHA, GL_RGB, etc) bool data_mipmapped; // true if the data should be mipmapped bool data_antialias; bool data_clamp; size_t tex_width; size_t tex_height; size_t tex_depth; size_t tex_channels; NPY_TYPES tex_type; GLenum tex_textype; bool tex_mipmapped; bool tex_antialias; bool tex_clamp; bool degenerate() const; bool should_reinitialize() const; protected: virtual void gl_init(const struct view&); virtual void gl_transform(void); public: virtual int enable_type() const; numeric_texture(); virtual ~numeric_texture(); void set_data( boost::python::numeric::array data); boost::python::numeric::array get_data(); void set_type( std::string requested_type); std::string get_type() const; void set_mipmapped( bool); bool is_mipmapped( void); void set_antialias( bool); bool is_antialiased( void); void set_clamp(bool x) { data_clamp = x; } bool get_clamp() { return data_clamp; } }; } } // !namespace cvisual::python #endif /* VPYTHON_PYTHON_NUMERIC_TEXTURE_HPP */ visual-5.12_release/include/python/.cvsignore0000644000175000017500000000001210154672721016327 00000000000000.sconsign visual-5.12_release/include/python/points.hpp0000644000175000017500000000217111107137734016363 00000000000000#ifndef VPYTHON_PYTYHON_POINTS_HPP #define VPYTHON_PYTYHON_POINTS_HPP #include "renderable.hpp" #include "python/num_util.hpp" #include "python/arrayprim.hpp" namespace cvisual { namespace python { class points : public arrayprim_color { private: // Specifies whether or not the size of the points should scale with the // world or with the screen. enum { WORLD, PIXELS } size_units; // Specifies the shape of the point. Future candidates are triangles, // diamonds, etc. enum { ROUND, SQUARE } points_shape; // The size of the points float size; bool degenerate() const; virtual void outer_render( const view&); virtual void gl_render( const view&); virtual vector get_center() const; virtual void gl_pick_render( const view&); virtual void grow_extent( extent&); public: points(); void set_points_shape( const std::string& n_type); std::string get_points_shape( void); void set_size( float r); inline float get_size( void) { return size; } void set_size_units( const std::string& n_type); std::string get_size_units( void); }; } } // !namespace cvisual::python #endif /*VPYTHON_PYTYHON_POINTS_HPP*/ visual-5.12_release/include/python/arrayprim.hpp0000644000175000017500000000565311107116223017053 00000000000000#ifndef VPYTHON_PYTHON_ARRAYPRIM_H #define VPYTHON_PYTHON_ARRAYPRIM_H // Attempt to refactor all the redundant and buggy code in the array primitives. // Frankly I'm not that happy with this design, but it's better than what was here // before. #include "renderable.hpp" #include "python/num_util.hpp" #include "python/slice.hpp" namespace cvisual { namespace python { // An Nx3 array of CTYPES, specialized for use in array primitives. This class // should not go anywhere except inside an array primitive, not even as a return // value for primitive.pos or whatever. template class arrayprim_array : public array, private boost::noncopyable { protected: size_t length; // number of points in the array primitive size_t allocated; // == shape(*this)[0] public: arrayprim_array(); arrayprim_array( const arrayprim_array& r ) //< Actually copies, to avoid aliasing between array primitives : array(object(r)) {} void set_length( size_t new_len ); CTYPE* data(int index=0) { return (CTYPE*)cvisual::python::data(*this) + index*3; } CTYPE* end() { return data(length); } const CTYPE* data(int index=0) const { return (const CTYPE*)cvisual::python::data(*this) + index*3; } const CTYPE* end() const { return data(length); } }; class arrayprim : public renderable { protected: size_t count; virtual void set_length(size_t); slice all() { return slice(0,count); } arrayprim_array pos; public: arrayprim(); boost::python::object get_pos(void); void set_pos( const double_array& pos ); // An Nx3 array of doubles void set_pos_v( const vector& pos ); // Interpreted as a single point void set_x( const double_array& x); void set_x_d( const double x ); void set_y( const double_array& y); void set_y_d( const double y ); void set_z( const double_array& z); void set_z_d( const double z ); void append( const vector& _pos, int retain ); void append( const vector& _pos ) { append( _pos, -1 ); } }; class arrayprim_color : public arrayprim { protected: virtual void set_length(size_t); arrayprim_array color; public: arrayprim_color(); boost::python::object get_color(void); void set_color( const double_array& color ); // An Nx3 array of color floats //void set_color_t( const rgb& color ); // A single tuple - appears to be dealt with fine by implicit conversions? void set_red( const double_array& red ); void set_red_d( const double red ); void set_blue( const double_array& blue ); void set_blue_d( const double blue ); void set_green( const double_array& green ); void set_green_d( const double green ); using arrayprim::append; void append_rgb( const vector& _pos, double red=-1, double green=-1, double blue=-1, int retain=-1 ); void append( const vector& _pos, const rgb& _color, int retain ); // Append a single position with new color. void append( const vector& _pos, const rgb& _color ) { append( _pos, _color, -1 ); } }; } } // namespace cvisual::python #endif visual-5.12_release/include/python/num_util.hpp0000644000175000017500000002011311107137734016677 00000000000000#ifndef VPYTHON_PYTHON_NUM_UTIL_HPP #define VPYTHON_PYTHON_NUM_UTIL_HPP #define PY_ARRAY_UNIQUE_SYMBOL visual_PyArrayHandle #ifndef IMPORT_ARRAY #define NO_IMPORT_ARRAY #endif // num_util.h and num_util.cpp were obtained from: // http://www.eos.ubc.ca/research/clouds/num_util.html on 2003-12-17 under the // terms and conditions of the Boost Software License, version 1.0. num_util // was written by Rhys Goldstein, Chris Seymour and Phil Austin. // Questions or comments about num_util should be directed to Phil Austin at // paustin@eos.ubs.ca. /* Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Changes from the original num_util V1: // - Moved into the visual namespace to prevent clashes with other projects // using num_util. 2003-12-18 // - Changed header inclusion guards to follow the same conventions as the rest // of Visual. 2003-12-18 // - Changed the definition of PY_ARRAY_UNIQUE_SYMBOL to prevent clashes with // other projects using num_util. 2003-12-18 // - Changed header #includes to reduce compile times. 2003-12-19 // - Bring boost::python::numeric::array into the visual namespace for // convienience. 2003-12-19 // - data(), shape(), rank(): Modified to ensure that no calls are made into the // Python interpreter, espcially reference counting operations and PyArray_Check() // For the reference counting operations, we can guarantee that we do not need // them base on the fact that these functions are never called without owning // at least one real boost::python::numeric::array. For the PyArray_Check(), // we can guarantee that we *never* have an array on our hands that is not a // genuine array. These functions needed to be changed to ensure that we do not // call any functions in the interpreter or Numeric from within the rendering // loop since they cause the interpreter to crash sporadically on multiprocessor // machines. 2004-01-12 // Incorporated num_util release 2 to move to compatibility with numpy // Eliminate references to numeric and numarray initiation, add numpy initiation #include #include #include //#include //#include #include #include #include #include namespace cvisual { namespace python { using boost::python::numeric::array; class double_array : public array { public: explicit double_array( const boost::python::handle<>& h ) : array(h) {} //double_array( const array& a ) : array(a) {} //< TODO: callers are doing unnecessary copying; somewhat type unsafe }; //! /** *Creates an one-dimensional numpy array of length n and numpy type t. * The elements of the array are initialized to zero. *@param n an integer representing the length of the array. *@param t elements' numpy type. Default is double. *@return a numeric array of size n with elements initialized to zero. */ array makeNum(npy_intp n, NPY_TYPES t =NPY_DOUBLE); /** *Creates a n-dimensional numpy array with dimensions dimens and numpy *type t. The elements of the array are initialized to zero. *@param dimens a vector of interger specifies the dimensions of the array. *@param t elements' numpy type. Default is double. *@return a numeric array of shape dimens with elements initialized to zero. */ array makeNum(const std::vector& dimens, NPY_TYPES t =NPY_DOUBLE); /** *Function template returns PyArray_Type for C++ type *See num_util.cpp for specializations *@param T C++ type *@return numpy type enum */ /** *A free function that retrieves the numpy type of a numpy array. *@param arr a Boost/Python numeric array. *@return the numpy type of the array's elements */ NPY_TYPES type(array arr); /** *Throws an exception if the actual array type is not equal to the expected *type. *@param arr a Boost/Python numeric array. *@param expected_type an expected numpy type. *@return ----- */ void check_type(array arr, NPY_TYPES expected_type); /** *Returns the dimensions in a vector. *@param arr a Boost/Python numeric array. *@return a vector with integer values that indicates the shape of the array. */ std::vector shape(array arr); /** *Throws an exception if the actual dimensions of the array are not equal to *the expected dimensions. *@param arr a Boost/Python numeric array. *@param expected_dims an integer vector of expected dimension. *@return ----- */ void check_shape(array arr, std::vector expected_dims); /** *Returns true if the array is contiguous. *@param arr a Boost/Python numeric array. *@return true if the array is contiguous, false otherwise. */ bool iscontiguous(array arr); /** *Throws an exception if the array is not contiguous. *@param arr a Boost/Python numeric array. *@return ----- */ void check_contiguous(array arr); /** *Returns a pointer to the data in the array. *@param arr a Boost/Python numeric array. *@return a char pointer pointing at the first element of the array. void* data(array arr); */ /** *Returns a pointer to the data in the array. *@param arr a Boost/Python numeric array. *@return a char pointer pointing at the first element of the array. */ // USED char* data(const array& arr); /** *Returns a clone of this array with a new type. *@param arr a Boost/Python numeric array. *@param t NPY_TYPES of the output array. *@return a replicate of 'arr' with type set to 't'. */ array astype(array arr, NPY_TYPES t); /** *Mapping from a PyArray_TYPE to its corresponding name in string. */ typedef std::map KindStringMap; /** *Mapping from a PyArray_TYPE to its corresponding typeID in char. */ typedef std::map KindCharMap; /** *Mapping from a typeID to its corresponding PyArray_TYPE. */ typedef std::map KindTypeMap; /** *Converts a PyArray_TYPE to its name in string. *@param t_type a NPY_TYPES. *@return the corresponding name in string. */ std::string type2string(NPY_TYPES t_type); /** *Converts a PyArray_TYPE to its single character typecode. *@param t_type a NPY_TYPES. *@return the corresponding typecode in char. */ char type2char(NPY_TYPES t_type); /** *Coverts a single character typecode to its NPY_TYPES. *@param e_type a NPY_TYPES typecode in char. *@return its corresponding NPY_TYPES. */ NPY_TYPES char2type(char e_type); void init_numpy(); // void use_numpy_impl(); size_t typesize( NPY_TYPES t); template struct type_npy_traits { }; template <> struct type_npy_traits { static const int npy_type = NPY_FLOAT; }; template <> struct type_npy_traits { static const int npy_type = NPY_DOUBLE; }; } } // visual #endif visual-5.12_release/include/python/curve.hpp0000644000175000017500000000405711067210666016201 00000000000000#ifndef VPYTHON_PYTHON_CURVE_HPP #define VPYTHON_PYTHON_CURVE_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "util/displaylist.hpp" #include "python/num_util.hpp" #include "python/arrayprim.hpp" namespace cvisual { namespace python { using boost::python::list; using boost::python::numeric::array; class curve : public arrayprim_color { protected: // The pos and color arrays are always overallocated to make appends // faster. Whenever they are read from Python, we return a slice into the // array that starts at its beginning and runs up to the last used position // in the array. This is simmilar to many implementations of std::vector<>. bool antialias; double radius; static const int MAX_SIDES = 20; size_t sides; int curve_slice[512]; float curve_sc[2*MAX_SIDES]; // Returns true if the object is single-colored. bool monochrome(float* tcolor, size_t pcount); virtual void outer_render( const view&); virtual void gl_render( const view&); virtual vector get_center() const; virtual void gl_pick_render( const view&); virtual void grow_extent( extent&); void get_material_matrix( const view& v, tmatrix& out ); // Returns true if the object is degenarate and should not be rendered. bool degenerate() const; // Compute a checksum over the pcount elements of the temporary // position and color arrays. long checksum( double* spos, float* tcolor, size_t pcount); public: curve(); inline bool get_antialias( void) { return antialias; } inline double get_radius( void) { return radius; } void set_antialias( bool); void set_radius( const double& r); private: bool adjust_colors( const view& scene, float* tcolor, size_t pcount); void thickline( const view&, double* spos, float* tcolor, size_t pcount, double scaled_radius); }; } } // !namespace cvisual::python #endif // !VPYTHON_PYTHON_CURVE_HPP visual-5.12_release/include/python/convex.hpp0000644000175000017500000000423311067210666016353 00000000000000#ifndef VPYTHON_PYTHON_CONVEX_HPP #define VPYTHON_PYTHON_CONVEX_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "util/sorted_model.hpp" #include "python/arrayprim.hpp" #include namespace cvisual { namespace python { class convex : public arrayprim { private: struct face : triangle { double d; inline face( const vector& v1, const vector& v2, const vector& v3) : triangle( v1, v2, v3), d( normal.dot(corner[0])) { } inline bool visible_from( const vector& p) { return normal.dot(p) > d; } }; struct edge { vector v[2]; inline edge( vector a, vector b) { v[0]=a; v[1]=b; } inline bool operator==( const edge& b) const { // There are two cases where a pair of edges are equal, the first is // occurs when the endpoints are both the same, while the other occurs // when the edge have the same endpoints in opposite directions. // Since the first case never happens when we construct the hull, we // only test for the second case here. return (v[0] == b.v[1] && v[1] == b.v[0]); } }; struct jitter_table { enum { mask = 1023 }; enum { count = mask+1 }; double v[count]; jitter_table() { for(int i=0; i(rand()) / RAND_MAX - 0.5) * 2 * 1e-6; } }; static jitter_table jitter; // Use default construction for initialization. long last_checksum; long checksum() const; bool degenerate() const; // Hull construction routines. void recalc(); void add_point( size_t, vector); std::vector hull; vector min_extent, max_extent; public: convex(); void set_color( const rgb&); rgb get_color(); protected: virtual void gl_render( const view&); virtual vector get_center() const; virtual void gl_pick_render( const view&); virtual void grow_extent( extent&); virtual void get_material_matrix( const view&, tmatrix& out ); }; } } // !namespace cvisual::python #endif // !defined VPYTHON_PYTHON_CONVEX_HPP visual-5.12_release/include/python/faces.hpp0000644000175000017500000000277311067210666016141 00000000000000#ifndef VPYTHON_PYTHON_FACES_HPP #define VPYTHON_PYTHON_FACES_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "python/arrayprim.hpp" #include namespace cvisual { namespace python { class faces : public arrayprim_color { protected: arrayprim_array normal; // An array of normal vectors for the faces. virtual void set_length(size_t); bool degenerate() const; virtual void gl_render( const view&); virtual void gl_pick_render( const view&); virtual vector get_center() const; virtual void grow_extent( extent&); virtual void get_material_matrix( const view&, tmatrix& ); public: faces(); // Add another vertex, normal, and color to the faces. void append_rgb( const vector&, const vector&, float red=-1, float green=-1, float blue=-1); void append( const vector&, const vector&, const rgb& ); void append( const vector&, const vector& ); // This routine was adapted from faces_heightfield.py. It averages the normal // vectors at coincident verticies to smooth out boundaries between facets. // No attempt is made to detect sharp edges. void smooth_shade(bool doublesided = true); boost::python::object get_normal(); void set_normal( const double_array& normal); void set_normal_v( const vector); }; } } // !namespace cvisual::python #endif // !defined VPYTHON_PYTHON_FACES_HPP visual-5.12_release/include/python/vector_array.hpp0000644000175000017500000001411610167042611017543 00000000000000#ifndef VPYTON_PYTHON_VECTOR_ARRAY_HPP #define VPYTHON_PYTHON_VECTOR_ARRAY_HPP // Copyright (c) 2003, 2004 Jonathan Brandmeyer. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include #include "util/vector.hpp" #include namespace cvisual { namespace python { class scalar_array; class vector_array { private: std::deque data; friend class scalar_array; public: typedef std::deque::iterator iterator; typedef std::deque::const_iterator const_iterator; vector_array( int size = 0, vector fill = vector()) : data( size, fill){} // Construct from a list of three-element tuples. explicit vector_array( const boost::python::list&); vector_array( const vector_array& v) : data( v.data) {} explicit vector_array( boost::python::numeric::array); inline iterator begin() { return data.begin(); } inline const_iterator begin() const { return data.begin(); } inline iterator end() { return data.end(); } inline const_iterator end() const { return data.end(); } // Append a single vector (or vector represented as a tuple) to the array. void append( const vector& v); void append( const vector_array& va); // Prepend a single vector (or vector represented as a tuple) the the array. void prepend( const vector& v); // Remove a single element from the beginning of the array void head_clip(); // Remove i elemnts from the beginning of the array. void head_crop( int i); // Remove a single element from the end of the array. void tail_clip(); // Remove i elements from the end of the array. void tail_crop( int i); // Scalar operations vector_array operator*( double s) const; vector_array operator*( const scalar_array& s) const; vector_array operator*( vector s) const; vector_array operator/( double s) const; vector_array operator/( const scalar_array& s) const; vector_array operator-() const; const vector_array& operator*=( double s); const vector_array& operator*=( const scalar_array& s); const vector_array& operator/=( double s); const vector_array& operator/=( const scalar_array& s); // Vector operations vector_array operator+( const vector& v) const; vector_array operator-( const vector& v) const; vector_array operator+( const vector_array& v) const; vector_array operator-( const vector_array& v) const; const vector_array& operator+=( const vector& v); const vector_array& operator-=( const vector& v); const vector_array& operator+=( const vector_array& v); const vector_array& operator-=( const vector_array& v); // Compounded operations vector_array cross( const vector& v); vector_array cross( const vector_array& v); vector_array norm() const; scalar_array dot( const vector& v); scalar_array dot( const vector_array& v); vector_array proj( const vector_array& v); vector_array proj( const vector& v); void rotate( const double& angle, vector axis = vector(0,0,0)); scalar_array mag() const; scalar_array mag2() const; scalar_array comp( const vector& v); scalar_array comp( const vector_array& v); // Returns the vector at the specified position. // Use the non-checked version for C++, and the checked version for python. inline vector& operator[]( int i) { return data[i]; } inline const vector& operator[]( int i) const { return data[i]; } // Returns the number of elemnts in the array. inline int size() const { return data.size(); } inline bool empty() const { return data.empty(); } vector& py_getitem( int index); void py_setitem( int index, vector value); scalar_array get_x() const; scalar_array get_y() const; scalar_array get_z() const; void set_x( const scalar_array&); void set_y( const scalar_array&); void set_z( const scalar_array&); void set_x( boost::python::numeric::array); void set_y( boost::python::numeric::array); void set_z( boost::python::numeric::array); // Force every element to be this single value. void set_x( double x); void set_y( double y); void set_z( double z); void set_x( const boost::python::list&); void set_y( const boost::python::list&); void set_z( const boost::python::list&); vector sum() const; // Support expressions matching vector_array = vector - vector_array. vector_array lhs_sub( const vector& v) const; // Array relational comparisons. These operators return a vector_array whose x,y,and z members // are all either 0.0 or 1.1. vector_array operator>=( const double&) const; vector_array operator>=( const scalar_array&) const; vector_array operator>=( const vector_array&) const; vector_array operator<=( const double&) const; vector_array operator<=( const scalar_array&) const; vector_array operator<=( const vector_array&) const; vector_array fabs() const; // Element-wise multiplication... vector_array operator*( const vector_array& v) const; boost::python::handle as_array() const; }; void wrap_vector_array(); // Return an ordered list of collisions detected between a set of spheres // whose centers are encoded in pos, and radii are encoded in radius. // This algorithm runs in O(n*n) time. // The returned list is an ordered list of tuple indexes into the array pos. // e.g., [(2,4)] indicates a collision between the second and fourth spheres. boost::python::list sphere_collisions( const vector_array& pos, const scalar_array& radius); boost::python::list sphere_to_plane_collisions( const vector_array& pos, const scalar_array& radius , vector normal, vector origin); // Support several expressions with a vector_array on the rhs // Note that all of the scalar_array op vector_array expressions are covered // in class scalar_array. inline vector_array operator*( double s, const vector_array& v) { return v * s; } inline vector_array operator-( const vector& v, const vector_array& v_a) { return v_a.lhs_sub( v); } inline vector_array operator+( const vector& v, const vector_array& v_a) { return v_a + v; } } } // !namespace cvisual::python #endif // !VISUAL_VECTOR_ARRAY_H visual-5.12_release/include/python/gil.hpp0000644000175000017500000000101010352560374015612 00000000000000#ifndef VPYTHON_PYTHON_GIL_HPP #define VPYTHON_PYTHON_GIL_HPP #include namespace cvisual { namespace python { class gil_release { PyThreadState *state; public: inline gil_release() : state( PyEval_SaveThread()) {} inline ~gil_release() { PyEval_RestoreThread(state); } }; class gil_lock { PyGILState_STATE state; public: inline gil_lock() : state( PyGILState_Ensure()) {} inline ~gil_lock() { PyGILState_Release( state); } }; } } // !namespace cvisual::python #endif visual-5.12_release/include/gtk2/0000777000175000017500000000000011243357451013750 500000000000000visual-5.12_release/include/gtk2/font_renderer.hpp0000644000175000017500000000156010775002067017232 00000000000000#ifndef VPYTHON_GTK2_FONT_RENDERER_HPP #define VPYTHON_GTK2_FONT_RENDERER_HPP // See text.hpp for public interface #include "text.hpp" #include #include #include #include namespace cvisual { class font_renderer { public: // Create a font_renderer for the requested font. // Must support 'verdana' or 'sans-serif' // Should support 'times new roman' or 'serif', and 'courier new' or 'monospace' font_renderer( const std::wstring& description, int height ); // Returns true if the requested font was available. bool ok(); // Render text and call tx.set_image() void gl_render_to_texture( const struct view&, const std::wstring& text, layout_texture& tx ); private: Glib::RefPtr ft2_context; }; extern Glib::ustring w2u( const std::wstring& ); } // namespace cvisual #endif visual-5.12_release/include/gtk2/render_surface.hpp0000644000175000017500000000355511164172466017377 00000000000000#ifndef VPYTHON_GTK2_RENDER_SURFACE_HPP #define VPYTHON_GTK2_RENDER_SURFACE_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "display_kernel.hpp" #include "mouseobject.hpp" // Part of the gtkglextmm package: #include #include #include #include #include #include namespace cvisual { class render_surface : public Gtk::GL::DrawingArea { private: mouse_manager& mouse; public: render_surface( display_kernel& _core, mouse_manager& mouse, bool activestereo = false); display_kernel& core; void paint(Gtk::Window* window, bool change, bool vis); // if change, install appropriate cursor void swap() { gl_swap_buffers(); } protected: // Low-level signal handlers // Called when the user moves the mouse across the screen. virtual bool on_motion_notify_event( GdkEventMotion* event); // Called when the window is resized. virtual bool on_configure_event( GdkEventConfigure* event); // Called when the mouse enters the scene. virtual bool on_enter_notify_event( GdkEventCrossing* event); // Called when the window is established for the first time. virtual void on_realize(); virtual bool on_expose_event( GdkEventExpose*); virtual bool on_button_press_event( GdkEventButton*); virtual bool on_button_release_event( GdkEventButton*); private: // Timer function for rendering bool forward_render_scene(); template void mouse_event( E* event, int buttons_toggled = 0 ); // Manage the current OpenGL context void gl_begin(); void gl_end(); void gl_swap_buffers(); }; } // !namespace cvisual #endif // !defined VPYTHON_GTK2_RENDER_SURFACE_HPP visual-5.12_release/include/gtk2/.cvsignore0000644000175000017500000000001210154672721015655 00000000000000.sconsign visual-5.12_release/include/gtk2/display.hpp0000644000175000017500000000703211164172466016047 00000000000000#ifndef VPYTHON_GTK2_DISPLAY_HPP #define VPYTHON_GTK2_DISPLAY_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "display_kernel.hpp" #include "gtk2/render_surface.hpp" #include "util/atomic_queue.hpp" #include "mouseobject.hpp" #include #include #include #include #include #include #include #include namespace cvisual { using boost::scoped_ptr; class display : public display_kernel, public sigc::trackable { public: display(); virtual ~display(); // Called by the gui_main class below (or render_manager as its agent) void create(); void destroy(); void paint(); void swap() { area->swap(); } // Tells the application where it can find its data. static void set_dataroot( const std::wstring& dataroot); // Implements key display_kernel virtual methods virtual void activate(bool); EXTENSION_FUNCTION getProcAddress( const char* name ); private: static int get_titlebar_height(); static int get_toolbar_height(); // Signal handlers for the various widgets. void on_fullscreen_clicked(); void on_pan_clicked(); void on_rotate_clicked(); bool on_window_delete( GdkEventAny*); void on_quit_clicked(); void on_zoom_clicked(); bool on_key_pressed( GdkEventKey*); private: scoped_ptr area; Glib::RefPtr glade_file; Gtk::Window* window; }; // A singleton. This class provides all of the abstraction from the Gtk::Main // object, in addition to providing asynchronous communication channels between // threads. class gui_main : public sigc::trackable { private: Gtk::Main kit; Glib::Dispatcher signal_add_display; void add_display_impl(); Glib::Dispatcher signal_remove_display; void remove_display_impl(); Glib::Dispatcher signal_shutdown; void shutdown_impl(); bool poll(); //< Runs periodically to update displays // Storage used for communication, initialized by the caller, filled by the // callee. Some of them are marked volitile to inhibit optimizations that // could prevent a read operation from observing the change in state. mutex call_lock; condition call_complete; display* caller; volatile bool returned; volatile bool waiting_allclosed; volatile bool thread_exited; volatile bool shutting_down; std::vector displays; // Componants of the startup sequence. gui_main(); void run(); static gui_main* self; //< Always initialized by the thread after it starts up. // init_{signal,lock} are always initialized by the Python thread. static mutex* init_lock; static condition* init_signal; static void thread_proc(void); static void init_thread(void); public: // Force all displays to close and exit the Gtk event loop. static void shutdown(); // Called by a display to make it visible, or invisible. static void add_display( display*); static void remove_display( display*); // Called by a display from within the Gtk loop when closed by the user. static void report_window_delete( display*); static void quit(); // This signal is invoked when the gui thread exits on shutdown. // wrap_display_kernel() connects a signal handler that forces Python to // exit upon shutdown of the render loop. static boost::signal on_shutdown; }; } // !namespace cvisual #endif // !defined VPYTHON_GTK2_DISPLAY_HPP visual-5.12_release/include/gtk2/util/0000777000175000017500000000000011243357451014725 500000000000000visual-5.12_release/include/gtk2/util/timer.hpp0000644000175000017500000000104010761631745016472 00000000000000#ifndef VPYTHON_UTIL_TIMER_HPP #define VPYTHON_UTIL_TIMER_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. namespace cvisual { // On this platform we just use Glib::Timer, which has the same interface // as timer. This file should override vpython-core2/include/util/timer.hpp. #include typedef Glib::Timer render_timer; } // !namespace cvisual #endif // !defined VPYTHON_UTIL_TIMER_HPP visual-5.12_release/include/wrap_gl.hpp0000644000175000017500000000117211063766516015170 00000000000000 #ifndef VPYTHON_WRAP_GL_HPP #define VPYTHON_WRAP_GL_HPP // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. //A header file to wrap around GL/gl.h on *nix and Windows. #if defined(_WIN32) #define WIN32_LEAN_AND_MEAN 1 #define NOMINMAX #include #endif #if defined(__APPLE__) #define GL_GLEXT_LEGACY #include #include #include "GL/glext.h" #else #include #include #include #endif #endif // !defined VPYTHON_WRAP_GL_HPP visual-5.12_release/include/cone.hpp0000644000175000017500000000137111050446342014446 00000000000000#ifndef VPYTHON_CONE_HPP #define VPYTHON_CONE_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "axial.hpp" namespace cvisual { class cone : public axial { private: static void init_model(); bool degenerate(); public: cone(); void set_length( double l); double get_length(); protected: virtual void gl_pick_render( const view&); virtual void gl_render( const view&); virtual void grow_extent( extent&); virtual vector get_center() const; PRIMITIVE_TYPEINFO_DECL; }; } // !namespace cvisual #endif // !defined VPYTHON_CONE_HPP visual-5.12_release/include/mouse_manager.hpp0000644000175000017500000000310511202161366016340 00000000000000#ifndef VPYTHON_MOUSE_MANAGER_HPP #define VPYTHON_MOUSE_MANAGER_HPP #pragma once #include "mouseobject.hpp" namespace cvisual { // mouse_manager is reponsible for translating physical mouse movements into VPython // mouse events and camera actions. class mouse_manager { public: mouse_manager( class display_kernel& display ); // Called by the display driver to report mouse movement // Ideally this should be called in event handlers so that each successive change in mouse state // is captured in order, but a driver might just call this periodically with the current state. // If the mouse is locked, but has "moved" by (dx,dy), the driver should pass get_x()+dx, get_y()+dy void report_mouse_state(int physical_button_count, bool is_button_down[], int cursor_client_x, int cursor_client_y, int shift_state_count, bool shift_state[], bool driver_can_lock_mouse ); bool is_mouse_locked(); //< If this is true, the display driver should hide the mouse cursor and prevent it from moving // Get the current position of the mouse cursor relative to the window client area int get_x(); int get_y(); mouse_t& get_mouse(); void report_setcursor( int, int ); private: void update( bool new_buttons[], int new_px, int new_py, bool new_shift[], bool can_lock ); mouse_t mouse; display_kernel& display; bool buttons[2]; int px, py; bool locked; int locked_px, locked_py; bool left_down, left_dragging, left_semidrag; bool middle_down, middle_dragging, middle_semidrag; bool right_down, right_dragging, right_semidrag; }; } // namespace cvisual #endif visual-5.12_release/include/display_kernel.hpp0000644000175000017500000003012711202650523016525 00000000000000#ifndef VPYTHON_DISPLAY_KERNEL_HPP #define VPYTHON_DISPLAY_KERNEL_HPP // Copyright (c) 2000, 2001, 2002, 2003 by David Scherer and others. // Copyright (c) 2003, 2004 by Jonathan Brandmeyer and others. // See the file license.txt for complete license terms. // See the file authors.txt for a complete list of contributors. #include "renderable.hpp" #include "util/vector.hpp" #include "util/rgba.hpp" #include "util/extent.hpp" #include "util/timer.hpp" #include "util/thread.hpp" #include "util/gl_extensions.hpp" #include "util/atomic_queue.hpp" #include "mouse_manager.hpp" #include "mouseobject.hpp" #include #include #include #include #include #include #include namespace cvisual { using boost::indirect_iterator; class cursor_object; /** A class that manages all OpenGL aspects of a given scene. This class requires platform-specific support from render_surface to manage an OpenGL rendering context and mouse and keyboard interaction. */ class display_kernel { private: // Private data shared_ptr > extensions; std::string renderer; std::string version; std::string vendor; double last_time; double render_time; bool realized; static shared_ptr selected; mutex realize_lock; boost::condition realize_condition; private: timer render_timer; // for timing the render pulse shared_vector center; ///< The observed center of the display, in world space. shared_vector forward; ///< The direction of the camera, in world space. shared_vector up; ///< The vertical orientation of the scene, in world space. vector internal_forward; ///< Do not permit internal_forward to be +up or -up vector range; ///< Explicitly specified scene.range, or (0,0,0) vector camera; //< World coordinates of camera location double range_auto; //< Automatically determined camera z from autoscale /** True initally and whenever the camera direction changes. Set to false * after every render cycle. */ bool forward_changed; extent_data world_extent; ///< The extent of the current world. double fov; ///< The field of view, in radians float stereodepth; //< How far in or out of the screen the scene seems to be bool autoscale; ///< True if Visual should scale the camera's position automatically. /** True if Visual should automatically reposition the center of the scene. */ bool autocenter; /** True if the autoscaler should compute uniform axes. */ bool uniform; /** A scaling factor determined by middle mouse button scrolling. */ double user_scale; /** The global scaling factor. It is used to ensure that objects with large dimensions are rendered properly. See the .cpp file for details. */ double gcf; /** Vector version of the global scaling factor used when scene.uniform=0. Affects just curve, points, faces, label, and frame. */ vector gcfvec; /** True if the gcf has changed since the last render cycle. Set to false * after every rendering cycle. */ bool gcf_changed; rgb ambient; ///< The ambient light color. /** Called at the beginning of a render cycle to establish lighting. */ void enable_lights(view& scene); /** Called at the end of a render cycle to complete lighting. */ void disable_lights(); /** Whether or not we should display the speed of the renderer. * Default: false. */ bool show_rendertime; rgb background; ///< The background color of the scene. rgb foreground; ///< The default color for objects to be rendered into the scene. // Whether or not the user is allowed to spin or zoom the display bool spin_allowed; bool zoom_allowed; /** Set up the OpenGL transforms from world space to view space. */ void world_to_view_transform( view&, int whicheye = 0, bool forpick = false); /** Renders the scene for one eye. @param scene The dimensions of the scene, to be propogated to this display_kernel's children. @param eye Which eye is being rendered. -1 for the left, 0 for the center, and 1 for the right. @param anaglyph True if using anaglyph stereo requiring color desaturation or grayscaling. @param coloranaglyph True if colors must be grayscaled, false if colors must be desaturated. */ bool draw( view&, int eye=0, bool anaglyph=false, bool coloranaglyph=false); /** Opaque objects to be rendered into world space. */ std::list > layer_world; typedef indirect_iterator >::iterator> world_iterator; /** objects with a nonzero level of transparency that need to be depth sorted prior to rendering. */ std::vector > layer_world_transparent; typedef indirect_iterator >::iterator> world_trans_iterator; // Computes the extent of the scene and takes action for autozoom and // autoscaling. void recalc_extent(); // Compute the tangents of half the vertical and half the horizontal // true fields-of-view. void tan_hfov( double* x, double* y); void realize(); void implicit_activate(); protected: // Mouse and keyboard objects cursor_object cursor; mouse_manager mouse; atomic_queue keys; // The bounding rectangle of the window on the screen (or equivalent super-window // coordinate system), including all decorations. // If the window is invisible, window_x and/or window_y may be -1, meaning // that the window will be positioned automatically by the window system. int window_x, window_y, window_width, window_height; // The rectangle on the screen into which we can actually draw. // At present, these are undefined until the display is realized, and // they are not used in constructing the display (they are outputs of // that process) // This includes both viewports in a side-by-side stereo mode, whereas // view::view_width does not. int view_x, view_y, view_width, view_height; bool exit; ///< True when Visual should shutdown on window close. bool visible; ///< scene.visible bool explicitly_invisible; ///< true iff scene.visible has ever been set to 0 by the program, or by the user closing a window bool fullscreen; ///< True when the display is in fullscreen mode. bool show_toolbar; ///< True when toolbar is displayed (pan, etc). std::string title; public: // Public Data. gl_extensions glext; enum mouse_mode_t { ZOOM_ROTATE, ZOOM_ROLL, PAN, FIXED } mouse_mode; enum mouse_button { NONE, LEFT, RIGHT, MIDDLE }; enum stereo_mode_t { NO_STEREO, PASSIVE_STEREO, ACTIVE_STEREO, CROSSEYED_STEREO, REDBLUE_STEREO, REDCYAN_STEREO, YELLOWBLUE_STEREO, GREENMAGENTA_STEREO } stereo_mode; /** Older machines should set this to some number between -6 and 0. All of the tesselated models choose a lower level of detail based on this value when it is less than 0. */ int lod_adjust; /** Add a normal renderable object to the list of objects to be rendered into * world space. */ void add_renderable( shared_ptr); /** Remove a renderable object from this display, regardless of which layer * it resides in. */ void remove_renderable( shared_ptr); public: // Public functions // Compute the location of the camera based on the current geometry. vector calc_camera(); display_kernel(); virtual ~display_kernel(); /** Renders the scene once. The enveloping widget is resposible for calling this function appropriately. @return If false, something catastrophic has happened and the application should probably exit. */ bool render_scene(); /** Inform this object that the window has been closed (is no longer physically visible) */ void report_closed(); /** Called by mouse_manager to report mouse movement that should affect the camera. Report that the mouse moved with one mouse button down. @param dx horizontal change in mouse position in pixels. @param dy vertical change in mouse position in pixels. */ void report_camera_motion( int dx, int dy, mouse_button button); /** Report that the position and/or size of the widget has changed. Some platforms might not know about position changes; they can pass (x,y,new_width,new_height) win_* give the window rectangle (see this->window_*) v_* give the view rectangle (see this->view_*) */ void report_resize( int win_x, int win_y, int win_w, int win_h, int v_x, int v_y, int v_w, int v_h ); /** Determine which object (if any) was picked by the cursor. @param x the x-position of the mouse cursor, in pixels. @param y the y-position of the mouse cursor, in pixels. @param d_pixels the allowable variation in pixels to successfully score a hit. @return the nearest selected object, the position that it was hit, and the position of the mouse cursor on the near clipping plane. retval.get<0>() may be NULL if nothing was hit, in which case the positions are undefined. */ boost::tuple, vector, vector> pick( int x, int y, float d_pixels = 2.0); /** Recenters the scene. Call this function exactly once to move the visual * center of the scene to the true center of the scene. This will work * regardless of the value of this->autocenter. */ void recenter(); /** Rescales the scene. Call this function exactly once to scale the scene * such that it fits within the entire window. This will work * regardless of the value of this->autoscale. */ void rescale(); /** Release GL resources. Call this as many times as you like during the * shutdown. However, neither pick() nor render_scene() may be called on * any display_kernel after gl_free() has been invoked. */ void gl_free(); void allow_spin(bool); bool spin_is_allowed(void) const; void allow_zoom(bool); bool zoom_is_allowed(void) const; // Python properties void set_up( const vector& n_up); shared_vector& get_up(); void set_forward( const vector& n_forward); shared_vector& get_forward(); void set_scale( const vector& n_scale); vector get_scale(); void set_center( const vector& n_center); shared_vector& get_center(); void set_fov( double); double get_fov(); void set_lod(int); int get_lod(); void set_uniform( bool); bool is_uniform(); void set_background( const rgb&); rgb get_background(); void set_foreground( const rgb&); rgb get_foreground(); void set_autoscale( bool); bool get_autoscale(); void set_autocenter( bool); bool get_autocenter(); void set_show_rendertime( bool); bool is_showing_rendertime(); void set_range_d( double); void set_range( const vector&); vector get_range(); void set_ambient_f( float); void set_ambient( const rgb&); rgb get_ambient(); void set_stereodepth( float); float get_stereodepth(); // The only mode that cannot be changed after initialization is active, // which will result in a gl_error exception when rendered. The completing // display class will have to perform some filtering on this parameter. This // properties setter will not change the mode if the new one is invalid. void set_stereomode( std::string mode); std::string get_stereomode(); // A list of all objects rendered into this display_kernel. Modifying it // does not propogate to the owning display_kernel. std::vector > get_objects() const; std::string info( void); void set_x( float x); float get_x(); void set_y( float y); float get_y(); void set_width( float w); float get_width(); void set_height( float h); float get_height(); void set_visible( bool v); bool get_visible(); void set_title( std::string n_title); std::string get_title(); bool is_fullscreen(); void set_fullscreen( bool); bool get_exit(); void set_exit(bool); bool is_showing_toolbar(); void set_show_toolbar( bool); static bool enable_shaders; cursor_object* get_cursor(); mouse_t* get_mouse(); atomic_queue* get_kb(); static void set_selected( shared_ptr ); static shared_ptr get_selected(); static void waitWhileAnyDisplayVisible(); bool hasExtension( const std::string& ext ); typedef void (APIENTRYP EXTENSION_FUNCTION)(); virtual EXTENSION_FUNCTION getProcAddress( const char* ); virtual void activate( bool active ) = 0; }; } // !namespace cvisual #endif // !defined VPYTHON_DISPLAY_KERNEL_HPP visual-5.12_release/include/win32/0000777000175000017500000000000011243357451014043 500000000000000visual-5.12_release/include/win32/font_renderer.hpp0000644000175000017500000000136410775002067017327 00000000000000#ifndef VPYTHON_WIN32_FONT_RENDERER_HPP #define VPYTHON_WIN32_FONT_RENDERER_HPP #pragma once // See text.hpp for public interface #include "text.hpp" namespace cvisual { class font_renderer { public: // Create a font_renderer for the requested font. // Must support 'verdana' or 'sans-serif' // Should support 'times new roman' or 'serif', and 'courier new' or 'monospace' font_renderer( const std::wstring& description, int height ); // Returns true if the requested font was available. bool ok(); // Render text and call tx.set_image() void gl_render_to_texture( const struct view&, const std::wstring& text, layout_texture& tx ); ~font_renderer(); private: void* font_handle; bool isClearType; }; } // namespace cvisual #endifvisual-5.12_release/include/win32/display.hpp0000644000175000017500000000502111071212015016114 00000000000000#ifndef VPYTHON_WIN32_DISPLAY_HPP #define VPYTHON_WIN32_DISPLAY_HPP #include "display_kernel.hpp" #include "util/thread.hpp" #include #include namespace cvisual { class display : public display_kernel { public: display(); virtual ~display(); // Called by the gui_main class below (or render_manager as its agent) void create(); void destroy(); void paint(); void swap() { gl_swap_buffers(); } // Tells the application where it can find its data. // Win32 doesn't use this information. static void set_dataroot( const std::wstring& ) {}; // Implements key display_kernel virtual methods virtual void activate( bool active ); virtual EXTENSION_FUNCTION getProcAddress( const char* name ); private: friend class font; static LRESULT CALLBACK dispatch_messages( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); static display* current; HWND widget_handle; HDC dev_context; HGLRC gl_context; bool window_visible; static void register_win32_class(); static WNDCLASS win32_class; // Procedures used to process messages. LRESULT on_showwindow( WPARAM, LPARAM); LRESULT on_mouse( WPARAM, LPARAM); LRESULT on_paint( WPARAM, LPARAM ); LRESULT on_close( WPARAM, LPARAM ); LRESULT on_destroy( WPARAM, LPARAM ); LRESULT on_getminmaxinfo( WPARAM, LPARAM); LRESULT on_keyUp( UINT, WPARAM, LPARAM); LRESULT on_keyDown( UINT, WPARAM, LPARAM); LRESULT on_keyChar( UINT, WPARAM, LPARAM); LRESULT on_size( WPARAM, LPARAM); LRESULT on_move( WPARAM, LPARAM); LRESULT on_activate( WPARAM, LPARAM ); void update_size(); // Functions to manipulate the OpenGL context void gl_begin(); void gl_end(); void gl_swap_buffers(); }; class gui_main { private: // Components of the startup sequence. static void init_thread(void); gui_main(); //< This is the only nonstatic member function that doesn't run in the gui thread! void run(); void poll(); static gui_main* self; DWORD gui_thread; mutex init_lock; condition initialized; HANDLE timer_handle; static LRESULT CALLBACK threadMessage( int, WPARAM, LPARAM ); static VOID CALLBACK timer_callback( PVOID, BOOLEAN ); public: // Calls the given function in the GUI thread. static void call_in_gui_thread( const boost::function< void() >& f ); // This signal is invoked when the user closes the program (closes a display // with display.exit = True). // wrap_display_kernel() connects a signal handler that forces Python to // exit. static boost::signal on_shutdown; }; } // !namespace cvisual #endif /*VPYTHON_WIN32_DISPLAY_HPP*/ visual-5.12_release/include/config.h.in0000644000175000017500000000170110432145144015030 00000000000000#ifndef VISUAL_CONFIG_H #define VISUAL_CONFIG_H // Copyright (c) 2000, 2001, 2002, 2003 by David Scherrer and others. // See the file liscence.txt for complete liscence terms. // See the file authors.txt for a complete list of contributors. /* * Configuration header file. This file is automatically generated by configure. * You should change config.h.in and configure.ac rather than this file * See also platform.h */ /* * Set this to 1 if we are building on some Win32 platform */ #undef HAVE_WIN32_API /* * Set this to 1 if your platform supports GtkGLarea. */ #undef HAVE_GTK_GL_AREA /* * Set this to 1 if your platform supports GtkGLExtmm. * This support is experimental */ #undef HAVE_GTK_GL_EXT_MM /* * Set this to 1 if you want to build Visual with support for Numeric */ #undef VISUAL_HAVE_NUMERIC /* * Set this to 1 if you want to build Visual with support for Numarray */ #undef VISUAL_HAVE_NUMARRAY #endif // !VISUAL_CONFIG_H visual-5.12_release/py-compile0000755000175000017500000001005611171043334013370 00000000000000#!/bin/sh # py-compile - Compile a Python program scriptversion=2005-05-14.22 # Copyright (C) 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if [ -z "$PYTHON" ]; then PYTHON=python fi basedir= destdir= files= while test $# -ne 0; do case "$1" in --basedir) basedir=$2 if test -z "$basedir"; then echo "$0: Missing argument to --basedir." 1>&2 exit 1 fi shift ;; --destdir) destdir=$2 if test -z "$destdir"; then echo "$0: Missing argument to --destdir." 1>&2 exit 1 fi shift ;; -h|--h*) cat <<\EOF Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..." Byte compile some python scripts FILES. Use --destdir to specify any leading directory path to the FILES that you don't want to include in the byte compiled file. Specify --basedir for any additional path information you do want to be shown in the byte compiled file. Example: py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py Report bugs to . EOF exit $? ;; -v|--v*) echo "py-compile $scriptversion" exit $? ;; *) files="$files $1" ;; esac shift done if test -z "$files"; then echo "$0: No files given. Try \`$0 --help' for more information." 1>&2 exit 1 fi # if basedir was given, then it should be prepended to filenames before # byte compilation. if [ -z "$basedir" ]; then pathtrans="path = file" else pathtrans="path = os.path.join('$basedir', file)" fi # if destdir was given, then it needs to be prepended to the filename to # byte compile but not go into the compiled file. if [ -z "$destdir" ]; then filetrans="filepath = path" else filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)" fi $PYTHON -c " import sys, os, string, py_compile files = '''$files''' print 'Byte-compiling python modules...' for file in string.split(files): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue print file, sys.stdout.flush() py_compile.compile(filepath, filepath + 'c', path) print" || exit $? # this will fail for python < 1.5, but that doesn't matter ... $PYTHON -O -c " import sys, os, string, py_compile files = '''$files''' print 'Byte-compiling python modules (optimized versions) ...' for file in string.split(files): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue print file, sys.stdout.flush() py_compile.compile(filepath, filepath + 'o', path) print" 2>/dev/null || : # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: visual-5.12_release/examples/0000777000175000017500000000000011243357450013273 500000000000000visual-5.12_release/examples/texturetest.py0000644000175000017500000000301611103614125016147 00000000000000from visual import * # Jonathan Brandmeyer scene.background = color.gray(0.8) checkerboard = array([[0,0,1,1], [0,0,1,1], [1,1,0,0], [1,1,0,0]], float) lum = materials.texture( data=checkerboard, mapping="rectangular", interpolate=False) op = materials.texture( data=checkerboard, channels=["luminance"], mapping="rectangular", interpolate=False) balp1 = box( axis=(0,0,1), color=color.orange, material=op) blum1 = box( axis=(0,0,1), color=color.orange, material=lum, pos=(-2, 0)) box( pos=(0, 2), color=color.orange, opacity=0.5) box( pos=(0,-2), color=color.orange) blum2 = box( pos=(0, 0, -2), axis=(0,0,1), color=color.orange, material=lum) z = arrow(color=color.green) z.axis *= 2 scene.mouse.getclick() # Change the texture save = array(checkerboard[:,1]) checkerboard[:,1] = checkerboard[:,2] checkerboard[:,2] = save save = array(checkerboard[1,:]) checkerboard[1,:] = checkerboard[2,:] checkerboard[2,:] = save # Recreate and reassign the textures; Visual doesn't check for texture changes lum = materials.texture( data=checkerboard, mapping="rectangular", interpolate=False) op = materials.texture( mipmap=False, data=checkerboard, channels=["luminance"], mapping="rectangular", interpolate=False) balp1.material = op blum1.material = lum blum2.material = lum visual-5.12_release/examples/doublependulum.py0000644000175000017500000000605210466262740016613 00000000000000from visual import * # Double pendulum # The analysis is in terms of Lagrangian mechanics. # The Lagrangian variables are angle of upper bar, angle of lower bar, # measured from the vertical. # Bruce Sherwood scene.title = 'Double Pendulum' scene.height = scene.width = 800 g = 9.8 M1 = 2.0 M2 = 1.0 d = 0.05 # thickness of each bar gap = 2.*d # distance between two parts of upper, U-shaped assembly L1 = 0.5 # physical length of upper assembly; distance between axles L1display = L1+d # show upper assembly a bit longer than physical, to overlap axle L2 = 1.0 # physical length of lower bar L2display = L2+d/2. # show lower bar a bit longer than physical, to overlap axle # Coefficients used in Lagrangian calculation A = (1./4.)*M1*L1**2+(1./12.)*M1*L1**2+M2*L1**2 B = (1./2.)*M2*L1*L2 C = g*L1*(M1/2.+M2) D = M2*L1*L2/2. E = (1./12.)*M2*L2**2+(1./4.)*M2*L2**2 F = g*L2*M2/2. hpedestal = 1.3*(L1+L2) # height of pedestal wpedestal = 0.1 # width of pedestal tbase = 0.05 # thickness of base wbase = 8.*gap # width of base offset = 2.*gap # from center of pedestal to center of U-shaped upper assembly top = vector(0,0,0) # top of inner bar of U-shaped upper assembly scene.center = top-vector(0,(L1+L2)/2.,0) theta1 = 1.3*pi/2. # initial upper angle (from vertical) theta1dot = 0 # initial rate of change of theta1 theta2 = 0 # initial lower angle (from vertical) theta2dot = 0 # initial rate of change of theta2 pedestal = box(pos=top-vector(0,hpedestal/2.,offset), height=1.1*hpedestal, length=wpedestal, width=wpedestal, color=(0.4,0.4,0.5)) base = box(pos=top-vector(0,hpedestal+tbase/2.,offset), height=tbase, length=wbase, width=wbase, color=pedestal.color) axle = cylinder(pos=top-vector(0,0,gap/2.-d/4.), axis=(0,0,-offset), radius=d/4., color=color.yellow) frame1 = frame(pos=top) bar1 = box(frame=frame1, pos=(L1display/2.-d/2.,0,-(gap+d)/2.), size=(L1display,d,d), color=color.red) bar1b = box(frame=frame1, pos=(L1display/2.-d/2.,0,(gap+d)/2.), size=(L1display,d,d), color=color.red) axle1 = cylinder(frame=frame1, pos=(L1,0,-(gap+d)/2.), axis=(0,0,gap+d), radius=axle.radius, color=axle.color) frame1.axis = (0,-1,0) frame2 = frame(pos=frame1.axis*L1) bar2 = box(frame=frame2, pos=(L2display/2.-d/2.,0,0), size=(L2display,d,d), color=color.green) frame2.axis = (0,-1,0) frame1.rotate(axis=(0,0,1), angle=theta1) frame2.rotate(axis=(0,0,1), angle=theta2) scene.autoscale = 0 dt = 0.001 t = 0. while 1: rate(1./dt) # Calculate accelerations of the Lagrangian coordinates: atheta1 = ((E*C/B)*sin(theta1)-F*sin(theta2))/(D-E*A/B) atheta2 = -(A*atheta1+C*sin(theta1))/B # Update velocities of the Lagrangian coordinates: theta1dot = theta1dot+atheta1*dt theta2dot = theta2dot+atheta2*dt # Update Lagrangian coordinates: dtheta1 = theta1dot*dt dtheta2 = theta2dot*dt theta1 = theta1+dtheta1 theta2 = theta2+dtheta2 frame1.rotate(axis=(0,0,1), angle=dtheta1) frame2.pos = top+frame1.axis*L1 frame2.rotate(axis=(0,0,1), angle=dtheta2) t = t+dt visual-5.12_release/examples/faces_cone.py0000644000175000017500000000220111103656756015647 00000000000000from visual import * # Example of use of faces object for building arbitrary shapes (here, a cone) # David Scherer July 2001 f = frame() box( size=(0.5,0.5,0.5) ) # Make a cone (smooth shading, no bottom, normals are not quite physical) N = 20 try: # numpy model = faces( pos = zeros( (N*3,3), float ), frame = f ) except: # older Numeric model = faces( pos = zeros( (N*3,3), Float ), frame = f ) t = arange(0,2*pi+2*pi/N,2*pi/N) # Vertex 0 of triangles model.pos[0::3, 0] = sin(t[:-1]) model.pos[0::3, 2] = cos(t[:-1]) # Vertex 1 of triangles model.pos[1::3, 0] = sin(t[1:]) model.pos[1::3, 2] = cos(t[1:]) # Vertex 2 of triangles (point of cone) model.pos[2::3, 1] = 2 # Construct normals to the edges of the triangles model.normal = model.pos model.normal[2::3,0] = sin(t[1:]) model.normal[0::1,1] = 0.5 model.normal[2::3,2] = cos(t[1:]) # Give each face a hue running from 0 to 1 model.color = model.pos for vertex in range(3*N): hue = float(vertex // 3)/N model.color[vertex] = color.hsv_to_rgb((hue,1,1)) ##model.color = model.pos/2 + (0.5,0,0.5) # alternative coloring while 1: rate(100) f.rotate(angle=0.01) visual-5.12_release/examples/material_test.py0000644000175000017500000000350011110617631016405 00000000000000from __future__ import division from visual import * test_materials_individually = False scene.width = scene.height = 600 scene.range = 7 scene.forward = (1,-1,-1) axis = (1,0,0) ##obj = box ##obj = cylinder; axis = (0,1,0) obj = sphere R = 0.9 L = 10 scene.visible = 0 lite = local_light( pos = (0,0,0), color = (.6,.6,0.3) ) lite.m = sphere( pos = lite.pos, radius = 0.1, color = (1,1,.8), material = materials.emissive) spheres = [] for mat in (materials.materials+[None]): if test_materials_individually: scene.visible = 0 if mat: print mat.name spheres.append( obj( radius = R, length = sqrt(2)*R, height = sqrt(2)*R, width = sqrt(2)*R, axis = axis, material = mat ) ) if test_materials_individually: scene.visible = 1 box( pos = (0,-0.5*R,0), size=(L,R,L), material = materials.wood ) N = 4 xi = -L/2 + 1.5*R dx = (L - 3*R)/(N-1) for i,s in enumerate(spheres): if i <= 1: s.pos = (xi + (1-i+0.5)*dx, R, xi) elif 2 <= i <= 5: s.pos = (xi+(5-i)*dx, R, xi+1.5*dx) elif 6 <= i <= 8: s.pos = (xi+(i-6+0.5)*dx, R, xi+3*dx) else: s.pos = (xi+2.5*dx, R, xi) loc = s.pos-vector(0,R,0) if hasattr(s.material, "name"): s.label = label( text = s.material.name, pos = loc ) else: s.label = label( text = "Legacy", pos = loc ) if hasattr(s.material, "color"): s.color = s.material.color scene.visible = 1 while 1: rate(100) for s in spheres: s.rotate( axis=scene.up, angle=.01 ) lite.pos = lite.m.pos = scene.mouse.project( point=scene.center, normal=scene.forward ) if scene.mouse.clicked: p = scene.mouse.getclick().pick if p and p is not lite.m: scene.center = p.pos visual-5.12_release/examples/tictac.py0000644000175000017500000000722511103656756015044 00000000000000## 3-D tictactoe Ruth Chabay 2000/05 from visual import * from tictacdat import * scene.width=600 scene.height=600 scene.title="3D TicTacToe: 4 in a row" # draw board gray = (1,1,1) yo=2. base=grid (n=4, ds=1, gridcolor=gray) base.pos=base.pos+vector(-0.5, -2., -0.5) second=grid(n=4, ds=1, gridcolor=gray) second.pos=second.pos+vector(-0.5, -1., -0.5) third=grid(n=4, ds=1, gridcolor=gray) third.pos=third.pos+vector(-0.5, 0, -0.5) top=grid(n=4, ds=1, gridcolor=gray) top.pos=top.pos+vector(-0.5, 1., -0.5) # get list of winning combinations wins=win() print "****************************************" print "Drag ball up starting from bottom grid." print "Release to deposit ball in a square." print "****************************************" print " " # make sliders bars={} balls={} for x in arange(-2, 2,1): for z in arange(-2, 2,1): cyl=cylinder(pos=(x,-2,z), axis=(0,3,0), radius=0.05, visible=0) bars[(x,-yo,z)]=cyl # set reasonable viewing angle scene.center=(-.5,-.5,-.5) scene.forward = (0,-0.05,-1) scene.autoscale=0 nballs=0 visbar=None red=(1,0,0) blue=(.3,.3,1) bcolor=red point=None won=None while len(balls) < 4*4*4: while 1: rate(100) if scene.mouse.events: p = scene.mouse.getevent() if p.drag: point=p.project(normal=vector(0,1,0),d=-yo) # 'None' if not in plane break # chose valid square if not (point==None): point=(round(point[0]), round(point[1]), round(point[2])) if not (visbar==None): visbar.visible=0 if not (bars.has_key(point)): continue visbar=bars[point] visbar.visible=1 nballs=nballs+1 b=sphere(pos=point, radius=0.3, color=bcolor) while not scene.mouse.events: rate(100) y=scene.mouse.pos.y if y > 1.: y=1. if y < -yo: y=-yo b.y=y scene.mouse.getevent() # get rid of drop depositing ball bpoint=(round(b.x), round(b.y), round(b.z)) if not(balls.has_key(bpoint)): # not already a ball there b.pos=bpoint balls[bpoint]=b if bcolor==red: bcolor=blue else:bcolor=red else: ## already a ball there, so abort b.visible=0 visbar.visible=0 visbar=None # check for four in a row for a in wins: a0=balls.has_key(a[0]) a1=balls.has_key(a[1]) a2=balls.has_key(a[2]) a3=balls.has_key(a[3]) if a0 and a1 and a2 and a3: ccolor=balls[a[0]].color if balls[a[1]].color==balls[a[2]].color==balls[a[3]].color==ccolor: won=ccolor print " " if ccolor==red: print "***********" print " Red wins!" print "***********" else: print "***********" print " Blue wins!" print "***********" for flash in arange(0,5): balls[a[0]].color=(1,1,1) balls[a[1]].color=(1,1,1) balls[a[2]].color=(1,1,1) balls[a[3]].color=(1,1,1) rate(10) balls[a[0]].color=ccolor balls[a[1]].color=ccolor balls[a[2]].color=ccolor balls[a[3]].color=ccolor rate(10) break if not (won==None): break print "game over" visual-5.12_release/examples/toroid.py0000644000175000017500000000507110754644762015077 00000000000000# Magnetic field of a toroid, using Biot-Savart law # Ruth Chabay, Carnegie Mellon University, 2000-05-30 from visual import * scene.width=800 scene.height=800 scene.title="Magnetic Field of a Toroid" scene.minscale=.95 bigradius = 0.25 smallradius=0.03 I=1. muthing=1e-7 nturns=75. # number of loops in helix nsteps=20. # number of straight segments to approximate 1 turn Bideal=muthing*2.*nturns*I/bigradius # Ampere's law, inside helix bscale = bigradius/(Bideal*4.) # create toroid and arrows at observation locations toroid = curve(color=(1.,.7,.2), radius=0.003) tr = vector(bigradius, 0, 0) dtheta=2*pi/(nsteps*nturns) phi= 2*pi/nsteps # use invisible arrows here because vector.rotate illegal at present a=arrow(pos=(0,0,0), axis=tr, visible=0) b=arrow(pos=a.axis, axis=(smallradius,0,0), visible=0) zaxis=vector(0,0,1) ocount=(nsteps*nturns/10.) # in order to add zeroth observation loc Barrows=[] for t in arange(0, nsteps*nturns+1): a.rotate(angle=dtheta, axis=(0,0,1)) b.rotate(angle=phi, axis=cross(zaxis,a.axis)) toroid.append(pos=a.axis+b.axis) ocount=ocount+1 if ocount > (nsteps*nturns/10.): ocount=0 # outside toroid (note that B is *very* small here) c=arrow(pos=1.2*a.axis, axis=(0,0,0), color=(0,.6, 1), shaftwidth=0.005) # inside the wire helix (B proportional to 1/r) Barrows.append(c) c=arrow(pos=1.07*a.axis, axis=(0,0,0), color=(0,.6, 1), shaftwidth=0.005) Barrows.append(c) c=arrow(pos=a.axis, axis=(0,0,0), color=(0,.6, 1), shaftwidth=0.005) Barrows.append(c) c=arrow(pos=0.93*a.axis, axis=(0,0,0), color=(0,.6, 1), shaftwidth=0.005) Barrows.append(c) # inside toroid (small, in +z direction, due to loop current) c=arrow(pos=0.8*a.axis, axis=(0,0,0), color=(0,.6, 1), shaftwidth=0.005) Barrows.append(c) # uncomment to visualize r #rarrow=arrow(pos=(0,0,0), axis=(0,0,0), color=(1,0,1), shaftwidth=0.01) # visualize dl as integration progresses dlarrow=arrow(pos=(0,0,0), axis=(0,0,0), color=(0,1,0), shaftwidth=0.005) oldpt = toroid.pos[0] for pt in toroid.pos: dl=vector(pt-oldpt) source=oldpt+dl/2. dlarrow.axis=dl*2 dlarrow.pos=source for b in Barrows: r=vector(b.pos-source) # uncomment to visualize r # rarrow.pos=source # rarrow.axis=r # rate(30) dB=muthing*I*cross(dl,r)/r.mag**3 b.axis=b.axis+dB*bscale oldpt=pt dlarrow.visible=0 print "computed value at R: ",Barrows[2].axis.mag/bscale print "Ampere's law value: ", Bideal visual-5.12_release/examples/dipole.py0000644000175000017500000000220410715120637015031 00000000000000from visual import * print """ Click to plot a normalized electric field vector. Vectors are blue if low magnitude, red if high. Right button drag to rotate camera to view scene. On a one-button mouse, right is Command + mouse. Middle button drag up or down to zoom in or out. On a two-button mouse, middle is left + right. On a one-button mouse, middle is Option + mouse. """ ec = 1.6e-19 # electron charge scene.title="Electric Field Vectors" scene.range = 2e-13 charges = [ sphere( pos = (-1e-13,0,0), Q = ec, color=color.red, radius = 6e-15 ), sphere( pos = ( 1e-13,0,0), Q = -ec, color=color.blue, radius = 6e-15 ), ] def getfield(p): f = vector(0,0,0) for c in charges: f = f + (p-c.pos) * 8.988e9 * c.Q / mag(p-c.pos)**3 return f while 1: p = scene.mouse.getclick().pos f = getfield(p) m = mag(f) red = maximum( 1-1e17/m, 0 ) blue = minimum( 1e17/m, 1 ) if red >= blue: blue = blue/red red = 1.0 else: red = red/blue blue = 1.0 arrow( pos=p, axis=f * (4e-14/1e17), shaftwidth = 6e-15, color=(red,0,blue)) visual-5.12_release/examples/gas.py0000644000175000017500000001143411131534667014341 00000000000000from visual import * from visual.graph import * from random import random # A model of an ideal gas with hard-sphere collisions # Program uses numpy arrays for high speed computations # Bruce Sherwood win=500 Natoms = 100 # change this to have more or fewer atoms # Typical values L = 1. # container is a cube L on a side gray = (0.7,0.7,0.7) # color of edges of container Matom = 4E-3/6E23 # helium mass Ratom = 0.03 # wildly exaggerated size of helium atom k = 1.4E-23 # Boltzmann constant T = 300. # around room temperature dt = 1E-5 scene = display(title="Gas", width=win, height=win, x=0, y=0, center=(L/2.,L/2.,L/2.)) deltav = 100. # binning for v histogram vdist = gdisplay(x=0, y=win, ymax = Natoms*deltav/1000., width=win, height=0.6*win, xtitle='v', ytitle='dN') theory = gcurve(color=color.cyan) dv = 10. for v in arange(0.,3001.+dv,dv): # theoretical prediction theory.plot(pos=(v, (deltav/dv)*Natoms*4.*pi*((Matom/(2.*pi*k*T))**1.5) *exp((-0.5*Matom*v**2)/(k*T))*v**2*dv)) observation = ghistogram(bins=arange(0.,3000.,deltav), accumulate=1, average=1, color=color.red) xaxis = curve(pos=[(0,0,0), (L,0,0)], color=gray) yaxis = curve(pos=[(0,0,0), (0,L,0)], color=gray) zaxis = curve(pos=[(0,0,0), (0,0,L)], color=gray) xaxis2 = curve(pos=[(L,L,L), (0,L,L), (0,0,L), (L,0,L)], color=gray) yaxis2 = curve(pos=[(L,L,L), (L,0,L), (L,0,0), (L,L,0)], color=gray) zaxis2 = curve(pos=[(L,L,L), (L,L,0), (0,L,0), (0,L,L)], color=gray) Atoms = [] colors = [color.red, color.green, color.blue, color.yellow, color.cyan, color.magenta] poslist = [] plist = [] mlist = [] rlist = [] for i in range(Natoms): Lmin = 1.1*Ratom Lmax = L-Lmin x = Lmin+(Lmax-Lmin)*random() y = Lmin+(Lmax-Lmin)*random() z = Lmin+(Lmax-Lmin)*random() r = Ratom Atoms = Atoms+[sphere(pos=(x,y,z), radius=r, color=colors[i % 6])] mass = Matom*r**3/Ratom**3 pavg = sqrt(2.*mass*1.5*k*T) # average kinetic energy p**2/(2mass) = (3/2)kT theta = pi*random() phi = 2*pi*random() px = pavg*sin(theta)*cos(phi) py = pavg*sin(theta)*sin(phi) pz = pavg*cos(theta) poslist.append((x,y,z)) plist.append((px,py,pz)) mlist.append(mass) rlist.append(r) pos = array(poslist) p = array(plist) m = array(mlist) m.shape = (Natoms,1) # Numeric Python: (1 by Natoms) vs. (Natoms by 1) radius = array(rlist) pos = pos+(p/m)*(dt/2.) # initial half-step while 1: rate(100) observation.plot(data=mag(p/m)) # Update all positions pos = pos+(p/m)*dt try: # numpy r = pos-pos[:,newaxis] # all pairs of atom-to-atom vectors rmag = sqrt(add.reduce(r*r,-1)) # atom-to-atom scalar distances hit = less_equal(rmag,radius+radius[:,None])-identity(Natoms) hitlist = sort(nonzero(hit.flat)[0]).tolist() # i,j encoded as i*Natoms+j except: # old Numeric r = pos-pos[:,NewAxis] # all pairs of atom-to-atom vectors rmag = sqrt(add.reduce(r*r,-1)) # atom-to-atom scalar distances hit = less_equal(rmag,radius+radius[:,NewAxis])-identity(Natoms) hitlist = sort(nonzero(hit.flat)).tolist() # i,j encoded as i*Natoms+j # If any collisions took place: for ij in hitlist: i, j = divmod(ij,Natoms) # decode atom pair hitlist.remove(j*Natoms+i) # remove symmetric j,i pair from list ptot = p[i]+p[j] mi = m[i,0] mj = m[j,0] vi = p[i]/mi vj = p[j]/mj ri = Atoms[i].radius rj = Atoms[j].radius a = mag(vj-vi)**2 if a == 0: continue # exactly same velocities b = 2*dot(pos[i]-pos[j],vj-vi) c = mag(pos[i]-pos[j])**2-(ri+rj)**2 d = b**2-4.*a*c if d < 0: continue # something wrong; ignore this rare case deltat = (-b+sqrt(d))/(2.*a) # t-deltat is when they made contact pos[i] = pos[i]-(p[i]/mi)*deltat # back up to contact configuration pos[j] = pos[j]-(p[j]/mj)*deltat mtot = mi+mj pcmi = p[i]-ptot*mi/mtot # transform momenta to cm frame pcmj = p[j]-ptot*mj/mtot rrel = norm(pos[j]-pos[i]) pcmi = pcmi-2*dot(pcmi,rrel)*rrel # bounce in cm frame pcmj = pcmj-2*dot(pcmj,rrel)*rrel p[i] = pcmi+ptot*mi/mtot # transform momenta back to lab frame p[j] = pcmj+ptot*mj/mtot pos[i] = pos[i]+(p[i]/mi)*deltat # move forward deltat in time pos[j] = pos[j]+(p[j]/mj)*deltat # Bounce off walls outside = less_equal(pos,Ratom) # walls closest to origin p1 = p*outside p = p-p1+abs(p1) # force p component inward outside = greater_equal(pos,L-Ratom) # walls farther from origin p1 = p*outside p = p-p1-abs(p1) # force p component inward # Update positions of display objects for i in range(Natoms): Atoms[i].pos = pos[i] visual-5.12_release/examples/labels.py0000644000175000017500000000075511030326635015025 00000000000000from visual import * x = arrow( color=color.red) tip = label( text="tip", space=0.2, pos=(1,0), opacity=0.5) tail = label( text="tail", xoffset=20, yoffset=10, opacity=0.5) midp = label( text="a\nmidpoint", xoffset=10, yoffset=20, pos=(.5,0), opacity=0.5) print """You should see a single arrow with three labels attached to it. Each label is translucent. The one at the tip should be centered at the tip. The head and tail labels have a single line of text. The midpoint label has two.""" visual-5.12_release/examples/lathe.py0000644000175000017500000000337010531745760014665 00000000000000from visual import * # Create a surface of revolution out of slices that are convex objects # By David Scherer def draw_slice(sweep, r, axis, frame, color): # comment in this line to see where the slices are: #color=(uniform(0,1),uniform(0,1),uniform(0,1)) ls = len(sweep) pos = zeros( (len(r)*ls, 3), float64 ) for j in range(len(r)): pos[j*ls:j*ls+ls] = sweep*r[j] + (axis[j],0,0) return convex(pos=pos, frame = frame, color = color, ) def revolution(radius, length, slices=32, color = (1,1,1), pos = (0,0,0)): r = absolute(radius) # radius is a list of radii for all the slices # sweep = unit circle in the yz plane t = arange(0,2*pi,2*pi/slices) sweep = zeros( (slices,3), float64) # Numeric array (rows=slices)*(columns=3) sweep[:,1] = cos(t) # set middle column to cos(t) sweep[:,2] = sin(t) # set final column to sin(t) # axis[i] = center of the ith slice of the surface axis = arange(0,length,float(length)/len(r)) group = frame(pos = pos) start = 0 for i in range(1,len(r)-1): # if concave, show all convex slices up this point if (r[i+1] + r[i-1] - 2*r[i]) >= 0: # have encountered concave region draw_slice(sweep,r[start:i],axis[start:i], group, color) start = i-1 draw_slice(sweep,r[start:],axis[start:], group, color) return group if __name__ == '__main__': scene.autocenter = 1 t = arange(0,1,0.02) s = revolution(sin(t*12.)*0.5 + 1.0, 5.0, pos=(3,0,0), color=color.red) s.axis = (0,1,0) glass = revolution( [0.5, 0.1, 0.1, 0.1, 0.1, 0.2, 0.3, 0.4, 0.5], length=5.0, color=color.yellow) glass.axis = (0,1,0) visual-5.12_release/examples/stars.py0000644000175000017500000000766411131534667014735 00000000000000from visual import * from time import clock from random import random # Stars interacting gravitationally # Program uses numpy arrays for high speed computations win=600 Nstars = 20 # change this to have more or fewer stars G = 6.7e-11 # Universal gravitational constant # Typical values Msun = 2E30 Rsun = 2E9 Rtrail = 2e8 L = 4e10 vsun = 0.8*sqrt(G*Msun/Rsun) scene = display(title="Stars", width=win, height=win, range=2*L, forward=(-1,-1,-1)) xaxis = curve(pos=[(0,0,0), (L,0,0)], color=(0.5,0.5,0.5)) yaxis = curve(pos=[(0,0,0), (0,L,0)], color=(0.5,0.5,0.5)) zaxis = curve(pos=[(0,0,0), (0,0,L)], color=(0.5,0.5,0.5)) Stars = [] colors = [color.red, color.green, color.blue, color.yellow, color.cyan, color.magenta] poslist = [] plist = [] mlist = [] rlist = [] for i in range(Nstars): x = -L+2*L*random() y = -L+2*L*random() z = -L+2*L*random() r = Rsun/2+Rsun*random() Stars = Stars+[sphere(pos=(x,y,z), radius=r, color=colors[i % 6])] Stars[-1].trail = curve(pos=[Stars[-1].pos], color=colors[i % 6], radius=Rtrail) mass = Msun*r**3/Rsun**3 px = mass*(-vsun+2*vsun*random()) py = mass*(-vsun+2*vsun*random()) pz = mass*(-vsun+2*vsun*random()) poslist.append((x,y,z)) plist.append((px,py,pz)) mlist.append(mass) rlist.append(r) pos = array(poslist) p = array(plist) m = array(mlist) m.shape = (Nstars,1) # Numeric Python: (1 by Nstars) vs. (Nstars by 1) radius = array(rlist) vcm = sum(p)/sum(m) # velocity of center of mass p = p-m*vcm # make total initial momentum equal zero dt = 1000.0 Nsteps = 0 pos = pos+(p/m)*(dt/2.) # initial half-step time = clock() Nhits = 0 while 1: rate(100) # Compute all forces on all stars try: # numpy r = pos-pos[:,newaxis] # all pairs of star-to-star vectors for n in range(Nstars): r[n,n] = 1e6 # otherwise the self-forces are infinite rmag = sqrt(add.reduce(r*r,-1)) # star-to-star scalar distances hit = less_equal(rmag,radius+radius[:,newaxis])-identity(Nstars) hitlist = sort(nonzero(hit.flat)[0]).tolist() # 1,2 encoded as 1*Nstars+2 F = G*m*m[:,newaxis]*r/rmag[:,:,newaxis]**3 # all force pairs except: # old Numeric r = pos-pos[:,NewAxis] # all pairs of star-to-star vectors for n in range(Nstars): r[n,n] = 1e6 # otherwise the self-forces are infinite rmag = sqrt(add.reduce(r*r,-1)) # star-to-star scalar distances hit = less_equal(rmag,radius+radius[:,NewAxis])-identity(Nstars) hitlist = sort(nonzero(hit.flat)) # 1,2 encoded as 1*Nstars+2 F = G*m*m[:,NewAxis]*r/rmag[:,:,NewAxis]**3 # all force pairs for n in range(Nstars): F[n,n] = 0 # no self-forces p = p+sum(F,1)*dt # Having updated all momenta, now update all positions pos = pos+(p/m)*dt # Update positions of display objects; add trail for i in range(Nstars): Stars[i].pos = pos[i] if Nsteps % 10 == 0: Stars[i].trail.append(pos=pos[i]) # If any collisions took place, merge those stars for ij in hitlist: i, j = divmod(ij,Nstars) # decode star pair if not Stars[i].visible: continue if not Stars[j].visible: continue # m[i] is a one-element list, e.g. [6e30] # m[i,0] is an ordinary number, e.g. 6e30 newpos = (pos[i]*m[i,0]+pos[j]*m[j,0])/(m[i,0]+m[j,0]) newmass = m[i,0]+m[j,0] newp = p[i]+p[j] newradius = Rsun*((newmass/Msun)**(1./3.)) iset, jset = i, j if radius[j] > radius[i]: iset, jset = j, i Stars[iset].radius = newradius m[iset,0] = newmass pos[iset] = newpos p[iset] = newp Stars[jset].trail.visible = 0 Stars[jset].visible = 0 p[jset] = vector(0,0,0) m[jset,0] = Msun*1E-30 # give it a tiny mass Nhits = Nhits+1 pos[jset] = (10.*L*Nhits, 0, 0) # put it far away Nsteps += 1 visual-5.12_release/examples/wave.py0000644000175000017500000000321310733133243014515 00000000000000from visual import * # David Scherer dt = 0.1 g = [] for i in range(3): g.append(display(x = 0, y = 30 + 200*i, width=600, height=170)) g[0].title="k=6N/m mass=2.0kg" g[1].title="k=6N/m mass=1.0kg" g[2].title="k=6N/m mass=0.5kg" bands = [ curve( x = arange(-50,50), display=g[0], color=color.red, k = 6., mass = 2.0), curve( x = arange(-50,50), display=g[1], color=color.yellow, k = 6., mass = 1.0), curve( x = arange(-50,50), display=g[2], color=color.green, k = 6., mass = 0.5), ] for band in bands: band.radius = 0.5 band.momentum = zeros((100,3),float) ### Uncomment exactly one of the following lines: ### band.momentum[:25,1] = sin(band.x[:25]*pi / 25.0)*3 # half-wave pulse ## band.momentum[:25,1] = sin(band.x[:25]*2*pi / 25.0)*5 # full-wave pulse ## band.momentum[:25,0] = sin(band.x[:25]*pi / 25.0)*5 # compression wave ## band.momentum[:,1] = sin(band.x * 4 * pi / 100.0)*2 # standing wave ## band.momentum[25,1] = 20 # single point impulse (messy) while 1: rate(100) for band in bands: # Keep endpoints fixed: band.momentum[0] = band.momentum[-1] = vector(0,0,0) # Integrate velocity: band.pos = band.pos + (band.momentum/band.mass*dt) # force[n] is the force on point n from point n+1 (to the right): force = band.k * (band.pos[1:] - band.pos[:-1]) # all points but the last experience forces to the right: band.momentum[:-1] = band.momentum[:-1] + force * dt # all points but the first experience forces to the left: band.momentum[1:] = band.momentum[1:] - force * dt visual-5.12_release/examples/bounce2.py0000644000175000017500000000226010715120637015114 00000000000000from visual import * print """ Right button drag to rotate "camera" to view scene. On a one-button mouse, right is Command + mouse. Middle button to drag up or down to zoom in or out. On a two-button mouse, middle is left + right. On a one-button mouse, middle is Option + mouse. """ side = 4.0 thk = 0.3 s2 = 2*side - thk s3 = 2*side + thk wallR = box (pos=( side, 0, 0), length=thk, height=s2, width=s3, color = color.red) wallL = box (pos=(-side, 0, 0), length=thk, height=s2, width=s3, color = color.red) wallB = box (pos=(0, -side, 0), length=s3, height=thk, width=s3, color = color.blue) wallT = box (pos=(0, side, 0), length=s3, height=thk, width=s3, color = color.blue) wallBK = box(pos=(0, 0, -side), length=s2, height=s2, width=thk, color = (0.7,0.7,0.7)) ball = sphere (color = color.green, radius = 0.4) ball.mass = 1.0 ball.p = vector (-0.15, -0.23, +0.27) side = side - thk*0.5 - ball.radius dt = 0.5 t=0.0 while 1: rate(100) t = t + dt ball.pos = ball.pos + (ball.p/ball.mass)*dt if not (side > ball.x > -side): ball.p.x = -ball.p.x if not (side > ball.y > -side): ball.p.y = -ball.p.y if not (side > ball.z > -side): ball.p.z = -ball.p.z visual-5.12_release/examples/Makefile.in0000644000175000017500000003057111243356545015266 00000000000000# Makefile.in generated by automake 1.9.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile to distribute the example programs top_srcdir = @top_srcdir@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = examples DIST_COMMON = $(am__dist_pkgdata_DATA_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__dist_pkgdata_DATA_DIST = bounce.py bounce2.py boxlighttest.py \ colorsliders.py controlstest.py convex.py crossproduct.py \ crystal.py dipole.py doublependulum.py drape.py faces_cone.py \ faces_heightfield.py gas.py glinfo.py graphtest.py gyro.py \ gyro2.py hanoi.py labels.py lathe.py lorenz.py mandelbrot.py \ material_test.py orbit.py planar.py randombox.py stars.py \ stonehenge.py texttest.py texturetest.py tictac.py \ tictacdat.py texture_and_lighting.py flower128.tga \ toroid_drag.py toroid.py wave.py am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgdatadir)" dist_pkgdataDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) srcdir = @srcdir@ VPATH = @srcdir@ pkgdatadir = @visualexampledir@ ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@ BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@ BUILD_EXAMPLES_FALSE = @BUILD_EXAMPLES_FALSE@ BUILD_EXAMPLES_TRUE = @BUILD_EXAMPLES_TRUE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ FREETYPE2_LIBS = @FREETYPE2_LIBS@ GLIBMM_CFLAGS = @GLIBMM_CFLAGS@ GLIBMM_LIBS = @GLIBMM_LIBS@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKGLEXTMM_CFLAGS = @GTKGLEXTMM_CFLAGS@ GTKGLEXTMM_LIBS = @GTKGLEXTMM_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADEMM_CFLAGS = @LIBGLADEMM_CFLAGS@ LIBGLADEMM_LIBS = @LIBGLADEMM_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PANGOMM_CFLAGS = @PANGOMM_CFLAGS@ PANGOMM_LIBS = @PANGOMM_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYTHON = @PYTHON@ PYTHONPATH = @PYTHONPATH@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WIN32_CWD = @WIN32_CWD@ WIN32_PYTHON_VERSION = @WIN32_PYTHON_VERSION@ WIN32_SRCDIR = @WIN32_SRCDIR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ visualdocdir = @visualdocdir@ visualexampledir = @visualexampledir@ AUTOMAKE_OPTIONS = foreign @BUILD_EXAMPLES_FALSE@examplefiles = @BUILD_EXAMPLES_TRUE@examplefiles = bounce.py bounce2.py boxlighttest.py colorsliders.py \ @BUILD_EXAMPLES_TRUE@ controlstest.py \ @BUILD_EXAMPLES_TRUE@ convex.py crossproduct.py crystal.py dipole.py doublependulum.py \ @BUILD_EXAMPLES_TRUE@ drape.py faces_cone.py faces_heightfield.py gas.py glinfo.py \ @BUILD_EXAMPLES_TRUE@ graphtest.py gyro.py gyro2.py hanoi.py labels.py lathe.py \ @BUILD_EXAMPLES_TRUE@ lorenz.py mandelbrot.py material_test.py orbit.py planar.py randombox.py stars.py \ @BUILD_EXAMPLES_TRUE@ stonehenge.py texttest.py texturetest.py tictac.py tictacdat.py \ @BUILD_EXAMPLES_TRUE@ texture_and_lighting.py flower128.tga \ @BUILD_EXAMPLES_TRUE@ toroid_drag.py toroid.py wave.py dist_pkgdata_DATA = $(examplefiles) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign examples/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-exec install-exec-am install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: visual-5.12_release/examples/boxlighttest.py0000644000175000017500000000173611110305410016266 00000000000000from visual import * # Mikhail Temkine, University of Toronto, April 2007 print """ Box lighting test """ r = 3 a1 = a2 = a3 = 0.0 arrow(pos=(0, 4, 0), axis=(0, 1, 0), color=color.red) boxy = box(size=(3,3,3), color=(0.5, 0.5, 0.5), material=materials.rough) b1 = sphere(radius=0.3, pos=(r, 0, 0), color=color.magenta, material=materials.emissive) b2 = sphere(radius=0.3, pos=(0, 0, r), color=color.yellow, material=materials.emissive) b3 = arrow(radius=0.3, pos=(0, 0, r), color=color.green, material=materials.emissive) l1 = local_light(pos=b1.pos, color=b1.color) l2 = local_light(pos=b2.pos, color=b2.color) l3 = distant_light(direction=b3.pos, color=b3.color) while 1: rate(100) l1.pos = b1.pos = r*vector(cos(a1), sin(a1), b1.z) a1 += 0.02 l2.pos = b2.pos = (r+0.4)*vector(b2.x, sin(a2), cos(a2)) a2 += 0.055 l3.direction = b3.pos = (r+3)*vector(sin(a3), b3.y, cos(a3)) b3.axis = b3.pos * -0.3 a3 += 0.033 visual-5.12_release/examples/crystal.py0000644000175000017500000001137011065602664015246 00000000000000from visual import * from random import random # Bruce Sherwood; revised by Jonathan Brandmeyer N = 3 Ntotal = N*N*N scolor = (1,0.5,0) bcolor = (0,0.58,0.69) springs = [] atoms = [] m = 1. k = 1. L = 1. R = 0.3*L Rs = 0.9*R # end of spring is Rs from center of atom def getn(N, nx, ny, nz): # find nth atom given nx, ny, nz return (ny)*(N**2)+(nx)*N+(nz) def makespring(natom1, natom2, radius): # make spring from nnth atom to iith atom if natom1 > natom2: r12 = atoms[natom2].pos-atoms[natom1].pos dir = norm(r12) springs.append( helix(pos=atoms[natom1].pos+Rs*dir, axis=(L-2*Rs)*dir, radius = radius, color=scolor, thickness = 0.04)) #, shininess=0.9)) springs[-1].atom1 = atoms[natom1] springs[-1].atom2 = atoms[natom2] angle = springs[-1].axis.diff_angle( vector(0,1,0)) # avoid pathologies if too near the y axis (default "up") if angle < 0.1 or angle > pi-0.1: springs[-1].up = vector(-1,0,0) def crystal(N=3, delta=1.0, R=None, sradius=None): if R == None: R = 0.2*delta if sradius == None: sradius = R/5. xmin = -(N-1.0)/2. ymin = xmin zmin = xmin natom = 0 for ny in range(N): y = ymin+ny*delta hue = (ny)/(N+1.0) c = color.hsv_to_rgb((hue,1.0,1.0)) for nx in range(N): x = xmin+nx*delta for nz in range(N): z = zmin+nz*delta atoms.append(sphere(pos=(x,y,z), radius=R, color=bcolor)) atoms[-1].p = vector() atoms[-1].near = range(6) atoms[-1].wallpos = range(6) atoms[-1].natom = natom atoms[-1].indices = (nx,ny,nz) natom = natom+1 for a in atoms: natom1 = a.natom nx, ny, nz = a.indices if nx == 0: # left # if this neighbor is the wall, save location: a.near[0] = None a.wallpos[0] = a.pos-vector(L,0,0) else: natom2 = getn(N,nx-1,ny,nz) a.near[0] = natom2 makespring(natom1, natom2, sradius) if nx == N-1: # right a.near[1] = None a.wallpos[1] = a.pos+vector(L,0,0) else: natom2 = getn(N,nx+1,ny,nz) a.near[1] = natom2 makespring(natom1, natom2, sradius) if ny == 0: # down a.near[2] = None a.wallpos[2] = a.pos-vector(0,L,0) else: natom2 = getn(N,nx,ny-1,nz) a.near[2] = natom2 makespring(natom1, natom2, sradius) if ny == N-1: # up a.near[3] = None a.wallpos[3] = a.pos+vector(0,L,0) else: natom2 = getn(N,nx,ny+1,nz) a.near[3] = natom2 makespring(natom1, natom2, sradius) if nz == 0: # back a.near[4] = None a.wallpos[4] = a.pos-vector(0,0,L) else: natom2 = getn(N,nx,ny,nz-1) a.near[4] = natom2 makespring(natom1, natom2, sradius) if nz == N-1: # front a.near[5] = None a.wallpos[5] = a.pos+vector(0,0,L) else: natom2 = getn(N,nx,ny,nz+1) a.near[5] = natom2 makespring(natom1, natom2, sradius) a.near = tuple(a.near) a.wallpos = tuple( a.wallpos) # Nearpos is a list of references to the nearest neighbors' positions, # taking into account wall effects. a.nearpos = [] for i in range(6): natom = a.near[i] if natom == None: # if this nearest neighbor is the wall a.nearpos.append( a.wallpos[i]) else: a.nearpos.append(atoms[natom].pos) return atoms sradius = R/3. vrange = 0.2*L*sqrt(k/m) dt = 0.02*(2.*pi*sqrt(m/k)) scene.visible = False atoms = crystal(N=N, delta=L, R=R, sradius=sradius) scene.visible = True scene.autoscale = False ptotal = vector() for a in atoms: px = m*(-vrange/2+vrange*random()) py = m*(-vrange/2+vrange*random()) pz = m*(-vrange/2+vrange*random()) a.p = vector(px,py,pz) ptotal = ptotal+a.p for a in atoms: a.p = a.p-ptotal/(N**2) # Convert to tuples for faster indexing access. We aren't growing any more of them. springs = tuple(springs) atoms = tuple(atoms) # Evaluate a couple of constants outside the loop k_dt = k * dt dt_m = dt / m while 1: rate(100) for a in atoms: r = vector_array(a.nearpos) - a.pos a.p += k_dt *(r.norm()*(r.mag()-L)).sum() for a in atoms: a.pos += a.p * dt_m for s in springs: p1 = s.atom1.pos r12 = s.atom2.pos-p1 dir = r12.norm() s.pos = p1+Rs*dir s.axis = (r12.mag-2*Rs)*dir visual-5.12_release/examples/toroid_drag.py0000644000175000017500000000354611064305110016051 00000000000000from visual import * print """ Drag or click to show the magnetic field interactively. Mark the magnetic field vector at the end of the drag. """ scene.width = 600 scene.height = 600 Rbig = 0.6 L = 2*pi*Rbig Rsmall = 0.2 k = 1E-7 # mu-zero/4pi I = 1.0 Ncoils = 20 Bscale = (2.*Rsmall)/(4*pi*1E-7*Ncoils*I/L) dphi = 2.*pi/Ncoils/50. phi = arange(0,2*pi+dphi,dphi) toroid=curve(x = Rbig*cos(phi)+Rsmall*cos(Ncoils*phi)*cos(phi), y = Rbig*sin(phi)+Rsmall*cos(Ncoils*phi)*sin(phi), z = -Rsmall*sin(Ncoils*phi)) toroid.color = (1,0.7,0.2) toroid.radius = 0.01 delta = toroid.pos[1:] - toroid.pos[:-1] center = (toroid.pos[:-1] + toroid.pos[1:])/2. scene.range = 1.3*(Rbig+Rsmall) vwidth = L/100 def BField(obs): r = obs-center rmag = mag(r) rmag.shape = (-1,1) try: # numpy return (k*I*cross(delta, r)/rmag**3).sum(axis=0) except: # old Numeric return sum(k*I*cross(delta, r)/rmag**3) Bvector = arrow(axis=(0,0,0), shaftwidth=vwidth, color=(0,1,1)) drag = 0 while True: rate(100) if drag: newobs = scene.mouse.pos if newobs != obs: obs = newobs Bvector.axis = Bscale*BField(obs) Bvector.pos = obs if scene.mouse.events: m = scene.mouse.getevent() if m.button == 'left': if m.press: obs = scene.mouse.pos Bvector.axis = Bscale*BField(obs) Bvector.pos = obs elif m.drag: drag = True obs = None # force update of position ## scene.cursor.visible = 0 # not yet implemented elif m.release or m.drop: drag = False ## scene.cursor.visible = 1 # not yet implemented arrow(pos=obs, axis=Bscale*BField(obs), shaftwidth=vwidth, color=(0,1,1)) visual-5.12_release/examples/Makefile.am0000644000175000017500000000142711104604255015241 00000000000000## Process this file with automake to produce Makefile.in # Makefile to distribute the example programs AUTOMAKE_OPTIONS = foreign srcdir = @srcdir@ VPATH = @srcdir@ if BUILD_EXAMPLES examplefiles = bounce.py bounce2.py boxlighttest.py colorsliders.py \ controlstest.py \ convex.py crossproduct.py crystal.py dipole.py doublependulum.py \ drape.py faces_cone.py faces_heightfield.py gas.py glinfo.py \ graphtest.py gyro.py gyro2.py hanoi.py labels.py lathe.py \ lorenz.py mandelbrot.py material_test.py orbit.py planar.py randombox.py stars.py \ stonehenge.py texttest.py texturetest.py tictac.py tictacdat.py \ texture_and_lighting.py flower128.tga \ toroid_drag.py toroid.py wave.py else examplefiles = endif pkgdatadir = @visualexampledir@ dist_pkgdata_DATA = $(examplefiles) visual-5.12_release/examples/colorsliders.py0000644000175000017500000001000011000675406016247 00000000000000from visual import * print """ Click and drag a ball (with mouse button down) on an RGB or HSV slider. Click one of the colored objects to print RGB and HSV values. """ # Bruce Sherwood; opacity slider added by Jonathan Brandmeyer scene.userspin = 0 grey = (0.85, 0.85, 0.85) class slider: def __init__(self, pos=vector(0,0,0), axis=vector(0,1.,0), value=None, width=0.15, min=0, max=100., color=(1,0,0)): pos = vector(pos) # axis = vector(axis) if value == None: value = min self.min = min self.max = max self.value = value self.shaft = cylinder(pos=pos, axis=axis, radius=width/4., color=grey) self.start = pos self.axis = axis self.control = sphere(pos=self.start+(self.min+value)/(self.max-self.min)*self.axis, radius=width/2., color = color) self.label = label(pos=self.control.pos, text="%0.2f" % value, opacity=0, box=0, line=0) def getslider(self, pos=None): pos = vector(pos) value = self.min+(self.max-self.min)*(pos.y-self.start.y)/mag(self.axis) self.setslider(value) return value def setslider(self, value=None): if value > self.max: value = self.max if value < self.min: value = self.min self.value = value self.control.pos = self.start+(self.min+value)/(self.max-self.min)*self.axis self.label.pos = self.control.pos self.label.text="%0.2f" % value scene.width = 800 scene.height = 400 scene.center = (0,0.5,0) scene.title = "RGB and HSV color" wcube = 0.2 rgb = (1,0,0) opacity = 1 hsv = color.rgb_to_hsv((1,0,0)) ctrl = [slider(pos=(-1.75,0,0), color=(1,0,0), max=1., value=rgb[0]), slider(pos=(-1.5,0,0), color=(0,1,0), max=1., value=rgb[1]), slider(pos=(-1.25,0,0), color=(0,0,1), max=1., value=rgb[2]), slider(pos=(-1,0,0), color=(0.5,0.5,0.5), max=1., value=opacity), slider(pos=(+1.0,0,0), color=(1,0,0), max=1., value=hsv[0]), slider(pos=(+1.25,0,0), color=(1,1,1), max=1., value=hsv[1]), slider(pos=(+1.5,0,0), color=(0.5,0.5,0.5), max=1., value=hsv[2])] panel = box(pos=(0,0.5,0), length=1.5, height=1, width=0.1, color=rgb, opacity=opacity) ball = sphere(pos=(0,0.5,0), radius=0.5, color=rgb, opacity=opacity) cube = box(pos=(0,1.2,0), axis=(1,1,1), length=wcube, width=wcube, height=wcube, color=rgb, opacity=opacity) behind = arrow( pos=(-.75, 0, -.75), axis=(1.5, 1, 0), color=color.white) dragobj = None while 1: rate(50) cube.rotate(angle=0.1, axis=scene.up) if scene.mouse.events: m = scene.mouse.getevent() if m.click == "left" and m.pick in [panel, ball, cube]: print "RGB = (%0.3f,%0.3f,%0.3f), opacity = %0.3f" % (ctrl[0].value,ctrl[1].value,ctrl[2].value,ctrl[3].value) print "HSV = (%0.3f,%0.3f,%0.3f)" % (ctrl[4].value,ctrl[5].value,ctrl[6].value) continue elif m.drop == "left": dragobj = None elif m.drag == "left": for index in range(7): s = ctrl[index] if m.pick is s.control: pos = m.project(normal=(0,0,1)) dragobj = s break newpos = scene.mouse.project(normal=(0,0,1)) if dragobj and (newpos != pos): pos = newpos dragobj.getslider(pos) if index <= 3: # rgb sliders cube.color = ball.color = panel.color = (ctrl[0].value,ctrl[1].value,ctrl[2].value) cube.opacity = ball.opacity = panel.opacity = ctrl[3].value hsv = color.rgb_to_hsv(ball.color) for nn in range(3): ctrl[nn+4].setslider(hsv[nn]) else: # hsv sliders rgb = color.hsv_to_rgb((ctrl[4].value,ctrl[5].value,ctrl[6].value)) cube.color = ball.color = panel.color = rgb cube.opacity = ball.opacity = panel.opacity = ctrl[3].value for nn in range(3): ctrl[nn].setslider(rgb[nn]) visual-5.12_release/examples/drape.py0000644000175000017500000000502110715120637014650 00000000000000from visual import * print """ Click to place spheres under falling string. Right button drag to rotate view. On a one-button mouse, right is Command + mouse. Middle button drag up or down to zoom in or out. On a two-button mouse, middle is left + right. On a one-button mouse, middle is Option + mouse. """ # David Scherer scene.title = "Drape" restlength = 0.02 m = 0.010 * restlength g = 9.8 dt = 0.002 k = 3 damp = (1-0)**dt nspheres = 3 floor = 0 # Create the stringy thing: band = curve( x = arange(-1,1,restlength), y = 1, radius = 0.02 ) band.p = band.pos * 0 ##scene.range = 1.5 ##scene.autoscale = 0 # Let the user position obstacles: spheres = [] for i in range(nspheres): s = sphere( pos = scene.mouse.getclick().pos, #(i*0.6 - 0.7,0.5 + i*0.1,0), radius = 0.25, color = (abs(sin(i)),cos(i)**2,(i%10)/10.0) ) spheres.append( s ) while 1: rate(1.0 / dt) if scene.mouse.clicked: i = len(spheres) s = sphere( pos = scene.mouse.getclick().pos, radius = 0.25, color = (abs(sin(i)),cos(i)**2,(i%10)/10.0) ) spheres.append( s ) if floor: below = less(band.pos[:,1],-1) band.p[:,1] = where( below, 0, band.p[:,1] ) band.pos[:,1] = where( below, -1, band.pos[:,1] ) # need a more physical way to make 'damped springs' than this! band.p = band.p * damp #band.p[0] = 0 # nail down left endpoint #band.p[-1] = 0 # nail down right endpoint band.pos = band.pos + band.p/m*dt #gravity band.p[:,1] = band.p[:,1] - m * g * dt # force[n] is the force on point n from point n+1 (to the right): length = (band.pos[1:] - band.pos[:-1]) dist = sqrt(sum(length*length,-1)) force = k * ( dist - restlength ) force = length/dist[:,newaxis] * force[:,newaxis] band.p[:-1] = band.p[:-1] + force*dt band.p[1:] = band.p[1:] - force*dt # color based on "stretch": blue -> white -> red c = clip( dist/restlength * 0.5, 0, 2 ) # blue (compressed) -> white (relaxed) -> red (tension) band.red[1:] = where( less(c,1), c, 1 ) band.green[1:] = where( less(c,1), c, 2-c ) band.blue[1:] = where( less(c,1), 1, 2-c ) for s in spheres: dist = mag( band.pos - s.pos )[:,newaxis] inside = less( dist, s.radius ) if sometrue(inside): R = ( band.pos - s.pos ) / dist surface = s.pos + (s.radius)*R band.pos = surface*inside + band.pos*(1-inside) pdotR = sum(asarray(band.p)*asarray(R),-1) band.p = band.p - R*pdotR[:,newaxis]*inside visual-5.12_release/examples/texttest.py0000644000175000017500000000203210410546345015440 00000000000000from visual.text import * # Display extruded text (uppercase only at present) # By default, display text along x axis, with letters pointing up parallel to y axis # Bruce Sherwood, Carnegie Mellon University, begun March 2000 # Example with default values: # text(pos=(0,0,0), axis=(1,0,0), string='ABC', # height=1, depth=0, width=1, # color=currentdisplay.foreground, up=(0,1,0.3)) # axis is direction along which text advances # if width not specified, it is the same as height # depth is measured forward from pos # Only numbers and uppercase letters at present: others display as '*' scene.title = "3D Text" scene.fov = 0.001 scene.range = 7 text(pos=(0,3,0), string='ABC', color=color.red, depth=0.3, justify='center') text(pos=(0,-3,0), string='DEF', color=color.blue, depth=0.3, justify='center') message = text(pos=(0,0,0), string='CLICK TO CHANGE THIS', justify='center', color=color.yellow, axis=(1,0,1), depth=0.3, up=(0,1,-0.3)) scene.mouse.getclick() message.reshape(color=color.cyan, height=2) visual-5.12_release/examples/hanoi.py0000644000175000017500000000532711101051072014646 00000000000000from visual import * ## ruth chabay, carnegie mellon university, 2000-06 ## rings may be dragged through stuff - a little surreal scene.width=800 scene.title="Tower of Hanoi" print "Move the stack to the white pole." maxradius=2.5 thick=.5 spacing=maxradius+thick leftpole=cylinder(pos=(-2*spacing,-3,0), radius=0.3, axis=(0,6,0)) leftpole.color=(.5,.5,.5) midpole=cylinder(pos=(0,-3,0), radius=0.3, axis=(0,6,0)) midpole.color=(.5,.5,.5) rightpole=cylinder(pos=(2*spacing,-3,0), radius=0.3, axis=(0,6,0)) floor=box(pos=(0,-3.5,0), size=(23,.99,5), color=(1.0,0.5,0), material=materials.wood) poles=[leftpole,midpole,rightpole] rings=[] hues=[(1,0,0), (1,1,0), (0,1,0), (.3,.3,1), (1,0,1)] for y in arange(-2, 3,1): rings.append(ring(pos=(poles[0].x,y,0), radius=.5*(3-y), color=hues[y+2], thickness=thick,axis=(0,1,0))) stack=[rings[:],[],[]] # list of rings on each pole scene.autoscale=0 moves=0 while 1: rate(100) if scene.mouse.events: m = scene.mouse.getevent() if m.drag: # identify pole clicked on mx=m.project(normal=vector(0,0,1)).x pole1=int((mx+floor.length/2.)/(floor.length/3.)) print pole1 # pick up a ring if len(stack[pole1])>0: select=stack[pole1][-1] # remove ring from stack del(stack[pole1][-1]) while not (scene.mouse.events and scene.mouse.getevent().drop): # drag ring select.pos=scene.mouse.project(normal=vector(0,0,1)) rate(60) mx=select.x pole2=int((mx+floor.length/2.)/(floor.length/3.)) # put down a ring if len(stack[pole2])>0: # stack not empty if stack[pole2][-1].radius > select.radius: # legal move select.x=poles[pole2].x select.y=-2+len(stack[pole2]) stack[pole2].append(select) moves=moves+1 else: # illegal move select.x=poles[pole1].x select.y=-2+len(stack[pole1]) stack[pole1].append(select) else: # stack empty select.x=poles[pole2].x select.y=-2 stack[pole2].append(select) moves=moves+1 if len(stack[2])==5: # task completed? print "You won in ",moves," moves." flash=0 while flash < 6: rightpole.color=(1,0,0) rate(10) rightpole.color=(1,1,1) rate(10) flash=flash+1 break visual-5.12_release/examples/convex.py0000644000175000017500000000222411117234037015056 00000000000000from visual import * from random import uniform # David Scherer scene.range = 3 a = convex(color=(0.5,0,0)) b = convex(color=(0,0.5,0)) c = convex(color=(0,0,0.5)) d = convex(color=(0.5,0,0.5)) e = convex(color=(0.5,0.5,0)) f = convex(color=(0,0.5,0.5)) # circle t = arange(0,2*pi,0.1) e.pos = transpose( (sin(t), cos(t)+2, 0*t) ) # triangle t = arange(0,2*pi,2*pi/3) f.pos = transpose( (sin(t)-2, cos(t)+2, 0*t) ) # disk for t in arange(0,2*pi,0.1): a.append(pos = (cos(t),0,sin(t))) a.append(pos = (cos(t),0.2,sin(t))) # box for i in range(8): p = vector((i/4)%2 - 2.5, (i/2)%2 - 0.5, (i)%2 - 0.5) b.append(pos=p) # random sphere L = [] for i in range(1000): L.append(vector(2,0) + norm(vector(uniform(-1,1),uniform(-1,1),uniform(-1,1)))) c.pos = L # lat/long sphere L = [] for t in arange(0,2*pi,0.2): for s in arange(0,pi,0.1): L.append((cos(t)*sin(s)+2, sin(t)*sin(s)+2, cos(s))) print len(L) d.pos = L # modify the disk p = a p.color = (p.color[0]*2, p.color[1]*2, p.color[2]*2) while 1: rate(10) if scene.mouse.clicked: c = scene.mouse.getclick() p.append(pos=c.pos) p.pos[-1] = scene.mouse.pos visual-5.12_release/examples/glinfo.py0000644000175000017500000000145710410546345015044 00000000000000from visual import * import sys, os, time print "This test of OpenGL options is useful mainly on Windows." print def print_mtime(f): try: print " %-30s %s" % (f, time.ctime(os.path.getmtime(f))) except: pass tried = {} paths = sys.path try: windir = os.environ['windir'] paths = paths + [os.path.join(windir,'system'), os.path.join(windir,'system32')] except: print 'Windows directory not found.' for dir in paths: for file in ['cvisual.dll', 'visual\\__init__.py', 'visual\\graph.py', 'opengl32.dll']: f = os.path.normcase(os.path.normpath(os.path.join(dir, file))) if not tried.has_key(f): tried[f] = print_mtime(f) scene.title = "Renderer test" scene.height = 2 scene.visible = 1 print scene.info() scene.visible = 0 visual-5.12_release/examples/mandelbrot.py0000644000175000017500000000174410742475450015722 00000000000000from __future__ import division from visual.graph import * # Bruce Sherwood, Jan. 1, 2008 # Use points object to make a pixel-like plot of a fractal XMIN = -2 XMAX = 0.5 YMIN = -1 YMAX = 1 g = gdisplay(width=750, height=600, xmin=XMIN, xmax=XMAX, ymin=YMIN, ymax=YMAX) pixels = gdots(shape='square', size=2) # Scale factor: 2 units (YMAX-YMIN) equals 600 screen pixels # Plot 2 by 2 gdots points 2*(2units/600pixels) apart: r = 2*2/600 # Mandelbrot set (see Wikipedia, for example): max_iteration = 100 for y0 in arange(YMIN, YMAX, r): # range over all pixel positions for x0 in arange(XMIN, XMAX, r): z = z0 = complex(x0,y0) iteration = 0 while ( abs(z) < 2 and iteration < max_iteration): z = z*z+z0 iteration += 1 # Leave points black if the iteration quickly escapes: if (.1 < iteration/max_iteration < 1): c = color.hsv_to_rgb((iteration/max_iteration-.1,1,1)) pixels.plot(pos=(x0,y0), color=c) visual-5.12_release/examples/lorenz.py0000644000175000017500000000205211103614125015057 00000000000000from visual import * print """ Right button drag to rotate "camera" to view scene. On a one-button mouse, right is Command + mouse. Middle button to drag up or down to zoom in or out. On a two-button mouse, middle is left + right. On a one-button mouse, middle is Option + mouse. """ scene.title = "Lorenz differential equation" scene.center = vector(25,0,0) lorenz = curve( color = color.black, radius=0.3 ) # Draw grid for x in arange(0,51,10): box(pos=(x,0,0), axis=(0,0,50), height=0.4, width=0.4, color=(0.6,0.6,0.6) ) for z in arange(-25,26,10): box(pos=(25,0,z), axis=(50,0,0), height=0.4, width=0., color=(0.6,0.6,0.6) ) dt = 0.01 y = vector(35, -10, -7) for t in arange(0,10,dt): # Integrate a funny differential equation dydt = vector( - 8.0/3*y[0] + y[1]*y[2], - 10*y[1] + 10*y[2], - y[1]*y[0] + 28*y[1] - y[2] ); y = y + dydt*dt # Draw lines colored by speed c = clip( [mag(dydt) * 0.005], 0, 1 )[0] lorenz.append( pos=y, color=(c,0, 1-c) ) rate( 500 ) visual-5.12_release/examples/crossproduct.py0000644000175000017500000000606310734356461016325 00000000000000from visual import * # demonstration of vector cross product print """ Vector cross product: Red cross Green = Yellow Drag to change green vector Click to toggle fixed angle or fixed length """ # Ruth Chabay scene.title="Vector Cross Product" scene.width=600 scene.height=600 R = 0.15*4 plane = curve(pos=[(0, -10, -10), (0, -10, 10), (0, 10,10), (0, 10, -10), (0, -10, -10), (0,-6,-10), (0,-6,10), (0, -2, 10), (0, -2, -10), (0,2,-10), (0,2,10), (0,6,10), (0,6,-10),(0,10, -10), (0,10,-6), (0,-10,-6), (0,-10,-2), (0,10,-2), (0,10,2), (0,-10,2), (0,-10,6), (0,10,6)]) s_theta=sphere(pos=(0,-12,-10), radius=0.6, color=(0.6, 1.0, 0.6)) s_theta_label=label(pos=s_theta.pos, text="Fix Angle", yoffset=-5, opacity=0, box=0, line=0) s_length=sphere(pos=(0,-12,10), radius=0.6, color=(0.6, 0.6, 1.0)) s_length_label=label(pos=s_length.pos, text="Fix Length", yoffset=-5, opacity=0, box=0, line=0) s_text=label(pos=(0,12,0), text="Yellow = Red x Green", opacity=0, box=0, line=0) fixlength = 0 fixtheta = 0 avector = array ([0,0,-3.5]) bvector = vector (0,3,2) a = arrow(pos=(0,0,0), shaftwidth=R, color=crayola.red) b = arrow(pos=(0,0,0), axis=bvector, shaftwidth=R, color=crayola.green) a.axis =avector cvector = cross(avector,bvector) c = arrow(pos=(0,0,0), axis=cvector, shaftwidth=R, color=crayola.yellow) scene.autoscale = 0 scene.forward = (-1,-.5,-1) drag = 0 while 1: rate(100) if scene.mouse.events: m = scene.mouse.getevent() if m.drag: drag = 1 obs = None elif m.drop: drag = 0 elif m.click: if m.pick is s_length: if fixtheta: fixtheta = not(fixtheta) s_theta.color = (0.6, 1.0, 0.6) fixlength=not(fixlength) if fixlength: s_length.color=(0.0, 0.0, 1.0) else: s_length.color=(0.6, 0.6, 1.0) elif m.pick is s_theta: if fixlength: fixlength = not(fixlength) s_length.color=(0.6, 0.6, 1.0) fixtheta = not(fixtheta) if fixtheta: s_theta.color=(0.0, 1.0, 0.0) else: s_theta.color = (0.6, 1.0, 0.6) if drag: rate(100) newobs=scene.mouse.project(normal=vector(1,0,0), d=0) if newobs and (newobs != obs): obs = newobs if not fixlength and not fixtheta: bvector = obs if bvector.mag > 20: bvector=bvector*(20/bvector.mag) b.axis=bvector elif fixlength: length=3.9 bvector = length*norm(obs) b.axis=bvector elif fixtheta: length=mag(obs) bvector=length*norm(vector(0, .3, 1)) b.axis=bvector cvector=cross(avector,b.axis) c.axis=cvector visual-5.12_release/examples/tictacdat.py0000644000175000017500000000574411103656756015541 00000000000000from visual import * def grid(n=5, ds = 1., gridcolor = (.6, .6, .6)): assert n > 2, "n must be > 2" j=n//2 k=j*2 if k==n: offset=0 else: offset = ds/2. grid = curve(color = gridcolor) for z in arange (-(j+offset)*ds, (j+offset+1)*ds, ds): for x in arange(-(j+offset)*ds, (j+offset+1)*ds, ds): grid.append(pos=(x, 0, z)) if x == (j+offset) and not z==(j+offset): grid.append (pos=(-(j+offset)*ds,0,z)) grid.append (pos=(-(j+offset)*ds,0,z+1)) grid.append(pos=((j+offset)*ds,0,-(j+offset)*ds)) grid.append (pos=(-(j+offset-1)*ds,0,-(j+offset)*ds)) for x in arange (-(j+offset)*ds, (j+offset)*ds, ds): for z in arange (-(j+offset)*ds, (j+offset+1)*ds, 1): grid.append (pos=(x, 0, z)) if z == (j+offset): grid.append (pos=(x,0,-(j+offset)*ds)) grid.append (pos=(x+1, 0, -(j+offset)*ds)) return grid def win(): wins1=[] wins2=[] wins3=[] wins4=[] wins=[] # planar rows & columns for y in arange (-2,2,1): z=-2 for x in arange(-2, 2,1): col=[(x,y,z), (x,y,z+1), (x,y,z+2), (x,y,z+3)] wins1.append(col) x=-2 for z in arange(-2,2,1): row=[(x,y,z), (x+1,y,z), (x+2,y,z),(x+3,y,z)] wins1.append(row) ## print "wins1" ## for a in arange(0,len(wins1)): ## print wins1[a] # planar diagonals x=-2 z=-2 for y in arange (-2,2,1): wins2.append([(x,y,z), (x+1,y,z+1), (x+2,y,z+2), (x+3,y,z+3)]) wins2.append([(x,y,z+3), (x+1,y,z+2), (x+2,y,z+1), (x+3,y,z)]) ## print " " ## print "wins2" ## for a in arange(0,len(wins2)): ## print wins2[a] y=-2 # vertical columns for x in arange (-2,2,1): for z in arange (-2,2,1): wins3.append([(x,y,z),(x,y+1,z), (x,y+2,z), (x,y+3,z)]) ## print " " ## print "wins3" ## for a in arange(0,len(wins3)): ## print wins3[a] # 3d diagonals x=-2 y=-2 z=-2 wins4.append([(x,y,z), (x+1, y+1, z+1), (x+2, y+2, z+2), (x+3,y+3,z+3)]) z=1 wins4.append([(x,y,z), (x+1, y+1, z-1), (x+2, y+2, z-2), (x+3,y+3,z-3)]) x=1 z=-2 wins4.append([(x,y,z), (x-1, y+1, z+1), (x-2, y+2, z+2), (x-3,y+3,z+3)]) z=1 wins4.append([(x,y,z), (x-1, y+1, z-1), (x-2, y+2, z-2),(x-3,y+3,z-3)]) # 3d slant z=-2 y=-2 for x in arange(-2,2,1): wins4.append([(x,y,z), (x,y+1,z+1), (x,y+2,z+2), (x,y+3,z+3)]) wins4.append([(x,y,z+3), (x,y+1,z+2), (x,y+2,z+1), (x,y+3,z)]) x=-2 for z in arange(-2,2,1): wins4.append([(x,y,z), (x+1,y+1,z), (x+2,y+2,z), (x+3,y+3,z)]) wins4.append([(x+3,y,z), (x+2,y+1,z), (x+1,y+2,z), (x,y+3,z)]) ## print " " ## print "wins4" ## for a in arange(0,len(wins4)): ## print wins4[a] wins=wins1+wins2+wins3+wins4 return wins ##a=win() print " " print "Run 'tictac.py' to play 3D tictactoe." visual-5.12_release/examples/planar.py0000644000175000017500000000325011025064542015031 00000000000000from visual import * from random import uniform, randint scene.forward = (-0.25,-0.25,-1) nboxes = 8 nlinks = 16 maxgrid = 10 # Create some random cylinders: nodes = [] for t in arange(-pi,pi,2*pi/nboxes): b = cylinder( pos=(10*sin(t),0,10*cos(t)) ) b.color = b.icolor = (0.5,0.5,1) height = uniform(0.5,4) b.axis = (0,height,0) nodes.append( b ) # Create some random links: links = [] for l in range(nlinks): i = randint(0,nboxes-1) j = randint(0,nboxes-1) c = curve( ends=[nodes[i].pos,nodes[j].pos], radius=0.2 ) c.red = 0 c.green = uniform(0.3,1) c.blue = 0 c.pos = c.ends links.append(c) # Draw a grid: for i in range(maxgrid+1): curve(pos=[(2*i-maxgrid,0,-maxgrid),(2*i-maxgrid,0,maxgrid)], color=color.cyan) curve(pos=[(-maxgrid,0,2*i-maxgrid),(maxgrid,0,2*i-maxgrid)], color=color.cyan) box(pos=(0,-0.6,0),width=2*maxgrid,length=2*maxgrid,height=1,color=(0,0,0.1)) # Drag and drop loop drag = None while 1: rate(100) if scene.mouse.events: c = scene.mouse.getevent() if drag and (c.drop or c.click): # drop the selected object newpos = c.project(normal=scene.up, d=yoffset)+offset if abs(newpos.x)<=maxgrid and abs(newpos.z)<=maxgrid: drag.pos = newpos drag.color = drag.icolor drag = None elif c.pick and hasattr(c.pick,"icolor"): # pick up the object drag = c.pick drag.color = color.white yoffset = c.pickpos.y offset = drag.pos-c.project(normal=scene.up, d=yoffset) if drag: newpos = scene.mouse.project(normal=scene.up, d=yoffset)+offset if abs(newpos.x)<=maxgrid and abs(newpos.z)<=maxgrid: drag.pos = newpos for lnk in links: lnk.pos = lnk.ends visual-5.12_release/examples/gyro.py0000644000175000017500000001230010733133244014531 00000000000000from visual import * from visual.text import * # Gyroscope hanging from a spring # Bruce Sherwood print """ Click to pause, click to proceed. Click on rotor to see angular momentum and impulse arrows. Click again on rotor to hide these arrows. """ arrowsvisible = 0 # angular momentum and angular impulse arrows scene.title = 'Gyroscope' scene.visible = 0 top = vector(0,1.,0) # where top of spring is held ks = 100. # spring stiffness Lspring = 1. # unstretched length of spring Rspring = 0.03 # radius of spring Dspring = 0.03 # thickness of spring wire Lshaft = 1. # length of gyroscope shaft Rshaft = 0.03 # radius of gyroscope shaft M = 1. # mass of gyroscope (massless shaft) Rrotor = 0.4 # radius of gyroscope rotor Drotor = 0.1 # thickness of gyroscope rotor Dsquare = 1.4*Drotor # thickness of square that turns with rotor I = 0.5*M*Rrotor**2. # moment of inertia of gyroscope omega = 40 # angular velocity of rotor along axis g = 9.8 Fgrav = vector(0,-M*g,0) precession = M*g*(Lshaft/2.)/(I*abs(omega)) # exact precession angular velocity phi = atan(precession**2*(Lshaft/2.)/g) # approximate angle of spring to vertical s = M*g/(ks*cos(phi)) # approximate stretch of spring # Refine estimate of angle of spring to vertical: phi = 1./( ((I*abs(omega))/(M*Lshaft/2.))**2/(g*Lshaft/2.)-(Lspring+s)/(Lshaft/2.) ) # Refine again: s = M*g/(ks*cos(phi)) phi = 1./( ((I*abs(omega))/(M*Lshaft/2.))**2/(g*Lshaft/2.)-(Lspring+s)/(Lshaft/2.) ) pprecess = vector(0,-1,M*precession*(Lshaft/2.+(Lspring+s)*sin(phi))) # Momentum required for completely smooth precession: ##pprecess = vector(0,0,M*precession*(Lshaft/2.+(Lspring+s)*sin(phi))) if omega < 0: pprecess = -pprecess support = box(pos=top+vector(0,0.01,0), size=(0.2,0.02,0.2), color=color.green) spring = helix(pos=top, axis=vector(-(Lspring+s)*sin(phi),-(Lspring+s)*cos(phi),0), coils=10, radius=Rspring, thickness=Dspring, color=(1,0.7,0.2)) gyro = frame(pos=top+spring.axis) # gyro.pos at end of spring gyro.axis = vector(1,0,0) shaft = cylinder(pos=gyro.pos, axis=Lshaft*gyro.axis, radius=Rshaft, color=(0.85,0.85,0.85)) rotor = cylinder(pos=0.5*gyro.axis*(Lshaft-Drotor), axis=gyro.axis*Drotor, radius=Rrotor, color=(0.5,0.5,0.5)) stripe1 = curve(frame=gyro, color=color.black, pos=[rotor.pos+1.03*rotor.axis+vector(0,Rrotor,0), rotor.pos+1.03*rotor.axis-vector(0,Rrotor,0)]) stripe1 = curve(frame=gyro, color=color.black, pos=[rotor.pos-0.03*rotor.axis+vector(0,Rrotor,0), rotor.pos-0.03*rotor.axis-vector(0,Rrotor,0)]) gyro.rotate(axis=(0,1,0), angle=pi) cm = gyro.pos+0.5*Lshaft*gyro.axis # center of mass of shaft Lrot = I*omega*gyro.axis p = pprecess dt = 0.01 t = 0. Lrotarrow = arrow(length=0, shaftwidth=Rshaft, color=color.red, visible=arrowsvisible) Lrotscale = 0.2 rotimpulsearrow = arrow(length=0, shaftwidth=Lrotarrow.shaftwidth, color=color.cyan, visible=arrowsvisible) rotimpulsescale = 5. Lrotlabel = text(string='L', height=0.06, depth=0.25, visible=arrowsvisible, justify='center', color=Lrotarrow.color) Lrotimpulselabel = text(string='DL', justify='center', visible=arrowsvisible, height=0.06, depth=0.25, color=rotimpulsearrow.color) while 1: rate(50) if scene.mouse.clicked: # pause the animation with a mouse click m = scene.mouse.getclick() if m.pick is rotor: arrowsvisible = not arrowsvisible Lrotarrow.visible = arrowsvisible rotimpulsearrow.visible = arrowsvisible for obj in Lrotlabel.objects: obj.visible = arrowsvisible for obj in Lrotimpulselabel.objects: obj.visible = arrowsvisible else: while 1: if scene.mouse.clicked: scene.mouse.getclick() break Fspring = -ks*norm(spring.axis)*(mag(spring.axis)-Lspring) # Calculate torque about center of mass: torque = cross(-0.5*Lshaft*gyro.axis,Fspring) Lrot = Lrot+torque*dt p = p+(Fgrav+Fspring)*dt cm = cm+(p/M)*dt # Update positions of shaft, rotor, spring, stripes if omega > 0: gyro.axis = norm(Lrot) else: gyro.axis = -norm(Lrot) gyro.pos = cm-0.5*Lshaft*gyro.axis # shaft rotated, adjust connection to spring spring.axis = gyro.pos - top gyro.rotate(angle=omega*dt/4.) # spin easier to see if slower than actual omega shaft.pos = gyro.pos shaft.axis = Lshaft*gyro.axis rotor.pos = gyro.pos+0.5*gyro.axis*(Lshaft-Drotor) rotor.axis = gyro.axis*Drotor # Update arrows representing angular momentum and angular impulse Lrotarrow.pos = gyro.pos+0.5*Lshaft*gyro.axis+vector(0,2.*Rshaft,0) Lrotarrow.axis = Lrot*Lrotscale rotimpulsearrow.pos = Lrotarrow.pos+Lrotarrow.axis rotimpulsearrow.axis = torque*dt*rotimpulsescale Lrotlabel.frame.pos = Lrotarrow.pos+Lrotarrow.axis/2.+vector(0,Rshaft,0) Lrotimpulselabel.frame.pos = rotimpulsearrow.pos+rotimpulsearrow.axis-vector(0,3.*Rshaft,0) if t == 0.: # make sure everything is set up before first visible display scene.visible = 1 scene.autoscale = 0 t = t+dt visual-5.12_release/examples/gyro2.py0000644000175000017500000000605511065602664014633 00000000000000from visual import * # Gyroscope sitting on a pedestal # The analysis is in terms of Lagrangian mechanics. # The Lagrangian variables are polar angle theta, # azimuthal angle phi, and spin angle alpha. # Bruce Sherwood scene.width=800 scene.height=800 scene.title='Nutating Gyroscope' Lshaft = 1. # length of gyroscope shaft Rshaft = 0.03 # radius of gyroscope shaft M = 1. # mass of gyroscope (massless shaft) Rrotor = 0.4 # radius of gyroscope rotor Drotor = 0.1 # thickness of gyroscope rotor Dsquare = 1.4*Drotor # thickness of square that turns with rotor I = 0.5*M*Rrotor**2. # moment of inertia of gyroscope hpedestal = Lshaft # height of pedestal wpedestal = 0.1 # width of pedestal tbase = 0.05 # thickness of base wbase = 3.*wpedestal # width of base g = 9.8 Fgrav = vector(0,-M*g,0) top = vector(0,0,0) # top of pedestal theta = pi/3. # initial polar angle of shaft (from vertical) thetadot = 0 # initial rate of change of polar angle alpha = 0 # initial spin angle alphadot = 15 # initial rate of change of spin angle (spin ang. velocity) phi = -pi/2. # initial azimuthal angle phidot = 0 # initial rate of change of azimuthal angle # Comment in following line to get pure precession ##phidot = (-alphadot+sqrt(alphadot**2+2*M*g*r*cos(theta)/I))/cos(theta) pedestal = box(pos=top-vector(0,hpedestal/2.,0), height=hpedestal, length=wpedestal, width=wpedestal, color=(0.4,0.4,0.5)) base = box(pos=top-vector(0,hpedestal+tbase/2.,0), height=tbase, length=wbase, width=wbase, color=pedestal.color) gyro=frame(axis=(sin(theta)*sin(phi),cos(theta),sin(theta)*cos(phi))) shaft = cylinder(axis=(Lshaft,0,0), radius=Rshaft, color=(0,1,0), material=materials.rough, frame=gyro) rotor = cylinder(pos=(Lshaft/2 - Drotor/2, 0, 0), axis=(Drotor, 0, 0), radius=Rrotor, color=(1,0,0), material=materials.rough, frame=gyro) trail = curve(radius=Rshaft/8., color=(1,1,0)) scene.autoscale = 0 r = Lshaft/2. dt = 0.0001 t = 0. Nsteps = 20 # number of calculational steps between graphics updates while 1: rate(100) for step in range(Nsteps): # multiple calculation steps for accuracy # Calculate accelerations of the Lagrangian coordinates: atheta = (phidot**2*sin(theta)*cos(theta) -2.*(alphadot+phidot*cos(theta))*phidot*sin(theta) +2.*M*g*r*sin(theta)/I) aphi = 2.*thetadot*(alphadot-phidot*cos(theta))/sin(theta) aalpha = phidot*thetadot*sin(theta)-aphi*cos(theta) # Update velocities of the Lagrangian coordinates: thetadot = thetadot+atheta*dt phidot = phidot+aphi*dt alphadot = alphadot+aalpha*dt # Update Lagrangian coordinates: theta = theta+thetadot*dt phi = phi+phidot*dt alpha = alpha+alphadot*dt gyro.axis = vector(sin(theta)*sin(phi),cos(theta),sin(theta)*cos(phi)) # Display approximate rotation of rotor and shaft: gyro.rotate(angle=alphadot*dt*Nsteps) trail.append(pos=gyro.pos + gyro.axis * Lshaft) t = t+dt*Nsteps visual-5.12_release/examples/bounce.py0000644000175000017500000000054710410546345015040 00000000000000from visual import * floor = box(length=4, height=0.5, width=4, color=color.blue) ball = sphere(pos=(0,4,0), color=color.red) ball.velocity = vector(0,-1,0) dt = 0.01 while 1: rate(100) ball.pos = ball.pos + ball.velocity*dt if ball.y < 1: ball.velocity.y = -ball.velocity.y else: ball.velocity.y = ball.velocity.y - 9.8*dt visual-5.12_release/examples/randombox.py0000644000175000017500000000304411117236206015546 00000000000000from visual import * from random import random, randrange ## this is mostly for experimenting with zooming and rotating print """ Right button drag to rotate "camera" to view scene. On a one-button mouse, right is Command + mouse. Middle button to drag up or down to zoom in or out. On a two-button mouse, middle is left + right. On a one-button mouse, middle is Option + mouse. """ def random_box (): xx = randrange (-55,54) yy = randrange (-55,54) zz = randrange (-55,54) x = randrange (1,11) y = randrange (1,11) z = randrange (1,11) red = random() green = random() blue = random() box (pos = vector(xx,yy,zz), length=x, height=y, width=z, color=(red,green,blue)) def wirecube (s): c=curve (color=color.white, radius=1) pts = [(-s, -s, -s),(-s, -s, s), (-s, s, s), (-s, s, -s), (-s, -s, -s), (s, -s, -s), (s, s, -s), (-s, s, -s), (s, s, -s), (s, s, s), (-s, s, s), (s, s, s), (s, -s, s), (-s, -s, s), (s, -s, s),(s, -s, -s)] for pt in pts: c.append(pos=pt) scene.title = "Random Boxes" side=60. wirecube (side) i = 0 while i < 100: random_box() i = i + 1 arrow(axis = (0,12,0), shaftwidth = 3.5, color=color.red ) ball=sphere(pos=(-side/2.,-side/2.,-side/2.), color=(1,1,0), radius=3) disk=cylinder(pos=(side/2., side/2., -side/2.), color=(.3,.3,1), axis=(1,1,0), radius=5) xx=arange(0,4*pi,pi/10.) spring=curve(color=(1,.7,.1), radius=0.4) for y in xx: spring.append(pos=(20+cos(2*y), y/2.-30, -20+sin(2*y)+30)) visual-5.12_release/examples/stonehenge.py0000644000175000017500000002204611117233535015721 00000000000000from __future__ import division from visual import * from visual.text import * import time print """ Press to enter roaming mode, release to exit roaming mode. In roaming mode, with the mouse button down, move the mouse above or below the center of the scene to move forward or backward; right or left rotates your direction of motion. """ # Bruce Sherwood # A surreal scene that illustrates many of the features of VPython def hourminute(): now = time.localtime(time.time()) hour = now[3] % 12 minute = now[4] return (hour, minute) class analog_clock: def __init__(self, pos=(0,0,0), radius=1., axis=(0,0,1)): self.pos = vector(pos) self.axis = vector(axis) self.radius = radius self.spheres = [] self.hour = 0 self.minute = -1 for n in range(12): self.spheres.append(sphere(pos=self.pos+rotate(radius*scene.up, axis=self.axis, angle=-2.*pi*n/12.), radius=radius/20., color=color.hsv_to_rgb((n/12.,1,1)) )) self.hand = arrow(pos=pos, axis=0.95*radius*scene.up, shaftwidth=radius/10., color=color.cyan) self.update() def update(self): hour, minute = hourminute() if self.hour == hour and self.minute == minute: return self.hand.axis = rotate(0.95*self.radius*scene.up, axis=self.axis, angle=-2.*pi*minute/60.) self.spheres[self.hour].radius = self.radius/20. self.spheres[hour].radius = self.radius/10. self.hour = hour self.minute = minute scene.title = "Surreal Stonehenge" scene.height = 600 scene.width = 600 scene.range = (1,1,1) scene.center = (0,2,20) scene.userspin = 0 scene.userzoom = 0 grey = (0.8, 0.8, 0.8) Nslabs = 8 R = 10 w = 5 d = 0.5 h = 5 photocenter = 0.15*w # The floor, central post, and ball atop the post floor = box(pos=(0,-0.1,0),size=(.2,24,24), axis=(0,1,0), color=color.orange, material=materials.wood) pole= cylinder(pos=(0,0,0),axis=(0,h,0), radius=0.2, color=(1,0,0)) sphere(pos=(0,h,0), radius=0.5, color=(1,0,0)) # Set up the gray slabs, including a portal ### Here is the code used to create the cactus flower display ##import Image # Must install PIL, the Python Imaging Library ##name = "flower" ##width = 128 # must be power of 2 ##height = 128 # must be power of 2 ##im = Image.open(name+".jpg") ###print im.size # optionally see size of image ### Optional cropping: ###im = im.crop((x1,y1,x2,y2)) # (0,0) is upper left ##im = im.resize((width,height), Image.ANTIALIAS) ##materials.saveTGA(name,im) for i in range(Nslabs): theta = i*2*pi/Nslabs c = cos(theta) s = sin(theta) xc = R*c zc = R*s if i == 2: # Make a portal box(pos=(-3.*w/8.,0.75*h/2.,R), length=0.5*w/2,height=0.75*h,width=d, color=grey) box(pos=(3.*w/8.0,0.75*h/2.,R), length=0.5*w/2,height=0.75*h,width=d, color=grey) box(pos=(0,0.85*h,R), length=w,height=0.3*h,width=d, color=grey) else: slab = box(pos=(R*c, h/2., R*s), axis=(c,0,s), size=(d,h,w), color=grey) if i == 0: photo = materials.texture(data=materials.loadTGA("flower128"), mapping="rectangular") if i != 6: for x in range(2): for y in range(2): box(pos=slab.pos+vector(-s*photocenter*(2*x-1),photocenter*(2*y-1),c*photocenter*(2*x-1)), size=(1.1*d,0.9*2*photocenter,0.9*2*photocenter), axis=(c,0,s), material=photo) # Decorate the front entrance slab text(pos=(0, 0.77*h, R+d/2), string="NO EXIT", color=color.yellow, depth=0.2, height=0.7, justify="center") # Decorate back slab with a gold box and a clock box(pos=(0,h/2,-R+d/2+0.1), size=(w/2,w/2,0.2), color=(1,0.8,0), material=materials.wood, shininess=1) clock = analog_clock(pos=(0,h/2.,-R+d/2+0.2+0.2*h/10), radius=0.2*w, axis=(0,0,1)) # Draw guy wires from the top of the central post Nwires = 32 for i in range(Nwires): theta = i*2*pi/Nwires cylinder(pos=(0,h,0), axis=(R*cos(theta),-h-0.1,R*sin(theta)), radius=0.02, color=(1,0.7,0)) # Display extruded text text( pos=(1.0,-0.3*sin(pi/10),-2), string='A', height=2.0, depth=0.3, color=(0,0,1.0), up=(0,cos(pi/10),-sin(pi/10)) ) text( pos=(3.2,0,-2), string='B', height=2.0, depth=0.3, color=(1.0,1.0,0), axis=(1,0,0.3)) text( pos=(5.0,-0.6*sin(pi/18),-1.4), string='C', height=2.0, depth=0.3, color=(1.0,0,1.0), axis=(1,0,0.6), up=(0,cos(pi/18),sin(pi/18)) ) # Display a pyramid pyramid(pos=(-4,0,-5), size=(2,2,2), axis=(0,3,0), color=(0,0.6,0), material=materials.marble) # Display smoke rings rising out of a black tube smoke = [] Nrings = 20 x0, y0, z0 = -5, 1.5, -2 r0 = 0.1 spacing = 0.2 thick = r0/4 dr = 0.015 dthick = thick/Nrings gray = 1 cylinder(pos=(x0,0,z0), axis=(0,y0+r0,0), radius=1.5*r0, color=color.black) # Create the smoke rings for i in range(Nrings): smoke.append(ring(pos=(x0,y0+spacing*i,z0), axis=(0,1,0), radius=r0+dr*i, thickness=thick-dthick*i, color=(gray,gray,gray))) y = 0 dy = spacing/20 top = Nrings-1 # Roll a log back and forth rlog = 1 wide = 4 zpos = 2 zface = 5 tlogend = 0.2 v0 = 1 v = v0 omega = -v0/rlog theta = 0 dt = 0.1 tstop = 0.3 log = frame(pos=(-wide,rlog,zpos), axis=(0,0,1)) cylinder(frame=log, pos=(0,0,0), axis=(zface-zpos,0,0), color=(0.8,0.5,0), opacity=0.5) box(frame=log, pos=(zface-zpos+tlogend/2.+.01,0,0), axis=(0,0,1), length=rlog, height=rlog, width=tlogend, color=color.yellow, opacity=0.5) leftstop = box(pos=(-wide-rlog-tstop/2,0.6*rlog,(zpos+zface)/2), length=tstop, height=1.2*rlog, width=(zface-zpos), color=color.red) rightstop = box(pos=(wide+rlog+tstop/2,0.6*rlog,(zpos+zface)/2), length=tstop, height=1.2*rlog, width=(zface-zpos), color=color.red) # Run a ball up and down the pole y1 = 0.2*h y2 = 0.7*h rball = 0.4 cylinder(pos=(0,y1-0.9*rball,0), axis=(0,0.1,0), radius=1.3*pole.radius, color=color.green) cylinder(pos=(0,y2+0.9*rball,0), axis=(0,0.1,0), radius=1.3*pole.radius, color=color.green) vball0 = 0.3*v0 vball = vball0 ballangle = 0.05*pi ball = frame(pos=(0,y1,0)) sphere(frame=ball, radius=rball, color=color.blue) for nn in range(4): cc = cone(frame=ball, pos=(0.8*rball,0,0), axis=(3*rball,0,0), radius=0.5*rball, color=color.yellow) cc.rotate(angle=0.5*nn*pi, axis=(0,1,0), origin=(0,0,0)) rbaseball = 0.3 vbaseball0 = 3*v0 # Display an ellipsoid Rcloud = 0.8*R omegacloud = v0/Rcloud cloud = ellipsoid(pos=(0,0.7*h,-Rcloud), size=(5,2,2), color=(1,0.5,0.5), opacity=0.3) rhairs = 0.025 # half-length of crosshairs dhairs = 2 # how far away the crosshairs are maxcosine = dhairs/sqrt(rhairs**2+dhairs**2) # if ray inside crosshairs, don't move haircolor = color.black roam = 0 while True: # Toggle roam option if scene.mouse.events: m = scene.mouse.getevent() if m.press or m.drag: roam = True elif m.release or m.drop: roam = False # If in roaming mode, change center and forward according to mouse position if roam: ray = scene.mouse.ray if abs(dot(ray,scene.forward)) < maxcosine: # do something only if outside crosshairs newray = norm(vector(ray.x, 0, ray.z)) angle = arcsin(dot(cross(scene.forward,newray),scene.up)) newforward = rotate(scene.forward, axis=scene.up, angle=angle/100) scene.center = scene.mouse.camera+newforward*mag(scene.center-scene.mouse.camera) scene.forward = newforward scene.center = scene.center+scene.forward*ray.y/2. # Roll the log theta = theta + omega*dt log.x = log.x+v*dt log.rotate(angle=omega*dt) if log.x >= wide: v = -v0 omega = -v/rlog if rightstop.color == color.red: rightstop.color = color.blue else: rightstop.color = color.red if log.x <= -wide: v = +v0 omega = -v/rlog if leftstop.color == color.red: leftstop.color = color.blue else: leftstop.color = color.red # Move the cloud cloud.rotate(angle=omegacloud*dt, origin=(0,0,0), axis=(0,1,0)) # Run the ball up and down ball.pos.y = ball.pos.y+vball*dt ball.rotate(angle=ballangle, axis=(0,1,0), origin=(0,0,0)) if ball.pos.y >= y2: vball = -vball0 ballangle = -ballangle if ball.pos.y <= y1: vball = +vball0 ballangle = -ballangle # Move the smoke rings for i in range(Nrings): # Raise the smoke rings smoke[i].pos = smoke[i].pos+vector(0,dy,0) smoke[i].radius = smoke[i].radius+(dr/spacing)*dy smoke[i].thickness = smoke[i].thickness-(dthick/spacing)*dy y = y+dy if y >= spacing: # Move top ring to the bottom y = 0 smoke[top].pos = (x0, y0, z0) smoke[top].radius = r0 smoke[top].thickness = thick top = top-1 if top < 0: top = Nrings-1 # Update the analog clock on the back slab clock.update() rate(30) visual-5.12_release/examples/flower128.tga0000644000175000017500000014002211101051072015414 00000000000000 _}MpFd{D[qEgxNyhz͖ˎNJˆ~ymmṷvW~Os[`mdqd@p]mS~Q}mupo}Ўlbxusc4],YSxx[8Yn:[g`{qjcbnnh[dhMfoX{tvqk`X|Za_ȏٚ鋸{ՙ᝾ߣܤӁhvl`]V{kUtRuW{YxSuQzoϭӘn^YZbjuaE`_DYYk~zypzf{{rqÍ|oi{wdhwɄgn}lklvmavnkY[jBgVvfpsiRsB^nPsaЅwsfgt~ǂkrчsvvҟ䋯׍ۚ酫ZNddKn-NeOt+`~Estl9fj;UbC[iUp}q΁_PqzihCWV6HEAOSI[cOdlQfmQdibwyfgllkWzè؊~ovxsyǛգۊ΅υˡᐷو~қחˊŸݮ䍰_oώqOuIyaϙ؍ӎruto|Ԥmz՘{hup}s}z„ϓӠ婾䠶祿頻㡿鄭g|l[yʍn_m[|DlPrNmĔɔǑŨήǀSwpWkm[ttZ|`|V|vFdf>U_;KWD]awhRyxo\uw*- ).4@D?PR>PY>RWXisy~owqleqΓЗՠޓ͍ȟ۞ڌ͂đء蓾Ղ˄|Ģ蓸vvǑqq|x|Nn>aynurcƕpoto_tƊlowtzȁqĊӌ܃ܫ颼ꢼ蒨ݒޛ䄯mJo6m]qe]d[{LwHrNsvy~rItqJma^igbxsazXuIsmUtq[jmR_c]zS|RrHZ^2>AT_cO_c`ZxȘә۠ܟ֛ӡْٖ؋Ӟm禯蚰坴騼量﫽훲垶露奄줻올䗯匦qwʓɉȆhzǑ˕Ԍ̆ͤݤ⑾ڀ~mdֺۦʉp{e9`yOw^Q{NuYsohmڏр|ǚݍćŇmħȣ̛ՑǗʎ[ڏʕЍDžыwapqt_SyO\ގ+Q~'AmTi|ӚώȜ֧᤺૸飯]u颴瓧᛫⦴嫽멿層뤳鞴먽蘯㜴柺꧿݈̙̇st~Ёΐˏґԇ}ϗՑҍΎ˂oO}JvkֶӏĈ~fb`bhivj}}k_nzʔ؁tzîЈƢTm|LrxȾfۤ˔as퐠Ëʏ}\]1MIZnÚЛƙثᴫݷƊE҅蛱ᐤߠ妩঻짿꠹蘴뙵ۅ`jĐᗿԙۑ։{ɆЀnjϟْ~sQo(GX8]jJoxgƚۥ{xf_ofNxT}~ŒrkΛԞА̢зő|NJŏЊuRْ̠aiث猴ŚH]é3?^fǒЦݨ֫լ涼翐ܴ뷭YM㖱㜳禢ߢ⣺餵ݣݥ壺礽UwTtmԢߚጳ}„ђ߅ψˠܙօySu:L[Tet`sXqw_x|[s{Tsxx̪헵tzpx_{cwYmzNbjql{ہ}ҚͻƧΤ҅껴͒ǐ٣᪠~Pv܅k]əߜ˛4cFOmb|̙֩䡙ֱ|nץ~Ecﮓړᛯsէ瞶ࢹ梳׬۴sWwOFnҠpe|ɉ͊˜ܠޖΌwl|nzzZhoOblqϡĒ_z5MbPdabxtlmPkzSovy}t~vlwʠ┓rpt޲ŏӔYiꩤ̔xW旰mfs7m]h}Tjdzؤj˭;Ѽn֨`NvꚐ~פvӶ_ԩeȋӃēѰ╴Б~hƂ͍xcWc{ӟݤ٦΢ΕsukPfmCU]AP]Tcl_suqzj~I^j"0<$275CE?NU_uzǪmqc_sx{Ɉԗة⋅j}qĮƂҤъcaҫ͇S좡dacEL1:@+=A\noҶӸןoaz{ȋyb~}}񗇧Ƞ‡VٓԧT΄mArpx4Gd2&·ݼ컮IEwiNeј蟗>7sӔՁVnlЌדۗܛ收硾x{ɐm`T|OsW}ąsifbbnlQ{D^rN`oF]g>Sb`rc|WinUgq[pxO`jAO_GPVr죵~lgntŃΏԧ⭺؋_jvOomݍז㏺ndƄ}u}oduwetw}uuAR\G^mizhx~ZqxZ{}_dbZHy@j8]x&J`?P)LajݮໆɦИcyRcuFXvn֫؄iژ뭪lzgXoϝ_[v`iu^h}phrTAb;X;Bc׼ۃvkgynj|uŚ֡~ahwwrٗߎӏӉxpfYun~zo{wfsrgru_inYjn^{uu6BFWlsxotN]]XhdoZ{Yzmu]Iixgr6Zl̤j=ˈdL`fr=ƶ符fketbqSaqчjm}cXptcezsyu\Smuf_oulr^Sié~\QF0]ֻ晲آr}vcvXo^z͏ڛ޴ׯіإ蓿ߋԈυoX{ezɒԮySзNČc8eq3Z_EVhNɶIFYjSX0BN{̒Bх欣رԘϺιceVTkދiiyjWksagzmwlXWpr\\uqnhXZv԰~f]L0Mʠ욶⠻锵܌ɊȑɎÇwGU/L2QLqp͆ֈv̯ݳ٢أ݁hhًّۣʐķУi*γӀlo^UӍӚq<ϚUN`fL^j|\״̿P٪֩ұӚ[_MbncsgOgi]esdqhT]tj\dumm`VeүmcH,Fы௿垶ڡ䏨ׅɘԛْ~~~ko\vAU*C|.A1I;axtWxٯތÊȯ蕾ݜᗿ։x䦩trym^t6DҜst|n>֨{ъЙkcOv;°ۨ|\ΌⴆעЪr\NYs]kuk{S]rﲍn]Ofrb`ltjd]]r߷p]C0J~ᬸ䢸̴ُⒽіїʊ}ysf|ka|AT:O,>p)7r)H0J4^pƄ͚{}啿ᏵАӗԌyxÖ䖏vulP0^_i8RcR`~s>جVՍpbl~t[fӡխסʸdʋߤҗب\UP}zS^ɫƉHVhSOhj[\koi`X`}ݰs_C5Ox┛ӗyȤޢȉʆ҂fSrBW9J}8Hu8Hn,Au,D}+E|Lxl{ÊzƬޥ픾ݜ捽~Ӏʗקᕾ|jcd^ǯ壐eZ|\v|j7DۣqJjtmo҂F\ߤЍm;ͻ=Vdec^dx۪ԛՏeߎق´eYJsՁSȔBXIPd_V\lidZZp}ց؝q`E9Stᨢ۪֖ѳؔߥꣽ韽闶ራt[nSdGQ~@Su@Ws7Ix*C{%G9YΘՖvӝم׈֊ʠݪ߁b^bYuImu}Mgy\r|{ށN3a~ՉMTՖЈp@Ӳ9.;Lmli`]USb㚞נeΕ|ZHlgđG{OES^QPZc]XW_svȆރk\J>Sr緢ԏƟ픫σ|knilESw&;h"6l&?~收}ɊՈ|ԏܨއlt{vOo@\sTlᒃjڦh9IܭЋWGהȕхnBо>]]wZmtcCRgSMg㦡˹טijUHh|\cNFYXIIYZUOUhkoրm]LEYr꾞ۭ޼߭Ɇњ鰛Ⳏۺ}־lhp۔΃Rb;R|(6c#>u܋ʚԊwdT\iȑ͑ʋzq~ϴԷ~Dž{ڌݓ}LvCӡuwY,y=؄8}COGMOJKFQS\a\Tdtzqjw\up}ƚ|cSH8* 7]z؋鰏ަ띴䕮}ӎ߅ytޘ鄭oґ煴lzs|׋~Ѝ¯ݦҢ~{gnی۝uHIftNMbңvv_CAwoj?4u`ݖť闦oқ栾딵借ЅxjvgߚgUato`z~ˇͬyrյ{lnҒƢ]AWmTMaاpq^DB΀g_98m7HKZ=s|ojRʾ4)Ѩiϫٛj츆vcBa'C*Kef͡o3:"U"V?@ig4|+r4m0Ȑ;ޣ>IPڜ\ZHVlgnXyPaĺphXUND68BQmߘȩڅχׂِ䔻撸⍮܂ƌ΀o„וStY~ppm}qojϠbnЇ׳uttt͕ڐpELgWN_ڠkĿm]FGҟhS4;b9RRDϴXyP?&5ωcÉg~ۆb}hn0Ç/>)4H8@=$&H>y8s<؈EZ)Y$~.җ6?yFЯbMLa_eLyK_f]VQJHKOTcuՆ篺晿헻鐱߈ێ䒷⎳ܖّtv¤֜؊sř݋́usʑfdvȂ՗wrv}{܃Б}VGdZM^h˶k_HGةR«J9@T;Q:ۑf\C2 ͳA{Ynl݉pxfV0>.b]/[x[\Qb\\FJ[|VxEȢpV"g#/r3zFԺ[NY\dFwE[_WPLPUSND;4+&/H͵{ެ뒷搫܈ԕ܋ͅԧvॵݏ䛴ˍԃ|͂~Ȗʒ…Зۊparݷʥytx҉؅eLbaR^i٪laKKZӮF:ӯGmEKI̕bGA'%΢CŖ[ƠT`ogh]sX/Fgy9+Fjx\Ό^ǒZPa'U%SUX[aIlF[ZROY]\Q?5- "Bwܳ茫ߊ؍ŒɓŀۮЎ̝А݈ޓ湲㘐yΌ̕Ҡݕ}֓ڔڛ{cp|Ά|sxۃЅsUXfYVkhcRQ\D>ثLõVFNKB9/˙M³T<=;@@FIPP/8O"?7^ȈPpU">I*SZ^iH_?TQMZ^YMF8,# $7aѠ敷琮p[tThgעŒΆswyόډؙӸܙʯ汫נ̒Є̛ݿjowׁwx{ӀyaTfaXcgӶfWR]C=VVF՛O3#,̙TwlgI8N.i?\T8tE39L\BBW_PBIKf|qG`B,GLG.l;YPHIIEB;?J_zǖæưɴɹ؜ȁ˘䒫Әp۪hRvdɱШλsmp{vmjojݾZOؼX_OJݧTѮUӷCط>٬D̲;&$Ϫ8ċje`;9~ZS|~Zg5QJ.8QZEBPE70%!8vASEJ-@I-L-XTF>C@:50(-Uڽtܸ߷ߺƣرھܮըۈzwG`wFb^\~ݫӶϲ{omxra_[߷_ԯN̪AҦOհMٲ=ٟBҐK˗EϠ4љ<ʝ9XDgDBG.?ҧ~͞{Ũgvb=AdNT_en~>Gy66{Dº/?VN;@A-$$*134[C=ygOU&[/J.RQ@2')?IIIP\pӇ̤˶ż㵷֙̏ʘԫv"&:^tak_lfQqX{IgCa|נҩkep҆{cNM޼SקU̟@ǚ9͔G͗AΗ4̉;āAŽ1ȋ.Č4Gމ3]7;J^صl˵X4Ӧ]ȀtqcZTzLLl;B.3Aô.EP<9K>.7><5-<@Z~oIKɣT]L3))(,Nz̎őĔŚĤͱԸԖڡ埰ntbPstǕzvlQqUnȟڻӡةjcfs}hNA߷>ץEЖFǍ:Ď5>Á6…0}5w4}'x+6Ђ*g-g沌߸D%ڢWurxaqXgNmWJA@4FΪ0HF39UQ8&2P=NsMaGPzOMr[frٻԩz4텪}ːLj‹ɦⅤڙԧޮj^\߻eүdԩWخGת;ӡ2ю8~;2|/p4p/s%g(b(]#0ã2É9eZD*ܮVmlrqyntepZtYRëHӪ:ۤ4F:2;",-̖:TD2ޯEpmNT~suIKVKuhlaP<=M?7<,ޥ,>WJ=Ji—rGFKJKGUfkpjkihkqڲ_~HF2Y8=O%3R.Eo2OVKfO]9G@QJ[xɒޜ塶杵룻Yh痸哻~ʅȎѝؠ֣zhr˳ԈƏ᷊ںrۿ[޼MܴE՜E}OwH}<.&p*Z(U P;7 =1?&8ZS9޾8x[@Es9BiZfJJ{?9j]VafT@MR2Շ8݇7ܔ/ޣ:X^@@Z`SJPSI71*8G><<@@FHHKOXYԙYFEb.N$6b9WZxKZSkft8A=J}Ѩ釟֋ܙ夾kx핽ꬪ殞ݼʢҫյۺݵ԰ݦșǓ‘ÞIJyw~ݣyҖj͛\΢KԜ?ь=z@h;a0h*o&X&<:2&#p%!n,rmo>[F:̊?cO12i#M?DGE}A:mHH{f{XERVܒR׆Cօ7ؘ;H^O8HTF;ܟ<٬CLPD0&KMKF=850+**1FVVC֏<טDە;{=ˁ9ɈAȥ964ܙXĀcbƳdaYQKC4& "2E9#N 2.C_zh}SjOcƋŊԞ᙮⋦攵h}Ss`i}Ս؄҆ʍÛĺӱӨ՞֛ҤwfYي[nSeNkEp8k,[&D!0+R@|AW/F+X)H>*m,5<&5wP3"j(a*%\LK|hNDI3$)9p׆uniɓhɆ__H9Um^ۈD҂B}0l8f6]2X7gU}ĺόxMVʞǚï|pdVJ:+յ3/ J<#9_Igqʝ̊чօ}scޕsH`*?(HV}aa|ȂpÕĉuabv՗ި˞ÿwKӄQcHH>N9Y*S!GKBFXY=eMȌXz7d2Y.L6^27S-kM9"u/ca8CL=' (-h}n`a\WW_ajkkYAUwbr8k0s+w;~;ƄHČ\qcellx~ڽԛ̡Ω¯ӲܪnKʚIVHw%*O1Ykڍ{yΗvl]}l\x+H.z-n7y(KGkΔΓidɯϲkĪZV\hݘ̫IӓH}CW>723+:$I9RY_eHaZq]^D@^MLǔ?³,lj5]D?Iǰ88D>/!'>3CTV=GGL1;s =sJWpoQX{^‰]ÚYӴOFSkvۙrzpƸγƫɿΙcZvXW|EJl(M+?j\wafYrhmGj,Q=.}-m.g+i*o6u6eαƸÛăД_ɇFǂ>o9H4*'2+Me'^hCOHKN#^iL>—>FVNE9;?6'3Ҿoq:誠TTV_QN|/_%IyKUscXmćs×ǬvdRVtڎ~e`~ɸˣƔ񵴻LNm1;[ ,V%K.X%D}7PVsayZn:XC85{/r/j(a#YI= >զz}lEn:u6[/8-]9pRtfW&M\>7IcSC=;5о+˺!&3ΗScR덃Fsq\t|oȎy_aԅ곈gi϶ƽ̷Ğܷͮ쬯T[u4=g'U#I.`/o,C@X0F"4$56q3c)_#R F 9*%䋴u}Ι峯ʙʂ}df9]8R1`;b=nTz~$tZU!1M+TχGNF>ܵ21ӿ(μ$,ӻ6sJ``vVXV'8efDe^uflޭADnSUz0;_-W#=l,L Z1"?+N7X Bb =^-Bhס֫nZn3C[AWoXixAPd2\xҳ•oo]dPe};RqQ_5Ce4=VcqyiT+6Y$4Y(>iBw7r1i3f.`&VB 0 , "  #  юȏƋőҲĤkL2iHS:rv[kqKGԼ7FTPI>Δ2x>aEXHSTVbn}͖/Hc!'-3+E Di-Cg;Onơ 1- &   . $ ~zt“ҫ۰زÕ̮~bzMjXfwyM:t+v %d9UKJ Nb?AxDͺGG?4,+)̒0HyXZYS^xpHo?GU".+!9U1K#6N%@T|t򲕿-@OIZc-6A  FWhqtxpKlLu1@U)S'@g$6]"9_5S'4?=Zj3Mh :D#2_2c-c&ZL7 )  / +#7pqri^TY\kٗڝ|kfkeXxB_.3=Us~oUlY{>p(6a8bA^EXE[2VG[ҹ;5,((-ѿ2ɥCd~tksXegrT0?R*9,=$1-:.:EKh{)DF9IV 3IThzyݒj]r"4D,K"<^/Ai"8i,W!A   ,9(T';s2m&[C &    +&;I,DW0I$=Z!AZxoԚԐφ}ʓܕ{yxqkgbcfc^MX6M2n@wSg^Ez"q@IYi`{X`XӉSFD@?صIƎOpXQURWZ_x~BP\"*$2B"/?"3($'6.<0?׫pc0<0>K3FEo`pv~њitzH[j#.2-M!Dp&>i.R9+  % 1#S-] C& !142 & )&11B.H$=[/LpђٞݕȔɰ{|xvpib_]VMr7`3d8X>_WkqTyPj,k2ZkRܨC΍ŖKҹFӵ=̟7G_]PVj.:gFIr_iOchopw2?D  )+5/:,=(<%9 1= "&}gdv.9Ofu~uu`h|yĿٍϦ]jk6CM )/M&Ij/E ", )  -     ;&B1  ,4N,HeB_}E]~wǙ䒿ْآȶvjc_ZPրGh2X(QfDCIq]_jFe)[MVWlJ2ʊ8z>^9X+m,|^lYWN4Cv*>f_hciHY*?bmv{.:E '$%%)18+@M%9 1=-BW\{adwCMkizstZgqVlquOc^M`q`ۺլaih7JJ)3:    ).,#.#-!     ")-:M +D5 % )&G$:Y%Cf+Lnsϙ°׸}|uk]U{JI+^Y2M2M&6O#=X2WqIi(61I$3R$$>0M$Gh*H^-<"3C*AT.  }zʑܛ决ͅϽΞ㡑΄ŞˤΟ͐s~`]NFBA6F3:!,.!ZQOMMw5?ȤFɊAtGpţQŨ6>Tգ\CW;Ow*Ae>Op=Nk.=R!/?/=^s:iw"*"+$+CIWqOa!C8Lk]y\lxڻλ⨸˽νAZoFiBb|@\u9Oe#>P.Pi;^|6Z^˟񈪽ζaz"Dh:a;Oq6Kf3KbQ(>M)BO+5 )14oy%/ )0BL$($-#/C5B[8J[2H`k}tz!+-`rat|rTg~NfOg]9]Sǹ؟ǩ߸6Lb.Tg>Wq-Og:avY}X}=fQ~گ拭Ϳ{&Kj9^8Ol=WoMcwT_wYEkͦ~عK̸@TTeO(Fg >S!##/8+9N5KcIbn]qCN]%-5YhjraseIexUm{z|NeOqjʾOe`䳻EZm,K\=T&H^NsSxj>b7cѴ䙽vйxBe$@T=VoG[zQfL\y6ImڝoX}wdNjxMg>_vPtv~ryҋ芏ed|t\XۊLpFj[?KO{_ni^qZĠϟeԶFQX֭Q8IIߩg|g^ZokskϯȈ\ӾR`^ZJv5[tGauEYh!89!&)/>E,=F(0.@H?SjPd|Q`yGRkSfdtanwetexbyWoHfXye˖~\s|Vj;P`#<@͵J^v)Bo:[3Z8U!6Z #F9PEsxԥNy[iEi;^y4X0S+J 2V%G 3NGwLxe؝ׂ{̍Պփхz‚ɌΑ}ˌ閪tkweTeXPWQ[hekT?ETZEW[AS]QblEVZ6@B/8?d>nJ{դؗجx8\~.U{:Yu4Uv2Tz@b5Tw,Lk7Rk-?!;Psacȑإ݊цɁуюѭ{חݟzp~hgsį}fSibsewjwkjhS:>ߥgfwotUe`tjq]bޥyegxhYu+1+9>EVZUdtO_pJ]jMamCY^/8DKGWiTh{`r[lN_jHV]!/==OYUo{[d˰ܠmipzȤŸѶٍbw1V~9]Be*No#6$7Uo[~Jioa1N%9&FWA\g=Lc 5O/Po4Us1NiHbx1DZ%Jnkfى܈ңozכzыwo{ؔެ㺏yoٙn_LqiVijybmt|gq~уP98ۡhbqJZ{FVtgnYg~/GlpjǪ}ݾowʾ|AAZ9F\EWm@Rp=MbUat`s]qyLY^9@I)46BT_Oey\q}XkH_jcxztg{wVvQod}ǼʔOd^2LGDbWLj`pzͿǢ>\z@i'O'J+ #*Sfj~ck'=W.;&EQ\Ujq>PP+=I&:K#3H"8K1J[%3A6Vg3Le4J$8ჰ~Ɉrctoª׊zԮ‹؜ت߫rɨ|kMc{@Rh6Nd}لM[psx{hnuz̎O,܍FDXu]nTkaq\oWgxObvFXptvʬɞۮʲPGfEXpau[n{Xk_uSn}Uo}ayL^n^p@QX:GHEXnTh{CPD Rkchv}BT]LWf#4,2(g}sx{Kh]Xtlgyqw~v^t1CPA]z.Ke-:#5K%;\Dkn?Yl $)2$5@);L1FX0HZ1KX;[r?]x4Qh1Lb9M]&>W/Gg0Gߗܓwtph_ʯŞ}מťϊW{^s_qq\}cx쥧gҢlu|cvRfqu×ʅTԶCAHx3G`^rQiOdw1>M'2M(1D1>SUVk˶߬ɐK_IaxKb{ShF^pF\hhy[fpHTj^kR`b(81FXZSbxWce5<:9JD[hg2CWpfx>HYJW]frg>YHtʺҹҗ|KtP8Xq@`|OsIf>Up3Mi+Fg(Ee1E  "-9%8J/L`9^wLw?\h;byVzFf3IZ%9G+I\4Nl(AayfaxyoΧ߀Ȁ“w{ʙѰ[tHoV|b`eщl҈aZjeqt{ZnOZvZeΡè༶קygT1BiVb~Tau3AR#-7!KYm@Ua*5B|ߗ@Oq?ZuOgGVs>Qlly7?@9EQoxS]a\lodmmP`\Rj]fgrT^i,K[h\if'0O_ymXgb2H>A[OśyՙeE#UDn\dBf,Qt?i[}1H]-AO6A6\iRt;Xl\xOnzoΒٚUbv3HZAXyUgrGXn5>Wah۰έ¾ڏ_j{R_vDPxKVtOXiFU`)9:-7?`pVgt;JQ2@UGNn-C1DTN]xL]xk}gsCQg6FWgtm}_omnvzr{yBWi>STIWZ=THl:MCOdmn{IT`Q^j[fd[ph~n{wj~yzf{`իٓkBfEpCo6fTnBasAg3Sg@ewQq<[sFrFq_=Xn>]1Rw/Kk2Pk8S^DWdQqi\Rriruf\ÑvwzŚϛNjȗыŀx]OqIe{Vtq}졤qiw]p\xifRfy;F`$-IչږOXm`l|Say?NvPazGWdN\mQ\kVi|M[k:HZ-6K/8FZlW|H^nYiuObk@VhOazm~drXj^oq~xcwv8GAKa\~fytd{yv}VmwQikt\b`4BO_w`l_u~Yq{LyӶ/I^#MeudT]̍[8az'AVMxCb{$A^ZtTђb0Unk}nEplUzkd/J=`wՋNrglaXzA[}Ie};Xr'4H'.'1Pk~CXfXupjnw~JiSsu^}Fgjm^{vxbmiv{sAa|Fh`|Xu4Mj,@^;OlA\wI^yJ[t⳱LWt8EcCMg3DV8CT4:^4EmXkEWhEYh;MZ,=O`}I]uQgw=J]N^gpfvy\hojy^ouQkzjat~wmDhXymL`hVjuc|w^|-FP5@,Wq}tA[uGqꈶ5L]#:emmŕ焣dB^o2Pf4Ha6H$ ղꈳc_YKuMk[{`otuqfvRnzEhaQtZyfygpcKh~c{G\r1McItMqJl[qA[i7NP7JH1CO&6S4DRXiyK]tYfaq}Sbj;S`Xmy5DV2E[:JVRfu\zoZwkVhj_pttlTqZufhgZw|>Vf;TaPmy>mv{U.H]eqӂZ~KixJct&5I#7S ): zN~Hu]oCg.JrCca}t`UYp[}jOqgx]}fkfa5Zu<[uLiHfJnPs?d":X"7O*8I3MlVn}Sjr.?K?Ud&@M1F0>MfJlb|zmOhrWm^u;QW@_ra~Gjy|yw^yYt|gx~:P^Ngn_jv+HafZsKt޽u/4#3Gn~݉iJf~>]t+:K -:,5/FV:V`tStGl[hIr6QnPohxhgAh2Je@\sCgn]r{@Yjjm^nNkFn7ZoEat`UpRpBd)D_)?&:D.?LJ]gZjyo{)4G%8M,X*:D1EVWmJ_{aky'8'7H%5T#-T9J`:MZGVjANc5J[Pg{6Df4>_Wfr>KJ'083?GAIO;BB(-$1=:Hd;PeCZfGWpVaTf:R_@[q:P^K__Mdh|Vff +BHWxeZwu^uTi/<;N[Wsw#2?=SD]o4Rf;\tDd|jGoz锸̚㌯Go~us@buFkGpQtC]2Nn/IXEbpSm}ttticbuoQvHkCdRuzvvvQwEgBe~JrDkB_x=Xmbu_f^s~?Zi:Oa3J`+E\6Qn5W{*Hl+Rb7F`G^uDRgFTfM^pbnzDLU +,!02:PNQ_fFUY7MR>QfGWrLZBZuE`m=T`9O\8PYJcgRkoWq~dxwVntGfv]|rn^tLZmYqk;Vi;Tqc|"\<\lCet[Gj{ri#C`BjqelXYo6Pm7XiMmMmrknWyPu\NvKoZo2K_BZmKe~Jcw>Rf>To-AX5FY0>H+8O$.F+A㆑+A*B%3J"0@1>Y/;X&5J0>Q/;V/BaBUgDTh9Id4EY;GQN[iQaiATWPYAOYDNjRbOc}E^uJcuH]eBST\tzf}mczlOhwE_q@`rQj|Ndl)6UpmQgo3MRs[}Hi8UwEiaQ{kp!cV}HmLlJhTpLl\[X~FcxB]sMh{XvJezB]qD_pQi|Nf~@YsBUo.F^$8LG[hFXg#3C"/B);Q|x$;U,B)A'@/:N1C\#5T*=O,T^c~}Ѓˌb*IrCa:^{+Ig_w%6N$NChܝ6O`'P_U#@[,RqBjQ|Oi|&;QKn^ek^d`JqWoŎˇy]OyEnRxXyVzU|fTrEd@azHjSrOrJlBd{C\t>VfAYkAauJkC_{7Oi;ShMh}@YsCTmVj9Sg$?J&@NCYpCTns'=^0H.5L',G)4K4GV.B_.?R)Rj@Wf?Sc?P^LWi4E_7Od>N[2JTCS`IU_XcpSapEXoQ]zVjKjSkTd8Qt@W}B_NeGZ|OiWhhtOZm]oz9Xo}RiuFcYw{YYEd1K,AV(CY/KVy*Z(BW0Jb,Ge )<.8G /H):OAPd4Hd.J2DaH\vK]lHXg:GV>Re4Rl6FX5@R):J8EWg3Id-D;UP}=`t9V %H9`Zᄥ:Qm7UhW*=[:Jd:J`CVlRcpSiqKdrCRf@Pb>Te6Lc6Q/AUWjrUr}Qf|TdwJZsH[qF`nIewOgwUixqmOhX}c]lr*CNb>Zs>^u5Rg,CWNlzKc{,Kp"=\(CcQzChz=Z)H-KCliiٜ}c+K]1G*@T)FZ.Oi&I_+@X#13L'9RQuElKueQxSwunGi=\yKnSs>Yz9Xv`iJk1Mh,Kc5Vt?fdpf]FlRrkeLe|LkMlKd{:Vp-PbFauMl=Ws9Pr:Tk:PhWoG^v,F[9Pf4E_7F`o9P`*7E0:0;O(2;#*4*3G(6L,BY1Dh*?U6DR%0GUh>Ue[yvvn8Rf3Gdpp\~SfsYq}jWt|&0 *2 ->(D^2Oi.H\,BU5KY3FV0AI.FS,Ie%=\/E\DbsrzQi|/AW+AW%;]-EjG\k+A??QX)@@;R@drAZpVNi{pXy/E1E,J&JpA`XlV{V~Bl:h|kmVⅴfO~Jk)CY'Fb9R4S%I\PoqUz_ajvobV|Sx<^{-QrRwRyKibaVsY~hWzJqDj-To/NfHb0He$@ZA_}@O`R^f[hmUhzE\q9Mc?YzOi9Ry)CU(=N%6D)9G2G]/HX8Ne5Ja2Kc+GY 9H1B''.+0$)2J1G^/EZ*AU";R,D[;N]5ER8K^/D\*?X;Tkca`}VvJh}&[oMjUznp9Tjiz;_v&=[2Jk+BZ=^woi"5V.>'<&Dg6UGmdSqIkIi~.VkGrb`|p蒶|r|\|1Mj6Vn->]9`tbs[{j]bFg{Njo~sTvNxS`XT|_WucugaJp>`xKmBaz2Rj0Um:\v3G]9LW_lvaq{J_r8Oe5Ke7Mq+Bi+H\4KV4DX/BT.EM7P_F`z=Qp0B\1Lb*C]#8S($8B!3#;/8R0:M/CS'Sp/?d:Ms=Mo.;W(9H?P_MgpB]nOhziUwFgKoeXq}Rau&6FVjM]q.Kr?\tI]fNl}Rn0Xi;\vAZ.De#DZot!5E2H/H :S&Ej+Ko:[3Q)ZKxx>QcnqV7Wm"09#/BToq\xmWu6Tr;XzouUz@Y|=XqFfEhQsdnc^CfOoPpA\w;VjC`vIh|E\j?VhGdyTm}[fpWgk?Wg\vH[ 4I%>O*FbJmZ{RpHeIh}PoKkEcplrPpQr]SvIizakiFcvLrQuNf}_nVo=]r9IZ2B^7Qm2Jh5Ha7KZ1H]"2G4J5P1M2K!4J3F&;L$3%:J3I`.BU+>F(/! "%"&3.:I6GW5CQ,;H$5);Z:OfLbm]q}e}vuunavPfyYqj^uYp~Z|a:_v&Yn.KhSr]{?dRskId;Y{cje^Vwzt 3KLhlf]}`|TeSlSmKfHf4Ka5CPEW^BR^:FV9GS8ER8KW6LY1Ob.JX*/%.*5*>I2?M.?K.>F1JR+;A 0CN~qē\6Q[HjMpKj!1H ',=OXQbd`w|Tryh=St1V5Y8iUdHqNuY~<`-Wx@\9`v\iօ:[u2^YMizPwNvUxfnGjGdFd.Jb/AO]Xy~7GX9McE^{iWHdg~Bc~6^Ai8ZFbTr1Hk&A`7Z{@e}.L]'9I!1A,D^`~e|NjQjRk[zOpB`?a!?W)6-EV7N\,8M"2B1<,Yo2Ma=\r>Zl.BQ"5F1F^@ZnH^pFXo)DZ/Qn4Sn8KFfZ~`6Tf#7?->E(5H%@8YbS|ViPxIuckgwDtLxN|yxdGjUxlgKnQr;Wo :[B`hpMjzOjy`(?L->P?NhTyT{UkpmLi:[4Ur:Xu:Xr#7R:TtVuZzPvHkD_wJdq[wRn[~WvHgC`Z3TKuhr^(FZ$?Q*>VVvsSwWn{WftKcjBYe0Lf-OiiOmw`{\Sta(G`&3!6G)9Q5H]`qxgtFja͝WUU}zȉӕޙuf‡YJxxŁЄ^3[@y{+B]GawB^o,G[FjieKkAbu\7TY4ES$4> 0B:PfMe~IdyA\Nt3Zt-Oi>a~FhVwdfZOw]ySqElTzJj4Sq3Qs0Ov0Ss$Ab3VMlEe=b9Zw6LhDcz]Ml6XoYxe^Qr]Ffu:[m-IV"8I'>N%?W)In&Ba6Wq@bz_QsWx~hdHrTCulrU2Yp+LgWxtƏw:YrOorMo4Z}TpWnwNqsp!5R(Gai=^t!/1D2N$KjL_h[kzlA_Rŏګs]gavn7Oq0kSGw[|@gd#@`Dl3dWhIh}QkRl4Xp@gR~BfWzZ\Nqp=Wa9RX>L_[t`|c2PjA^|@_|%C^,Hb?dOtX|aiZ|OtNjNmDi6X)Ei(D`B\qKm:\t%Ho6U;[z9Vn-K`6Sb3OeD[v]Cay/Of?\zVw\k`Z_M|0Y JwU`yZ&En)SApgQzOsIqBhSxZOth_?cwXHftNhuB^iDe{F`{Qj;Vm*Jd6Vn1Sj?Zp5WhAbxOnLjXzZ\{TpHcXvUw:\{8Wq0MgEc|Lp-Ph0O{@[5Po6Um8SeBZsJcXqSsOrKm9Ui4Po?\:[xAdyEg{RpVxRx[xcFax1RiNv]Xpؘڍ֖؍{q`ßቸ]<[|^b^IudfdLkwCYvS}~l\Ms-Pp#A^3He$?\/GU5FWe{pq?eK}XtTЎ֊шmMisguzVsZ}mtIzLr7Tj?`|A`FhZgS|@ctTyIlyNlw;S]Jhuh[vTp8VsHh>\sW{_Gk.J_">O8XmDa~?Z{6Mq5MgYs]>`w>d}Db|;]u"Li>S)Ii5Qg/Nf=Xs;Rm8RuGdSsMnBf?iLsLqGby5WtBb~_}`e:[{Cf}UqFcFshu]KxutiIoDh[aoqy|q9WjZZ3UrHjVq>eMwuWy:XtFmZlcMo&Ig0Or7Ms/Q/L)9F0CNNlfl{v\]O}P}V^Ňl_t^u~\lpqge}`s_mw^t~DgVw^{Vv_|zd;g?`yEdyHoJj{Olt`s~nZvB`}9VqWvLl~YzGi%8O);/HXNkVvJl2Ko0Jn]4UjH\iKZ_5DO-?S7H_WzhYuDgEsT}`Zt^tl~izZlvCOV9EE9KLDPTJV]K]bEU\BPY,>N+AXKmgf{}EezA\.Sj:b{Jr\xdUpy=Ye)K^3Wvqme/JZ$.>A_zZ|bT?^y5MkEdwCiDi4XEklPx7Yp,G^Khr]{{Ps/Ea7OiS|dfg~MqyLjvUvB]l=ew8`{EoYFmKvm_MtuJs8gX]Q{@nrjAawJqigHn]͎a_Ut4Xng]a\?b5Xt%=[=[ofnTf9KS+5B(8G7GU0APE[iGfp@T^2DQ6Q`RwIm|3OfKo[^}e},B[0P[~bepe4\t0Qk?ay7`xHop|n;Yk7ZtYz\Pu*KZ-2.N`NiV|O}mrxR~0Tm?fwgmd>j} vertex normal vertex_map_backface = {} for i in range( len(pos) ): tp = tuple(pos[i]) old_normal = vertex_map.get( tp, (0,0,0) ) if dot(old_normal, normal[i]) >= 0: vertex_map[tp] = normal[i] + old_normal else: vertex_map_backface[tp] = normal[i] + vertex_map_backface.get(tp, (0,0,0)) for i in range( len(pos) ): tp = tuple(pos[i]) if dot(vertex_map[tp], normal[i]) >= 0: normal[i] = vector(vertex_map[tp]) and norm( vertex_map[ tp ] ) else: normal[i] = vector(vertex_map_backface[tp]) and norm(vertex_map_backface[tp] ) def DrawNormal(self, scale): pos = self.model.pos normal = self.model.normal for i in range(len(pos)): arrow(pos=pos[i], axis=normal[i]*scale) class Mesh (Model): def __init__(self, xvalues, yvalues, zvalues): Model.__init__(self) points = zeros( xvalues.shape + (3,), float ) points[...,0] = xvalues points[...,1] = yvalues points[...,2] = zvalues for i in range(zvalues.shape[0]-1): for j in range(zvalues.shape[1]-1): self.FacetedPolygon( points[i,j], points[i,j+1], points[i+1,j+1], points[i+1,j] ) ## Graph a function of two variables (a height field) x = arange(-1,1,2./20) y = arange(-1,1,2./20) z = zeros( (len(x),len(y)), float ) x,y = x[:,None]+z, y+z m = Mesh( x, (sin(x*pi)+sin(y*pi))*0.2, y ) m.DoSmoothShading() ##m.DrawNormal(0.05) visual-5.12_release/examples/texture_and_lighting.py0000644000175000017500000000626011110305410017752 00000000000000from __future__ import division from visual import * # Bruce Sherwood, August 2006 # Demonstration of transparency (opacity), materials, and local lights in Visual 5 # Create a texture to apply to a sphere to make a beach ball bands = zeros([16,16,4], float) for i in range(len(bands)): for j in range(len(bands[0])): op = 1 if i % 2 == 0: # every other band is partially transparent op = 0.3 col = color.cyan else: # choose a color for an opaque band of the beach ball: col = [color.blue, color.green, color.red, color.yellow, color.cyan][i//2 % 5] bands[i][j] = (col[0], col[1], col[2], op) stripes = materials.texture(data = bands, mapping = "spherical", interpolate = False) scene.width = scene.height = 800 scene.forward = (-0.2,-0.2,-1) width = 10 # of wood table thick = 0.5 # thickness of wood depth = 7 # of wood table height = 2 # of side bars of table xhit = height-thick # x distance of center of ball from side bar when it hits R = 2 # radius of ball H = 10 # height of underside of ceiling above floor L = 5 # length of pendulum to center of hanging lamp # top of floor is at y=0 for convenience scene.visible = 0 floor = box(pos=(0,-thick/2,0), size=(width,thick,depth), shininess=0, color=color.orange, material=materials.wood) left = box(pos=(-(width/2+thick/2),height/2-thick,0), size=(thick,height,depth), shininess=0, color=color.orange, material=materials.wood) right = box(pos=(width/2+thick/2,height/2-thick,0), size=(thick,height,depth), shininess=0, color=color.orange, material=materials.wood) back = box(pos=(0,height/2-thick,-(depth/2+thick/2)), size=(width+2*thick,height,thick), shininess=0, color=color.orange, material=materials.wood) ceiling = box(pos=(0,H+thick/2,0), size=(width/10,thick,width/10), color=color.orange, material=materials.wood) pendulum = frame(pos=(0,H,0), axis=(0,-1,0)) wire = curve(frame=pendulum, pos=[(0,0,0),(L,0,0)]) lamp = sphere(frame=pendulum, pos=(L,0,0), radius=0.03*L, color=color.white, material=materials.emissive) sphere(pos=(0.1*width,R/4,0.45*depth), radius=R/4, color=color.red, material=materials.marble) sphere(pos=(0.15*width,R/4,0.3*depth), radius=R/4, color=color.yellow, material=materials.marble) sphere(pos=(0.15*width,R/4,-0.3*depth), radius=R/4, color=color.green, material=materials.marble) sphere(pos=(0.1*width,R/4,-0.45*depth), radius=R/4, color=color.cyan, material=materials.marble) scene.lights = [] scene.ambient = color.gray(0.25) l1 = distant_light(direction=(6,2,4), color=color.gray(0.3)) l2 = distant_light(direction=(-10,2,4), color=color.gray(0.2)) lamplight = local_light(frame=pendulum, pos=(L,0,0), color=color.gray(0.5)) scene.center = (0,0.4*H,0) ball = sphere(pos=(width/4,R,0), radius=R, up=(0,1,1), material=stripes) xlimit = 0.5*width-R*sin(acos(1-(height-thick)/R)) v = vector(-0.5,0,0) dt = 0.03 t = 0 scene.visible = 1 while 1: rate(100) ball.pos += v*dt ball.rotate(axis=(0,0,1), angle=-v.x*dt/R) if abs(ball.x) >= xlimit: v = -v angle = 0.02*cos(t) pendulum.rotate(axis=(1,0,0), angle=angle) t += dt visual-5.12_release/examples/orbit.py0000644000175000017500000000130610715120637014676 00000000000000from visual import * giant = sphere() giant.pos = vector(-1e11,0,0) giant.radius = 2e10 giant.color = color.red giant.mass = 2e30 giant.p = vector(0, 0, -1e4) * giant.mass dwarf = sphere() dwarf.pos = vector(1.5e11,0,0) dwarf.radius = 1e10 dwarf.color = color.yellow dwarf.mass = 1e30 dwarf.p = -giant.p for a in [giant, dwarf]: a.orbit = curve(color=a.color, radius = 2e9) dt = 86400 i = 0 while 1: rate(600) dist = dwarf.pos - giant.pos force = 6.7e-11 * giant.mass * dwarf.mass * dist / mag(dist)**3 giant.p = giant.p + force*dt dwarf.p = dwarf.p - force*dt for a in [giant, dwarf]: a.pos = a.pos + a.p/a.mass * dt if i < 2000: a.orbit.append(pos=a.pos) i += 1 visual-5.12_release/examples/graphtest.py0000644000175000017500000000161610534175740015570 00000000000000from visual.graph import * # Using a graph-plotting module # If xmax, xmin, ymax, or ymin specified, the related axis is not autoscaled # Can turn off autoscaling with # oscillation.autoscale[0]=0 for x or oscillation.autoscale[1]=0 for y oscillation = gdisplay(xtitle='Time', ytitle='Response') funct1 = gcurve(color=color.cyan) funct2 = gvbars(delta=0.5, color=color.red) funct3 = gdots(color=color.yellow) for t in arange(-30, 74, 1): funct1.plot( pos=(t, 5.0+5.0*cos(-0.2*t)*exp(0.015*t)) ) funct2.plot( pos=(t, 2.0+5.0*cos(-0.1*t)*exp(0.015*t)) ) funct3.plot( pos=(t, 5.0*cos(-0.03*t)*exp(0.015*t)) ) histo = gdisplay(title='Histogram', x=0, y=400, width=800,height=400) datalist1 = [5, 37, 12, 21, 25, 28, 8, 63, 52, 75, 7] data = ghistogram(bins=arange(-20, 80, 10), color=color.red) data.plot(data=datalist1) datalist2 = [7, 23, 25, 72, -15] data.plot(data=datalist2, accumulate=1) visual-5.12_release/aclocal.m40000644000175000017500000120240311243356544013236 00000000000000# generated automatically by aclocal 1.9.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 56 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl _LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\[$]0 --fallback-echo"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_INIT ]) # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) fi ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_XSI_SHELLFNS sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX # ----------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac ECHO=${lt_ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF [$]* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line __oline__ "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then _LT_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${F77-"f77"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${FC-"f95"} compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC="$lt_save_CC" ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC= CC=${RC-"windres"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC="$lt_save_CC" ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $[*] )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[[^=]]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$[@]"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]+=\$[2]" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]=\$$[1]\$[2]" } _LT_EOF ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # Generated from ltversion.in. # serial 3012 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6]) m4_define([LT_PACKAGE_REVISION], [1.3012]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6' macro_revision='1.3012' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 4 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.9.6])]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 7 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.58])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Copyright (C) 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_PROG_CC_C_O # -------------- # Like AC_PROG_CC_C_O, but changed for automake. AC_DEFUN([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC_C_O])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. # # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories # created by `make install' are always world readable, even if the # installer happens to have an overly restrictive umask (e.g. 077). # This was a mistake. There are at least two reasons why we must not # use `-m 0755': # - it causes special bits like SGID to be ignored, # - it may be too restrictive (some setups expect 775 directories). # # Do not use -m 0755 and let people choose whatever they expect by # setting umask. # # We cannot accept any implementation of `mkdir' that recognizes `-p'. # Some implementations (such as Solaris 8's) are not thread-safe: if a # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' # concurrently, both version can detect that a/ is missing, but only # one can create it and the other will error out. Consequently we # restrict ourselves to GNU make (using the --version option ensures # this.) AC_DEFUN([AM_PROG_MKDIR_P], [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi AC_SUBST([mkdir_p])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 1.5 are not dnl supported because the default installation locations changed from dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages dnl in 1.5. m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python2.5 python2.4 python2.3 python2.2 dnl python2.1 python2.0 python1.6 python1.5]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT(yes)], [AC_MSG_ERROR(too old)]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then py_prefix_arg= else py_prefix_arg=",prefix='$prefix'" fi am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0$py_prefix_arg)" -n -q install $py_prefix_arg 2>/dev/null || echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then py_exec_prefix_arg=$py_prefix_arg else py_exec_prefix_arg=",prefix='$exec_prefix'" fi am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0$py_exec_prefix_arg)" -n -q install $py_exec_prefix_arg 2>/dev/null || echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # hexversion has been introduced in Python 1.5.2; it's probably not # worth to support older versions (1.5.1 was released on October 31, 1998). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys, string # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. minver = map(int, string.split('$2', '.')) + [[0, 0, 0]] minverhex = 0 for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([acinclude.m4])

0&IA"A2>(.';:B;4 J.H.)>MD)45?C5@=87W':b8;dD8S>6!+1'#!5 H#S094"B2N GfXnd{+pu*rq`[[CH20"- 1 ?#%H,C?-:5:S%1U =A9\ (P<<4CS*9IQD5 099 7:+J$@l.Ns;JV-CF9/E?3-K&FH8P3&SMAE5JQ2BW*W4IL:;CB2I:4%  0#9 4 ; ?&O4+a5$V2!H%F&2?!JAV$L`%If&_d'_T2P=@61M'DT@RZ?F[9IOO2FH@VCZSCY)+N@L978C-HK@VN4 I1 G+ B%>:AE-;? G>K*&g6*])"K\( ML!3U**V-F,9NCHR9O?(H;#:0!' & 40 59.;"/9%"?8"7A@MHcfAe9\#j&dO$$>4+/"1-#%1C'9J#BT0GU2HYE@NV2OOLfGi;ZDF+<,W66:H0@A7XJI;S1 Y[ju& ^2 J$A K=##P/h,%k !aW2XW'K`-3U!H("?.?6/A70D)-40)(*"*!6/35F1'Q")P0-?7%JK7EM@ \7[3W&W*P37# 67"-#.J(8BAW;c09[G5Yf/X^M]J_*U(?0 7; 5IF;FPUO-T4 u }ws;"[=W-V!K&K(8B'"g#)y'bd- pQW_HJ.!@1@60'<3-647)5' )*#@,\#Z,5T01G;/8?#B B+>9B*KD"N+G2F.55 +# 5'-&#/'D79 ?B -M2%TJlX&kSV< KE &E!*!(";+ DO,_Qm-' # }2 z.gH\5h05s/4b2C.N'l'R%g( u6cDCA(&3539,;3=* 6)0#' "7K .U02`=5_E5^P5FC&:$A56'<5.9677<6/ I2A- = -+#1)>/@$2C/Q$T4oB dJ ^4 @"/ 1(. 7,:W#8XZa?_`?lT#31x)}%]* b1t?rO"aE/MOE4Yb(\$_'#Y0$E1"<+1-47+<18;7 5-*+  (%3!)L14Y?t80g#Om*@F:-M2 [5'XE#F:*W";Y&'K%0&.@(E-E("@?$"4;@,7&#E?(8?G)7T.EJ.R/%8$#:'$<,0 @, S T k8W:Q- A++4#)9 'IS#Q 7#*#"71+DH,C22~$*I!BS>^()\)2E=D34T*1b6/O6)3@/.IB0@K0F?)V65[)!:-7'"2.-8)1!>(+7#I"K! NT`06O>4;E36A0.E>;*86@7= B7KKSCA4@>$!(1(@2=)N&U-O4 5:&R\S}Ks'}$w25FJQz8E]:5:=7,A7 92,<-7R&8l-2g73Z7J82+-<+<9>3+;1-@2 06!"8=(/$0(+- I#![)_0Z.b#e(`-b2%RK ;Y1R"RS%@5< C?X3UMSKI325#"'* )",@$/P(,S!.W+OFQ 7 0 #BMBjR#Ur()'0 &!L0Zwh65b5a,T#^H 1,0B$.J:/cI2KX>58  % 9?W6PT1VUM^Rb`BBOV1F9P(1q'q&*Y9G%5M$Q6%8<*7/0)%=38E&(E"*E!B3!YH0mL(rZ'|F1A7Dy XnEN[HHAVD+>6 CP*/^0BF*PE,jg2z`1x\)pS4>>._x7e_OVSS^WVERE9175(2'!."&))/9'$B5M.%M>0FMNB\|EmwlhTl[:fP"xG*u1Y%lc+&SB-`JC<>=2S?5`0Li$au*d:@k[?U62W![>?A@.;/+Eo:LQO]VMjeP>ZD9d=@`G[V9ZT`MA=6?,PB[M0[8A[1Xudsguc%hi2a5Fi!Rd0U[FVGKZ@LVG:;F6-( 2+)&='*C>@6K>" 8qb.R?IL0WL =-97|SYch]wlOqhd-Gp Sl/]PBh1XK.RM.VB&a@;c*M^\L5r2?yCD{?e$"b*_'=OZGRQJJfZsKH7=%N|)cpSoCb`,]E&b,0o,GnDP)LM=FF1R/+M6=Z'@SMCN.], Q3+S)4.#+C>REG/OD,873BHS$cK9m;AR/0T 4T(:QFI;Qh[gPlJY9a.Y.j9>_1=URSReazupapgHy `=YR.HH!;:;2O@5WX=k[)mE1j@5d78k!8nKf82F>&Sp3+iICUP4OD7KB758.4-1%&( %>9+CD4;<a4de6dp:CW1@'#=C,Ee<>p4e<#hE-b80L&I5E&+7N,$_;8(Q* f$~;y,FS0M@$Q6%M$=3E#<"-!(2% HG$+j" z6uAoMQbo#\ +sB^+sk8f_8o_fsvt`NuBnS[gV[Hre<\i+IN.P(E@%Re85f,S,!W28O38M.=1'- E3#G57BA?:PB$]E0d=ZAHD77"."*3%)>.">+43(<-DN"U;W3G;6WB0P=H&:;<)/!L%SEJ& M9V4ID 6ca+] ;gB%M ]Sl']_OvtVOe9[;FYIbPr1|q3jc%e]5B/NA!BF"6P* E I .U"U+?2'85<59>?5MD]JeJ%kN]I=E%1A,+H! 8,!*2.14&:"C;K:>@,O%OC H1C4&79%5642F3164"-$$,0<6VD,BMI=\Y"pjY5K1x,=RLKCW9r/@rDJqHPOCbLJ?BP?BH':%#3,.(E;)L:FKESES 5PG%,QW- \20L?4^HfNU\1bX %J,N)HR&9$!#,%0@);D9: ).A$O(A2/$+27 &RS Q)C43?P6 /#8A *+@0bF2>WQ:Yf>ViNrZQbH_K,VG+u6:Y9&KM<1`?Gd7JI2HM* [MCT'c e+R'+G(GK8)5(#6#&;./,(.&)+&; 1*)./S [^ c c# M8 70:<3 [*W(A?G-@C60OR$_aBNh\=bh2@t,A?Fc/;c7=WC0;F#0H&4N/@!O 94!E&\ 6l0p%[&5P0.N!%W/41G6Q:RK)H6/P<H;5L%OT/J)+>#"D'9 0 &(-$!F%C!> 2*#&"+$"C#O4a(]RK!.KCOMEV6O*+G47185(9IDR.EUK?Mf0`n)Eu.BWD7S23f-1NA80W%2N$)K*1)#8'D!b" moi1[1(T'1E"&>/$6J-O3DC0>2)E<%*9#I0H.D&+@A.&( >$EQ#7&5#- #.&?"-;%7I)2Q3B7?5F LN$_@X8U( ZI:)(3<926<,7LH+PM:RQQ;2^2G4=K#L1GT0PRVAQM"QM2W,9Q Ch"8q-m2\.(U0(M&C'D(,>+C(&D*86)71&5"6$!),+:+"E2,= 5D='4/+9I+`/'8. 22/*2&.#2%-:%I7.@/)B"4J%;?<"W6_/K#IHZ A/%0),C'$O+*a-5F.LO3d2=P<7.L"O&)_"7_MOVa0YOOaTJYILY4:c7;]:$W,4B)3J 0O=7'1<8@EEF#>?.9((7"%0*$,)-+!D#-A.E'6%!9$-,;'Q>'_Y*8F(054#2$1 4!'30: 3 8B.T%1e8R"><-U.8.90K%k=q%M\,LZXm4okFohEqWOREAZ:5_))O$,> -<$?2&J,&B@,0V/!X5!S21J0+C(=?3'01*!;1-F/5A*)/%(?0ZD0\P26O$9:5G+;"<+&7-!8?3W1Y?hI%]U&%M16?1:<33D78B,,L#K+F-E-'!FBBRA\ GT=4099M33>Q$-cQe-^_;c],fn;nq;weDu]KNW7P;8*C')>N+\%-Z#)^&1W($MA<<@. I"8 24+=6%0+"%' ;9.PI77C/:A:4765*2/#/ A4$WAgC}J#I',A9>69B(1A"8=+1"K/Q 9<:6.E6B=7WO,QTUY$CL3>(S*?AN&BdN`.]l@[`8cu1mp1uYAhZIOVXL5QO?9CUJ8VF D< ,>(8=+F1\3O,M"%N53>;)?1?2# 4.03'3,(*()&-8%27$24-A2%"'")2(=B1LQ$hWzM$&V:,JDBI .4)1% 09";P5E'N*>$2@/=8$"1#(%"1$%  $20@*+:5$4=() ++)@M+K\&cQcZ"^AOQ0=`:8e=$OK+P?49B-8QN$UTWQ;U=`=3{61x1KQ8SH/1.7&B1FHL'=O9@S>`SOLZAMM@G?T=CU*8O,CC$S=!QJ:< 07);/&13,E'"OF #5,-9-7'/!$    !6'F*>1/,$" ! 20@/>E6SY"dc$$a7MU*G:NY9IaA:G797O:3P+*F4D>9=5%7/:1I080*%?(:%5$% 7&- !$!   (;.>)6(!,2''2%'*! $#4 9!!5062AG#h#p6UJ!Gc48sJ$rCzOnJ3ZJQFWKC,3<0 -.=:%5316*4=,1F$8V88QG0?8,-D4G6)M)H+<#)-+:&4.<8E+7L;@1,1$48/;(;*B1#031%B76A+3=6* .(@/82/(1 $ ) ;N#O"L,#(.9)6,.77)5,36 4$4*6(+8- B.>+4+, 5 9K3,RP*Eh:4rN(E.}C3fM$^63L.9+,=#>(+0*(#) 01-419@74271+5#%1*&4%/;$5:#5E!9=;098)&.+'%%'&0+2+46B4I.P, B .#!& &; ?#;6:;?=6B19" FQI#*83,144528.9 >6$)"45FM$Bd2?o=:f2;g=3^E'E94;%903(()3#!4  *1/! 7"98-/,-)(%$%"!(2'7D+H@7K0A<$"0 &* %!8#A0@+A=7>4=07%%(( "8,&"=E8EP>H-!<U_Y) 6;7D$?!8DL ='0!62>9S#9c)[9-Y.*J%:?6C;B45++.+ 2%)'S'G(6*'8*&1)+!%("!'/:507@3J2<<<6 -3 *'-505#40#5 !:#2/12)8!+#"&+05+-5D7QW;5Q+:L*n-p& Z0!<;FJ.U-G:65: 2#(&47&9#3"4,-<)816*/( 9L*Y"S&!Z$R K#B3.A(;(0%#!#); $G%I. @>+?9%12(77&>9 @=$4202))  *.& !)+$"+0;0DF76N4;`%Bp@o*a"+A%,7#'>-.:1= 71#.< "4 2' "'&,6&( % -9!0":UX0_9&X%"T"KH%:"-=+23.&<.$/#$.('!&75 0:<6Q7,]9!f3e.e\D <#/.1+37+4: ? +CC9O-S'O;+#.'1%$,*.85=&&>%N$;P63Y*MU'IN'@C933E1G+'I05::4+9,2&3"0S#$]+X,X$e/V5.4'E!.G++G-#=-%77',794/<,63+8+0!8."T9)l<)w3l) \MKG$K.=)?2*'6 5 E@G[A'[2.i5d( I!!",)21 .:)A 15$4.>5N4W ^>Z0!R"8;JN.K9I-64#/4,3$3Q.`5d",`%a%P)8:)!E(F4+8 =7# # 0*#;07&&2'08Q;$k7 y)sgZPGA9*14 ?>$B?GVD*]G)dBI7/ "-/&(%30#(: ;%!;".6-9<$VNk,`(G*,)?&F9DG:G,C.672*$MB_Hb@i$/e']"= /&57=3L1.''$1%' $".1"7)#6.#('(>6^/n$je] Q=;1$1 A&C4JCJQFXGQD@-&$$ %$"$8,+=-)<,E+%/#1K58g8/U,-G$&>09"MH8 W3a*[*O 18(8A+X@uQn(L~5Gm.._*;"(.%/#3!8 :)"%6(5 1# (4''-!." )'& 8!AQWR(>"0*)*<81B@O EF<<2: ''' '30%3"8?'N+"]%@',6&'<.-I48X6+K8N.J!6=HC-L<\-t,a3F7)'_+sDt @n$JF0A<3%&/3 7 6)<33;5')4(9,/(--(%0&'" ((. #8%1,'1 ",)$ % %* &*--3453:'1 "!56:;;$I35G'L)*N',0$8'P$'K(+T"Z" _:+<<)"D.W6%f%f"!P4 $" (*&B( R-W$L;RBD%$/5(10 #% #"9)*7*)*0&3/ .$(0+ . 89$"7,/$   #" ".1.>1AN'VKRD-D<=N<8G&%"$.9A(K)Y"V N*45!'G J$$\# ["(=.A/1+#-#4I' V& ^NEJ @ 5#.-+&5)5())&>,!:--,13..;2 $-"1+)6& :9'2+&(%/$  $%?#4;7R=!UK\A'6H19%:$ K$!)9 S( ^ m h%^;MD 1I#LN?6D><<:B'$E$2)*M'ZH9MV"G"0$1 ,$"+$+)65//3-)6+,-05)'!1!4.&2'-,+( +($+!! 3>2')#27&<0$?)E#6)54- :1?2>2,R0+H4/*>90*G18J/M(+V>'GN%>M(#E*A)70<2);6775:$11.+/1(%5.(0# -&7("!+3(,#2;05B0?D LELAJ4E:B;%00"8: 46**,B2N 4B7;&=,-Q+QBC"KF6DFG?OB(GE-D(/315*140+5#:21)&'/(-5#0:8+@?+L@-O6:@:?6<@O70Z8(N5J+<6-2<%':.).!-!!'1 ,"#&),$"*&6(.,D8=&79)@=,SAc=f8c2_%)W+@'''( *$,0$,0$&@%N?>5;C$6G-07F?_,PT>^eLOkNBIJC529'9+4'1!4$D)00#4>,'E9':E2?G=E<=A8G;>ADUE^$PW9O]IZ$LA&V%!L!L!"/073":55I+F/J/<=4PL0SMFkBC_DAaHMaHDUA/22  " '$&)4$ ""%73:D LQ yA|:~8 z5 h5a@J( 4+>#:)0()%* - &'8!9J V1_IfFM QWRKI,/U'J&(@,; *.() )4%?@T)K!KE1[Y'H(EH2Y(F-H)%)$(("(.0#11G$< .CHP+la udXtNsPfB=+1- " */2:,, 6%:3'!'#12:1>C5L[ ^ j {,|0m3 ]5UC!"&538@,HX*59'!% ##$1*?.NNA @8M0?=FG1[M5W&5C6J3E$BJ.<6,'%'0/H0J0,2> EM qewyrcx]jJLF)@,$! # 3* .8 I* A<".,#&1#'<#3K>MCQRAU/X] g l)Z?@>< &'%-/-156%%&C&I0'A$==-/=8B8351KmnBDN`A U&-9 J8 <# K! ; - F.J&&A,"33"-"?(BQ%Ql/_r-qn&vh.gc%XL0D:'50" $',6-')*"5+2#12 =%':"S*0d-0z%'d2_F\JH ;;9%C X" K1 &2.0<0.4 ? 916& >"&3 (R$8c4,J)$<)4)'A'8S-7V1N\8_e4ic6dS1MDA>51,9'!&1#63&A+(47%4<!B#6,G=&d;%t2 p'*_>aAL2C4-9 92#)>7-BCESRJ`aUPbMS\T=FRTjW_+DX%2)*=N06=F0I<&hD* ER;/+@;56-&$"!;&Z0b65U'$>A7 ;Q&Y*#Q04K6IIKUD-V<5A/)6-%)*%/( !)9>%D*"Q7H;.7(M,;YY@h0a%Y8`/J";(-55(:)$HE"DR8E^=GjDGjTDZ[9e\ FqHv"7c$!4!%-R82;2- ,8N-R =CK*$c-"j7P0?+ :BM&D <8O-Y.W'V$I&>"!')#,).,7>BQ1@\6=b75\W/Ud)[SZm?t)V:1 8!'&C5J4K)Z ^%y"}:r\'fU)K0I( ?B'< 0SX#Ub( Y:CF" =,48%G)O->#9 :!&!!E##`&]4!X7"P8#=>2NE0*2;7E2B(??"*,#(+)):01;B(6O&+OAMX]] k^ iL CL1F&9' ) 5=;L_UK5({8 v: 5 SpN+eD.a8a*b- Y'L3>)G%f)h*e)%].+L;831? KF'K(:2(*E+R-)]B:dA8a@6QC1A6%+6,=#1@#4@:8*:556/,.0*!) 1%9)&0, 6+5+>5[AdL Gn;E5.-, 3%/-=CZ ?eQa8dLID+C]Hk? j5a$l s5_7ZDA8A)[- g3Y2(Y4!G<566E%7F!4EE: 56 6/ !)3)6*/F<=W@CSBISC:T4;M0'51'7&77'0919=0:)5 1   !!"%+)DFFJMFWB d4_)%@'!&0+C%M2I Ea;q$FfJoZTw\|[KzD ^-f Z p*s;+S>(C;+8<#D/A)F)H)C,,8/7/@CCP'5L :B B6174*##&"!)('69-;C;?MDNEBJ-?>)'<+ ,.0:07!&#71.)T%-yt0o$;m /v 4qs0y,.k".L:F.!Q!W1MKFC6;OC)SJ8><5"B4#B,.A&4B RA%S@:05 3 ";.*5h6z+{i+{5}6 -w%-j =[.1*0(8%25'D')H+'ID#YK7V]7KU),%(4,%/"*/;<5U6%QD+@AA4)1-$#-+7!K!J/%O.S `d R* L9"MFHW(b`(I;EJ;T=gVeKO-*3(/0R,Y.0];2z00l"F=!> ,33- )5)=R%Xd&Hq/+#4. 7tKV9h5=cB>?EA74D00F/?QAFXO[+:F+5'7( 7@"RZ.5T.AE$5<+> ='Q.X2d1#m1#x%$w5e)8P?6PG$BQ)&`*!R.I/BAD P9 SGVG*=E-(IC;R0Q5<\4/_D|/q.*^!R #I '9#*)/AD2ZS7;kLA(+3 0+?iV?)UOC_SOnNPy9W\!XO6@#?"/G+*E*R)&38+J:4&!4)9#$AO-$R.3S67F3B5;G;]EZC#XH/9,~%G Qk;G\@ANM:=J=$@E'70&="1'C 359C4G!K:?N02GE;MY]KEjGE'w/.c1c+J+?+'$"B110N<>EFMsM"K-8LaT^J+EH$M<=P?J84=O 4F:CJ8979EG%1O&=N)\J1Q6E=,<"O0&Q5e;2W1+F.DOe_jc(jv%bi.@>sX|.X`YMRKML[BEIE97M*("!(#$.#)4?,)I; FRO/]Y@`^cY=qS#F,l2HuB[.fR#:'&5?/G12L5Hh$Ma*j*bT1UhtIE71??GM=<50N_fZ"VK0Q[(\?*o=$~G#m%:h 8LO;0E4^L|Id_\O/bH.z,?qApWk#RO;`0BlS`$SS4OI`"M%TcAxl0nt+mb+S&zF3x?3m!@pAd!]H9\DVV)bHZSbF0h;:o*>s@sWY'VT2T,QIUEK7.aD$S=I/E7$26! /$%4'0"&+)(X8DA]@l3m/yv ~oZ.z@5,8|On*YeU[C^_(tXkA c4(b+=`Jk>e!TM&Z98V!IUEJR6U:J")E1E$.&17-F0;%2:,)5&;1L!E?3B8:K$=E@GE64LKZZfl`JgHn2]4SB3M2Pd=iXkzQw~\jIB90`&O,1v@AlRDHg>Sx7d:UPSen8kp&y)e5{A02D~\3cpd`YsK3sU pDw,%m-?V*$M$0G5FH5F/M4)F(7;;0#9,V4` 1]'6H+475<*7J9GDKD6CC$9:<;/@'IA PK/^cggFd4u,p>d39{(PtJnXh[xe~``fzOo=t!F=z9KKM"wjq4[rEBck*XTr%dg.bQ7f3=o%FCy/]mQXWb:+^7"6(}2-lD1P:4I:(<7,=!8>#"'/&C/+L;/E4B;@9 U/"z"*00l57R6.>26+8<;KAI90=2/3(.#&*J5E9:XLTH7Z'Y'm%;r?+TKonwy}nw~xvar3[32\.Fk=v$?aE.0@>&P4O*GK BZ*Ub+.s U$a.|E~Xu]_umdnnnyps~Lu4q+lf0cg@GoL(YS55:7C==8[?\<b<0R89J8=M7W#,26!"=([&2g\F/iJsCdJcC(;K 5E$6=/"$8!"6,*<%+E38 .?I L.E%8<C>S,P ;2@+$+A&KTJ) 8..D&,6;4 62(.+'G76N@=aHqRnApF@H-;N$AG")D, -*/ #%'.6'J 'I-C#18<+@' ES S@', ')6"2MB%2;&:6$!<0PG*HK6At77O5?%h&i&` 1C)NCMDcgDSW8DB1=@14B3/9,H=-L<A,?#=B+:1+#H*'N.&YC.gR4fK$kE`J3A>K=I+K$6! "2)B +I/D/: .#<9DR$G/$397 ) 13 %2 >!<+:$+-<O.+E6N@VP2wT+{L4m05U/JQM+AW40iEnK,lIILLTR<1QH0P,$B*7:<:R@5M8J87<<=*G/+CY1%Y5*^;3nA/lQdO2A/@,E)H*9/$''.7'/6)628*76 58'#FC0MTI H)<3#!!%1' 3,+5(B4?31<;N:KM%ZQ=eJ[Z-TA/ZE9W:)iV1WZ6?_I1XC3C,*M/1J>0F@!7$C47F1.K=8: +F9G K:0N*VFBM)c6.n4+dJ)SI'B$5#!8#)B=/"3< -8.)6*"#&- #%'=*TXb.]M:$9:G,D&@F(3C&5I%:A7;=N/!h(1 8+,(E= IFOF:a69]1-SE6OC%5+"/)%;7*'( -5 #<$-+  &-@J')Q+0O"G8 33-9!DB%(5;(#2$/! . %5%%0@"Pk1Qq;Ff5@Z6(V=5Z>:XU%5a*V0P@5ERP!`&\,2>/7F297/''(8<DN%CE>G2>N#/>+$#11#)/158 0?;#3"425M+3$*2%%  !*#84128:,26/3(/82+?"7(<)=>,="7##7'H@5K@@MOEHAD@7+DH8>:S>+c@"m9!^<"Q1&N*#K+!R"Q%a)'Y@5F4/;,6*->*9>9:F>14@41*%'"&- 4) 5957-6>F- -(&3J0&a4&87+,1"70!#2& 8&(3@7 :%/?+-M62#'6?*4#E I(<+0&/+( /3$$F5,=63=9=CFK:$(P("S(*MYLeCe?eB)bB#WI1[?.W(8^,;Q9$SC3AB-F!0>/1%)31.9>(?:/<-/I!.E#0#!+) 0/: %?&4A!=)0"!>"S4)dC%6N$0><#6&=2(47@G8$N3!RC%^H#@'7%/*,/+@:@&A*&7+65' .6$9B8<4*;-?6/<'(KP+bP\+KW"dX#nM0_W;aM8R@;NI7g3,`*=L81<,.=>/&G7$BF-=P48W56E(/F%2E5$5/0 1+0=-3A%)4') "&B+[7$9H%5B/:%G )>!C#7!9:;&H3SIWS^'a%'J#-#'C(+A(!;$@!/0!)$3*'<1>9&5B#D: 99(<%F$VBV)XTAUiEa[Ai\@WTHeHDRFBJG>H65Q,>K0B82H,2G)(K2>.7!@2".-?(%/)$!94IH9B<7-3 4 34; 6'41*H?%WDd`a5b71L->+4I4M&#+1/63+<67:8H:-KH+VCLI>:&,+2;% Q CQ8^QFg}LgnRlkYf\NX\@YQF?IKAIDI8OG9T:HS0DI!.M#)N.IH6G$:G4Z!3R-+@+,A8*+,/))-,$,) '*.<21,,-=%> !"%(014/3?E\[^`]>$\E:DBE"7P%BK)6=6=?S6#R55JEGG;[*+b7[<==6=2';') ?=G5JIS\pZxe\XUnUJOMVPH[8NQFKID.Z5Id1V^!=S4Y%S3C;/G >Z6S'H$/?;;(83'0$/&#)">(900<'2+ &<1"NSP\Pa"f?'\F9;LBEJPACC4:T0(Q, a.ZF7XKFG6b2b3-r;BF=G=*+4(-'18'9K6J]LaNSpTX_MTB@SQ;d/?^33V5/H3IX.:X3K !M!K)>8.U&.W%M!(9)54/$1.!7 16+# #$-H ,R ?),+&4,&!"#$>B&IQ e(k0 bG1TW=IXEHUM)MRGQ 6M<\MX,=-Z/*\!+[J,-E39F#'@@$C&A7',B3E$@ 0,$"(.!-- (+ 2 %3$'"  #'?,E)@4*C.F$3-!)'"#$' $$!5(8'-Ke.eA fR.W\:DiY8jTcUZU)BJ2-O,P%58)M-#T3I2?3*/)/0/=>7&B1">FA0<;1%H0X(_ I*D)-@"6"60< $?% (4$,(,2 D%@D .14%&50!+ ""$* &. /&14$HGM!I&%A !&/.,&3(!#%-,! @I QJ 3'#*,7 /#"!&84*3,/#7+7(8(188/C4)G7-=45(/**%!$& 4*C>?Q+8n?:vO%lK5R9qK3VO#9A(07#.. -"2"6#+2&B(@#(8"*-0-,3=1(*"&E)J.746 H 7,)'+.02#9:(67,?$F* O$D"7""!$% .43,2?6F+ >C$Q$H/%A< 8A#1G++@(-&8)(!',49>O#7a*-f56_D?nH1h<&H? 4A$4$'*$"*'-/1$",&"7/9&<-/6!!!*(H E*(<,"&$2',*##$$74 C@%C#.:94E4A-;"(- &*$$ !+ #66/?L7R)!K%P!X*'Q.&?=.K"LD:9&0$( & %2,J"6S/2^1>a<3`:/[0E(;,1"9 .%$"%3%$2)@(!0/.,67&:0(7!/8-(2$=(;/' ,6"':"<&$$! %%)-+5D%5*).#7.>66611&/'*"%!"&7(!9<2U%Q"K+>*669+4' .4?&'K++P7!N6%F-(4#&."-416.0 -("->'<+%I5#E4$54#;=6)",>M?/% )*$# 0+79=%@:!D)2,&,-+3,)+"+% ,5%>&:")6" $$)$%+1>>8>T46U,=b&:j2m!-Z3&?C3L*KP)K ?1?:(9!* &2:% <;$2-2,*%,$ )#$&%0*@#(V#"N,*T-)N$N1F1+M)"B& F'E 9'+1%.495>227-&-=2E+A(?%$1(A$8/(0(30 >26:/I87Z57o.91m%Q%<.27"> E'?16#04(++#7 0340(,'!#& *D$SU*!X,9Y"H*%>!/:)$+@0M7S/ M." %"4 H"J=!MF/AF2)>5@,C2:(**$3!3 ' -6!>$;>%90)J50U;8f6&w''l X? ,#&# 6$5<-5$(+! ,*2 6+ %03, %!#%$%*C "OCQ9CW.B\#0T22B54+I4>;!K:!JED(.$$92E )M'T;PB)O9H8)M<$f-"]3*O(3DH*B)*#'1)F+L3\"$\/U0(O(:B,C3&C$1913*0#)/' # &&*. 9*L'H5C">A^Fr@y3s*i#\"L=&C&9*$%4 .; 1@C.&S-$K#='&$0%6(3=&2%(*"&AF KJNMFF$H/4@K3g#o>b%AR-/<),3!)(4%+B0]#5d*.b`R$H!@?$@"@("0. -% %$2%G'%D+A/>>G YFl< w.$m b Q,@,@%4/*4%2': 6?@DM9 <9 .<,&*'5*'<$7/("5!:1!E@GOT:&K'.8F+U"8Ya]!bET7(Q%73:%5$D%;dB`":6D#:!'#"55$L4#MAM-AQ;>DJ/O7YNkM~G07tFK<;.Q":fEm?i7nX %% 3%!. 0.$./&')8*/=$)4.01).2>9N*![#,]$&S&)K&)22$* # "++-,.0$65 24+'A$H/)P*!V/;Q(SDZ 4RF-9>%M5$T7.U;, 34A".# "*28 + . 03*(%6A>,<+3.%( # #.& %))4)3(,;"QVcRQO'a8;]"I>U#061/*>E7J--H:W N8$CD@4D<T1e/0v.1d+7Q*8*  0 4+(H(NE8 ;: 6#*&57%&:0626,56%!!&7%< $G:A)6%+ ' )!,&.2A;*[N*f[[R&QB7[/=?T '&%%:;#,I4PJ"?3)D%Q, Q+*N+"K$C'1"'#3'I5],K: <<1 "#+ "0#?&;'68)=9&98,/9) 2#%)(6B/G.&@**72$+&+ "/4&  1*'=@"NG'eN&cZPN!5Q7?:E-G %##7 < ?&#T$"\ U(95'B"VPHO"I "2*!:/!18G7V2@6CC#9,%+&=$#:(.C. HA&WH*KO+UY%;W!M4 .D)I&.$+)1;$+AKY)U*,42)#C,$P-G< < * 2+ =!@(5&6178.524%,-*(:LG$E%''!'*%1+-C,DW+GV5FI48B90'-"@B 9$.",6)).%(& !%!'"#4&E-J1/4 0" 03,B0:F0.C(!A =#03&: /:+6$0(&<$F@A@%4=*&H.U,&[!H 5!.*)@/ <$A.C$42+91#2$ -+)3$%F"I1)A6+*;495'98%=C#DL.HOAFG86>8,(0(!%0 AA!%/3)%8&!!*.%(&-$=$)D-'K71B 4>6. 7+<?+B+6#:%+F0A23)(]%4T39Y<3`;%l&(M&+$),'<3!?#8'040.*)$/:6-;5(/6,,.95=)@3C7*R>2HC;R8/@4AC*JH?:E<(,>'(/.)#/3/,!'3 4 %0.!/>/9"1(91.C0:50H*;B<;OWNMNM=G@+A.?3#49,-;//;5,:2%/5$)* "" ,%@*@#@;%Q='c9`6Y.Z" Y!F218==,210)8%72).' #,>23h2:kE|DlOlIXL:R#R&W"L49#8$ 81(?,<-!;-43*=K1GM.Z:,a/' 6 J.A51<.2:*3 (!C'\ e 4lSiLU P`ENP(d-^'#f2E "3:"9(*/ ">'HE!,BA?(VR#.2$(#''%$N)^` RHG51:Y1?l\JXgD7g<&a1S4T;S4@, & 5# "#,AH[[%ik)|l7k$t]%oY*jF,N7%3&'!)-"1'!."1,9$8T3P/SCL K?I4C1P) R O ?&14($:-E(9A.<;@H=BR/9P)E4D + 4'%"@)4G28@?$DE%oB-tU6bf4Ac!"MI&I% G 5+ ">*?'&/))!8 '<>F.`^0w_8{c/w]+jO*[F)D7#0% ,+'+ ($"+3)"(1%:,7-;%4Y$3`"'Z2O BR DAG1>1;H@"+8!,L4MV:WIGWHBdE8`?'4S4NK5`P;.=+'5/1./S,*e%'f(`7PHLOF8* 8! 63"3'C76NJSRU^I`fOb_GTU?Dp RsC_/+V61<024A.Ih' 6 I' <8?4L$KCC9+#5&:,B3X"\X0T#1I$3K&53($.-" B4DC(NVLQtRIjTGkoE_};IgFe#<}3TH!D# Z/S-!@G- / &+"9. <4"LS9PnBGuP2`s.M} N\Em2y 'X)4B1 )& <J- B0 J/ V@T>[C!bd*I`57K-8/-!"3"5)B%PN!P G%*4*(3#7G J& <'0.$ " ,Cb d1 \4#T-Q.D;(84#"%,/-.?1 @+8 8-&"**5@"62<<"GW7A\]*ShVn eZMM >H 9*' &1FAN: GC;C*i>r=qI'l` Zf2YT7TH0BI ? ?% H2O4 Y3Z7H5*:9748H)/D0F(F#AE#57$6.>.Z,b<*W:-U3.M+E-8!,+' 1/#<',920',##*%6-@) 31:S6KO]TiK pFeVB:%(*51&)-E YTb_ 5[,\`CwG7J`{W jN`;U0 [ V1L6I% B6D:TLdLJ?94*8A=-BJ)9H,,"3# @"#CA\Yb QtBj7c] |UY ~Q ~Tm;]\l+]:Q=6@:/7/<7M=?@66-9AC0QW0DW&>G)A@,HG/1C%5%5.$5-*67. G.*>99P1@S(5R)1I)%;)2+,0 8.%?2%>++#&".*"1# =#S2PK LG ^6 _5Y)=/)"F&a *pJ`>q2s/.uNebth[i\kP]#Y S"X:NO5Q2A ;07C%20+37926A6H5DV4Db,C?->:-5K$D$1-&$))(-,/,//3858*;<)IG':@#'7833;+D4YNISL<+"!,.+294B9C:J6Z7 O(; 7<)+Z#!ju,g61 "+x 5j%7Z7F?L#? @=PK GP*4i#(f1G <213$+-#+-/;B,;LF(D(=)L9JB#OD#4BC K AEI8^BeMaR]; 2% *8,D/_*1W,@V(;Q>9 N1 S15B2U0v{3r7;!, 4r(V$C++,K,M* d('c57a-6W70/0','% * 3 0<.WD+PK:GQ>/9>@.,/0!01&2@#219N.\d#V")O9-W<#BD+SP'EQAP8oA tQ _JL4*+'K>T"M+j=#kI.]/5]0G E4 \)+ 584U/`)g9%w(71$7CcMTQ5!R83CM,E@%07$"K S7#H6-N>7 $$/%'15 %($ "?$U1"YAAE:H8.@E"62"+"E& H%!<,c%u &m7m,C^5?Q1+;<E&G#+F@C @@ b9a9T@CC&"F8>.+I58M*$f,u(6m"4c1S>A>A&1+!'C!5X9]M*~994H$FKg-+E ,0)20(41$0' :(#E73O',S'0@9 V3-aD7R*>G 7<4@ .5 :/D% Q5#f6+}!MKn:OU9?K80?//!#B",(>-;0C;9 =//3#I.=9*/@DHJKOM:`8$6/o+8`<^%M &C+4 %+4%3L;JO(c\4W.Q?agVP=<666EFGOE=;8lD%O@?.4- P@4R@,c4*k),l-G;)824V8$p=(\I8L64I1,Q5KAKG]TQ+t46~L&UcCWN9LK>?<&:.3@ ,#"3$% %$+) ?4M>R?ACOAiDxv9xs>fQ,V?-hMyCy;):gGV"K<@L.gOu\lW*[RF]H8_5=U,Q-C3?4X#9R DMOM _>0M5E@4."#,"(&4)"$((37!:1?7C81Z/b)!mKfUe'I`'0R1J)b=1O8 *A!TK&^;+195D@{d-avHG]2x2l>Y9d3Bt2qmKoQ#sBA,9#|"3kNZ5XOPVn3}y}_O3;~BjF_DNgdSJnS.pMp\+D6d01U!TH /; 2#&89J H:AG &R?F98"B!B J. R!)G$< .:%)/((8.6>8H4 M7R7]I\KRfTv<$=uHdC].Hmde/kVPrLijQ~>=&5Jr2y9;rI=HkCanKqLk\W~bFrl7twp{b%x:9n=tOt7ZgZKPrJ2oJp@(s+5_&0N)/A4)20):"$49#<)#F'??J:C+<b" d: b'Y$'P# =#C$.G3%>*=2F2B9N#QR^i\^nAt-B}JpMz!k|>kp\~RqlNNRx6ItE^(I UM#g#tGf|PWvTGth(]waf)rX.b+ApDvMr:OfV;Na;5`<;s.4i2.b9:@D/&6.+,#%+!/90,761:0>6(H(Wr3v)j10S*B#0&5 (=*%**.!.":Z8:60|^0t[DTeW9fP&UfGf%[\1VA?P.=S'FQ+NO1EIF58J"1cCv7nF?\^"l1Y* I,A%B+5*3CBC #NK8&H*+A1;9( 5=I$F:A*#:9-0,S*#*5&+43$10,J 7QTbZu#[7UKI(XlMlxcWv\\sYLyLFl]=|Z%z_Wi-cF9*)4;^;2lD+~I >;Q.?6 /6,+%;*51/9!2=#/B69-F%G #P0&F"-9(# B;93;*# %'),@. 8 ,@F-:086.28RCYh+H$I)D2x(?lADzA.l68nF5zP6~IHga3Z^*E^8L%8= *F6A0.F1:C<=;*I40*"00=5$U7(k;&|G!E#r6 F:#LCAE*%26 /(!,#-)&.32H0LE")70#;#71?"-"%($)1<"0/BU#E/9;D4(>72FC/Lh0;}0B|0k,'f/m0 o.~AtC kS%dbBPi;HK$A6&-3<1SE2?J.M -<-*& + !#&/.<,A)J20 +37 @#A :.#+,$5*)  *7 HZ.R323G5!.%4;1O5K7;j28g-2`B`/8Z>-aE3eNXTIS0YG6T;'K)1H#;% &*(( !$/#!((+%4 813$6$&?-/5=#&C%@9"4B-P-T4@>?=!"*)1#22450E3:H%LA.E8$8E7MR9TO8\G)];R8U2&U(.A?-=$;M7BW2:U*3&;-.-')/.P!9L+EU;2II@FK0d?3cV1Q\"-'%3%! &0&>=>;*6: +-$ !$*&$,-?6859),  26@(BF4F@I9,4!N:XJ)E^ 7b"#\/6M 2E#<(02(C7%?3D9J'@J":D117+:1?!7S+GG:T36I3)8:*.&%!+6")-4++6&.-6#M3/.&%"""=-&952="44* *&(-$27,.436A=7;(""%%1$2.6F>GG1<2& 8'-4,C8*k.'t.)e06Z7:N*>A6+C4Q*G#1I$=S5A=6(7-:&$+1,5-K6)G<01=/'0&'*% ) +%!33.+@;%G4-, 5I*W)$-)!"4 7')# #"-/#/<-58:37A( !% )'793;3#<.8404'*.-,1(7>;/837'1G$+@1C b>oN/rI;r<7SI=OR6JDI9 K"(I&9O:/G<*A(%="5%&&-/%5;4'?>&.I/5' 89#&1)-A%%IG!)"$6"K.2=3<'CA"5; 0 **7#3+,1C),%(;G( :0W9SJL.]Q)nK*~V=hX9NF;L'8 "' @#T</B5@ *:&9!;= ;7;2%.@(8RLWd"![!1W)4:E"'<'':9-,L%)O+#E69189+7;%0B!;#?4;N,MO/LKNfUFz[AzQ7bK@SAEI>:I@@E:@G:IH,O;'H: B.%E""I60H<498+>F,:O#3C.A#; ;3(&>,.*'%&?*F>.A)9 -1%28 E=*!6(1?'7GCad*f1/d'97(D!#Q(2?07<3!?-$F-+I2+=.!C;;?%2 40.%5E$J5>IXWciUxg\vZWcCZOBYFFJ:BHBOO:@Y<'`-4V()X(V$#Q''W,%=8":E$9D&.F+@?6 8. % 4!5$($04*/(.'-(&  $ /"--..35#BQF\d#)\5;J2@@4PB/Q.$D( I%!H$-B'<;+@1&V&\&C(&9-("1#9*!I9?AVUbaWwgcxJihIeE=RB=Z,>P3LT2;t**z&3e-gkV)T3 6Nn. l&D).5%- D$==&?O,@+*= %A H9 , $&**B%F)4$/0(6 ./  !$/2 6R_%l8'aL4^Z>\\R^VYFJ\1cO(X#6SN<a*c$F<5 7.9!()$46!U19a8KVRH@KPD1`M"^7c]!H+'G81K)#AJO$*I.21; <$9(/0+02,)$-8*>!*F#(@#)$) #-),D& B'.4/H"3@ :,. 3 4.$+-E](a=+\c5Si=Lc\JZ\,VbKg01O)!N*?>1I'$A1+$69"#D':#*8":)&"B+*F:,7F&/E.B9?AM1 RSK'!?4%:&3)5A)<*#+## 5 9<<'/+1<$';/*+(#%.&.#3!+:*=+>*;4/C3+21.:&(5&<,1&@ F'OI-S]78Z?8pU#hWd]([M5JS*J;(!5$/%+-5 7--@/<*./(; ;"*'8217114)09'=5#5)>E B#!D-2<( 5&%+)2!") - 7AL B 3 .&$.11"4*)#52 1'; F$@&-=716:+:;5392)64'3 &26@ 5+"1/!&+%($/()2583 G(NIG.)E;-@?&=E19J1%>.,+ *,$%!4' )8A/)[<$m@$mF)`L,cD*GF,%5-'(#!#&04FDF&;.$.-%0>2D=>>5+)*!+*.%H,7  ##1* 3#%%2&98*?'5: 9,9.<,2!0/*&+#/",--(8H)L&M I'Q*'H716C(,T&*W(E6 4)9+/5# ! 4F.L>(`:)b;(L;(M2&?,"*&!"("4.*41,86'*52//$;.@@DD595 "3'3##.'(86$ =+9+*' .5#.K0/)(%4+=594+43#+."(( 0#36-5W--U+O")L'J"*?:(4H!'U!Y*O-=),0&./%# * )&A&%R;V=,G;*8,(*#"&#&'$... )9))65/X>+>>/$7;:C*)&;!)A'*?%%=*5--,-4A'4>:D(1>09"! !+&# 0 %*.==(C 9*.',*%7#*?;0-T."U2^($a'O*?68>.O"X)Q)G-0.&/)8@-/8690.>,,#"#  +(."BS<_!*\0>a?9H3+71,%2.?0I.+N77M!$E3-.5#:?21J!H2H3 ,="6::!1% .*F M-D!;-%9.)58<74F2(F,1]5$h2'l)X#J,80 %B"INB7' ( !5(575B)E+8#(3. +++6' c3$P*H %"+#1" 3E&P)O>DF23P5*:0G0 L4J) 8$ 6F>- 9C5A&I=$M8#W3+\;!b5d(&]P9"'#%) :>6+)%& )'(& " ) 4,A3@';/!9!>"!& ;0BOP)UQ0bI6;N:)A;-'J.H5Z5]8T":($5,.<N"N7FD,MB:?7<.C:%W@L4 5/.7 - . F&J2GBFL= Y5 b: d?c6b VF+%)#%#.$0$./)":+&5+/$/ '":,4!'3CA ( (AE jH!hB1f<3W268I8d4*a'/]),X8+N1; 4".$0(I7Q--W6SK"PL6> =5I.'@'<%9)CB_Q `F S,3KJ;`,+vJi]^'[[5SL*J481I$99#2T#8[&<_!Y%X(S (c#0@') 1  ("82Q?U9B#53B'S9p<s2q/i(Y/F8:5540&%  & +&+36B =5I,H8NCII/ M(='&-)&53&DB"S?'W"FL L@ZD:j-Qj*oe'~T1tADe)HF F!!66"2S8^+d#c ,# "3(!. "+#.?%2J/?!)5,(6/!G+%J+0N3:L-)F)$52#+3"$.   3 #' '" 0=8? U3b+d)5b?ZNA!P8RA)1;%77)>A,P=9T@Q'RO4dAV6`:m2%j*@n[Rg6<=;6@+G?(C83J(EW1G!?=?c*Om1lf9y\I|*Ot YVE8 91+##"('9%)  &3 <=9D=04 &&'02B"1B !E,G.8+61 "!!/0,!!5);;#J2%R=_FcD!e@;_-LEV+9;:;A L4"E+3GCE 0:24*FJJK'\5:a8H`2CU.T?C6 $! ,"7=#/$&;: 7 .+ .8 I!L&B )K !>:"% ')*?.$E).L6D27)8 3"##/) $(,-30J;/WG0hJhV"[N)ZK1P5D?!P#.&,(7#D>38"9I 93!<S&]65\2>S-5O 8=((",5:(J%=42( ,%6EN(M2I9F"8I+"$(*-92 ?6.D0686':'?"0&%$+(%!(-!)% # -32-D?0WI1bN*`U#PR;S/6@L(,U$($MC2#+H&/A 2$7V c"X-$Q(N9 "##!%!%+":.H&4/ 7 *"! 0! >*Q#Q/W7N&=G$>04&#(231 (8'51'39+2:$395'6,(-#*&.-01( ,  )!49,DL1SN3OP2IQ.3NP0 DG" ,#:!E4 .%@ 862)>M]RM=9 8/D:0"$&4/*.)#$4#D 82-#"+?#K5d<`#CP,EF(M,?'*7>;(,112+2,40/.)"(!&3.+(0-!61"C6 2 &#+#3?-6P:2Q8@D86Q2L< ,-19 :@ +.-3B$7",=*7P$QU H %B#2,,;!B<3 45-&2!733#'/43;-E/G%C]%BY)BG5F;7I0%2)&)2 ;72+/=/(5,#)$%$)9& :)N5H9'>3/59*3E2)F=J5!K0I*N" @>;@G 0G.*!5'D5I.$21Q#"W%&_"Z#![9)0+$7:?>+ 2>1C18)#,).+%1)%6%6" )+8>(8I*2L(4?$"";" +!<(6+C3'G:7F;;B' G%6@6=&$N-R**C%*H.L2A 2? #2 5'6$/975E8'R*t)6j&3e)'_*9K4QF\8 ^$]S+( = =21A71@ %G . #%"G+!b u ~HoM\ MSU8S0R1V0T!'MC!@$;*&(173&=%:C$:4<7+CC:OP<_Fn8k3NAF?PF,6!(&6HAD 3#! $/ 4$*0!B(M0 R: h:i& SI 91':D?I64=&&?&0+* I b +y 6Cq2[R#YHT0^, \'h"$f&Q,T"=).*%"/-=2.C!:D<=D@QQ_To^lV`A ^7!Y=#N?-.$( :6 2$-# !  %3!-.' ) -GF!Y. h& _F#;.-1$+@ @C+@I0;;9'* * ) Hc-h8v)Ib2eUBTFD[;3t-*j0i6b&8O05=(3')*+ 9'C+1?4T<YRd[mhkZ+pM,r;,c2"R+(* #* 3 $*!#10+2 $2): 0;67 2# 7IV%T(N(>08!("3)69813B+>F#9J.:@%=*)G )V40V@=VR>PjW=ej.Hu".j&0_+=b15Y: F# 2'(!3)=B[N&b\#i\,jY(pU&sE+^.B'%,$("  &%%)*6/-=1D(K+[2S2;>$J CK7).)$,>4H0?F>E=8D4Y/V*F,1''&$%!#. "' <,O<(YE3sS7wQ*vM+eC$M59#0$&/%  (*%#(%-0..445J8P*P-X -Z8C@59'8 7* %*9+1M8NT?_XLbCGd=;Y>:Y6O=E 0(( 0&51/< :J@Y/D& [' ^(`?UFcC[?P+..'2%&%1'!/&$(%';#3>+P>:d>3~>4jC.`9(C4"<1 * %%-2 )*.8*C1$7/'%5PBD:4 2, " 0$@@.RIO]XcXWd?WXANc83a@`+N)<5 @: F?<#[i2 ;$>.@E$7b#Le\?W@"D8*27"%*05"$00:- (5,42B6DV++k37d24A();!36"1,*+3=(08!=O&P" ?(&(*3"/04)F S[ *N;M!5M1B $) 0'B8(QLL^kSTtTGhq8Qt@h0^%d)2K6&+O= ;*  :("4O'g/SH^Ic/0S/: 0 -)'+=JD<'+0%)!4C:<'C5#9+%3,'5*1!"''-2%R$WU U$$Z.#D-2"+#+;? ?*7,>)=! (9C?SOA`eMVqgHfl,WuGj8]&^ :H 1)< 8 82 H7/0 98@G?RM^.g$.r9_:1(#(*%0, U&N) O3>1,2/+/5!!A/M(F < (1)*##@%b\%Z$&R%X(!T$&@- -!3&1$()#&#5";"!7:MJ2\QPMUgZtUlM`EE -< 3*& +<J;+J;MW3KE8T8PH'Jd?k-3p;3O#%1 *7*H0QI LH?F5>')37">:"5B*=H25@+?D,:F55 =*RY*U.$I'!SPRE 3)%"(&-.&8>,="4C' >>G^UY]VWRCR72 &5 7NKeQY:$7:9=S>"EGBV;S6G$7@06DC>BLHcK@[Q/PR%MU-BE )),14?D-(H*$M+,\] i+U)+@,5"#)0)   0B'-24. C(A1 JEW?nG`WS@A887 0HQpU{Up=zHtmaWu^XaiG!e&a#G)+6>9G3G0J!#I?G5F"0<#=8:9=M6QX2OI0bX7aM?OQ1.<& /+0),,$@ %@ E$%L)*R*$U'6e+m!4Q&S-@!.B0GA9".)%.3-+!&<+J2G.M2T:nNcE"JA*G"MU5UDyMF;u[iS\`]f^RL&R,n0c*HE'.N$+T-P*%I-,=.2& /+-&AI7DMQBUUFOD=RM7PH21I* =/2'<)9*%?+9<+D->'2H*=Q#)N)P"K)997HELIHLE:")*%%.3FA"F9D;c2b=V@#A,*;+f%] /` ;tG=z"h 5fC_(IED$)9,R)7J:26X2._,&` /R633?"*?', &")'7C55LJ5QL@X=6JB4EE//M3B$,".A3,=>,6-6+0/ 89DDC>*ED#%J? 2D BDH<YE^XbMT4027' &<#%H+2F+=B2DH+O0[+f+< @ ` p+|=jH8 "{(r1W D4,&')-.+";7!]3`&.FL@2\5$K!;''!@.%N<+VG8N6CD.:@2:%B,9*4'37=/-;7'/DHJ9!HD&I3,N@$CA3C OBWDgMiVaJQ5.?F$/21'I6V*O6;O:@? 8:L> _+ I7 W n0{;oB|"5*Y.=a6M @7O=W>%MI1I1W6gR6SF;?0F9J7C\4*X:&7/ +( DM2(SRE@7AC!GG?619'4+"42E*_'W1U04O<;C)6<:-AFE8\9\F[/VF,B3"/4*+K0 M51:7NB/,K$_B]CU2JHBEG84,?f!0c(8c1Z#c~$jg.aX6XL8r>">!T-MG`=GH+I@CE8A06+:23A/H`;?j$T< ,-9)(P:%V;0I7OR%L[BO,5/8 7T-bGqFa,DQ.ZO2IB(F):J&#Q92iA({<'w3F?25> a;pG-OKEWD=a3;L<<,4.,6!$a+cFgSM.U?.I69-2,6,-.& 4-6724<'4$$+%8+91<==RC/N*[05n$F[?O0G-JF&/5-..-CC2C`/Ak!pZ9Pk26>.X+]7^;x7~ItNd^NdF0g2%y/m"!a4R'NLBS8RM1[QpWl_5UQAQ@, ?:A:+J'%G,3833$FB:(#4!#!,.)7;0G#N$L('XE4X?[:SIKCTEW6S^FL:*&>*Cj(:k=_+@E=U=MgJ-: ;<EI T2OLK? .!.27)74F*J 'L59EQ;] =cUm*e, OVOeYuVJ"QwW}X/`2WgQFXi,Ze'PT%FZ(q@ KYiq ~|Qkeafk]?xq&]\[k[fq,_Q>`9@O ZH4aJ8PAGE=U14_"0e0l")Q))4; ,: )+.*(' 04, 2(024I.(G"Oe9f"c(P(6 $/"0!!#, /%#6J6:AG7OCfQJ]via+_5fJIoU@UQ.R?@Xc<[`NOWR&k[-wSNnATcNSBLh7TYBgNl1NV>BH>P FJ#U??UACU6;4+E1X8c/>X50A=0/J,&@A?"0 0-253;'6?2,8C!6H5U,d4"b K ;'+''&($'"&P3,2%,&;J 6]WX/ntk+j7b*U5\BJs>?_MV|ZVzWU^VHDnCF5;t16B3ARCA;5S%6H'2%;= @L9JWO3Rh,7h9*\5H ?F<'/4(=$&G/;M28HB?G3S0M8#UM>#(#(-%)(!/%13$2U(( 1)7(\N:bc.u~4,t+bd;o9\Y\xVRkNNsXEZ^DUk%Rd$6l&*U':40C9>3E,PM4\S2dh*VU$D-%8#)""5-;D6JM@p38z:+{?k>E1FR =/&+?@. O9)O;+M97A=N/7W&#U'N. )"525$5# ++''+/";'':$: :!A&7;?66WP"[V(jg&xv'f*hHv HiJdwcWY:Sv?Eub8T\D`T(]o?lV7:((F/.?0UK0h_)_IV>L+'*))(.88"TC'nH-~C CuCN@H 8"+0͍(;.<,=32?0G,:V$F;5#1&25&7&$&09<"5 $0 E L00B?J-GR-&`I)U[>^W,bk%Uy$D`'BION'[?V680$#'")1,:/TCeF}A'qH.dA.H3P$F+&(2A* 7"%,/12-(7.D&/C8 %2"?*309&!$$!.!4"#%! - +DO"V/-MCT:XU)F%-U34W<)AZAY=P';l13v(!ZQ0XT9_D)bZ+JN<@J)GH/:0,;:."J,0MB:A:HBJ8M>'?*11+/''2(?5Q>kC"pB1Z8,T1.K-*>5N.)-.1 A"C%2&-+(&/+1 $#(,#>%&; 94,8,." "% 7:(L$$],5XEY;DG-+H!4A68//>H<^4J 6O("b8(P>0Z6LOMCSN'O?,PF+S5)\$I+>C<5=E_?LXMO:RJ6??!6,. A-eHjF)sH$W<&/0#=+!;8%.9,$+4<#H;  !$ ( 2%)$)+$#B#-5&3!0+1  !! 1= %H T7V8GE"H;+I-,3 "5#"96-3%-7-&O5&H3/X2#HC7?@>D-/B=&Q5X-_%O#A");C1ATC[EB[1  3$@$P(Y6I ?EF5#@*!$(@*+E<7G2I*;G+9C1%[%%[ 'S.F.-38(>5?R;OR&IN%J(7 !" $,*?4R1#b=cC"L;,-2/( #'&('* *7SP>('7'; 0.,0%' 2)A!-=/;" (12,=..A/:V?SM>C9 (!  )#:%K,R/J0;*7"C9]5\6B-1A:=I4>(7=3-5-$8?@?0RC 4@&@9!'&+.=%;9$P:,IA1#0F :C&".".;2;6#E;a>Q 3D(0)9&>%,M96C0)H(((9,k-/dB*[?A^:FN6>890E9+G='C88C@H(1N(;!5/ ,3 3:!/;,-;-*5- -6*?&77"(/%.%/*4?367$&8#K!(#73#!"($- 2 ,,-$;4:;87,6" , -"+>/1*?'D*Q(U)W&2@#.1!9#/-<&F52'/*@!Y8#bC1c7@W#CEL(C!-J((a&M!-@6$)886%G-?7+5$2'>%=3 /)739&%=*8* !#;$N'%-$7GA')4".) &$*"$(>*'M(2] V B&($#<*(-9M]g[ ,M .E2-1++B(3:%2;47$C7_=&_='i=:mKDUUENH9R66K#4; 0:/;P*9X)S.>:'+9-9'A+%J?#9G7#A"@!9.'('*(&8"$)9#D1%8 #0(:7)8)0$31,'A*[C`kUG&./3:/%$'>%*V2 f/o,l,_';/4&#.2)<8)%/B2&?8(ZS2dS7sO7l:=TIAQ>MW/;D+P39J@$P@/ZBME$A2-<)'M)L (?/'KB%5P03E+NB8 2"('#)- *#.!96 3+ )" %.&#. : 6!7 ";"R#-eml%K;896?4"79.;1N9_=f1m(IA+-/$'.4$%BI1*\O:pWT}VYyLYb.RP+^E2X26V1>_4>]2d-$e('T"MO$\'L9=C6F!3KQJF;/*%4!8!,)2&#(&3%"% 3$.+Icsc!([-=R1@F.<@F:S+&A 98L2$C)RY:,.2%$"&"A >>$VK7kIOuMWq9`_-cH&X=&W2*W&1^ .m"l-j%bUP N4 +(!97!,#.' "/!0J^"e%(g/0Q?8[EASMSL0V4Z'G5;!H.%L5VZ!; +%)"5;,07A5)d@>q3[S-WE-]F"`?Y5Y\$\) b2d$\!W!R!K5&8;'%? &5"G7!W6 F3"GK I(6* %&! '$<$71*1*)) '&( '$!&#&=IW$l0/mD7LJ8WSVWI^C8\"'`"H#7;%R4.W/U#(T23+*9)%< :)>4755"U+S3C52W8OP$gHa*a]!E+E!RSQ!D&%L$77*,")&E*,I+1;(3C0G$0G7I/.'!) $1#)?, &# *&702-48%5 /1(,< $D-Z*!i>-\W5=U8@bWDR]#Bi35Q@"M-!5&42 A'&N';%M.)N!$N-:+.5>,1%? ;())%;(22>.89(= @BL" @9":>.5M5_=nAsD`N)WP1;G0B1(82$:',B)8T?2f=@\8EJ!6;-5D/G-"./*,&%+##"(!%' *'85-#4$," $($$(-8<: ;?-+!#" &*#84 >&E ;>1!B=';J$8L1+W6B6 :7?'%>!<)/;%C7T=Z@g=)iF(NG(;8..7#=*7B-8B9F2CR-HU BB(,>'9:&7I8;!82#6!+*30&,,,0&-%+ 0+ $')%#'.)'4!9%5$ 0 .8#)&(:!)0))C%B)D@>+!>B#2H(+Z*!d0O/ H:,8'#(-5A.'?-+M<S>$O>7((3- 7 7$99B@8P9V3EC;(*:;?8A3@09/-358&91(4.23!E?5;*:/0+/ (5 * ("0#0 '+ +2+.&7$3( , !.%(1)!G,Q1PJ>)!7C.Y^b$]4B;$. (! &(?##E03F81;/3.!'(5%$0420;%'68/A091N33912)-?#4=+1966*=E)=@$A35>%A5&;E'90 1@=;1-. *-$;8;<>D!:'0)()!)12(0A% A1E,RNHA8 6O[Z"S1J,2%  $: ):'<9,E+=/ '96/6AG:?L#5I!?`36G322*/83-5'/>12OJ%5'%.,%:O'B<1? 2<DH:5&.,8;5K/;P, K;"U9Z([VK) 67 I"F JE!;-%#3(!!660@&VH 9%. 4#*- 313>AT0>b?^0Fc9JNB09;-(=,?3N?#R:#V.*G:6F4*86#=H,$=4,'40+00H+[3P8=8(%<ME <4.@,?H-[:(_4"_A1?=3?5;:K4W9P(A,39IF"4!=3I>J'OBW7 _<^: ]8d,c+ V7&''()" '&)0-)3)-" (!.!4 <*G%7=%I<7 '2&U0 gAlU0kFFN3D6Z&X !`"-b/(k1"U+ E1 #&((:1B &=8 MW*SO7L9AAD8'B5@'8,#*9;,#B9N=IF9S5 Z@ g8h9k1k1 Y)6(-(,)% "# *!*("+( .?'C-<=/M4K"="7.KAlFtE4S"+!% *$-64C%&R:U@,^A'\.?I(953*/4, $  5 I +D4<=4U9 kBpB q=h9o2 b<A6&: , %" *#)0.82)G3F>?%J79O%2@"!$-)M?l=e2)WGLd6"d#1@*E.JrDEI8?-; ?73$D .I$%I(U(T)#_4+R'$ + +  ))#51?4M9B06I3 V3\8d@f4T4J74<(8,  !  $92< I6!S*1R9V"LN%F8.L!3B*! '?1J64U.6VSFd2,s%8%<;)7@%12*, ', !,4- (+:8$A<Y0k)-2t#;kMLP/:D659+I/ K-;G&L9J4/d$>d%Al:ScG\W]`5aL#]<L+ AB&6+%%!+& $. ""6->#'#"#2@@EPI#5' ' . 1&=<>D=G3B/6?4+%('20!#?<%W>1Y:-b=dFh@ k4'`)8DE//6.C1'T1%U 97K3 R%.`?K+P&0N4CL:DC-W8&a#D6:0.;"0-""-$ , =93-!35M VJAB>/ )/3A /E$,M6D 'A2I7?3&/%&0-,) .!&8'DK4`FElF3nH"hI$E; QD#E49+I ..+K,$L*E(4E0+#,"E'W&&W.?V19X(@?<2.,%&-.$2:.&""0/) 2*)$8! ISN%T.I,5!%,# #%$0%#4/(?8-C157/#E8A7 063808..% ",8$2&=C2N@A`Q7cM-]D$HI8D"%<@#"8'?A 7%(+1 +2 &3Q'R5Y'3]#.E(,%"!/$+6$8"/ #$$5/ $&2(C WY$W0X;O;6*7&/0- 8*674'114406.18#2565:=.;./2+724C52 +9'..-*:.?I?CTJ8NM:GO+6?E@A *02 ; 50*+$&,%"*/!38&: G*O-E,6!+$!.) #1- 0!& 3   !+,&#&0GT\6^:UCIR+,K 25=,@.9912:854.=(&7!-,;(+:02'7?(/C00+-%#-)*@DC@OJ7P=7M;8Y2W$C22/.A% 7 -,,,//%11)4AE="6(&1!9= 2) #'#"''3,,(!! *+0@$H N'a@V=O'RDO2&A+89900'25,85 !.-"%(/(1;*$87OBCL4,'1)#-G='SA'Q*E-*H)"M">W7A42=&20 )5(67/"+-F 8$D@"@#$%# - 2 8>*7B(I$E?1*":4!#2 B"O+J7IBJ/TB5ME&>1#+(5*. &$%-(4. ! / 7A%J3 G@ J+A"6/<5 09*G#L,D-+Q('d($7E+>Y(1V=B ,*  H#c1ok3g1ZHB4P2P9L* @& E ; D&99"C+,K7,A5)1'*/ '5/8 34+>,.T)0P2=?1+63C);!/1"(-= )C# ;-& " 0 @:*>3I6E PI [9W O?$ 4#1=D!AY".S)I " &-$*G9i&+x)v A}GV"64$N0c3%Z/U7 [!XS( B3 ;5:2#34.(:C5,:/7<?P)EK PE ^>K4K5JCEF7H05 *#8)+> 9,% +# # $$*1,5,&:8H3]: r% f SA''&"' #:(29&?B1I!+;#(.*P5ly9:r'JI$R@&e5$m3n%aZ .]8S;?4%9 1,#)4;@+M;>6=2KNZOWUVIbBk)XAMF!4C!!' # '0"$ (%! ( #$ %(:P'^)k[M,93,4"+3-/.;5*>F'=A *  ,-@L .c &s$2,?X6XJBa,Wh$Ds+p&u*l80`H:N=/@8)0 !1 (?2A=@92?2U?]O`VjU#sG"t1#a6U5-6#"   $%# %%).9 7#6(.++6JN"W P D6E&,1812599.@H,D*7'-<.Te*h2AYJV:iX'pk RkI1+#+&4'82(&93&MJ_GhJuT$hG*h;\!O%:$',#%!    #!0%07*I)S.[2K5BI%@GN/ !D,?6:,7A5HJ>H:AQ65S*0V!_2B1 $*!O&[7!aH74\A)xl#ql$z-v<l:d7^:N2A) #) $ ">#L0d7-g>+pO&_F!R6O$!G'@#8 ! ,# ! )6--05?.L ,^5U$5PM>E1 F / 6-9%8%6F?=XCX^CZAANC5[)9\4V2D*$ (.3,1>6#9D!JU> J# V'tI}PhWjRg:YC$H082'+!% (7"&Z-1`,,nB,eK/G1432 '#! )" $ 1 /(+'0&3%/81;1H=P LD#!B!#,# &)")%'/-+63=6'N1(B< .(#&&! #3;*=0?#J$MS%L-.&! +4;52'!0,-5.'$#<=6.EI1TWCX[gFZp,PpEd4F&=*$75/-; 617#@-73@]&&g)3j"u.X>(7)3%3+F1?:=E(O)>0<,0'/&:AKD$W47E=30,/-!*$(153@)D%QPS U"L1!+%+$.$%!#&0+6<3.DT&GeD NdLmJi>k.O$:.,(&5+)O6D5"`W=L *Y'C"_.!t)5x1_ *F  (! 8?4@LU=g&_8P%;D,<591@@DJ8JUD=VM8Q<5>$2%" '-">!F!IM"S Y bT&7#- %$'' *0'!91#/##<%P U7FXRX\PMG0A2 .+19DPQ^ jh)Hi?]*>U"=W @\DjR[]AG))$'!47.G*1O1U&_-O8<)3<83C:=H;L^IQ^UBaPGZSFD463% 3FNTUM[x"h1K>5 ')"+" !9?#5)"<G H5 @ER;XGHAE;;24!2 9]En*Ro`4}-x BeBNHPWKkO.p(,_K96XA:I?=aRNq]UhMVTDI@28 6 ?&I PUSQ2R!i##b:X7E1@$)C'; 1( /#3/:/$JR,F* =/T:iFUO#FN" C$?(+F7ZI3D@ 0>n5P F^!=>6E6')P'&E6O6&U=&@CE<&9+:/D^.7WCIH>JXINjV[^JRD<='-60$;%D2F#KRPJ$%HA'N$T-W+R )I$?IJH@N6>R7 [@JO5-8.A5S$WBZSoC}>y.!`.] 9O,0-(=ABP6DFG:>P4)N=&\K'QT37W/:M/G **/G69G1;V97X>AL@20@6.-$&XA#T0@'@$8'F0<-C"2X*])Z?ZKO$MBTHRWDS5>!%?;> 2%53(E=2+; G/ Q/L3=4 OpB QrCk5w%$e(j"H-%-4J7O%?H(WASIYE)T\6B_>@c&'d(B')'$.!-)-@/(;*7S'5U(5K:8,B'/$:-!M5"I372).9<6D#4>,=:&1N(\/`I`QEX@^M`]&VG(C3&+@>'A)/""&1.)3+73.N-RH F%x5O~Cr4g!Vt6J^377+M&W%1K3D88M]1Dm=#ZG766 /2 1<$'?-6W"1_4H#33(%'#-)-7,$(4'3"1#D*%?62>796*)'J$ ^1ZMIf<pCl:\H-JA-73<*F1E#3;%@=0,21>@ )=77 E.5"!)27'hZ.s48G$gG=SHGNE?hFTF6ZG,OF:QI6Xj)3w;c 2K7"*O T-$Z4=X;\0H'%@##(7-)()3%E!0R&2G6>E6B311&L#P&/Q$G: j3%gE`FP36*!96 5<+<(8',78"-:" 4>O=S5KA20*< 0$'&S 52+)<2<+7<-:G(CB 834'(8(+=$3V#N8OC"Q8">%(13*&4) ,+&J/"M!?)@+6NF]?Z@ !@=@(.9 ;80D/N1=NVJ6Db>J]^HQ){\#L-=5Y0f3uh]|ivV|n@bR)LS1;]19a)S4@4:3JI SJGLRNLOLD'M-+>/*#<E ?'5'115'1O+S9A6!'$"-5:PDQ&CD-F78H71=<5050<*7,)=,H AX9b -Y-5D=5KH!?025L:'=@8@8B>Cc/S?ZG2;,74R6V.q;~Smi^WiMBTF9W9(Y"R K3"W<)K:<+J?\K `LbR$LH2<;42(@)+ &'.)/3,3&1;&5! 6!+$ #'6,3@ >BFE"?2,>+,>)"56+&8'!+127&[98ECM#+JC?\P,NJA<"=' 5-;!A%/2(AB<;=S,<}!9N;o[=fDAMwPfv>Ud-MXRN a,E#X01];CT;O:[H!aR-ZL a=/UF5>3:3=!:& -#!+/"$4$7%.8&;=%/N9GCP 3\,2]$"W(S):.9(*& (-"1"+/)&"% 8)02)'13:< ?]3]+-U'K%'I'(0#.311!6$.!O! +6AY\Y Xlap;sq)o0d:Xt5KZ 2F:*YP XA>KSQY\6`dSZ\Y<@Z5>qKi#GZ4?^KGNPR.KRVU&\B/i*7R?@"F+'W*V(A<=P:D#)6 5&,+'(3AC"-I.'C9IG ETI\79U%P ="& ))$")/- *)'/+N& &;,V8TPfX;wg%x/y@h;j:^u(L_!$gE1rN5qKTDRI?hSMe/T^-WD&Z"0G39%9*3>vBI[V6QVIARC#U$)W$G;+[+,V+EESN;qJ2xZ$Xi"R^J2B'&1&-'+20.0K-.d!.|9)wD"b>"G?G.(#!!5L"&N($]- HJ$EX?Ji2[K-+)%'@&#*1+@8>*(@,J @!2+)53<"I_Qe+2oT4{i(9@ B%9**;;FAPZ*^[ ;bF:il>iv9vg9gk9Pn'=q20\=?QH)%-,2/=$M:c?fK"\>T70E')E"@+#/(#20"@B6%(1"*0-#$-*6+6D0/)& :=!80>.L4Q*2R;9FM[F\].:Y(:R<@NF4CP/ETBS;i6:*8 &; /10;6.>N,K6E?UD6[Q5EG?8E>C>PKZ'_%G2(80/51P&EH!GD.>+$)2!)2 AF#'V7=75?<.>69>E@6Q0#SG9#)D06D>IEF'I 1?.#(&/8-N8R<#J=%87+)/ "# *-:,F)Z_Q@#&/,2#- 1#4 %*%% & $*2%?'=: $&4-A=,NA5OAUEJ8>$0**8#F(V2U:*T-.1*&D:'C>,1:(;E5-Q&=F1C)-:2/H<.FCUG#](*: K7+C1-H;*I5@]'G@+8J>0B9G?K#/@5FW":44-5!A:L<:. #,1' 21 /?H8;8*9*4<1 H-K%>/3&A /(&$#)(2 -!. "$127$30(2%3 %$&-2&"@ACe"V%R)d'e$9P :>*O-6W6UK0K@6+N5@1"3D;%PE0Q2>28%&>'(=#;6$+2-32+##-'!(2 "%+-6'@.:%.%)%$() ?R'`\T 8!#-$*92388'3:;2YFr<}* p^&T4Q*$71;45W7Y7#;D&*`E5a:3[.MO/TV+RXJT">J E/%A+'?5@B :;"F. @!M*G)J/B8'1D-)>,+FD!;!>*.2 +.3 (!!#!$0./9!$( 2OX ^YO@ (<+=*977A+UBeBl8 j,LA!,<,I)R-M9"+H="e0/d59e3P]3XT"SV[HZ=+J.-]!.V#S$!U.LA TJ1 J07@ 7I(L)VR$D$H&3*)2$# %! ()!#-/#$&0I[[]&])-L&1M;0G07CI>Q7"S*BL +2+ 6!%4$(6##A."_0,l06_6HYXX]SL?Y0*M-[Y [ YQ&JQF/5< 34.EU^ M&IJ?+!%($'( " '$! #9@T)"d*#X5#L38V9KW5LA#M8,N-@BP;"]/%T NO( 6+2('2"806*" JX$)JC< >FBR^?W1'OMZ^-^"U&M#F#>,!00#"8(N+ a/!]0$J*'IGB9"!&'-#&!$"! (! 0$%*+ '%%+)E-!Y+.W95F55P;IK9S:-Y)P#5I*W;#^.%W$N A3+A@B9+@;+>*8/10#, =: <7M%HR/[>+V.&L"BC!.B4R#WNJ1  +G,%W4.Q$3D%1D#)G&K*@("&(,,)0#0&)+-%6&464(2,3?$ ?1C2*N86VG7IHD=MO:5X(3\$N+:/?/'P0P;A8J:6X5=Z=5D=13(=6$A1>%;-.32EG&HH=P42J.@3A(4:(29%,%-@ 6," !,?)>D*:=2;1*16%4E5G$? -.() !$/'<6"/C 67.5*)4!413<1@=#G,A>41FG>]E=_S,dOMRNQ#=A)4++%,6 @D"H65MC6UQ,PS/ME'W"78,/H1$C "I"=$6'44=/,5-5, 391)">%(/1)&  9 +F,8='38%#:$@.61!.%%0 &!1- 3(%D:=+;!9斞.67+8%>(M>C.CB-/F=W=\F`8(@80U*@if=!:):/%:"."&!0 "++'$.  " $#,(5,: )/#? : +$ !#,& 16 48(923D!(E&X1A08@#L$="71(2!J1V7V="Q=W>92%1"&D19I9BV+Dl,Nt(?pC_:I2H 7J 6G%.6;3.24;?)@6#6'&,!%.7.-"$)(' ) . "!+0%!(#3/1 .;) ##, !".; A=-*59*HT\ K1PC031+$-B$ N )I''<'$A()26!1%4'0S-;T&RL6\4d 2R@G'2H",O/(N 4F5>91B=C1I15?'2>C@:4 =,$#& )1!- # )$*+1#/ . %* ,+ *" .&54#%*" %/&-+1'9>=" ;/+HV X dV-)C;,7("#+$$*)/5)7"11"/1"71)"!%'&G;CD9>:!8:/5R'3>C28.+C/-P0@E37D:29>I,; 09IH6).$694689G-:F*#K5F*DQ HB1 (@ K%J )DB4")% 7 - ,+ /&?& L Q ="'/2-2?4 B;?<;U 9\&?f7?N-7>85!;,:#"=1,U.7Q*'!8*9E:GG@`4'[0 SBN;Q(TUJ(%02*8->,/(+#%$%.! !.B M-R1@$/&6)8#-=(!361+CLIe-QJ2/EE,4\.&U0T"S/S#A%+82%?0//.%/+0 .((<7-9563.D9O9G668(&:O/L48-:42I,GF/Y5!SAU=P6\7Z+ S F!#'3.3$0# 6!-** %   )$>*D3M 26#;74B+(B4 -4")G#Q,W@#Y;I?)b0h,"f$'e%([. V*L.9-4 '&',!%4*!><.>3<@7;7C3)A3:043%+,7)A/<$1+$5-@#6?)C3Q=UCY; [6a3]( F ',##*!%( 1 ( !! '<$A-L /A6?$J=E*3)7!-N'"Y0a20S"Z8h*k-v-o+2f2$f7L%8+%$)%$, '/<0?4"G/+P%1G--8/"./&#+* - *3/'"2+:71>.U:_:_: `;_6 X2 G140*$$" $   +#?B(+N%Q@FF=&I/'6+$'#+<-%V-,\:MV1 ,&##)(6%;#AP/** - )(4''""#**)0/4 F) L2 \.^4P6L9 A1;5"(:7%   %(52 Q)U+$X2b?^&F72?$31:*#8 )%!@>7O/I?*Y4/m)s7r,Fx0OnEWYPIN^09RE-#+.4$$9"$,/"%&)/#&$"% &!)(-)'-("#*12;6I7H?$5G&5F#/:#68+150.&*.%$ (  .+B/Z7]&'l'3b$9X>70O3/$?)37!2) 43/EJ0Q%!b(h"6r4?x=Kc]RP`?Jg-9Z"=C.H1.% &/"1 &,5.5)4(2&-%1/1-04='=&4%#-(0+3!&C"!L8G2>6#B<%;3'.,.' -0!'. #.?+#SB#[D$f3p&'i.Y @6%J(.$8,(%&'*' .. %/ "'=<-PB4U@4`G(VG a)e#!J*,9$01&N*$WC/: B8$M%-h%A).O&=I(JI+T>]2S!E#H0C?!3,.!,' /2"+"%FQ %P*C'"86*$E,Q*M"JB!;(- #! ) 6(?07A5A 35%'A6B?1<0;434/ )5'<#>I?UO:]H.jI/aG*S5M5 3-/-!EP$J!@7*4!4!L-.T!DS!TO&KR%I1A10:4-K#'A.!5 (*.#%'#!:!H##P+7?5,1>*-R&W)T&"T&J$;"#'.$"&.052,2871;5#6'9=?E 7H!6>:=9)G41 /6&3"#@-OBF\M7%670,,2.&) *'9!0!(!*,+ 6(9%:8<81K##WZ)!V/.Y%-Q$.:/+&2/ 6)+!#4&!91:31B)47&* ):3B#-G93BBCCFN>8.612*969>DKBRQQCHXF4]>*H*?+2.3(3'74 0*4#%0)$.=@815,-45 672;7<$$1+!/%0#.*%#!!")$)"-*9(02=3-FV!]"\"(^$8P%B206$;<71'+&5*$53*-/5/3*4$?,61;<'EM(EQ2;'0#)!*.&68J@@NJ/J@VJX>)P 3?E@:/">%8+& 1&)"9J=BAJ3. #$!(*%&("#"-"(,#"(1 03-"89"3BR %Z5h4Q;5 A+)8(->.7&#%/0" & .&* '2+?)#G>?K<1$%& 2)(3G12N'S% H)N&6N#IQI>D-B+3%-'2(BR+H0V(5##! #0.'# <('?,=&06#+&.9 4&/ :>0E%T.Z 4ZDE#?7 ;$)4(9-  #( ) ";DP# N3?B=#2.!*2+/;"@J% A+Y*+b(HO$S?I%1$$ 7!G$(G66(GCJ.5@*='8#A,6( + 2"#7,D/1O8&O2)H.*5 4$) )'&&-:)A%+V%6G(9#+A&/3 (2!(, +($  +0)J&S IHQ*DEBL( P/)'!58=3*O00b0.Z&@@ 8"& * G.^/-j#5`+%b @?I9Y3[?W6D- BC ;)1;2L+)S;(P<(=+-5"1$/0(.#0;,4+!)+%0=$7<'/5%+*#/0))/-0'"  $/,?/E!F)J*M 3B P= Y$ Y G%*2 %) 8%?! C: M4 =1 A!> *C:!?C>L05)+!13#/-"!$ !&,0-7?0<.2 86O7W-m\N+-= +92>-3M9AW-6I-7! 35:S"Ie<}$%,i%ID/NB7D8.k."u)q% [Q3IKEC;L:D48209@EN7F 61C> XERDFJ_7V* ]8P@B1"O8XDZORQaCc1U F4726- 1-75 % !$$ +.'& 14CTPE%;:..;!:-!335:/1>%D7(:I6 11*K(FKOa 1ma'/ICJ9h\2ve0bw4Lt 0x-sBlP`BQ? <64+ .0 ,8!=$=#E6,O2]:UE[E(^A\9PB >#:%+2 / ! #& 3$E*G1I"3F(?6#Q!K NA5" ?-)647#9<2<@5C39G37P+)XU"9+" :/@4 =H)V. Z@70N[,oc.m-3|.y+rJcId:W<B5%!%%0%%1#G7ZAV:YF#QJ%K.,7!8 (? ;%  , ( % !,/6C)7Q"2Q$8T)C@"U9M#?/!=-/@!149<=EI;GCBIB0M9/T0[&`C0!4&&2$E,&LF:J?-F% S@'yCL'oY-u@dL_Q+[ASD 84!+ !"!>'K#P &V0F9!,360-#&#( %-'5" &$"1.;**-6)5H7NL='I=!C+?"(.-?2=A.BKEFBMHSL>AL$?^.Z^ C%# :6'2F-@( >9?1KB^N'b`+b]0]PeQfMV@B>.6"   5#=0*@? B)J#2=6J>]#Db-=U2I^(IhYIE..88%!'"$(.$ . ) $ %+&F'R%_/3S84:&2 '# /,()*/00 -3*8=; ;(.20*#0!*/&+5%+$)':6)6"9 )8F2.1?E3PV6LTHHQ_"NiAZ.P(?) 760 *F8J,H(4<*6@7H#+f)%h9/a;*j4)j/E)C#4?$&*'2 !H$E (F0>!6>18A+/T5)h+Gk1^[(RD644#@* //-0#+>%5F CGO Q#(H--2 591;=)70 '-%%&"" * #!&5/+13 7G0P4NDS_PbAZ)M 8.> 30CC3WA*K<0IR0:N2U!)K#,Z7'q8+h$Q < *%*1$%@G ,e0R/N 9K*/:)3Z/?`,Ob5TdA`g6M]+@OD/ >-*'6(L$!V$U UX#U%d5L?$79)E<7$3//*$*"-0,! 8 I3K0H=%CYFY".?+*! 71 JCL=+W_8MU;Ae"H`2;ZJQ=R?WJGC+"(/%1-+K!T _ S5N'<71=L+In/b_3bL#S-B9)*9O_[V(R'#X)j6W1&N6,C4$B!91 )1 "', ;&?%:&,1 H! N6 9EGD?@'5 "6&"/2P6XBX+Gr-Hs+5sEk@QEPGIV@Z*[%>!-*%=H>"S$S.I.0/0/G+2U-I_;H]@G\GYlLck:e_*XDN,F!77 E#Wbb^' X7V0b:c13V"1T'*@),>/)?*:#2 BH3D 3?!8$G ;4: N8O>3B,$;-51,B/CH7S>l)Cs,~(']8L IGA20P%2c)a(L1'3H0`;]6S8D99:343*$B+&N4FO=KP5FYAY^@^Y3QF$M1<9%39-I$U"W([^(Q1!JI W]1Y2W+5S!DN";Z/J!8@GE1?),-8%71E=C??9&9182%JE_KeCeAr5| *a5'P*F-3#$-40CKIU-H8C?4a<ZH"hR*c_6AY$."@)C*;& * 3'01 5)B-; !$1&I$%k,8#@"A'Ec09C<(6;,4*G0+M;:H8K*1S4Pf=QY>LYAJdEOjH@n?6m9!KC,T0/I 5E4.3$I>R 4U$(E/2=3A)9G,I*E %9396?)=;',.MW?_"WV sLnMj=^CMG.1 *!  ".;8*B!;3("59-D'*q09(Iy+Sl/>[7O>KQG>;47i6*p@+a<4\DAXVRcPY`2iO&OQfZ0[ODB4E4F% CT ,[*Q+O9@; W,D.O#LE*9;6/>;5?8+?0"$@ P"9F,V7"o3lHfK&S;#S(%W< 9<X !D!$)+473D,MK%.=1(.','50i<@z5Zj7`p.aa,ZT1XL3hK-{4NV*v^8gSGSrs:xf2nQjP/Zc%XuTZ)HEH;.YBY8D)W>!YAL*WB,E%M+$UD <#6#7)$S*9Y'4M!.(%/:'1(,EU-YWT[&JC,B9(MG*:5(%Q3;/+( 2$3H0j0^,R.CF7/7$)5$2445:]GLYD]R<\U(i,Qks]sInHiO)kMKN\U5yv5fb-SMXJ9?4!=@:L $Y3Z6W8C8A3I'9%'-O-M:E4S N$@-:2)D*T": %$/'&D:XHTR5SE@]JFV@-JG-:G(3@!&1( $A/0@!,I01V2ZP9]B,T68?JCW2,YPPVE`=%n-5X39K9\<MIZ: O643*$)3),?5*)*)&24 B,;7;6-0$ #0#8"080IFVK W=0P0:W-?Z7>808;+3!$.8& , <<=C?K(bB6xL!WG4L49N3?M*^C7\'CP W8K(2m"+3%qO"lg(s p7qMtBc2`a`Za<(I LW7Ea5ZSNP4PDRB(`,\.%B-.1'C%!?6($&0%*5!''%#5). #!!/- 64)7AK;L9I2+H;/9- *-#4*!&% = *$ 61N1I:ZR(dQfd1pJRoB?_GI9?W'>M2,2(L6[4']O,ZdBjf0kq&h/O+`lg*fQ;W924E>9 J3A*2,9091*"$3 .A#;' H8XL SJ`Z/dhzs(pDg@[[LIYMFA16:J2!1508M4;QLKnm/^vH We4Z`BP_I`ODN'HM MT$NQ;I9*=' ((!.%!.#K).I;)E:B>JCJH@R:L:8 2!++ +2?97&,7$%%3$ ! 1,D"_0k=(hJ'd1f;9xLoBbp;D]'^aA*Z> GE+X.%:.:E+G.0d (j:4gQBQX87pL&xZLb]_\I"U+ M-'//80L9D+?P59<093!,3 + "!1D(/S70S=K@QN5PZC_ 6N!;1&6($%"&"<"?)%:-2%/-5E )684$L1-X:s$=G<^HbBwg=jq8lb Kw5e,6hH1_I7OH75J+ G'#F)6O+W,XV-5)>+=&/(8N6U1[@'SQ-RWFP49E!#E"873./&:/M1>+,3(I!N K7?0>76B*Ka"Zc8CkHI|[H{HyIkd7`e'Kh(B\6,S?-PK3Y;FDQ0W1@')#N? J- 6f)%DAv^gkJ]@>*8.#+* .8'8@")Y)(V6"D9F=#?%<$8-#0?$M(L-+?0*U< @927:8//E:G=+E<@%;?++0-EP&Q@O:8RBMG^iM`[9UY2[`QK_hFenD^g$Xd5T\">Z%NL\PAe?G]J1L.':3;8!161-9%5*"e' i=n9[S!XTOH4F(<*3"'1'9(%DK'"C, <2-'!4%72 $ ' !''A B H />!01 6&.?27, 78+=.'=("I("N9 O:W$E](FNLFYSVOA]:UY6OC2CB=?>F1;M1PN-JUC[*^VabOo^4`_-P>!98(7K.D4-9&7) S;*m64gB8<@'AD 3J*P B*%2"F-$S- J+A-5$ +''"+&*&&#43#09!= 1./ 1$$+&1(#%#/%#E!L9,E>P1IW GZ.*ZGOG<\G>V/E?C8 ;*:+'+=:5C$UF:fGpl>sq,bl*VF5;459;CD)3/840TA=[>O?8BIH;H@50I1#I'5#9-G(b+ R2 ?-7,$>.+(:'"60-DJ->351 '+  -*! 5$2#=','>:J"=T F_()[;>Y:LS@FCF87;.)9-:3"04,;)7`6JQjh-qj'N[6RE?.(!%="OJ&D56',$;%),""31.0"8*MX$O&>(*&).*2#: !!#    (%4:7 58/F*O'(G6/YE.\2?Z@F@6095!5)%*- ,=3D4>=(AO$MSEY!:Q 099,c/0[)3N$18-27B*BO8PN*HNLL%3L9W+1=%94115F$-I-4E +B"L((a0"_ ,O.-?&8 +4$4/,*'1&!1,#1 /'!.-"475E.@ 0658N+R2 V,Q=-/7*%!'#( &)3"&60,'+&'#%+")+$.2A& C8Ne/d#,_"-Q(B()=8;E>MFH^=B`3GI+9T#/G+4?.4D3)0@(,A 0G*?1M.TS%"H'GE-.)7&B0%L/G0'8*%+(2.9"6#;?2F4K2A@+G0L'@0,)>3'  &&+-1@$.0/%*-"%.#&&"%"/, -,+> *H&@?&L$i"d(&]*EO%U,BM6X=PcBPS.E'@ MRM48A<4-?372E)4<),3+/4"*;'<?95B,N1F:35"=)-."!*8)%+!:7%78,(*-+ '&  .@51 +)'5:&3?)2B'<5=U(1d5\,^)Z"^(7A;MI=O@OW1;s1-r+$M7-3G)AD-MEEJ%CR(GF'EL &; 1B%U+J;B%?)&E&?( O,"C613"-2*-7/79451@-:15),)!& %#!-"<$+:#($ +!,)'"1 ?FCC9,;B(CC"6;#?@/2X79nC,><65-: (8#.&!%($(/1" !&++#!"*B HJIF >%#=-%>0-?@E7RA;f:*d%!X M8!)+)M+T0!^++UI(5O3%X/7]6MLLYSX^PG,>64@-2D%#845 9 >P$I3?166+A'.D2,Q%T'Q.E=@.. %)*%& %$$-%-"*$,"> B$C!E ,C9DAA6B 96.F.H=5H94S*+O J5('$;%-(,+4D+SR'K+E:?>ISOF;>M+K I!GLKJ,=/79KT]$S)+VJ; 0.33$("(%$! $ !#1!0 +.,6)5?-J(G/.C DSQCCHJ<;E'N@6W=7e(c$[9+)-= %)+0//; &)5G#H 55#4F!DI*N48U(5M8M M!I,I($O*LC(@'$?+ &9S!f('i.*['K K<5(10%!  '$)! )*'$%(#'0#*+)6:6&9(@+#A=%839E":8ECN3(B$F=/b4.m(4]%1J%19F.B88;)2D@668%0/!2$',#"#2 1C+GFQ/"d8)[,.H/#J&N#O9) %*'# &, 1$)*&,$"( 1/02#B8#4(+)4846FK19J@/<:5/B)C%@*4='I0.U-9^26A8>EFBG7J>H@3G=%/F,"F3A)D!7"),)8/4BF5>E)9E%/<*17*45" -&'1%;6 ) #% 8,C;7TF7B8/>7)J.:P"-I<.%&' $# -(01."#'-25 3 6(R4);/"73>.;=&R@3^H%P7B=7A$4%+1&6#'O!4JCN5V\6Ta>;[78V37=)J%+[.3K2S&O6>J6O&(G+&9# "'.,#!+"'! -% . &(&#<,1;4>8+G-475<+28$6 ;)*63 "0*= (,,&*< 3 6K9"<0#52376 U; Y; [4M8?0/** ,*J2@J>S5W`4Pj+2h%.\ *I1K?^" V/$P)5F!IC/D8-K/ 9.*#'' +$ &'(#.356/<-#950&" %,5 +6!5#))#@6 ?%3*+:" &(&)!!12L4]$R3'L:"=+!+*8FANEGU)Od.@u#;k>\"/I(.I3Y0X%BN)CO/>I@H3=>1<&)249 1+!(-/0$/*2?(8"#'#-&!)/ - %   (""', 4 ,&.%;HOKC#$;9+ "%(# + *=%,Q (F$3*/ $(.2<5C>JW$JN'9^@]5M))C8N.U'3Z#;G(<::46>A7P+>L2770?)$7)$ < >5 4*&.4=/7*'.#$!%$  $!6""** . / &# 4 9WdX )O>>/21*  %<.-2>1>$!-"'%!)0''3+=(7FCD9979,F+C..B90N&6R!C1.9AF>6C/0O'0E1K D9>F :($*1#;-"0!(,,' /=+9!1)14 ..**1&'./-'-2(,3!&(5, 1) ;ZgV)U:D%%.)$'!7+.1)*16.$+4"!5.?)?0)B8/5?-&?Z*@I+B.03"58>1>>8,E;)B8'X*'Z&B(?%+?!?&3* "/!. -$1.183, 5C?$4"401:2193;@'4=(0@(#8.<& A&+: RT-V+I$B!-* !$) / =$D'3+0&:$." 80=0(21E-:P-;a3DP:F)G/F70)10&7? 79!F5!K!'O*373E(7+.+ 9 8$.2% 977;.6!. 9F"H.2/*4169?@5CU-7Q:3H7B1A! DD 28 D&L"8J8@./)("$##& $  )8%G0L2;,63.36//."6*-03B"1^-8DI>7J=%3+B#!C,A34./9+6;+:="@AAGJ?P7 Q)@ 6,&;,1&5%*"  %= G/E,A$,>.9F6?0(2/'%.0&.@7MKB'^7"l,$a1.h78w5"l4Y+ S3'O9'2.0#$.(." %&!3, 529*13@ : "7 6? A##: /+&0/>7K9R9 Y;[3O39'2!)) / 0 !#$  * <F!=%S7LC@<%&+&3,9*(.?*2RHN:Y8/e&/o,s9+x@.s='`K!YV!KT"6<'.0#'4%")%2,-$"+> : $;. !3(7%+$#<& G) J,N;O:?5 847/+1"#"(#- $ *+ " 3: R R!U(S1J"97'9!=)H%7 4%65=M(O>?K-8[6n)2@1yI2gH;^c1]kIf&F)!51%&7!%   !3.+*'%(//52;%,3!)..&1"%%*;+=;994@/C$C (<"9'025. -.%%&*+% "" EK%R,S ]""^2A 5*5=<.I(+D#,$7)5S*H.-W!-b-v43vA6kO3`Y+Sh"Je-c O$=-8-%,"+ $&&18-+= 0<;4#8<93:35-*%7)2!3%)(@'?A#"C3F,=)?,(81+,=2.9',"*!)"4' &3J"Y*']3/\2 X-#Z#!>4#+8)-. 165*4!*;+;!S5k):o9?fIEc]8#d p jX.'A5@8=5*4 27."(*&,88C0R2J.E-37;:->4;#L$ G)!"2 7>;)=3?7:3.9772DA)14,#%23!8%& $8*%M2'S90XB0SE2N2)A6" - G?8$6 :72F-D199/H?%L;#`7b+ V&S.(I4'E=$?;1;)$7791&) 2"&@(I&R!.Z3.G88!-I$1S#8S80LN:F_;0[1"S%T#.N#0.%, '$&%(1*:+%40/):24;+?2E/O.8:58;0D52 -2,@2F0ABDAALFL?BRFDUI;N9 G ."$*)&,;?A" 7!,7/6/!50N@Z5U8YABM0;J/1@7G+3'."@= +$3"&221D=N0@NA7AS*7c5*Y4V,'Y$3G-7,1;.*- "'*9+!71+.38#:96-&6F*1=7=3CO1MV0?(/ '-&7<1:G7CV:FL+O^)\[%MJ.E.=0=*4$3'+*1,! %%6@25+05)<88=#4A%2?(;51=''*# $&"*($0'8 B0F(=N?3FK$4L\b(+[)=;*4%66"3/2% &%7&,1$&,*2 '%+3.3-)BATSR&=($"$-.0.KA&KAFNL[#U 4OA=L4D/5,92&& !RRK;#+6#-Q (\%[H"D#2D"E8C3?; 93 + (/*CR*>X7X=47-'!*)  %$*-"--8)!6-:.=&:+; = /'F4D? 9S#+Y-'^0&Q$1*6#,*+&& $ !+ EQQ O3FCB$2)'43"0L$$U WG*%<%1M+B?$E1D& /+ - +%:2:P99L +O)H 47<-=+!:/'3+00$(26:,1L."J/"@.D-8!(%-"),,-/F481)7*!1)',2!'1&$+ &   +"3("F*[\ _)J ? 5? BB, *2&9<<%&=,-L+BF 2# 3/ "H!.C$?M#1#H&$H0!4 1" >%2$ 02!#?-C#'?1?:!5*)<-*7"(1#*#     .22:9I 8K /@,7D+JYN,BA0> &6 <?-2H:5PB28 )"  +25PL0je+dn&Nh3R+V2DI9O@>W5/]+\7X" P"@5?BAL + G,9HA<9'* %63NC%_O2fjbqAl \38WDMZWX9X]%Ke%.^_(h?\EJBF?-< 7<(I"W$M>H J%M4MG H3<=M')K$D;$P*N4 JAA?C<D,:GQ(I":$3#> D>   $-%*52=0)=EI : B#J&>5"*<)<0<2&=42D/4NVS5+I.F4UJ XY I\)R-%TII@X8l4.,${4eBf1bBM> A3 ,-('8(/19(B1D1I3G/@/8)*'6>% 4,%5 = D&+'$9,&>8#G@-F<"I*"G!I:$ 8!A+$C2):C0)G41<48B1/@&(Q%UW61G';,>>DJ*F7=C)BIEK3lCP.J,zG lLf[[Q KL@B4- ! "0(+4 +7$#4-*6=7 " $&&84#$!'(./ 8=2B$2B:,L@)O2*I-G.8"'&1$53826@69:6H?7IE/9C)-LO%O&:0) 30*4>/:'8'@@1BF%L9^K.oa!nO#oL`RWV NO@X1?$    ".+"G$IPH%9%3&!" +'1 %0 3-+!>08/:-95$>%-J 0H,A0@'#&/3;!190D7=B'?H7O-b$&I!8 (%A,-D;P,WV V2/A;=NNcX+bd4OZ-WNcCRY!DF$*%#',$#-!!"*$+%>&`_2cIW?F>*3*/!"%&.%3#(6!)1G#C'<2*4=$07&2C0:N,-8:*9!@9;&86'&2*4;<:4>B5F91LI=Q2W"L937; 0;:U/Y %`,#^27E#=TDSVZ2Qn;A[C?I"VFWFN&!.'# 1?0B/504-;&0G:g;jXkpY ]BG:B':!*#!29-*<.'>)?" I)S.F2!BB'9B6EO2GQ.;K-1.0!%-'8 *2#! +($97AB<3@H=^1W#N0:5!9! >6APKU.3!&7!)#! 6(/$%)'*#A?PH;/!9C9V$,J*<))8 X%:V-,Y('n>ZQYDXQ`Y?@363&="9*:0W;UJ;)30&E.1\-0d#Ql1Zb6da:d`2qghU \; d8&K-"L@/4Q#(cb"[+M(,N0TCYIYV&&J(2L*4L1,B.&2%5L+K)I!*A,$) .# '2:6 52'114:-)8=2R<M\ TkCj8o/l!^3Q-=S":OC4@*C*98:!E1s+i!$f4'K3A=8@N(U&+Y@Qd6NS9bR3\P `K];L8@B':<"2X+ W''[(a!S+C+B"K\ Z/[!:`"BeG_!;X(1D#4 C #J&^Z%9 %('>+'..#/8)=+"C?WYWWY`aGn9\(]#QW%+Q7.4H:69HA7':5-XE*k;B~JBd^0TW+>O:K=07=(Q;FL:NG1LE$PO*V>-M)?8(>"U$_,$a2&U)S I(E+; /I3*[&8^ATUX'Ya&TjOYVa@D8P ]XG9: 1(:2,A8$+3M9,PW6]k3V`Dr)Rf(&Q3&i'eN0#?T&.Q%1Z*@\F;?=TZCiSSheAZtPRf3:P1N,C8=.A09-<<8I#>@'C1445$1:&Vl0m.W)%Q%J*E4714%*N/*U;X]^xO'nR gU+aWTWBG2@% C$I4H;&%* ). 079"""2!EB(;MDHR^-8i.5y6@`9#WM&T8V3F1;CP11a.#iI;\KC_ZLm`NfQNmSMwJ.i1?Y.=J!EF @I:9$:.KFSK@!:,(;O@A`:ImHUrIJdM3cQ,XK-I,HAR9FM,XR=WYCog:fuAoe=V)N/e;&e@2kACL,R?&Q4W@,CHFB<&;567Q:^9 ].(^(YQ !E 88AB I?H.*- I8F"W*;g:tT iJ]7%h4$W)*@:!*QI27(-(# !@IJ$1E2D)q6NOW<$_K:cHAkG@`CRP&TJ>BLU;Bh>0aUX`%Qq&`F\~LhVd{>g[=QQ6U7DN%@+4F1,=TL\J#gL` *G!]<'oKp65],K[#M@6$;4),;*:4(DQ+6K9>16!47$KB8l?LnH9X;EWESXTYYNtE.z6A\>PQF@s+2yR&hdgy`)T~S/S3Y$Wg UV4U=*L/ W$'M"5EFL9XTIGNK'WH K<"3 6%= !93@:04F$/:)89/'/0%4%' VC&bW9qh4xrIh^Ka_QiIQg7@U+.L2<)8&)HG+YJKTY>7e3?s5{D"RvOcccU]bP;cO,FN?OEa)IB=C*A4J>5]B3O"4,7* ,B4C!*3 "! " /'=*$B2DD!TG7S;N9I5#F+@!=,(D@%=<)DD==5* "*) $F+^*Z5\F(qN {V8|uB}~@hgY^_fCSf%CS+=,*KE,*CA;7E;K>,W16i'z"2{?ExDI^WPCXI6cY"RO ^T]V3X:8M#63C)Q!/=)37'555@%+&/)('&!!**9&91K=QB \H.XCNBM8%@;B'!9)(-D%6H..N 7B.7 +$*& $$H,W2R/c(3k@2~PGSFlCqkK[xVHh[8R78IW'J@CV2T 3>I8&Ql0kSig*Vt34tG&]]"_\cW`@I9#6'!&+&'."/3.D)4E,?B!293/5 3# +#9&:@%GHF>S?!YF MDH4'L""B)%2',#0.B%0E-1C%5/4#%4 6 0/>; N5,WDhEw:LERUFfSC\cHSZ?;]"/a;VG%QS(?]"R#&D40S%i% \Y)K86; .qKcaR^OC?-&3$.(+,590D:2M*+@34/*05 '  )4!:6B6O8P5M;D5G!&A(B&-.87 54B3K3#C1): 5@&FJ+Q+793C;AX2V[3Kil45"@ BiJX\NTE3*5&9#"%)0 .84+!74>:9311 //&$(53F$F*F3T5M%A"C +:0/&@08;AB$L<+5E=8A?F*O$Q7V&5SNCN]RVJVCeK7g[*YQ8ZNJDGP>CV/NPMK)`>Hb-Li0?O9="4<%Q".:*02&h}*8+B0VJ+HO%NG"8<%&?'=#%%,%-1'3"'>3<$6"(#)&.(#"(! ,;;!A&D A%< $F$(=7. 951576-DE+;S--V,G.S5[$?T/JZJ8iRJ]LUMUQ+_@W8!F,16B?8>FJJSMp9[{9^']]!FR(Z$K&G.;81T)*p;&D3$I#,0(8!IA3"#/59$)<(@/ A$ 6D I(8"$1'#*-!81 %""!(2)-1)?4K7a"7[,-X8!fH9WA7fN8^Q0PK#=E-:(+,.A!,]!Fs9d1c|OdC[//EGCP&D@313% Z1#k;+a+-c)7U5=4 ;;&:9+=) +!/(DB#>"+ %+2." 62@6 =?OT &J/!-;!3(6. ($%'!), %0(C"%M!W)_D%W,&\70_J3X?PAO7A6+<<>*AC@Z%[uaz^cBe8R,+>S7])*E#@#e*r*,n%X%(P&9-5*(=(+ &%/'2+ < +1%!" 5;D06?2='L)Z'O"E4 (G+5-27)/%4+4 ( ,)8# '7 ,.'5*?$!L-UF#T##c&4h20[)0D0(@4$7@<7AT6Q[8HUKc-V_(O`>W%F(&6!%#)02"5@"%4+$(+$)! /1/I 'R,T.E>=A-B% :!<)46-!$)#*34211>)'D+*@"*# ) 5;44<$,LJ,0J-f%&s%jXDN.Md=Fy-Cn(:V"1]$.J/ N<GA;9G@6R!F#I#K0O!9()*".)33*7C'*B,&8"(8'!,(+"092B)N+E7; 4+/& 4#A#8$$04-"/34.$5,$8/-,)-&"" +-1, 9@6M0C?<IT,7 ,*+,"* &0 )0,!+-..3).1.2-84'67%(&#1$>;99?":N6?DF4=S2BR,?Z%'V =/'5675?W'5d)!o%+`M1BB@G<*=3*84EF OENI$>W2,>(4+5!#(%&.-)4,!:)(M2&C2 :)20)<(D1B%%HB8?R=@1J (K? -& % -5(!##((,"0)2&"04196$1!8&G!9 17!986@*5G1:J2>I&3N9K*=1#6.##.D"V,,T3*QR22Y66O%3E/A<@=BMD/>@E:*;G')?5"4$/".)=&(G*)?.!3.37 %A0M/P&QM*GI8$-' *.)6#.%""+& $&)$2".= 4>#-4( $5";0902'7.+.*@75>;