From 7ae75d02aa443e396066296033d62ddc16847c27 Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Mon, 20 Jul 2009 03:29:45 +0300 Subject: [PATCH] Build gladish --- gladish/ChangeLog | 14 - gladish/Doxyfile | 1153 ----------------- gladish/INSTALL | 35 - gladish/README | 9 - gladish/autowaf.py | 338 ----- gladish/waf | 145 --- gladish/wscript | 131 -- {gladish => gui}/AUTHORS | 0 {gladish/src => gui}/GladeFile.hpp | 0 {gladish/src => gui}/Patchage.cpp | 0 {gladish/src => gui}/Patchage.hpp | 0 {gladish/src => gui}/PatchageCanvas.cpp | 0 {gladish/src => gui}/PatchageCanvas.hpp | 0 {gladish/src => gui}/PatchageModule.hpp | 0 {gladish/src => gui}/PatchagePort.hpp | 0 {gladish/src => gui}/StateManager.cpp | 0 {gladish/src => gui}/StateManager.hpp | 0 {gladish/src => gui}/Widget.hpp | 0 {gladish/src => gui}/a2j_proxy.cpp | 0 {gladish/src => gui}/a2j_proxy.hpp | 0 {gladish/src => gui}/binary_location.h | 0 {gladish/src => gui}/common.hpp | 0 {gladish/src => gui}/dbus_helpers.c | 0 {gladish/src => gui}/dbus_helpers.h | 0 {gladish/src => gui}/globals.hpp | 0 {gladish/src => gui}/jack_proxy.cpp | 0 {gladish/src => gui}/jack_proxy.hpp | 0 {gladish/src => gui}/lash_client.cpp | 0 {gladish/src => gui}/lash_client.hpp | 0 {gladish/src => gui}/lash_proxy.cpp | 0 {gladish/src => gui}/lash_proxy.hpp | 0 {gladish/src => gui}/load_projects_dialog.cpp | 0 {gladish/src => gui}/load_projects_dialog.hpp | 0 {gladish/src => gui}/main.cpp | 0 {gladish => gui}/patchage.desktop.in | 0 {gladish/src => gui}/patchage.glade | 0 {gladish/src => gui}/patchage.gladep | 0 {gladish/src => gui}/project.cpp | 0 {gladish/src => gui}/project.hpp | 0 {gladish/src => gui}/project_list.cpp | 0 {gladish/src => gui}/project_list.hpp | 0 {gladish/src => gui}/project_properties.cpp | 0 {gladish/src => gui}/project_properties.hpp | 0 {gladish/src => gui}/session.cpp | 0 {gladish/src => gui}/session.hpp | 0 {gladish/icons => icons}/16x16/patchage.png | Bin {gladish/icons => icons}/16x16/patchage.svg | 0 {gladish/icons => icons}/22x22/patchage.png | Bin {gladish/icons => icons}/22x22/patchage.svg | 0 {gladish/icons => icons}/24x24/patchage.png | Bin {gladish/icons => icons}/32x32/patchage.png | Bin {gladish/icons => icons}/32x32/patchage.svg | 0 {gladish/icons => icons}/48x48/patchage.png | Bin {gladish/icons => icons}/48x48/patchage.svg | 0 .../icons => icons}/scalable/patchage.svg | 0 wscript | 117 +- 56 files changed, 114 insertions(+), 1828 deletions(-) delete mode 100644 gladish/ChangeLog delete mode 100644 gladish/Doxyfile delete mode 100644 gladish/INSTALL delete mode 100644 gladish/README delete mode 100644 gladish/autowaf.py delete mode 100755 gladish/waf delete mode 100644 gladish/wscript rename {gladish => gui}/AUTHORS (100%) rename {gladish/src => gui}/GladeFile.hpp (100%) rename {gladish/src => gui}/Patchage.cpp (100%) rename {gladish/src => gui}/Patchage.hpp (100%) rename {gladish/src => gui}/PatchageCanvas.cpp (100%) rename {gladish/src => gui}/PatchageCanvas.hpp (100%) rename {gladish/src => gui}/PatchageModule.hpp (100%) rename {gladish/src => gui}/PatchagePort.hpp (100%) rename {gladish/src => gui}/StateManager.cpp (100%) rename {gladish/src => gui}/StateManager.hpp (100%) rename {gladish/src => gui}/Widget.hpp (100%) rename {gladish/src => gui}/a2j_proxy.cpp (100%) rename {gladish/src => gui}/a2j_proxy.hpp (100%) rename {gladish/src => gui}/binary_location.h (100%) rename {gladish/src => gui}/common.hpp (100%) rename {gladish/src => gui}/dbus_helpers.c (100%) rename {gladish/src => gui}/dbus_helpers.h (100%) rename {gladish/src => gui}/globals.hpp (100%) rename {gladish/src => gui}/jack_proxy.cpp (100%) rename {gladish/src => gui}/jack_proxy.hpp (100%) rename {gladish/src => gui}/lash_client.cpp (100%) rename {gladish/src => gui}/lash_client.hpp (100%) rename {gladish/src => gui}/lash_proxy.cpp (100%) rename {gladish/src => gui}/lash_proxy.hpp (100%) rename {gladish/src => gui}/load_projects_dialog.cpp (100%) rename {gladish/src => gui}/load_projects_dialog.hpp (100%) rename {gladish/src => gui}/main.cpp (100%) rename {gladish => gui}/patchage.desktop.in (100%) rename {gladish/src => gui}/patchage.glade (100%) rename {gladish/src => gui}/patchage.gladep (100%) rename {gladish/src => gui}/project.cpp (100%) rename {gladish/src => gui}/project.hpp (100%) rename {gladish/src => gui}/project_list.cpp (100%) rename {gladish/src => gui}/project_list.hpp (100%) rename {gladish/src => gui}/project_properties.cpp (100%) rename {gladish/src => gui}/project_properties.hpp (100%) rename {gladish/src => gui}/session.cpp (100%) rename {gladish/src => gui}/session.hpp (100%) rename {gladish/icons => icons}/16x16/patchage.png (100%) rename {gladish/icons => icons}/16x16/patchage.svg (100%) rename {gladish/icons => icons}/22x22/patchage.png (100%) rename {gladish/icons => icons}/22x22/patchage.svg (100%) rename {gladish/icons => icons}/24x24/patchage.png (100%) rename {gladish/icons => icons}/32x32/patchage.png (100%) rename {gladish/icons => icons}/32x32/patchage.svg (100%) rename {gladish/icons => icons}/48x48/patchage.png (100%) rename {gladish/icons => icons}/48x48/patchage.svg (100%) rename {gladish/icons => icons}/scalable/patchage.svg (100%) diff --git a/gladish/ChangeLog b/gladish/ChangeLog deleted file mode 100644 index cffdc10d..00000000 --- a/gladish/ChangeLog +++ /dev/null @@ -1,14 +0,0 @@ -patchage (0.4.2) unstable; urgency=low - - * LASH support via D-BUS from ladi-patchage branch - * Remove old LASH support via liblash - - -- Dave Robillard Tue, 09 Sep 2008 15:41:04 -0400 - - -patchage (0.4.1) unstable; urgency=low - - * Initial Debian release - - -- Dave Robillard Sun, 06 Jul 2008 17:19:55 -0400 - diff --git a/gladish/Doxyfile b/gladish/Doxyfile deleted file mode 100644 index 11552b5f..00000000 --- a/gladish/Doxyfile +++ /dev/null @@ -1,1153 +0,0 @@ -# Doxyfile 1.3.8 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = Patchage - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = svn - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of source -# files, where putting all generated files in the same directory would otherwise -# cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, -# Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is used -# as the annotated text. Otherwise, the brief description is used as-is. If left -# blank, the following values are used ("$name" is automatically replaced with the -# name of the entity): "The $name class" "The $name widget" "The $name file" -# "is" "provides" "specifies" "contains" "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited -# members of a class in the documentation of that class as if those members were -# ordinary class members. Constructors, destructors and assignment operators of -# the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = YES - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = NO - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = src - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp -# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories -# that are symbolic links (a Unix filesystem feature) are excluded from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse the -# parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. Note that this -# option is superseded by the HAVE_DOT option below. This is only a fallback. It is -# recommended to install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found on the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes that -# lay further from the root node will be omitted. Note that setting this option to -# 1 or 2 may greatly reduce the computation time needed for large code bases. Also -# note that a graph may be further truncated if the graph's image dimensions are -# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). -# If 0 is used for the depth value (the default), the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/gladish/INSTALL b/gladish/INSTALL deleted file mode 100644 index f6e4dd44..00000000 --- a/gladish/INSTALL +++ /dev/null @@ -1,35 +0,0 @@ -This software requires only Python to build. - -Like an auto* project, building has three phases: - - -* Configure: ./waf configure [OPTIONS] - - Example: - ./waf configure --prefix=/some/where --debug --strict - - If --debug is not given, the flags from the environment variables - CFLAGS and CXXFLAGS will be used. - - The default prefix is /usr/local - - -* Build: ./waf [OPTIONS] - - Example: - ./waf -j4 - - -* Install: ./waf install [OPTIONS] - - The environment variable DESTDIR can be used to add any prefix to - the install paths (useful for packaging). Example: - - DESTDIR=/home/drobilla/packages ./waf install - - -*** IMPORTANT: You must use absolute paths everywhere - - -Run './waf --help' for detailed option information. - diff --git a/gladish/README b/gladish/README deleted file mode 100644 index 0a5daea2..00000000 --- a/gladish/README +++ /dev/null @@ -1,9 +0,0 @@ -Patchage ----- - -Patchage is a modular patch bay for audio and MIDI systems -based on JACK, LASH, and ALSA. - -For more information, see . - - -- Dave Robillard diff --git a/gladish/autowaf.py b/gladish/autowaf.py deleted file mode 100644 index daf30830..00000000 --- a/gladish/autowaf.py +++ /dev/null @@ -1,338 +0,0 @@ -#!/usr/bin/env python -# Waf utilities for easily building standard unixey packages/libraries -# Licensed under the GNU GPL v2 or later, see COPYING file for details. -# Copyright (C) 2008 Dave Robillard -# Copyright (C) 2008 Nedko Arnaudov - -import os -import misc -import Params -import Configure -import Utils -import sys - -Configure.g_maxlen = 55 -g_is_child = False - -# Only run autowaf hooks once (even if sub projects call several times) -global g_step -g_step = 0 - -global g_features - -def set_options(opt, docs_available = True, dev_available = True, lv2_available = True): - "Add standard autowaf options if they havn't been added yet" - global g_step - global g_features - if g_step > 0: - return - - g_features = {} - g_features['docs'] = docs_available - g_features['dev'] = dev_available - g_features['lv2'] = lv2_available - - opt.tool_options('compiler_cc') - opt.tool_options('compiler_cxx') - opt.add_option('--debug', action='store_true', default=False, dest='debug', - help="Build debuggable binaries [Default: False]") - opt.add_option('--strict', action='store_true', default=False, dest='strict', - help="Use strict compiler flags and show all warnings [Default: False]") - if g_features['docs']: - opt.add_option('--build-docs', action='store_true', default=False, dest='build_docs', - help="Build documentation - requires doxygen [Default: False]") - opt.add_option('--bundle', action='store_true', default=False, - help="Build a self-contained bundle [Default: False]") - opt.add_option('--bindir', type='string', help="Executable programs [Default: PREFIX/bin]") - if g_features['dev']: - opt.add_option('--libdir', type='string', help="Libraries [Default: PREFIX/lib]") - opt.add_option('--includedir', type='string', help="Header files [Default: PREFIX/include]") - opt.add_option('--datadir', type='string', help="Shared data [Default: PREFIX/share]") - if g_features['docs']: - opt.add_option('--mandir', type='string', help="Manual pages [Default: DATADIR/man]") - opt.add_option('--htmldir', type='string', help="HTML documentation [Default: DATADIR/doc/PACKAGE]") - if g_features['lv2']: - if sys.platform == "darwin": - opt.add_option('--lv2dir', type='string', help="LV2 bundles [Default: /Library/Audio/Plug-Ins/LV2]") - else: - opt.add_option('--lv2dir', type='string', help="LV2 bundles [Default: LIBDIR/lv2]") - opt.add_option('--lv2-user', action='store_true', default=False, dest='lv2_user', - help="Install LV2 bundles to user-local location [Default: False]") - g_step = 1 - -def check_header(conf, name, define='', **args): - "Check for a header iff it hasn't been checked for yet" - if type(conf.env['AUTOWAF_HEADERS']) != dict: - conf.env['AUTOWAF_HEADERS'] = {} - - checked = conf.env['AUTOWAF_HEADERS'] - if not name in checked: - conf.check_header(name, define, **args) - checked[name] = True - -def check_tool(conf, name): - "Check for a tool iff it hasn't been checked for yet" - if type(conf.env['AUTOWAF_TOOLS']) != dict: - conf.env['AUTOWAF_TOOLS'] = {} - - checked = conf.env['AUTOWAF_TOOLS'] - if not name in checked: - conf.check_tool(name) - checked[name] = True - -def check_pkg(conf, name, **args): - "Check for a package iff it hasn't been checked for yet" - if not 'HAVE_' + args['destvar'] in conf.env: - if not conf.check_pkg(name, **args): - conf.env['HAVE_' + args['destvar']] = False - else: - conf.env['HAVE_' + args['destvar']] = 1 - -def chop_prefix(conf, var): - name = conf.env[var][len(conf.env['PREFIX']):] - if len(name) > 0 and name[0] == '/': - name = name[1:] - if name == "": - name = "/" - return name; - -def configure(conf): - global g_step - global g_features - if g_step > 1: - return - def append_cxx_flags(val): - conf.env.append_value('CCFLAGS', val) - conf.env.append_value('CXXFLAGS', val) - check_tool(conf, 'misc') - if g_features['docs']: - conf.env['BUILD_DOCS'] = Params.g_options.build_docs - else: - conf.env['BUILD_DOCS'] = False - conf.env['DEBUG'] = Params.g_options.debug - conf.env['PREFIX'] = os.path.abspath(os.path.expanduser(os.path.normpath(conf.env['PREFIX']))) - if Params.g_options.bundle: - conf.env['BUNDLE'] = True - conf.define('BUNDLE', 1) - conf.env['BINDIR'] = conf.env['PREFIX'] - if g_features['dev']: - conf.env['INCLUDEDIR'] = conf.env['PREFIX'] + '/Headers/' - conf.env['LIBDIR'] = conf.env['PREFIX'] + '/Libraries/' - conf.env['DATADIR'] = conf.env['PREFIX'] + '/Resources/' - if g_features['docs']: - conf.env['HTMLDIR'] = conf.env['PREFIX'] + '/Resources/Documenation/' - conf.env['MANDIR'] = conf.env['PREFIX'] + '/Resources/Man/' - if g_features['lv2']: - conf.env['LV2DIR'] = conf.env['PREFIX'] + '/PlugIns/' - else: - conf.env['BUNDLE'] = False - if Params.g_options.bindir: - conf.env['BINDIR'] = Params.g_options.bindir - else: - conf.env['BINDIR'] = conf.env['PREFIX'] + '/bin/' - if g_features['dev']: - if Params.g_options.includedir: - conf.env['INCLUDEDIR'] = Params.g_options.includedir - else: - conf.env['INCLUDEDIR'] = conf.env['PREFIX'] + '/include/' - if Params.g_options.libdir: - conf.env['LIBDIR'] = Params.g_options.libdir - else: - conf.env['LIBDIR'] = conf.env['PREFIX'] + '/lib/' - else: - conf.env['LIBDIR'] = conf.env['PREFIX'] + '/lib/' - if Params.g_options.datadir: - conf.env['DATADIR'] = Params.g_options.datadir - else: - conf.env['DATADIR'] = conf.env['PREFIX'] + '/share/' - if g_features['docs']: - if Params.g_options.htmldir: - conf.env['HTMLDIR'] = Params.g_options.htmldir - else: - conf.env['HTMLDIR'] = conf.env['DATADIR'] + 'doc/' + Utils.g_module.APPNAME + '/' - if Params.g_options.mandir: - conf.env['MANDIR'] = Params.g_options.mandir - else: - conf.env['MANDIR'] = conf.env['DATADIR'] + 'man/' - if g_features['lv2']: - if Params.g_options.lv2dir: - conf.env['LV2DIR'] = Params.g_options.lv2dir - else: - if Params.g_options.lv2_user: - if sys.platform == "darwin": - conf.env['LV2DIR'] = os.getenv('HOME') + '/Library/Audio/Plug-Ins/LV2' - else: - conf.env['LV2DIR'] = os.getenv('HOME') + '/.lv2' - else: - if sys.platform == "darwin": - conf.env['LV2DIR'] = '/Library/Audio/Plug-Ins/LV2' - else: - conf.env['LV2DIR'] = conf.env['LIBDIR'] + 'lv2/' - - conf.env['BINDIRNAME'] = chop_prefix(conf, 'BINDIR') - conf.env['LIBDIRNAME'] = chop_prefix(conf, 'LIBDIR') - conf.env['DATADIRNAME'] = chop_prefix(conf, 'DATADIR') - if g_features['lv2']: - conf.env['LV2DIRNAME'] = chop_prefix(conf, 'LV2DIR') - - if Params.g_options.debug: - conf.env['CCFLAGS'] = '-O0 -g -std=c99' - conf.env['CXXFLAGS'] = '-O0 -g -ansi' - if Params.g_options.strict: - conf.env['CCFLAGS'] = '-O0 -g -std=c99 -pedantic' - append_cxx_flags('-Wall -Wextra -Wno-unused-parameter') - append_cxx_flags('-fPIC -DPIC') - g_step = 2 - -def set_local_lib(conf, name, has_objects): - conf.define('HAVE_' + name.upper(), True) - if has_objects: - if type(conf.env['AUTOWAF_LOCAL_LIBS']) != dict: - conf.env['AUTOWAF_LOCAL_LIBS'] = {} - conf.env['AUTOWAF_LOCAL_LIBS'][name.lower()] = True - else: - if type(conf.env['AUTOWAF_LOCAL_HEADERS']) != dict: - conf.env['AUTOWAF_LOCAL_HEADERS'] = {} - conf.env['AUTOWAF_LOCAL_HEADERS'][name.lower()] = True - -def use_lib(bld, obj, libs): - abssrcdir = os.path.abspath('.') - libs_list = libs.split() - for l in libs_list: - in_headers = l.lower() in bld.env()['AUTOWAF_LOCAL_HEADERS'] - in_libs = l.lower() in bld.env()['AUTOWAF_LOCAL_LIBS'] - if in_libs: - obj.uselib_local += ' lib' + l.lower() + ' ' - - if in_headers or in_libs: - inc_flag = '-iquote ' + abssrcdir + '/' + l.lower() - for f in ['CCFLAGS', 'CXXFLAGS']: - if not inc_flag in bld.env()[f]: - bld.env().prepend_value(f, inc_flag) - else: - obj.uselib += ' ' + l - - -def display_header(title): - Params.pprint('BOLD', title) - -def display_msg(msg, status = None, color = None): - Configure.g_maxlen = max(Configure.g_maxlen, len(msg)) - if status: - print "%s :" % msg.ljust(Configure.g_maxlen), - Params.pprint(color, status) - else: - print "%s" % msg.ljust(Configure.g_maxlen) - -def display_feature(msg, build): - if build: - display_msg(msg, "yes", 'GREEN') - else: - display_msg(msg, "no", 'YELLOW') - -def print_summary(conf): - global g_step - global g_features - if g_step > 2: - print - return - e = conf.env - print - display_header('Global configuration') - display_msg("Install prefix", conf.env['PREFIX'], 'CYAN') - display_msg("Debuggable build", str(conf.env['DEBUG']), 'YELLOW') - if g_features['docs']: - display_msg("Build documentation", str(conf.env['BUILD_DOCS']), 'YELLOW') - print - g_step = 3 - -def link_flags(env, lib): - return ' '.join(map(lambda x: env['LIB_ST'] % x, env['LIB_' + lib])) - -def compile_flags(env, lib): - return ' '.join(map(lambda x: env['CPPPATH_ST'] % x, env['CPPPATH_' + lib])) - -def set_recursive(): - global g_is_child - g_is_child = True - -def is_child(): - global g_is_child - return g_is_child - -# Pkg-config file -def build_pc(bld, name, version, libs): - '''Build a pkg-config file for a library. - name -- uppercase variable name (e.g. 'SOMENAME') - version -- version string (e.g. '1.2.3') - libs -- string/list of dependencies (e.g. 'LIBFOO GLIB') - ''' - - obj = bld.create_obj('subst') - obj.source = name.lower() + '.pc.in' - obj.target = name.lower() + '.pc' - obj.inst_var = 'PREFIX' - obj.inst_dir = bld.env()['LIBDIRNAME'] + 'pkgconfig' - pkg_prefix = bld.env()['PREFIX'] - if pkg_prefix[-1] == '/': - pkg_prefix = pkg_prefix[:-1] - obj.dict = { - 'prefix' : pkg_prefix, - 'exec_prefix' : '${prefix}', - 'libdir' : '${exec_prefix}/lib', - 'includedir' : '${prefix}/include', - name + '_VERSION' : version, - } - if type(libs) != list: - libs = libs.split() - for i in libs: - obj.dict[i + '_LIBS'] = link_flags(bld.env(), i) - obj.dict[i + '_CFLAGS'] = compile_flags(bld.env(), i) - -# Wrapper script (for bundle) -def build_wrapper(bld, template, prog): - if not bld.env()['BUNDLE']: - return - obj = bld.create_obj('subst') - obj.chmod = 0755 - obj.source = template - obj.inst_var = 'PREFIX' - obj.inst_dir = '/' - obj.dict = { - 'EXECUTABLE' : prog.target + ".bin", - 'LIB_DIR_NAME' : bld.env()['LIBDIRNAME'] - } - prog.target = prog.target + '.bin' - -# Doxygen API documentation -def build_dox(bld, name, version, srcdir, blddir): - if not bld.env()['BUILD_DOCS']: - return - obj = bld.create_obj('subst') - obj.source = 'doc/reference.doxygen.in' - obj.target = 'doc/reference.doxygen' - if is_child(): - src_dir = srcdir + '/' + name.lower() - doc_dir = blddir + '/default/' + name.lower() + '/doc' - else: - src_dir = srcdir - doc_dir = blddir + '/default/doc' - obj.dict = { - name + '_VERSION' : version, - name + '_SRCDIR' : os.path.abspath(src_dir), - name + '_DOC_DIR' : os.path.abspath(doc_dir) - } - obj.inst_var = 0 - out1 = bld.create_obj('command-output') - out1.stdout = '/doc/doxygen.out' - out1.stdin = '/doc/reference.doxygen' # whatever.. - out1.command = 'doxygen' - out1.argv = [os.path.abspath(doc_dir) + '/reference.doxygen'] - out1.command_is_external = True - -def shutdown(): - # This isn't really correct (for packaging), but people asking is annoying - if Params.g_commands['install']: - try: os.popen("/sbin/ldconfig") - except: pass - diff --git a/gladish/waf b/gladish/waf deleted file mode 100755 index e45356a3..00000000 --- a/gladish/waf +++ /dev/null @@ -1,145 +0,0 @@ -#! /usr/bin/env python -# encoding: utf-8 -# Thomas Nagy, 2005-2008 - -""" -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -""" - -import os, sys -if sys.hexversion<0x203000f: raise "Waf requires Python >= 2.3" - -if 'PSYCOWAF' in os.environ: - try:import psyco;psyco.full() - except:pass - -VERSION="1.4.4" -REVISION="cdc55916698fa4a47e425d6e1490292a" -INSTALL=sys.platform=='win32' and 'c:/temp' or '/usr/local' -cwd = os.getcwd() -join = os.path.join - -def decode(s): - p1 = len(s) - s += '!!!!!' - w1 = [256**(3-u) for u in xrange(4)] - w2 = [(u, 85**(4-u)) for u in xrange(5)] - tot = [sum([(ord(s[i+m])-33) * n for (m, n) in w2]) for i in xrange(0, p1, 5)] - return ''.join([chr((y/x) & 255) for y in tot for x in w1]) - -def err(m): - print '\033[91mError: %s\033[0m' % m - sys.exit(1) - -def unpack_wafdir(dir): - f = open(sys.argv[0],'rb') - c = "corrupted waf (%d)" - while 1: - line = f.readline() - if not line: err("run waf-light from a folder containing wafadmin") - if line == '#==>\n': - txt = f.readline() - if not txt: err(c % 1) - if f.readline()!='#<==\n': err(c % 2) - break - if not txt: err(c % 3) - try: txt = decode(txt[1:-1].replace('z', '!!!!!')) - except: err(c % 4) - - import shutil, tarfile - try: shutil.rmtree(dir) - except OSError: pass - try: os.makedirs(join(dir, 'wafadmin', 'Tools')) - except OSError: err("Cannot unpack waf lib into %s\nMove waf into a writeable directory" % dir) - - os.chdir(dir) - tmp = 't.tbz2' - t = open(tmp,'wb') - t.write(txt) - t.close() - - t = tarfile.open(tmp) - for x in t: t.extract(x) - t.close() - - os.chmod(join('wafadmin','Tools'), 0755) - - os.unlink(tmp) - os.chdir(cwd) - -def test(dir): - try: os.stat(join(dir, 'wafadmin')); return os.path.abspath(dir) - except OSError: pass - -def find_lib(): - name = sys.argv[0] - base = os.path.dirname(os.path.abspath(name)) - - #devs use $WAFDIR - w=test(os.environ.get('WAFDIR', '')) - if w: return w - - #waf-light - if name.endswith('waf-light'): - w = test(base) - if w: return w - err("waf-light requires wafadmin -> export WAFDIR=/folder") - - dir = "/lib/waf-%s-%s/" % (VERSION, REVISION) - for i in [INSTALL,'/usr','/usr/local','/opt']: - w = test(i+dir) - if w: return w - - #waf-local - s = '.waf-%s-%s' - if sys.platform == 'win32': s = s[1:] - dir = join(base, s % (VERSION, REVISION)) - w = test(dir) - if w: return w - - #unpack - unpack_wafdir(dir) - return dir - -wafdir = find_lib() -if "-vv" in sys.argv: print "wafdir is %s" % wafdir - -w = join(wafdir, 'wafadmin') -t = join(w, 'Tools') -sys.path = [w, t] + sys.path - -import Scripting, Params -Params.g_tooldir = [t] -Params.g_cwd_launch = cwd - -if Params.g_version != VERSION: - err('Version mismatch: waf %s <> wafadmin %s (wafdir %s)' % (VERSION, Params.g_version, wafdir)) -Scripting.prepare() - -#==> -#6<\%_0gSqh;cs7/*,Yh\@t4OY[6S."s8W-!s8W-!s8W*t+Ge-?!_@;S+;+]@!(k7?YMAl#p>Op0zzz!!!!=!#cf]mbRR^1]^RRhf7.A$R/#T;NM&t79d=';g2baXf\p>60nhB;-qaN.K`/SH*;/#@OXo%mN"(3Ygjk#%d)A]DnCC0c.dBn%dCIS3Hj4p!^LGKdlm9T54N@$hfu#Vhffjl\,c@*!'Yr'eu8]N"9GXMj1bBjjjE,4gd[kf64[*2_[WcYIp>3+Pmc<_PpA4Be-2$!h]FmEt`809d4']FB::fi[X`oEP-ia?F@)OKZ!!%,72X]K5&7F7$DGD6!!,'mFS%DnX]pm60=\-LZ1;4mu^f`kAU[DdM2;2gp^tcZ;,Uj-fVf3NLan3o=6"pYTnM\p^WNlJG#mT6@KcHg]4.TfQ,[mcF23^"iM%6gmftAU%'po:"QT^AF8CJSOQ%h7KiUm,)INS$%/4VD?QIn1^>$>BJ9jaI?,LF>41h?'Nu%9Rqn7E+oPOnWcKse[44(r-V=VA*]k:f8?QX[C6ToLX^A.RdXkH_1qmh#uh35%T]j01&.@%BeQ_/]Wn^Urb#Ll!=!U(g'Xn0.Z>4XoJ2;A]1IJ:qH4nmK1\%^J=cl7#Uhc=r2??@k-Nh#9:7l4mqQ&ffH[GL?G\$ir=HZtD$l`1c`QJKf0\\4?=Y4m;#:i5C=i&r/I#G;&uhSX-`*'Ct.mIG&5:gNeORC)M%];Kj7^%H$n=16Iu5T]U)[e3hT*eVuQb\p4%^A;1ZqBu>7:oZ$/mt4eogXCSaIGYJn5$m6oc01M'Z*(`*;NW+NfkSYZ;e=P70%`1pl0dl`WOL@7mC_(3c1@^sj3,hs`4Ggo)gDY2e^ABFmm+\^Lle^mahetU6E?'8rkGPqnor7HUX8_:Ip8;K`O7P\p`!4UdZ$$Um8_]a;$'I*g44i3'ic^b.GYP#p\XQR^NKEJ;SCr]LO<&90f=QZ9tXK]>c5PE0_#_Bo1klX%0*:$D*1(cJU&XH;&rUo#W&HmpkcW-:f0kuN;*?^fQAhm8PP7NOIL6`Ij=IGo3dKg_kAufHS@Bs$,djE#a8s`gIO/JBWucbVE]\$8Fr-M+&@QQ4c(ib9eEC1.ILi;CEh?U0*%6R1N(^ALJt+,hc^D;`:pu8SUUjM5+Vc%0E@<1*i,BQpkLRCbcA62GI&D-tY3%$8%*Fg7&pUULO^H=er9r,pQ!M=u9/-Jqd,XdkN+F8o.#7dP0?BA;3!3b`&?u86[Fn,flZ.#mrDGW6CAA-5KH.<)R3s,Xk%59N#\YAfE$#5ls\&R4U0Z;)SV1"bp^uRO1)K,>BXDW,W_KFgQAUo)`C-RT9d5NOdq!".(.(o\D+me_@S*Xdbd!!s;[&=5OX/"kBR/4PFBag)c"A:eA2Nc``=5u/Z"]QAtb\^J8H4!9e.s*MU>+0[NJ,,A>LjiC.ao$<`N"6Ai(i7@n!CUg,?4E`WEMVP>E%LA?:Mc1(dG08@SBOVTR"Wgs?rU$nD3C-9:mt#rB$s:.![^i8;GEm\(6i;CYr'od@`8p.Z!\ed@*2\!1*W[LfetQaC`8->P6OZ08M\D(PpStdAJ8U[-:f%49U]fm1m9ao'4IjsJlHJ0@4dFs(;cl2.2GW)Pd,%%Z=oY^dRuHWP@uO'Yn

0m.[PfmM9h>F$)D&m%V.25,CrU/-@p(!JD3WJ'b:/C7O>]t#P$t(6Ro0r$BM_W%V(tUXRVA3f1o-S'VHD!,V(!Q>1'4DKN$XY?R+!tG[T)!i!7`?nb06"WM-126JgMp46r;8LU6B((2R7%l2'F9'Y`MIX22KCd%5Maa@guCndi02NW3Tm^BZ3e_Al=ViQGUmWXWYR20X=;e15Va"+Z5Y)=K"f[`eI'b_2Se0gI@Q2N$aOYfX)EMV)6A-%2>FCs?fg[2*J^(:7%1X$pdGC<7bqd$,doP/L7$V5U/$PpVaCW=6s!ZV8l.MNiq'2BnPd0TAa\QBI4F8M_oe.5n&gUo::,;79W0Bl0\=9.?<%aDG'S1.sDZ/=+eK>9Y8-=LQ;,Rr'THQDHGbWYEu^<\eJ+ZQ]jB0T&T'W3f+323"RZOqmU_R@5D@ba:si+trT?p`WH/.7jE=s'TBW3[GuOg\t0k(mFoNrc-/G:?[25kPOCtalP$hq'Jm,CCfu"ci"Z_1<+br+(+[m9OAn'pg.r_a#oU2\^t!`*R;n?8?e%2_jV/p9:XoZWpTcft-s'bt9oK\5n-]<^n,0*b7,HdXlmr[S/qb[XXNR0qE2UAR[E7_'6.7`dKM^a?uuVd50MO&pbmtWsGpj>N[f^Br?X]3L7Vtm)-3JW_rY>GCcJ2[_f5]m0pbps2FGO.,.iJ8)!!q=r&6echROps(>c[-`nm3[-qu4ZIkXO%:\nI]6/^2pD$=Eej;2VN@b@&u+7lkM"IcGT:EW(b+t(=N*YE'bhJVgD3'sbHT+?\PL89a\_2&hu.mW+%D?:R%`#WZ`PW:hnm6_Pc=%c0ra(t^[A#u>bje+il_Mnon97mjafmMAqO7Vot9n(5!Ij'4&@(6&ABJ)Nm=a3;+QAMVgnQtWVJp0@=BnP1?L0*"l7M-:%d9&Kj_l1,5PK%",tf,LmmU-99+8G,r1CXHea@)b:7YAl-rgL8dEB(&la6b^L,m9^/P]&s(q^7_V3O7>dh4MWMt\QOU46S[k5,REsrRAE`,E[D:HY`jnAW/i#XfHHWq]j=c!P%5t2."mUSlYqn70"mL(4I!USje;?l4CE<9U/Nc;R''M7ji`EnG&*P&B4CmsTPTCA(7%aP"#Uog:8?gi0I2QpGCX4YGgjp?i1ktF=mk@\!$f#f1ohX(/C%hg!--8C=\[[-cWF"2&*.5U0a1cofq/\O!bE5;Yk;c8IXG,YVmD2<5nKhBjf`>_[uMH]f)r\'GrZ0'.RNC'qkA4[.GKOVF8dS'@K4'>')V=\O@n-8`:-3\GCUp'a=JD8l8os!^4LaW.0V=(s%-]A"5o!*(n%tkfiQOMe'Og>#\AR=M`=%AQ:Y:-?pKh1\(btt29Z6I5A^4m]g^Kb-.I_(#4JdiKKbG9)rRop\*jhj*AQH9?UDmmEUN*Nu-&@BuH'/upfC<6TgDSNPAn)"82DJUO_Vtk6R*;@T:u^j%2%ViR],k;a+d,16]9@(^"n[bT>XG4WAW.2?Y'IbbAsHJG8B36YhR_N4ptpc>Lg5e1![0Y'8q.?f)V,u"rf$@Clg&k,[IX=3b57U>4]iFR)>(6heB0[&Bh,ta'rE[6f&Q;A7O2sGG@;[j73+!)<='?!ei9E'EbD2tP;b#SCao0skNom!&3l;?N.CFI'=>:JI(!KY7\N=V(\GI[I'Ob9dBp?8dXI.ZlB'/fFVS/)i3m+*3A6f?QA7]>"fauN29tO&^6$:iHVdh"I2#[$/R0SI,)R*!jEHjq\%"ZY;@8(@IZHTj2jIu`n(/&PI<(j/2*7YSSk`SU_0qmeKOPdsEt1>nWpN=8S@R"8c&NK1.T#Kuq]B[/;ilU=PRbD53C0qgekXMSDL>MbN0+KG`=g%d.1XV.W0&E1`P4u$KdUjn[6k8*PJF1As2>3\:'"J29P^1IjsV]F/'!0,U,Kn,6Oq`qs+h,"bXZc:#"9q7B6R;GC-$&ACt.0a[^P\93o,pdB>JoLkEEM/7WTm;JlJCcaGu8qKhQ)lYk=iF]e.)r[d-AH#q.E.2(.IEXm;i\Eu"m+s1H(dP=%(aSs&^?2?E/*d),n.0:VjEZ`ojLe@MFM_3UK\_"H"X;[VdLu7C2`S(NUAX.bSLl#]^1.Q+qSSm4q9rT*#pe\ml[?"9CZq$E51Z_B%UXV'-5*85nt%cseW7o!@I^8=\ga[uXN=JYKu67NQW(AEP42f=ZJir=VKU0C6,T4k162Ckei.gP*GN+-LCOIna*WY%&Af5uXK,EC]1*Ma7ArDqf4&d=K1LKh*/8:;E?3`f^S2U$RsqFlAE:L\GH]\DhoAW&9[$,hGD'6A-h'2=Z."W>k@q#_j>moPG:uX;I1h9$(eCCU%a[<"45o%$8V^^aR\8Aq5>MP4pq47\X^_DM,2N+.ch^n40^j#8-_m#4(0f-uX;%9Cf'i<=*2@Z#lHK0E%,)O734%#p2-iQbkN9+=m5G'4^VenfDW`&Yn?2uG84k/H">2P/Vlq*\7<41r[B+QNS*,6GZ;d)LVq#.o=VrC)F6_Y$.`?E56T>:t+Ti%'Wq_N"0W>IhGT^tjM(ST"f1G"!n/]19$tjM.bn1NU!pZK/3enjP6][3r(C@5<8lQBeL2dR4?eDhj&Q2-BZ5Y?#e]V#V9)TH9Ss.#s9k#gel]a[HH;"_4muINnrnL2tFe?:Y1WkXmT*H"`;te\O/$c+'q)DEC+RrWpmS`f5Tc6Df@+mG]EOKp#bH447Fkq)eV5pD/D/;7&o)5SVfTd>hNrn1Y3GS?+MpK>FQ&!!55[>eDp5)D.)KKa?7VT>r?[:n4N5@(HLF8FTmeId?a&@"?-oM%/7q*o'[]usrX&`-89TY3CG&8l&t0igRFH5E[3jC5H8s2\.OOD7dL4FD'd^]VZHA*INeGLX&E8B&,_t)!LbcjcHq83KTd=ZK#*iU"XF$%B5W2pZ.OH/nCD>AF=rs#08dDkVFEhE'FnP4TB0@+`WSq=fk2>?1'XQcN?(O86f=fpeW>g[K"[*gXB,8kf&CeW.4/rF'M2OZ1,GZ@,b3Qe7D:MIrRsQ+&d\?;d4K@t=0$,53o7"Pd'ZIC,j&"rl0(SE)5lCW6Doj"8^'H\Jbn5V/\Oj@G8et"hOX03a2%EjsREBcq-$rAU)I/>\#$3@&O/;eq2_J1$QTT^Qg+2'\jlbHn'A^'T_rS.k,a:V+&),e[(34gD;Nl@FR;U)@M=&*QAVNT'BudAMNQI=I704G+)AT8bO-n4K1nJphSeLT&SuG3Ni:LI]bQ/DX$2kNHJVH;"6iQa/&=l$MgL)^UXn.\Wf!Y="`g3DB`gV$C>?(Ef[.++'D;TNS^1G'inl^VAAU&(8l[oY6UDS%%AT6)G8G4;=GH']7]74a^mfP%"-qAW.3%LF'4F8oN8/!Apkh<+5&8l6Z_lcco!A<[/VZIcj"M*($7pTh8Ta9g`V%&7Gj,D[,E7<-ok?Z_Y/U`qAZ6p>\YkFeG]kkjgh2AG5]ZO4-+cbWB*Kp\gnJ.^+,l+As#/]:T3[4QemK"Vnuq'?BM"n0(43F?f=&IGCJjPIB`.n0p`nC46XK]c3NY&8\_H82['OQIk[TCcbWG&J*6C1ob.3T*F,SqW2+lrH\fu?S1J"AW"k.054G-"VOJXUJIWt?W3VCTgiooe_="#X['Rb!8'`i0:n<6u+b:mE!^/qtW7&DYi?k2q%s^p+C_Jb%a)>#a.o)+85;fpWN)V.3qXX5UL'Xq'`,Cir%ObR?4V9*Z)YA.@+u<4C&Ep5Zf>`j<2:#3a(E=DPU/Q*QGZhsf$fmhOT:n[V3V$_\"CVg%#]f![FXT(&AmCPmGqNP8&Md4FHuX@6kl9]rD7t+24iBgI[Gt3e_,rS?#eRc0Tm/qF[,u<_d;uD"i[rWIieZSakTuiqK980&EC8`5)K&'.&Wq@%uAAX)P9?OcPcRno:JS(9c<5C]KH0$KNb!!]Z]=I:.u.(D@(2[DXhk:c`d(](P-i+n]HTUi1SWUk+d+H'P6W_!l]H+]R)aN)#A4Zhn6F&[G4_Jf'']rD7aK97M4N[*fq-%`Pj4Bj%=l[u_FkX.aZ8DG-[?#_aNXE_[G2lo^QsJ;qfWNp%h!"s(Ob?jD,7$\WXa],LcS)9-Zg-!-\S'5]ojMU_#0M;1rL^%e$k*1TRuI$HZ7q+rYKO_rW;Thk80*iEGuYY`YitVgHsaCi7]mrk'UW]ZEdUZcGC7lnGfoHfqc`o*5J7Nj6O/JNJmd5m`-c1f(5Ii/bjsNMFA%]@8*].)VT^!C\Dtst65U3in`dhAlKL?K[U_6\9R4a&?ULD`j&oKT9(17qqTO:K@[=OigTP1][,(DppJ^+lV1Y9;1rROtT!g8R<^.4BYHhhJ0$[rIi^@FeZL;%%4B#CJ:@fOUCir+P#fQg1bN#Tt2`CNGZF[^"-7@<[CiTI6MTYKFcg)YLCgcE^d[hZmrEnFKMos>WcKqG%bfP(7_q-5@a>b78*+X]@NE#F!]5).ToYepjVdQt6Yq8D8(EDD(WRfl=ZK^b8Xi`BHq+jD[ufM8`+I0S/D+I7scop5'r%\e-"Mlk/QQK;""9Hn#9_jc$=Uf%.s71UM/gYDL)ltojnQ#1O+H(.=#H]1FDo@=^Q7>'F8-GQK./T1IGEA\fZZcG)nE-a.:hB_P"M?/rpPnI5(9H8=]c7EBHS/tk"U>O86m(lM:E$`*E<)orR"S/qnAu2F8ob`L@Bq0fpf;T?;g!N0Jr\jGb$a,\&iRIqn5.@]32d^l)TqT,:E\_9d*!E-INYNcY'BA[ek,u-au/J(]aXt*>Sf"ks@qO_FB?H5Z9W./6UN6mB*3HL6u'YkZNN+F(D@pE[[h#&n=lcAn"n9.X7mJ#RPDa&Jfj;sR<>&fiOOniqTY*H&ErtbX7KY`C]W2L]E$;X'T;tp)AEZ^]6*mY(pPbjk13@FZ]Tn=b=].So-,/\3bQNg:H2S[po%"DH*Zu:@?F+F]2meC=LX.2:"5G.0LnG/^@L=0+iCqP+n?G:i)7OtFC$>WfcP,bgk]#dBVg\W]Y;^lI$,DYineQ+OBS8ascVI>;oK'cP=q'W.!Co\YL?6;=/rA?AM`f@@8DA8G`,?@NR=OcrjFkE^A.l1(2G%j&c$!cX3:UgA7iUs+gZ*2`6din$nE506@$Q+!GK1#(inU/oSJ*`J;s&Eb!4X;26!$$`B%sQcs9<)b8QsG2hhi$5qq#+DFV_^mq1O!AUA5Na^X\ouZp>lE+],Jkt^2o;L8Vnbqc+KU[+KlhR"=C1%)fT775kUg4kH*'+m?.sh,B+LfX'U;'dpZ`$s,5aY+Cm37+AK,95p'W`lOYE64Hr1[=Wi:YhWk[lI-qT%$]&^g'F`EZV*Q_qSFQBeXdX="^t0L(8"+@eAsgqUj1Tj4`uYTHo"7'0rJu>4,JVR,(6$1M(!aLr[>F:ZX]Eus/VVM->8SKgZPoJ&AcV1In$bY]BjfWTP\o<[(N9:`GsBu;5U(!$@2N1,i+,:YWgc;0k2sTNKZZWR5pH*jiStEeo8NnH>^K8g=CV)25J"P9Ss'bL&ehU\*=7IaE6ctNP0"b8]^;<$3pt,@OG<"tpWq$SBnTYSU,o]]5%7A6j#p(Z+LD\9NoD31a(gf,3>>^QQYKrj!?I@rm@Q?.`n;o0b82RNegiMdgA7UEJeWHnM8-f.`Y[uR,,[V'!%8@nETcKRT:=9rl5tWl\>a?7dI&-R.SHH=%Z[T*&+*3u'L[]ju!Af?p$R#6,1q,!h_t"u:FXfXbbhc4AM-Pjq,5:mQ.Q'FVnsJZ3^I2CmoVRk"B\=$@3_QUj[dM:>>Yq`%F"*_r-]>M2b91s`7a,U`l@K7Oa'Q:%F-G3S[B1dm.tGeF2/uId=6il",,Li6jQ6rWB-1HS](M,*:8l%m.Tmt>?Du5&1E>M&qKQDqPC@>SfXlg)*_c`f+anE]Nlo)qa0q,;'OVPUDLsK"]W+WI5UL]agCh9'I#Ee03/[=H"H5L>hpDe;"Q=:9jLOF:;WQk73cTK$<_g'j#-^?gcmFgn;p3>!ShI(D$6pR=&&Lq4_K=Ob%p6(?(H/M%n/^F8=>&R-Q[6\"g>d,F@k(O@FAO_=s;hik3P)lgBQbU&C;IW*ouXX*?X>U\1^\[/Um3WUAqsE-48eURr1]413[cIn5T0!>?#ta@o%fD/1h9,[L=dkZXInEQ]8TL(baV+G&4Qnj5m/KABjt9N[hehlO7a#^3!S%M4MV5tDbR\RIoWaN?M>Lt""(;_[R`*a?G]YaU'ur,/jB3dh3*:\2L.GG?71M`!I;NF\II7mrGe?KkJ=:4rIT%P.WW$fH\%6#/S_-#3m_trp[mOYB9[MMD&>=Q_@]fM]WaLGWYPh@_8#7"F=^CaE%bTG0T.0[sQ@SIl^Q2W#a&.to!ZF$ng-nnb7MqL!Mgm7=b1TDj-HE/^O-uHT%n0bc!^>SF_%F)s#rEO`P83c\0@Jr:P1&f?dZc$S>)nb:g;GLKkLF0sRDYRD_1(_rP69"tD<6_RGWC2%9/,5F6@KO%(oa-6IDcZR4cnQ%lSh;$:G%E(/>!4WX+d#^?)0m2m6!V.GK[O_S1Bp*$.H6D\%h\@8D37kjGk"JG:Z5bs/&nB5il$'5k7l'mGRf,io:=u$;tMT]X<)J4Pmhar$1IPo[3].4ecn5'W*3`S2<#pc9MBlHU0Fj1CHVs*RPf@*NW[816CK^@qq8#d)t8"p=[E5>YXoFV7!VOP\V.A(rqY#8e3'PA*Ih*kHI@uM$480iUq([Ro$'#2)%K9R4:Zn/^jh-7T\T5H`3eij]u1'&M)IXKuUcgYK;KIrl;VoXa0o;'-eqbLFkYodK)SPB$];T=UuMEO[+A-Qj`Q'd*,9HmA5WJ'5ddWJ;UbE/_O2_rsmgrondWe`Bm3&VL\;%aSU3Oq#$9+iXV2IEu25k?G,]m36Ya.XO?@9Om2$57h!PV`0CnRqaI.=[57b%.Oeg2ZRM;D*:*`>dKnUmKI$[>NX9,N?8USR)kd!flNVrV_KXjkG#?8]Rh"VpPG^"d9]uLVG?p:#+),&Jk4eF1ul]/Hf(s@ID(cO;)itmiWOP`LhZ24BdJ3>sem>J&s#3qFj%ZmBK821R_7,t8^S;^o$"t<9VO.Cuo(sVMB1m'0egOFpmGJ@s+rUkffgSbG:TSahKI3;O!kN>]QAXk]pbPJ^,XE!lIjAkJfV.,$Hlup,Xs]?;9!Yd%MQ3rHKo+"^eP07OI@oPF@>/ra[`n][0Q#?lPjEmF"dg1n<#N_^pSC4q;oI$/Tb.83a1!nl#$?T6%(-0--XVl-7QW\;XaP#nHdZJG<1PHbt>?I.B::7K1c%1IrDjG%L'd&7nqK?oW74>:m8jskH]Tp91E/..b.StoD`W`>C(AU5H!`,J#TFtqK$P0P=$UFgH@bcH:aeRB(IA:lX5B%o_*YikTjl:8fcTRZEa-qBXl=Z+BCuXB-Lu"qN(ODsAC\1Y5q`Ef[sB(k&VQ]1)%4"uL68.loRA6He'U%lK=u[qS,M]A\ou2!`>@-WL&pW)BI$FDcB@OVArEPj,&@)pYh"8B393B0X.&n>`PVeI5VRet-__jed45"E0o=MeKfVYm(ObS]FWb?Imd_KkWWA8bE'j!EQn\KUWT#re:,nfEQUsq)q=9#V&s+>GIU^ADmRr7k>u-TrY+\pCt\/5SfD\qh..\^*QkSPF2UIEYIh\H;+rP,eSSo2'9D;&g]l?=NQi19IM&3L*%&Tj/g5'nb+bA/[57s(`FLTfjT.1Fi);;6_B?P*qlTC`GfBW=!.@8BGpa#G(,_$I*6,-o^o_h;'GOK?/6PecgNM*:SDDK'*a7>(dq5+!NeUkL%n&:cAbq%ZiLQd:bls-F\<:C\jlOM#e-V[=k0k/O6H'W4>a$O/UEeSOoh+ThH#UX7RGg%9%k0.M4&3d9o8GmTk$9lTk.@e"\X3L!9/$O)Q5JuAoTaMk)&1Mt89Y^tS!gl9HQKGX,sH(gX0ct.33I8W9cmi!8I5\Mr2,YTn>F_OSC!jB[/Xph96$qQZ/g#dJ\hEjU_,>6Za2sS6a)1mbnMsm,.i\/h*4aG;)jCGn3l6A5_&%;"4eK9d0MO06-GS=Q14kr[ZOR"-$LmTk#-H_bm4/>hIjEA/YOD"6la=^8hu"<+e)j&D\M^fFk$2W4!?h7*ReO3"B3hdTTdM?RaU!TUgV&$,cMS6JPhMjL\;J@CX`35AMaaN+"DrFD>pDEQbK&>Q^noPA_[WqT4c:!:4cXi*aR5s0DUs"+)UY9^V-k+P4j0.V,-CSj7`GLb86I`-W3mR1a7@]qn9f9L&[kuHDDm'_*grjuS:p,c,mFoM>#q,JF0,5E-meGl^jp?,d\TLE5.DoPbSeR$h!=uhikorS_,VN'"SWr!]eVGCT3m38<$$rrR8ggHm,%J_C>Fe@Oco[7CWPh9*g"@:TEl3N=LarY*0jXF0@r]K)#Nir?;^mdG&RuDr1`5%mh>$rLokWABHs"CJFNQ^7<9f-.edRqF]i[fi=CXH3B1"*MrF-,Wk":XPTq%"7:cJ!gN)nPn9YA.@&8@"*sJR;*J/HkUBDDAfnuVjmC*Nqq5irZ/<8R`l7ZO/eE'Nu-Z&9hjUT"V6sN4@iAiXKtC7S:P,EfF4oj5n*R0b)m-_(58+9i2!uiM>0Z5r;?N,@#!FQ,f&HtNfB2D1%LIr8Ul>W*XNYX]V`qK6:7mYkZJC#l0nHHi034nth>$7P[nIp85%5=OBM*&"q*`tS+e3+lUjF_rZ!bOnl[e'EJu1Ze2]]-I"KLA^aHA+])R<9J"pk,NAuc!O1o5:rMM>)TQ6-J`ji[=7#6?&am%$B4Mt6'_AU;k@'!?9YLc1iH]1U0joY934?]Kg+l]X/1M+npJX8B>D\BhNP?oWlD3Adq0K49j_sj+#"]mn5YOWG>FHg3Jk]),kW]089FI?=SU0_E+_1J>Wd3B4+*it+Np[_H:_2^qS)FHU9!OY?9`8hffnj&>2LNi=^EsI`NM>%qmp_r/c6"B3W+W^kD]+2R4SZop6_.mobgEf\[UiPDo,e,Ir@?Y^V6>HL(d>V;l7ljZbn:\?D?[C?]9njjNgoOI6p);%ps+YEuSC#Rs8@*XrUct[0H2Fa)@U?jC;Dq)>r>oI$)aa[_6fr*j]LST"IeEI^sDJ)qD^rrDq4<[psp/I^`rU;A08N_R+\loDIYoS>[dVR+R=Y*n`C+b[k!DO-BG-3DPL9^**JWpBe!!JjT[56TPA'1$<%JdJi(rLs#"4T:;:i9POeH5F^?T2bVo6.R&^bCSa096m#/_NoTti'H!p68EpNaQgACnM*>0ik?<$;Lo6f.)LKVnBIrFuQ*j[#g&4?^7''eZMYKc6o0->D_ln:"mk>ibc',rrXa=s;R-MBp-q78%27CKmY'c4pEL\Ol,Q`*>jk.dMbF$&XZ:Cc-fns*H=4j,!+OPEO5fA"PX'a\O;htsG%R=.-cf6phm=KtT,1TFZ,^R>'kK29llo];FW,U$h[nm:OnIAaWP+)gG"HRFtC5l#ElZHjmq0c/9+&Y"NiV"lk5XOZG8L+R-,9#k:fn9,sq;(pt%`uHOXLWlRp)]fsc>M\-kWNcI*kS.ka'dk3AjnE$fY>&TFZ.JXfdBC,/,Q]lfGEBlQ*h2gJM('s%"fNh'YXM;?%nnC'G(aP?qb_%5h$jnbhJ=.![bVE#1a\9R8]IH[dE8.oM?sh'VkTg^+Whae@$JiKiSIG'WH`O9qa8(B.#`"FsHm-qSm4L2N^r0eO"#6=m;B_3IOXV`t5Y9YMKC>4R6hgM3E$kic$:Re_4afu@09I]\HIStW$T,:]-7Nfh:nW>niE9_+L"s7UUJWV;drGUfp#m:kTATH[)\:CBQ0\5F0.H)-m.Kb6&1huqs%Cd1WkCG/L7VI^VK+s@;[4O\7HPi'k[FZ.Ud&Fu!CM?X@e].g]X(S7LboXK5+%4gO29c=$"$&sgB<#")@G)&O5`)e"9<)+I.@,%^m[cC$@uZVdQTVAL*m9!0$?@qZUUZNAqO;tKA2K"Rf-Eb64j(4S!T6]Q(2=Yn]B9VHTj6CELhaLuMcksK\9(HqLL.s@VNJP;d\,3/l]%JT!"_or=-J^Pnj\*A@d[+:=<%ASb^jCsR;3IOm?&$leQfCeUbI?F@i?cVecf'grKm,MA'0RMgCouGnROcs9dET]OXK'RM8`FFJjpjDW_YkmW?oBMCOF`!DYa03p-2CEULcYaXHBXSb!;f;JFUE@t2?BT6?"<8ka.<:B6jQjn(m.GfjfOLblHe\lk4`BM0=SmG%PbBbeqgHG)W?S==4?A6'qtZd4F_S#]b8"Ak'VkHoG,<)gn&P+P?#A;/Df7j]m<;,IP-NgnbX["3/Z>O$8TVE'&]ri$Q"6D^kWIT8WY]1?qnIV!lZ,3sQQOi3hD\`BoCgJ\HOZd:3@aWZn]srcrYi?oZ@smXl"*R+/c%I3A(TZge8N!uRI!&i)]=2;[stHOPnP>C+,Ul-e:DQP#`3(7a_h"]b],&VnXWI6mY3T(kDk5Ma@aq58/:$]i^-;R@:U5:[>h5>*,N.p'NPhV:1!e>uCt(W):9Me>P^H3j(U5beB:GQ$0KLK'JWU;lBl,Gu;9J*.`&DO9XX@@ma"O(Mb:c0Y\bG*EmURJ,YbH^POt\,`E@1H)GF%2]-'Z:U[)eF_''0%KUbm]NeeH7@U18jJ\Y8e(ot:ZeKF46^j[;!T;NdVgE:E!hq9lkdgL60>8/Png[^Bq>8siM8oOI-.fK@17/LnRU@:Z5O(!$#H4jD$"?!OL@Per^*.>aW>Th3O0*8uVtR"5@Qae44@hG39V4fal4?Q[@OfQ/(2)\k@;p*DF)shs3]W!=b`GR(![qJcl*?"c"_;bN&kt-@.2/^[@A=/V%$e](*Hc!!E_ZdZ1GY([@SIFOO]40;:ssoK`EXoY9P)$DV3Fr/iR)";MBp;t:7!It6SU#P$6e9MFo/oA,eC#9h+p5+Y!F:'reuRK(YlgIiQF_'LQF9M4q?\P<3WYG?Hp^#9[%3_@ac_lYdS,aI.@J?FpD2Yru3TE2Hb.cO>\1uo;gD:7q<#I!a1buPdf&,!hD;^@j39?0Z7T^@.\HLb%ZJ$Q-g&W\WU2+[O?t$%@O*IR"un=ddES[AV%[\_)(ECmc\[:9LCnt&\GVV.J5'(Z\_Or7MP8;ZWmKsV./p-biOCM)@U7B(=XFTOg6R_$GTKGdc%WqH6Yt[])=Y2#nmos-@HHg#-Q*EJOV/1RDB*S)Sc%-6"Yf>oE.+Y8>pLXD,1@\OLn(j5@58DICUc+u.6RF!_>M=h5qT']Lgt_)-nVDVBA@Z.-K1%&8Jkn-(?*RsO]7>",1#52S$V7nV.F)"$+--5KA9o_:ENkWE+a*`4>rI-@N"3nbBU&<&4;9Vi,Yhe+Pur=LC(%GZolOM6l\=Vd>qRr)@K!6ZI737R+g,KeeB-)t_HauFad@1'S9K%7/'C[G0i%3j:L14KBsr$0VH1+R4*m=c1YT_e%)ZQ9]84Lk=^8;a/=G(#jA!$<8QFOu6`Kf3I29s0#+7p/t'lfl+;)P<"dYmc$-<@GH;d/BVLVq4!WDr>KcR9?$DkpHV#'JiQe#9k7/_=`FAbp`CVl"E=IT45F*YZ;"ga>2)pIp39-ENG>Bf6B9u=Se8mH,A,$MQFZ>@4&^Bp"4N90^HL84Gc5lYJV4r8"I1,AqW-@EaA"F1$H="S2IQ/s(NXJh-^7D(:W/t.d[Pkb)B8_L;8g>SueoaX[F"T0]aYOV3mA_u!9[$9OnGT>ql!=&'3(iYaiq?2Kq:GOi5O5G3f*JepQ@k/2@PEb!V:D&=7;)'9Y/ea`L:bO7Z-o!@]6biDQ3(O5DbK.S+rC--,PGB15N"+QbRCF%TSBdbaC^\RJ>^PA&mZp_9ECu\ueY"a93S%cT']g%#0ZMR_4gZ'-,A/HO.WX>Jp/4EQcr8-V?Y2%oa&8*YJ*;2SEh.M*JN:BiCM>lCdLBNu*I:#BHQ?QGTLSHun!Rp-dR6_)(C`2:CHjQbFk0=1;+hWtKS,)Vb/q2j/6U9YqHldYR/'6+"[Rb5SPIPL9@Kso42sfI:?(/Tl>C$,-U?3]9cA1egoZO\Ac>a4]>fSHVqu0\\NciM!)OCmn7#sp*S93Rcp-[D%N'jN/&`@:Ug2:g\`GKbil+rKToTKjG%B\oB[%g18Eia)!f:I*GgKeR2S@-/(21l0CjGo69+S*D]EP>c=S>]$28,Te8R!HL8/37jQd8>:YBbOnh/10`P.u1$R1:@g5cYr[0AkS%)3[7Hlm&(V>C#ME];9:t)nn]Qc\MLe76U/\M/YIr_r;A=:;E$2dh37/<]Q4B)E%MEEo'j_#[VO.\lX!am3(7Mq%-Tu%.I^E7O/6sIGY\9WO'<2[lfAJ6:JZ)Re'5fAp%@e^.;'MJZHCZo&`1=hk1\57>1g;h8\s\%d*EbD!7FY#[QI%noER>9:WUID2Pk5IedQ@W,nU=%"r-,fF_t[#:)frRJCoccjRM5KrlnTi&l1IJP$4X7(eIFSD9.Y_=*o3?iP$#m"??,-:5+"QXluKPYF6+<)IXEHNGYhs.-;k=<:/OJ0)_8jblDR1DoTDj]'i\0CeOj:B%#q2^a5+cA5j^kPb8n`P_=j7,+d-FsH69b(pY^duLXSF&PJ1FK2pZu*O)W_qN/bu=f>ln3l-<9]AEEXU&"(#t[kM:2$XpI/0AT4boTljP[-%VbqP&iOa%'.mRC64u]N0"J%?XCKu8M*r?k&O'%jI(4L7h@C;=mqN6qoAQ"Wd)Hp?^W$3A)IFh.#un2:cdu*hm'OXjn$Qo*d&GhX3e5g"f0b3m3DFHSV)>u1p+^#gFRJKbXf/+[*k=O:DQ`uhfALY:i6iIn1j^.aE[,qNFo=$'??5OCYB2Udh0_53]Y=R,=a)iidc/7hYj/8>&W3a^+.=p^>CKq)^-1RGb&&SV,7UQ,K^PDk_kh-KG]FaiWe3)UMbW'u2i\rWch0FG,4:?Y4EEOW!8fL1V%F!'2(cJlQnATps.DRZ]8#U_PHKFJrdik*o7o.971:+\aQc2Q*of9b(@%;,RYEj9J'cH_AHPST6iTrmTA&0$]t"(bP@,H%!/$>4a+*gID:@M&i76\G:!#(1_O%Z&Lhmi!eLS7K`5(3hLNcgkM$:$Ijrfj6dNbKCp_H#iX3PGWFb^AM,"-9-8j9k!4uA:!VP3Go=rq+ui0H#$RH\1Aqu-LG$R%.J]'L&1'31R(8J@N8CUO?Ao4iZg9BF,r0_[dA-C,__4K84pJO\1hQGddglm)i:"O6?;/hmF]_&,dsg!%%cbHBX`!qEJ2XQ;H\EkA[3O<5WLuKZX7mBF"-WVfe(Y.3gq.=rN:DCPp8;&r7K'RRU&]hku=l99rTn%c+;Zl+u/-(F2c\hp$T\u$0oENAq-fD:/r3./82D6Y1KkKO\/aneY8"'(_NoODH>MU^I"#,c\AqUHJ9joqffj>WtTkDQ:,/mD2$Fs=t/j;k_lSQPt9:`r,"4$HW(l'WSEnics14`Pt>_;`KT]\f(W:SemJC5h1YePHJ>U1F^3Nn3\c&+l*8Q;cR@S=Wnt8Y/@;68QM#/l_Q3(]>!aF%q8Dl$Jh%):Y^(SUgWIZfQn\:!2HHs.k5'6XfoC#=.6Yq1bkK8tH5$'X'jiW!ajJfdTMjm=&f=lmpL'mmM]\pP9..K%C2OO1'A'F85i]aD,::rU<[=4!MQ_#?Up?Q?pU2e<>=;RKpc?dIq5-*N5H5GjQ&n<&I?F@gi*a>eG26$DSQ(,,75CC>RYo%s^gADJ.p[=CGB+7'2@ESa\fd?YML/7ZHOXdo9#+XF90sl/@U-Y1hiRhS/5f[>.Q/icod=r"jhPj]6N4L(`Hgr,o-0f0]fr;M*FMXG2%\O]D9+l)P1Di4ZXej)r?lXZ^SQd`T[6W`s-Nr1nA=Qih\\mpn].PE5E0mD55`)1"pEk.;#V9M0Hh@)do=7j)!1iSMC\3Z]@SASF.1E<\FMsd0]bCuX6c7]r$[iCpHWdQkQ$][70>;E\;WqA`#(hb"/Y\1apkU*H;P;fQ'^O/!0ILWGEkhf$>OeHXZXo)cnX\'K92/B4=B6mP\eD?=f$/+R4cNqft==IV2)p_J\gt5%gkHiWT[$EdRdk:B60&HE:A9QrY*BkFli;%V+&7$Yor'2/1#OEpG(-`PjN)jZS%d7oZqRM;Tl*j\#oI]Dh$1%O)G:DTR(epedK"O:F?ZM)W%M8m-;Th][:*6%lbrSP%23$WlCoR]c#R.f%[qKBs[8[DM_0cA0D\QoMC^&27Enh]mt:@GI\$P*0gIl[EcOt"=q&;PWa7lS2tap(&(i;o];"\I@sQS^6=70k$iB(A(_QX+Tp?G)jKmE,('SuX(Za0=icb;Bj"Gn*I2@5kr\,:bW9%5X\H\Q[=G"ubm%d76kM]jFEJ+m.n]`I4>#cYo_-4&q$7DN#a2/#",=ZtTeA$)YirFO>3sX%!LV8nZ,Wbj45!;#MMt5?OkVEh%hBn0!SOJ<,JfMoB2n5P70!aKPE\RkN]^)`q&RZhb1A@MT(_O2apOi(\gG.lF&,GV>?5nDt5g\%o,[4-BK\"3MIO;c:pNpJ&/hFREGaSiG#b:F_&d=^/H&:-?/E;J\cmcmXA\^pt&UhHT"=P8:tCR^;;kVZ;Ys=41HS$QQgrRsI=AMp4#scfRNs"FqY/(:GJR_"@6$?S+&q":raYB.-'aih]&i#HFNe;NgJuJkB/)jf#:?kE0O3K6fYYfS"A>:-])O1ipa%l1U-/5(%k_V"0=BT.Z$q]M_-OA$@BVdqQHj;'DCP/CMrnC"AX5JSFgT!.AG'!S9bul+Ne4e`ZF:t/X`Uo4b3g9]W>9?^n-8^%B(.[4Y4G\=+H"&_]nJ)AaQlLt:3V^tM%pma"[,ehsDGgT3)YLBKBkeRF+:ijB5$pPJrgq>r56cDbppi7.5h5e>50fb&X1fU\QTj$bmIO]-EY>R_Z`2/"pj+Qq?!^Z=8a[WN`>>R>,jda#>M!aSB,r_er%f)=0:KlcVgJ>gDjiAH%>oGMch(dBI95'(VRt]m<95C,b.=Qj[oFt:E,s1c(TVb]*\_/MhYhGgcF\5d0M0a(jictf9h;m;5L(6D2lB)qsNU+c-5$?(^VHMSlXj**Qmj.4#e;?On\QsJ-Y5@Ocl1]I4^:eA'+kN`?D4#\$3LXZ!HYoe7bP6IM6XY(c=b6%M-dU33>!cc+o[dn$`Q(_+rbK4folo4bMUd$B[Oa2?5t_3p9NG)l2V>k'dn=fY#Fuq.(URsr%qtRhj#E/skFH<6/S)l)hK3gBC-kW_[rKkeR[J.pR)FN'VfYk3UOPJN9*Ci/b82q'(I<@c_aj%5-thEXosMKu"qK6\$2F"Bk_a4+$4TP,fYbFY,Q@+`0I2UER,8mJ*l<[aDjWN#uNKgWH:NYErmO8Zu!+L1aQo;9*lpZA-)Go?Q,m1(;^eTHF\XJ^B$hT!]VLcEj\KOqCKqL<>Uh=?Cps@f6;mm3MtDN3D@m>J'ECBCeha<69LE?kKT[)j>jO9m3t-G3bGs@bUII_'Ytr7-UB#1k`7UIU8#Bp!=#D?Cb0a)hi0f\^UBqh;L)6LZmFE"CQASI@?%4R8`FMa[Cnn00G+&"RLoY&)YgABdZ1[]`@:-EXb,4[usrJ(K`_S8g]P_?U43L2GG+Sj+,P+NV'-LMoN%/B/MI)r8uq/)7D@Ae==e(o4NKk[D7>3ZH>0s$ndP'nU!*Y7t="hANQq!^1eJ"iU:Ws>q&*YUX`l*96g5,%Co-h]hdr$erIm'kW:Vn9erPcL*#7MA70k-"U]CUEq!C\t#PXu/dg.u(RJD>ofO+I.uSbM.1]X1h4&XJNCK69Ng\6&>V>4qU^nk&3_4E\4?3MDndbQucnG>-5#-'kI5]@oYLM?;9NeR;u&uq7UK3qY?+qu:J:N`R_4&!W\*EeURHYKZ/,:ROG)CQ.oEoYepUNo)CsQ3J1"Z4R%-TV\!fDg-8D.'Qn%_DacOcl+&!Fc#XKusT'\Z&gb;2&N*N/4-;<)<_F`,4g3&8uq.4)g!OeF6*.WcZWPH1?3qXA>(_JBSSeSG8j%o-;;KPIeME?9=3Ro.5*`N@H"'Rg$<8VW$F)%0ja`!EXMV&9hnI83XR&8PS%hQpii?IKJB0)r1B9X*$(5!oFu"3pXo1]E5`16:o+fP/K[dInUa9j/$O9r+5l&(DD301^?cA*I!8s\\ogUAQhi6i6"*0Re:0H6^-%lJ)%1dGpiNb\-YI0P??A]'RjIL:Ohj6Ag@p&Ldhq@hNS;GF]=.XGANM&pP8\@&\@ji_QNH]=/_Df7bB2/o@2!u;Y0I'MZG0hRU>/Iq3^F%h^@:&N@MR*g&_J"Xl[6kYl^^o*36NufYn\nZo"sW&m+[Q]s^4Y7*JIe_[N;P=LJ2mLg$(;:Njqa+HILcB+$=qt4A5`3OZSp*+651SVF'u0o+JRNh4aBIT^VeNIX(K_Oj+8-J.O8:Q0Ok@0-q?WYhm(o%i25oY]EIluL4KnkD'jOa%"E+:RE0Ud6J@*K8VCEla_3kd8o$PZp'WR54!`^1-bR9Mg7[BY8!p0t0.BiR&C84#b1bsW1NBf@?Ap.`9O<0O#>$Q#PBh2$$M54mTn$gJtF-tn+ZV[A*g]>3Yp?7RPrQ"Iph`q^6K[2t%SA,\]dqai!gC>=8n87E6,pnRWOCj+V,fUFk(RY*erkXNn2HKN&Xip$(loS*g!SR\%!F7,Fmj8LJ[;*q046TCJNGSQm^Qq:P8c/3kX1HlBZLT03'U,F%J#OjVAXL,@[kqmYV)ujKpo"R2DG:[orps1_W,hD"4,TJoo;Nbt1@D@M";I^2Z:n^C)RW`gE2.)3o"lDm?$YWVlN/7j4g5'DFk4^WalB.+Ts$O*%b4W$$%:El66=_/eOJ8e9UY84H@iqW@rn9GU53cI^3B'Z-(`R[.YX8U%N,F#C7PF5"c'CF,_TosO@*fAQ18Zt]=,o?K!lL2*-Xr:j+YG8gUgFo&C98_=_=D;>&hC!c-Y"a/DE,UP,T3?Kc:UpX#[+d6p`^7o48iIZ=*@9TC;Yom;!]WJod;g:NQDQTVL0(rU-Brif;*$D\GR&Z@0Juu&KS[??\='+#E/;'JV-41b.rbigMT*+u[@_1&(j6id!2:I,LmS>2P:-oK"boE53A*2m#(X2K1msdAWa,c#r+LH>-VG,e))K2-HbK(fs*=LN.$?/M)IucP>j_5eS<\mAYFjj0gDl[=Z3D3)FRbsN^gP`P%-HZ5^k[;.'/CN%d(`MqW0lMbehTN!t.`bi,oOAmUNrh3o*K]%'4qY7uc]][&7UOM)NiggE_+:f_/"f..k9[);,<\?kX=\>Rik2@9*=ckeN`sF$)d^i^f4_U*=4FUMi9cW>im9]%C+BH1==p$CU0^t\cL3eFo&Fl7IN>q+N2l-Cj#?iZ&a't?1F5u'Y*aU-ol#XE,A:OU4TP?Pp[-4NXW8N=fn]eFae=)Mr2FrHduX@A[*G4/Nl$g)NVthl[ZL49iK`*`m_u]?(2Oi)cp=DJc2m;`1L/Y20D7,XY@7I@K?aiLc<;5-[%mRPt;aj9p3>G]@Y:5aEO'JaPJi-ldm>W)^^O_*f$OAs@KN2P:?].!kk=AkHN_T"LfWu;>tgIcroJ%u5AMJ5?uq7lLhGEk+/?*ttXek#hO5^rasKT\'!66L5#`cN89d3_2h>;-^Pa`Km^>tD<\fE3!lY=f=qI?jgFHS;,R/6c$d!44g6"pAgGTg!X8sjqL;^8__BCh?#4pj,=c7Cp)]qkp0G+SgE`h)L+>tk#7M"kmQCsMT_FdV,9>uFkfe>MMfn#B9hWJKtP&T&%5e5?E#_.:q6=3@'j0\H@f],eYZuf>DI^[r7Y'j:%eCg*qHT^<1(8\!889(IN$iU1RY#c,GD09q'B7r@F8a@^O&&2g&Pns4[(LTU,m99abi:AlR:]=9hQ.YmiGoetKPG0#C2V/iia"6I`L)sF:h3!qn3PW%*Xs"_#$"OZ%&8Z))2\;;Ibo0SDpO4@5n##KZiKekkKY9//YcKuGs!arM@5X(,Uh4j9W3n";G.\Td<]Xe-al-H#I_XbpGF!8=0ZlHpf?^QR+TWKAHaXmHbLke14+Li_qJkT8$o"ikUO*dpsVY,ZE]?NZ\U>4=La^W;G51\[TYAi%e&5-D5S95K^I:7msT)$H":Ntb2JbjW/h'OK)N#]fLlc$6_QpgI=tZ@^$Iqerk3mS:Pa>)$WX.VqsK6472+^IMu\C37c2c.o?=V-Zd!_"kc!2I^G,RB1]3\i$S-+9Z.T&N3;s+#M'DQ5mUIE'd1gu">S'9;I=5p%r$UCQ@_D0l9Y-fLpgT5L_[H(\=5[.#7TI#^8H[#fremtEhOj?YJl*J>S@9LNEtM+n>8fE+0\6_d784J$K0j.YkO[deXGWu3GInQgd5[j(k*.dqJRY;6CZT1:kl)@;=.#!)33YFKG`,g=@=#r!t#i8uW86[+kkG=)flo&l!a7c=h'7hD=Ae?W?EE@FPq!/-#eORf\RO[:B0:S(TrFY7*<5cnJ2Kg?8<:f)tiPZ+g[H=ZiKI3fQXqE=H)a`FTdl=7EEO'9Zk3L*0e%M;lq)cAk."GH.F/h^OCpO:(T#=dJDP\-J6qsV$beog]CbeqMKqh#KC)$)cjQHB#ET0lbLlas88Fj^OM1L8Pg\+X2HZ.OYnT=K%LlkJ]b?EjtpG>o'fXHHdo7?s?83+;iba0Oa_%O%K:AW-6:dBW1^r'a+s!]eo[aNg8mr"k0Mo=3+RSsM.Nb+]-30t,+!Z6=Dk6n*r_c?gp0tg2]p8_7Do=RRg<^g@@>6K<*61VC+T!l%mPfhZ_7E"A%W4Pj8=9!tn9G.bEm3j&dF"MCV9#l^FSLgo%(IdtSPR.Frdu;I-`tmbI@Ld%H5W/"rf#E,:6?NAbi/RV>^U=r)3pu3HaXSCQ`X)AWeBBhF+ISd^^99/JY9fglB2Wgf^I0$)2Opj/Lh[@>C(m-JA[Fp'Sdj>8DHr-Ed,ln#6\gd"(j>3D(SI3^nA;1?OA\Ok+OWfB.KSXtXg/CE-^UF6)k#(IpJU5Do&`(tFa8+uloO16j^VkU;;[rMa2BO!mKAY6Y>t-!Q?BXac1!^/h\A'^H"QU7-3f]:,ZYIF(_M`#;#*G\A:t2.A$de%_0Z:rZ(4IqKm1ujLj#:?6%c6P1T"&'%9'+$R/%`H=2&kj&\iHuK`R?1>j0j-q32GED;*f-;33FUN1ZX4-I,l'L+>osX*R1JoFm2VIi-REom/f^O-^i:e2-"WXgR3PTXf*I6YS.KqRH'`9/)t?BoKc@a1W13Sh''bX1X>^PUk235$E&a!g-f[d.'+h:Q4@]@jVP'V07RdaE(].Ro1]6qb1P9.YKnsgoS4&S?6"@9*mJEZrkg#p]PB2%oO*F8:=WK\)dCEhPl*U(M;]]L"47T"?kkWPc`K^q4$Nd`J&ZXTs[Xul!PaVF_&j[n_XA3JcW&L*%4DUSKb77>?s5;9#+/&.T+pPRf=G9'&Os**m!h`!]0?;QA8*^*IW;l/_5Q#ebaUoE,LW>)*q=+Yjq%):Gm:tTm3R);'i[MHp`tme(I_=).+KBpqTFh1uLnIte]MK$1q93SM%^9V/kN&&r&._1U:^mWS9J[d"7d9rXK7D`XOD5q.biXdp!9NR.a?JZ\<`h-l$lXKVp.=dMRd#H^cE$17Lh^-f>/jgPRaD/.h>=sNnBj)s3_)^h3\#fa73Sl)1k15AhpKHBRZ[E=+ne=T98%oHQ2.m<<<"l9)/(4o=Fb0:(rSrcgtM7PKZoW@:\peE'UpX;(&ER>D%`s4^$=[s?,i$?A0HE?h__()[[[doVb['?hd'T%h1O<&Po"f@$3KC5oK./heudCC>X`&.pWo?.Bq1P:6CabbkM23b#5CdT<4Ur(RVT,r_p&+V+4kF^NPnGV^h&\rL9]piWYHaucR%N9;@O!bD,2o5d"_8T`,IrCU!,<(ug(kN$)24!>#q9F2AVRNrS$)l(aA-0*tNa"L$K/+E3mD(hbfc]2q^q#&ZFo.RNeElt.-7hr-7?AKFjBq5Q:S.b'O(EJHPDt!>ip%EZXA9*b55g@n)KLsJ#D<&aab;K-8Q`8ckj!4'VrqT8'->k1tH6t\:!=MuYmH!d7+57lqq4&TGKD"T4Lhh7M?.J\+J.DO3?KHRbHE3b[dm.EDftZG._SOLP,X7Y`3AX@?1F1P5h0QWM\r59RCa7N=;q4:qN61T8Gr#(N$k45;$9?SaT]94?!Z]hA6cAYj"(t._CeT[mu8m>%,qc?S$L?$DYO#(0Rh#rhBaMbiLpGs$KR#DB+4@>W$kb=%2jYIP]B09AA2DBSn@&+t#AGP(S*3$:s7]Xp5h7`ZsCLS*2a?V^?U:pXZ=msjP])rsZfpD!I8'gE^c/c"St9DMG4?Rb'[H4\?t6o!\U\K6d;j1EOOp(bG))+n2bq=[Z_*fc.0l)"!c='#&L!U]9tgjG[uS('C#XFtTM_-LN\1TK_i?SAV&L&t+O\+snGO>i(?q*iO[2GbSZ^D>/J77_W`p-1e::0`Ag^00P8T>r??+gaQ:#$(WZ]M(cM\+E2K,68e;qS];ao'EW1CdDej=-j2?7<\f`3$UM^Hs">N][48T^cttTcRP,)b)RdMF%Y>_krks92HCatX!dJ3Di[eQo97R+XGLs,fJYq1s2(FH3*FTiNYXO$g')4Ri*I5o2]&\QZa/M!+>,i8Q0b"6js`aiqPJmlh;+P-#Rhl`Sn'1oAto3;u4`Z+hD=cCJgSr8ZNna^bI6@E#a$,et+NVelVn'KAiOksE8jgoq0DZbBFSU*IfQQf'=]I2cd57)`44[4SCZJS3h$.[?>i>Hhi)7_uJRZ=r.A"enY-K?&#`.+W@pp7s0iI!ojH@C&)"[8r3buAnDic&!_:X0<<]PCXicH]GU?SCN?2RK/'Lj1hU'C][gdE)L*qHpNhqCT\]C=0pI`#SAQTq]_l+C0+1Hk,b9<+UsUG!n=g/kG8ErnLJtS_b;#K8l&G;kk:5H9Dem7K2264Pe3`;DEPA"IAhCU3D?2?ne.MQ!W)\k;a.8\i?VNi8Jb#Wir_I;sU[TW+n%Q;-VXf*UP92s;B+)_[U]-cYf!!L-L71L8=b`^-a0n*OQAjo0"jpIK8eV1hUVnt4%!Qr+_P(WAQTmhB4e1Ih;V-iQXW1"0W7-+*ik/ju5]&@M*4H?\RI-+.--&?B0AaT7LAKe["4:ab59/tQY'd+29Mm%I5r.Jn_XgJO7smN5b!0&]$baT^O1%EQ@TJgXe1n2FnP2D(nijbcBC4,ii3b$A"SQ8BP36YEV]j%4_6jpbI_6:r3F4Mmqg2,A*3mMmLcRVhWP->bPQkA4&fFlu>ir!e5a/A(EPAqpEd)r3R2DmF2OV#@i_-jl>#9Bdb2H7_Z^n0\ARKp5\b&A$W%`ip5)N2c(HU]+*dI(fkrO9L#9o!5'<])fGt_kiQ')fi@KM^s4Lg0"-GP)$H4t8`n(HY(U5iNK`GWT[dK],@,cRoe<\q?+luk2,ft+%p3AgUnoZU&V56JOb5tm]MSfSEY!-4JcJ-JjNN,m["Im(N_Q,g^c!a_+TWCh.W"+>BS!r_g2/-[F-$6/cgu((sMop\-K;"KOXOb6U[spC=k>GiOmr@'h>%^6Jl)=.8FIPL/W81`p?LumP(T__KWiIC`Ade##%>\I-l9Zjq[2s6Z=6.Xe?%1TLJJd$=?!c47.V>!jT@Wb\ZDaXq*Q@Y\m0p+!Y#b!A]ur*k3F'[\of?=oi#]aMl%=+'%YQK_*7q)]hHdLNhVl%Z,c36PA"7M60W"U5Wp:M-G;S?Ul1;qbQs)2Id"k=Rf*\N"2E^s(hbHo?iu*IZ`Js%5"lRY"5F\J=C>kSl-:mZ,W'(TTa%M@J$P?qB_coY'h_0bJlF_o%nLG`]mb2*tqSfUp;C5!Og!&Z>GQH(JDbTLlB^E$!F.#W_ZY<-RlsP*RING"hAG-Bp[_5PX>rU4h%P=6QoP'-t.cNWa6qo_3jg)[^V,=CoenpX#G1UaI3,cYBmR"AYhicu.4kn/>,=bV[/^l8Zndcb\tN/8((tC1afJ49X7RKnk,b,+=I@kfjCO7W5rLO2mf-jodS3f1m!3m$gSE804oj2L?si")^WPO&SJUIt\@K2^0V%%urE_[Hq0-9>fM>/J!2'!5+\HgZ\A)U>hkT$(\%Pj21;m08KYe8nZ-AgWO*7;0[Pd_`SL.LG!sU(*NS8es;2-s5#pItF4,,b%s2,YUDq!oEs$YPpAW9SMi8oPJ'b08ccCg;QNj`'\A%JVXZ(:JRgYBMBIIinfk\UqSA^166NYnNR6XGh77L(Y1]<`CSktY$*!W(P;`.q845N=Bl*]PpNhG\_<[7Fj$btWj:`1(o#-`Ik"ClnmW**"thRB2&$B`20-k_/q_BhD6nA\:\2>[e,&=lgLYD\k*dBV2X0d[^>u!H_9J[q!-'i/b[$).$ctR@7dN4g4=h-V@AIM\_0dQP]Ea;4_XsWq,^W$,LZqQ/*>0I0KNl.aF.A:A3f86-#3hf`LX1cDbD\Ap-ageP)@.6=Up7G$VEq7,>U^b3sq6EK*CZC1m7X*EF)6:$+Cp^*CX<3e(#qd]=+'oAY&\0[t2S#.m60[U7^oDU\n[^C?YiEFRlF;J&p/?Zt-:PjK:Np!Q=_]lcWbp<8f>bF.UBbGfL0cKT:CY,J_4VZ+d`mB=P37]KIl1.O*B:Nfu#iN4JnWhj8\bY7VUUYY'ukuQPn*udSoKSCmP:IEH"G$9LI1.`>q[L4o3kAT/8;OF9`]6k8Y@nF^h/s?4&Nm_eZI&Gq(TZdmU(C.)o.K,BmkQds\"]p]^H3nPF&Z?V0"ObEaY1D>!2TjHn,_k=)%GRSATY4G`U!C!tjG@;\A`GWOS!44).]:gD(8^.5=^(07&uLPZ5n0c9GTC3%uQ4-I$[g%/^\P[`2r%g1)Q0q=em$)NG(Xr*n/K@b$/`lufp';L$@Q\fZN!C_nuCKU\'M:Sd[@=$.^K_F0LE,fm;2p!m>jkZ1AH&h0tBSJ8Df3H!JnQ'>l+7QiDIK]ToR71$HNki/Pj=6h5-%GC&N907O=AD.?7ACJj;I\0,/8=J\`c"a(ih&?(`@cEpmm"[5fncRg:1]3EbF:m)2F&>)lC5?Ol=$:k@P0%!pj!p@R&8ig(<\m[?]llS1P@CEHTuM8g118fmHhpVsi22;ReCoRE5%WXlB5TMPZV>=$0n52PGp*6)G7mL=lIqr,71:+<<^rg45pYa@pr!uuGF%karrn2HAX:=PPkn89::odk#i'&2QNYN:9<^hpK8/MHW=SF&3Ib"NP)s'!k@f>TN>jh0h.H0=/?54s`)6QOp6>qOPuXr%?Jg6rQ'era(qGgB2O@338nC-LfFg:efE&fB`NSjAe_BKfDQi5QHi<&]dS>;Yq!t\XN6K^\eKL@l<#7@O-keo5mX4u;96[^%qu'O/!T[DJ(g'6iWD3nKrV;k2;A^eQH.0d'os`0l8F=/+U-Hqek/4(9=1kb%E^PfY:7(`f*f9(!;MZbPkLtf8r18HO;h@cob,g$p5$kV3fWI>FLn6'l10N$I*=-0uJ_R%F97`VF2aUk*g/&\E4K;O`gbf\78N%5I-X+YA"l*&/AfHm@uf)>_X`L+]^NgtQ9aJGUIYK>l9=F&JE]C\(;)Y#+pCh3?0<[GaKK=49XQ)`[C5+@HWKa;gmT"scD:'?Xj9e)k3WA*gS$cXig2JlXG4#K:NG+i?!1PacVp.:8m!8MlAo!p6pBtPWCMV\I#iKFI['PsQbtFO0&1X;0<$GRna;aNC5J3IK`"jDBii27Whip&r_-HO^O8R2X0.\LWQ1rNEnG2&9d%Gjh"M$LQoF=VKnH&L9:q[^YP@-fAFlQ7NFpoI@l3-T6cVb47ibZJm":c`8lhf_Ms/lMje;4q.GIrVCO\I)8SY1u*u1e:UnKl!ln@Wt_&H*Dtr&#CBX`_d3.o5K0DLDCM[-9Ng&&n873BNNhTU7O(r4K'u;d7)a.CgTGak&*h.ls]4f4,2u/T+kBnB6Ql<)2.Tlp!E,oU.C/?'gB"qDTFV3bM^_X[T18`G0FWEK::D4Y$Mp%Af:j>AWsPiZ$p?b\ZOOboI3k<]IN+%pJ"1U#GUX'gq!d!PIfL$p3V4?6iHu3ICA1nVgt)`Mo+rD5+nR3OnA'"8Jbb1Qm-+CCTeqH!/m+=R9b7UX.DZ'@jKgl+7cQpLHs;,U9!fac&ZKWBasLjlF^.=X5?H)75>1(u@H=?VQpqN]G+>0oN^pE%4OB#n`^)f3b@umELjXSVP*G"5k6R2i#3:Oc0HQc7#9nZRX9"dfp,jgTi3JqfqT#H^EpE8Z$4Tl;B;JU;rkHURcRHdX198NRJND+\&.S*>GleD,MqEm`:f)@RsW=,582uc&F<^[;Y=M^u4Xl'X.t;(oZN^^HVHB)4:2A3Q=PgX*.1J$3ph*##.#R&1Y$LKE&e/ic8W4,A:Pd?qD&6NpXc#>Z?fPBf-Z;4B#'s73Zh'+EjP0*lO(9m3ca5fW3&'._E&>G/O!BgJhlgfgV!l0*/[Y05.TD.s;juZhiD4HWgKCea,L;ENN%At5>#2gZ1L4H!sKL!V2[LFSk@X1Zl!cNQ3l70;M\'h/sJ:54[8*u'bk+F`+7$[.d%Wo=iS%(IYbSY#reR]6(,u^'M;9e@8SltQCf2I:B^u(kAaUORXBto72\U:.!$*)jE#]:9@)-AGu)R0^n*`QEnlL\m;EQe&u]WPiakj(-kVTkr=0SPV!6pG*^Obmar)Mh9.-n,&28>(F\!`Gfjra-*]q6Huc\*>UXTIm-3`ZN8C9q=iS@`C04J>+cU0e,!FY59.eO>j'l2tT?h4>j-^p"ppjVfbADrYt]p@A4-o\&*Y&T[e1EY6;60!h.MfFb/D:P>mGJHJYIMMloWf8[^jS?-K$:Ek*@i+l`7XN(DjDjaG28-NicPZkLZTeTn67oZmW3NjS6A]?QAO*Y]8DHC*<f'G0).`'IACDcA\N?%Du>Ii`STQF-BB45?APVs%`;TLtagOAf)Bu.^iZHi4\>UO<;e$I+;T]FN*[HVNZ$l[UMCqBbEA]bB_hX&27$NUG8),-FXO(RVh,\#ejJF7?2Dck'<>L(\8HH@A)_cq_*%=J#bQZ,4f"`3'E2'hM#CsHQGP-Shu,6PAf`"CMHui:BD[)4#f6r,AU#WX?<)_V*4O;Ki`\a8KfJf-LOUFCjCoUCB6loo>63B>e0&c[-c7GW5Gb.^[(%cLir-KU9S=`Z,]0579i7.u4":uB=[OR)3`qYk3glLB?em#0*$BQBs33(Usn6BUSs]G2IG_h".?"&o]P3ng@K[]6>';GTkOMj6?99S]Ti\N)!:!SfpheiDis1`C;=$sH1P+LGj\>l(f<:e7#f%mSGN]L\0ip#hrgnU80Fz5/hhoZ^Ms8*th^1ACjB]4A)>/'[oJ[#,XTihrseU4boMk1S/L?HHpshR*k[M_K3U;@MLa.i*XTJVmh\/#R6`$`;U0jq'1]2Xl^[1c>f'tA4qWE(n+5)jn*.c-MNsi7i@dE,_,#l%WZMShS%Wn`BJX.hTn"@>N/nk=dJHb])OaP+6\_N!Ma\,_ULYdM"#Hh3.m0P_r4XOmYBVGksYOraCrQ&Ej[ZeC=/`K7@98J(IU:T(I.$mUcr=d)RCX7$&Z1j<+\tJIH#FOJ7U'*<%TQR8eNVHKBM"6gTIcm9t5)e4&&HD"u1o2c;9iO0[bbbM9#0mpNe#U#7^"2REjpqR_!KGqeQE]@pdW9I#TpP0O:(GJ]QOQ*E#D@isp3*\AfU3$B!ZmDh:toOoNe>Cc"p/=38AtS_jfqBK#[%]IQmJ<$H0Bn*R!o-5T?4I27F8m9ooA!I8(l%c7k+_Mp^Ycs^I$2Q.]=eo:KaSRr[6SabbOYQ@7Ycj07SW9gat4A;e(W*4;fN<7*)%=J9?-pY>PnZ/[12?pL]r4M=j"o9nbJ>+.D89ZN^Q^6"!!)\ieA+m/,tMlco/NrTDG71B58Tl&XBRY8oV*ZO(oYX;+^]3Yqo;E[bRoLA:3d211/]QFh(DQaQVMWLoIfpAkuhL=LH^.^(ZkjD[h^`8V465s97SW_J^9,U+321olB9Q#LY0[eUDi-X1$,U;^5jT7M[X(.ou'2XGGoO&4`$od2-Er6((m]8-K8Mus](ZKj4S1.kgML&usYK9a`X_KMUu#Ta4q-fC?-#GLjW.]B(s*WnL@DH,`u2]8LQU\@]-*\LC@I%OsJ"T;0dq"GJk<'D&R(qGUD\V0c5rrJ9[PaT$#)*NTo@8XFeD]c(Io_Nq"?nFEe)6rI4\YOp))$$1'V4r`d]BB]`[ZXG>Vq)^V/enf95WI][%QNj[Es=^D,"A3C45f%/.abpX1t01iF_$.3%TE'faj5DjlJr+R"&iS6XXk!=DY07hHk)(:]n5kqe*;Mc6Ns9m7iT>A0"WKM3nCl>Oml!m0KFHNGm5G;;*(L;"mDu`Q[75[_ntXR%Fd$F%#c>t@Mk*W(>sB@=@<8DKEs=e1JM!k1d7AuS0#uqNI3P4o`!\SS&->!GZqsR;M5M.=!,3R=ci=5GX#p[L\Lh#Ig\\J5=/ieR"c_S=C!d6\4`"7M<2c<`]d\oMGJ#(K%JhmYF\Nb]2Dk4AL_D/K#5G;'G+ZGeI%DJ#LS3Zf_+TV0/XZ-NDfAh2dTY>@SYM9?_)[LAp8#16DN]!5-$VQ":*l0fhW%MU=X%c0$V8HOj(kDn<[sPWh0QMgTZHV/5W;L"e]F">QG4m_k5^WGe$srXE3<@Kfj:ioQ#H]'IfQ,WLc![\dSg,/I8qT1$u*[(!^L-bn7)`E5%b9BmtC?D;*r@O8)P9,3ZCD!0M'$1Op)^"r-Q+"68_HX8-,]mr&aC#rL]Zq3pRmG8^uZ3lHhf96ui_%]E8l,]XUp)N<)^46nk/W$N":bEZi;7_PRI1q;+/i8ZU2DdB4^DLZ_t%P*IG:A4DdsU'Ehe6'OR`C'5t6KhLBT`p%@?[?"r'9[`JZqcr&Yuhlr4YZ*Zam\77nbDNgU\ClqQ"R%Z*dlEtN.*mf=kV?ig?74%%.7&4%91o<]p`X@Ab)Tj34B!Q&MPAbiB=;HMpdTR9jTb=B6F.h/+9,$A[2ZD#dn.*&5:-5V'#a+jofPS$dOp'_Fl=f;V5"X'di":>u$HNo7'6%Pre9`&XK8_sGA?I37L@.7'5F?nI^SL4NaKSY!#9_q:$89*n7KAOGiWid/l:S4.\ah2PjIq)c.OH=ekJ$I4b4AXPoM1]3N7dFVc"3/A@(,)q2l%+u=ReS3S"8Gd-Mt=5_?>G\8T1a%C\8/2g&Ggbu5RCH6"(t.Z:2`+m7d-4s:`&5\MY[%`t@ofD,>S*hhEp&DfD]W!Ag1o`oDB$iuK"6cd4Olf%7rUa5c."74Q^&D=7W3>XW:4K^7OI?Okj,j*_._[WtHYidTC5cF'P'G0:UaqJh]A;NW@/[#0!ki>%VF:t4.^^D-@--HK92Jr\V"=_dL@,C]C6R$XEGSofh_]cOS4c*gi)NkiuTIoQ(Y`TN0pY"5jSkn\5OJc)E"ph64@hq*laD(9#-3C'2q,W=*KJ#,&'6;C-8KWNX+E@_?ptq-7.=W?Lr@#WS!W69-dc#lR)27Q+UWo?a\E[8lfF[7.X"1n5`E;:SELM1j4C:Ot,Oo-`C6;ji2"r&9.N\Gf96Egh$?nG!tiYWgUA4]j,u"88+.%lH5Y6dZrER^r(s8j97cLMQEjbRqQbfdO5=r9^OXG[O0?a1k35ah(BVB8,Kbc(gBlp40ZOmj%)G;7K2\JRab!Lq/!>5J9%QPR8$Pelb@bkXHYFkk;h6?R&CEAmB_Lb=,IM;(/iDgo96,XB;qT#j`&-B[3N]CUQ?jE&J4[,LbIkP6sT?R::"H87:r9'j+?$Um:D`5LiQ"R:4,`#/5'n#Ch/R.W=D0.F&X`J:=>2Ci#[d;_\?;7Jd]N3hI0WkLR6SN%"'?J`#,iLC"MhJ(c6,HhrTjDPp[VN)8_>`G6o;_KQo[#iAuCbQ>6YKIa>+mc6HN%q6m`g,FEA,B(,H3XL("tZ+T^uk.<*LpG1Tg]h/Kt&*abKXe!FU!X,W?dIddhp_VD4DK#'%rN;8^;q4aiZLD"[o9b-Z\&OnUMrM^[KQ>oMI`+c-];GVCK$7Zc5=s,"169aI8RaHU!2SJtF]r[#7Um=gp$(O_$>-ocKC*E7dP[54]Rlg;3jX^r+2Z0KD57P+J*Y#ib5?J.QH*UODNX(6^MYg&Tp*_\r+,RhGf^B56EJo.g70PsslI363rcZL&1dK9JTQ,Pe8HE?u4Lp*WM/k8OVg2boC-;)@QmLeEo>;VpqVo7QWjt[l:(h(DBQ7Z0;!m34/!V&Mq]4ut:QW.S$F`/:)2-bDGmB2D<)HdPfR0P<%r%n]a"70ZZ_p;^rF>P_dOA%(3+@5,/4t[ti+NlLmpC/n^'K9jL[nsJ(!s/VDn?j0R2=<]eK^HY3MqITi_1P'!7^VXF;*94@Co]^:'OF6N5H0fFn]dZhh(@P)"6o0(HuKXBB4dOW:D)M4/bN)*VKgKBj\L4#]YHnjc^kO5[1.4[3Gqi$._0.S'tK*"B))`KT'3>ll5,W`UThB/;XY>hYYuu\m%/1KWj'<>;*5)Kps.'IQ$pdBG'bgGrA7mSFRHa4cE!U)6>;Q#idZ)(V!FcRa`CFRD6o%]BREp`aGpdeVZ-ct#,r?".>L2G[oCS]is*p11"O>^2-Jol94;Ys(0L!N\4q@D58cn]R"6J;L(I2E\AgK5jR70l;Oa4mkGZ_D)<^Rg&h`g*SL?2$id(+2W5Y`RgUFH5.nOOk5T]DM;!MXb];:/p)p=O-2dG5TmUiKZ1"q`6/6b=@_AX6E$P&9HPk*cCsl8?7b+Vi?ePG_PS(]pbVDt=TO(+hX/m3u'^hce.L)YIdF?9:&D,fne%T/Sl]NVg>\qEDg_DS:Nkk.!rl_e0LUs)0jj@GB/sf(:jJZlj:*4XVJZkP8k_\eL8=50LZ5W4Ga,lR'YU!2CkMKff0+-Z[Q7ups0&NF).OFO".`-W"Y]*qbIMJ"K**f_(UfZq$ToJ#WUn&1l0R^X'Fn/+=B`eH#"W4TpbkG3RqFQs/G8FGQ!k/rs_7SlR5+4(9chXrrd=?Ma`Ll+>h46X!VgHlbPok-6G'-]/q;4HsgI;8OR=D>,Whc-%bX8(rC0'NT45Pk`iSTo-eBm-''Y<1=JiHkDfZhd*TCk'8+WW[$&5.YS82&.dgS(r-_-PY8RSQDaQC_CWG;+8f4Rfd)r%Y,]#n-Y)pS$7pWh_"^./\5,:-NO:\2-ZurHHkNk/^nFr,kG#Fh*mYjCp?'68F2Da)^dNde?trC>*6I\Sn86s"t5lQnC/hVEK>k"f4o/o6u09j7(I1r(Vpt)96ob\s')Alc:n=PX!%'ps8(02&bA;jBX(UuhBDLlmJ]Ar8\BHlMR!'B7S)G=uj17tM$lTuAp+;,`JA=PuN!Jl,Nt)Z:9Eji>G@kP4-5YcCXAGM3)Ajs+!W6VFPQ#W_RRC'mXY$878[DUF",UWHQUsNUN)PWJ7bomdV877LJ=YZU<6dNT"]KK3P`66R[E8id86@#'n*PbU-\>%G%oh:#_ki,[FX>4op9*Oq.&-]F0Gje`2[kb?@*^P!!hMd&3-lEHP:XqC[ki%A-09233`+V!H>2%T.[`bb&`.^3$*@&Zgt4E+^>`$,&@"5sGMO]"ap&RqatC&86W)(SF\(6t+T^`kI8'I447:aME*Apg8ub/l>.,7m8Z&%5UX/-+#f-rklZb^Ti<$Sc/^+De3iiLFj(5?[dg$\JJiCPQV4Q+p2)9u7["V7L>T0EmXJdmlg4a8:]=+N_;]cJ0HAFtW8il`#Kod`4/nohR9c!p9*$:1@r?e@%8,&fu5'SN+&%UD0)'0T((K#]mdT)C^;J@VN;17iER.(mn#2:kn%]AoTc+]W&JZ)obGU>$hd!3-57Al@^r&i"d+bP6i[^)*Gd"LBIA]PrV!T]J_d>X^O.,Ci3EZ76Yl'n1Z8;aU1QW9CPnL?Va&S9Hi^^IX.?#Eu,4)(?]:A>B%g1L=&BlTU&2K8V)'igMd?1/c;2Lo(!JBnM/Zu*'E$;cU_#-[)lRt?'bgUm8YX-U]W:l%>["_%U`gc0Pq2J=G+Q01]W/eq$h&$85C*c"F?E^b^.ETjd:E$"Vl>O^peA_1ln1-UJ%X\GmQ]L1Sff+Y+"B$-r,H`I*k^Vq:G;q<+=[\Vc4iMQ&CObVKG:Zo:\">a^g^]lc,t"\Z=aQEQ:(E-PBqr/@;UZE1niBFZJb.`)p_D]Y/*E.eRT2f;c7B\&Ik&UP7q&*R'OA<=\p3E-(:s"LA4KG?#"V@g<6Z)?HftNc`-l#186OQo=WATpMoNQZFNhk,*u,@>#brGR$U-78le9>)db?;djifkL"8plR7L1$;&H/q.pjo-6=VKiC8OX"rct!lJ?@%j>X5(;LiHF[1sm;,m\ArTg@0roO6Mfp-!j%qE"EA(8RFh]F]0/;?qCQWd;!u\1X]:9Ma`_JucA;in[ZBmbKE6k'WqiahKeW[+ML+pjNf?pf+D+JqVr&V4t!n9RgQG&eYEEDD:.LHt(-JNL7_(n3]TTrN/h%W6"%!8R'<_J4j5@oP-LRiQa/,?I]),F)+l@eLe7g/_-,]7[K65k2ZYfQt@!cPeV!?S9KPF"PTJ&;T3RLY2I?I0s+Z!.!MdZ1?8?V?gWpJa=IST:t[$r?p0EW,)XC8[c]`citiD`JUlJXNRTWg`sRPr5WIg0M;Zn#AtU-bHLoP5NZke(2sh/N^n>e/>%aZU@2MarGH7_u=LEbn/ErW4:EBs>enBgQOTHo;'^jFK'^m>.V(I[,I!t9>rP=^pilj&Zn,k'#O2DYZhm;$u?eQ%Q$0G'Y-5it&c<6W:?2i$Y^Z6qS'CS9VfB3?D/-Q&POa6*ra.KUB,QdlgQ`\SppH[eTN5!,,l9!2@'an,Ssfn%eR_&nqp;(unLiE.61+[s\-7\Gh1#jh(;7t=&CdG,J8i:`'P-^"+Jr,k!sF#A5hGgSpY@C'ZdiVYHTUQB:OLd!26JY77nLe/8:GIa+Q*(;&E)NX[:V_!lcgfu@O[IKS>G?tLkAis\FGWI;32p=EuU:iK:nRFKB!?++Y(nCj6-bLYeKP\r#F"R9[)VUo@!IDW6psF7acRFB)otn3FOe5T&njXhW'K#0_2op0dKMs/#pt5n=)rNR8U2K+2[;U/B=9k[\bCHEd(M;lnaWQqok7.7]<0JZ0LjVt>I[e@QC>UE>RSXXqoDjuG.VO(2?Y`A"Rb]1Q.)ct%u^Jg%rGXcX7'pV:l:<"")SOgHh/3!fW:m5S=)>n5LJ&20lYO[)Un%Up3=0nQ?/-T3LKNr+=C`!d5i9,S&eH9&_8.e#KI+:.&hO)M_N"*'JD`8*.kWo6bd%D]a/D!Y#p,6;[8V[Wf)?m'+NFU1l&Wn%A24O^1cg1q\CFW$mijB*\G'?%sFYu5q+fTHKAsi\*6@o^W6CYen_(mW1_X7N%-jBiC!-6doMV-[mCaHn#fLtLnJ_JPf]^_ehU/t^>B_BJePaG-Z_sm9;+B_6gh)Yh+@A"K?DRY9WOT_s/&LU4%L6`VU'M+:#TW,fkeloP9?aNLLa[!.!%Ri-^<04GK-tSD,hV-iK%VWPGOHWAMd=8]_5Em`@Z9(oU7pR25hfh$3QUXFrTDW'gs>q-qYXiKT-C9%nk!WHRiXa^\aqr*uq'LlDd(HqK6+^L47V,Er^QS957@[A)me2!GaR,Mt9/#Dd1ZV:jAdndB_U/I]+B!6f!l4olp3hK=+GQauQdUI-e/An2Y`:)E9K7n]NPc`N%Lj>59ZT=m+Y>\hXQp'iGT#J/!qZ%#>pGG(=na]:i[N"jAFZR,V/c#RX!CPff.[7QXCkGC!@th2]Na8q:uU7@Lh&!qff_1*V(ck$\,eOt;1:`$glb6d'lug8Cie'cVkdo+EE*fbb<4"tCLf[ea%>,1C=>:S6P$D*&u#-j\lG(jQ"p2BbQj_X\h&R\J<#258?]B$E73:>]\k//j!02&IdF>Fdur/W-I`\N8pr3]Akk#FNHR_>W0C>0VKqkLQcakUYb4]+iFjPg6QJ(1(mfq=G&&W@lZ5VO>,u61ap4.q;SA=G&iR0_Yq5_1.H!fR5-7qKKM4HCi)lR[#TNXm&l90kmZh-;rp9RR)96VPXG^s<5n%'.d`0LFY$:M^$Ggj);,T;U[>Co-i'-1)^GsOUr`;8L1E,)]IAV[RGqmAgOH82$ccc+sjXlCg&E%2E'4,7B"sE`ml"tg,@Tj7^=NgeklE$5ZEQ%"6gNtM[dhC58'$iL2*_PSR!KO:G!,4`Tid0MT]"S72V#L"6O48f5nJjPVXo%"#rb/KjqI;=4b(CEEk5Ihq[h4-70(8OpO(R1H,RfF!Z2o.$,G0@]o-[Y>h:HuC5B/+AZL8RI5W[@5`qa4`3@Er[Skg`m?2&h/=)2FKs>+1C_fpq[[(,H/Yoh/TX'a:\LitrWRl1pM=@XEb52UO@X*DuK`L+f#(jasIU?;hqYOG3DjrgI!+@JOM!)b8PnZ_KDJFTX7*dCob9DX,+i:sYpl9)K)@3d6\NIiEJ=I\8[(`%c**QL?8j+L1kp0#f-UGYpF3EI:XB(!=Ac2pn.1FGDbg6*$7#b.$#GK+JNnlU[a3_URg*7'#&P/l($E(]%%Yq)4UKV[UOWX8D)?oURMggLR7+3tVfn\^"[oR_@M.Oe4+O;6+VpP;-Yk>^=C25=\>[InBCrUFW6-GYS!,7"=un^euQW[ShtjQZK8OP'lM8)^Kb$_oXH$[c9M%?UmKkO=I4I';bilL`CugHTccLpa6dI*hP)Gjjs8=5-*=*bOg..L.$j>&_.#_1+5^pb#,Mq/?H:G9%mHaCGN86C20TOB%Ej3![o7:*g93g$BYb*8/+2oq,()D+p(:bp@94#a+4dZ+SMer5&r61dCuc=RG3Q:,cW;l[I7ia20Vu8>On^7>X1L4WY7*)n+C8UMb>1S,_F"H/-`O*K-Z[MM?-!jVG\iO,?D$tMENfq(IC9a6Ni!3UnePIetiMj_c[RmWD$3J"sU9f/1Ep:$u)T&8K"6/"ZTC&c2beg5o1*FD%d1bn,`S#2.+3##)\;l1i9\T.iODTXmE;!f3Q[UnB$'S=M6Pe]!9%?"dEC'<+->I5l1ZToK3#Z'hub67fLP(BALWM62JA`4,?lKW.^'QaWN<=-n>-H(jKHtF(&"oVa#?Dq*X3cKE;aB('5?SjJ'59FhX`H[=0/%07PAAI"FBL"TcNdSQ'2lP16elUjV?"`K:^N_n(DqA%.N7=s==5\m#M%7-ME^euQo*6M2XNGF.6_^g`qR%5KF6TL6UG4eLE4AhPW`.hYBKF*u0!sd490L]esQQ**UH"/';jZpY278ON?7R8.^8KpPiPEk)B0b).Y[EdZcX'nCT3-\@u\d=D__rd2%1U?9$=]1WsC4AEKE&1"XgGI=7bht0B31Nt9Lb^/;J4>n4%b.ab[JHGc"bD:K6mCZTLk&:VOZ61nT&tX"1KTZC2T7NLK`V?lX.0#)SG6TBlCT%"Ge.#PSo7X]5";.MRF-F+*:;-'C#I=YNnVL@ZFBCjo*-+.PI2jH*1TJ?Vqcj;2r\Y#J5Q/sKD$7$&W-.KMp\&;2,:bHX!CKH,g1!k["mck_5R0RDV51FeP%Fd!kn9s]YMR=JoQbH!ZCYroEc#?E5W7'QmtlOQomF]MNqjrIr#&Po(0.970Ja3^,^Bf2WnS9^9h`9l`]&#^=]hbZY#'\dk9$<`=e9!TT6s!!Bu216:opW+?C?q7g7PulZQL3?a$(12qM^t@4hb\-h+c/p\5AWKrdh"#>$)L"c-k+Rqf]^NTK5nI9dLc^M6a3.#3$!CY&.["`bk-1b`_d'G0(i5&Kdp3F`U,RGKQnN.f=^J)1H@EY00!@$q_qkU;TbkFpng>h%4N7U=f6IUa-bEEp[t'CW+c8'0L@t,m/hl,BTddB;]/]j8b5r)T_94B#854akKfEF=pYBn>IDP#IQA-YU6UJ7K>3N)l+coMY_^7F5hRe@9"DFq`"%75'F%3*?jdG'i?IW][RohQM.RkeI0T_Gk`,1kDh9:=q4D#@X"3!VWE=P90g6Q7,P$5Z"L'Uk8.Ett9-m@Df`&S&+?IQ+SgX?Ii3^E"Up0Su'Mm=YI-qOH9W&5J]WhH7?'bg_V+`3E>1>9rCYQEd&V76cZ/?UrOJ>7'+Nrn^i7"M9@+G)j$A.I3R!6gUj^jZ#+3N&CRU,Q^RE`PTC:USJh#22f];KFQAK:6>Y-_T_4q<$Nk[+VnZ?&DBdpSs`-5l(-hd",:`>8/!1@d[1liW/A.,W)O#R_?qZdSJQP[fY\DD.r:W7)uHI@+A0WgIj,L[A8sX'P]0K.qr!b$m`X@F<-eFrVafjqV"8#Xs?u^D!o`j++$4Mr*4k,FI]nX*TqM>bB1q-=L<8e-tsqu3E7F[Y74:JbmuXgIa34[^A$*UY3rW4MO@mbm^=b9BVbhK]M*X0/d_ar>d4Q7eY%RJlH'bpTYjY=nGlZfYiEZm-SSpuDJ5M*O@k&"7!dttW&)I39EtM)@B/I\#`sh@D%=YGZ,^\oXs!>LG"k:c2DD<"+/aCUA5Ea13O^B@;A+Vl/#S^Ho@qd'YJP.LfVp:I<1)0P_Uf(A=LVF]5o@$Y]dH1?IOWA`!&I*'Walc/AX1(e;QQ@tO20^Wk@J"UG8!s$hFue%1BR(gRK[-0D,=`DDp)B@_"/a$E56;15Ng5+GOGpJ@3XSELk,?[`ZSW4i\27jNmpRM_J!KEanJ;-R_B?o$::5b*l\VOLA&Hgp1\WP#l!j$eBp7>+9F#D,7qYL3BFMTB1'pH?&W+#[H3UT`p*m6=VW2\OUfUZ=FnBt_:eh^mDlN+Zf6XVQ!UQ_-b$Tl6;EUlE_/ZsVK'F_%=qS,-&@ld;3TBbOqW;E=>UW"Em1PmRV[J.rmY0V"O'R+ncLoS&\3YL#V84K?AFRB4YA<9FX0j[2+^U:P%')-MMntX!d'm8+d*il^Oq-:GocR!HK9fKS+Gb[1q.9Y3$O.:&JPq9^laS+V@nHV4Q6btE6DWI*L.SjT7F^+]7#Y19LqS\MAGAr*6Ajq+AD$'F%9"Gj2L'98k]i$mJ2h(9dDK;!1_V34H']>6,12CU.>Ms&^M8/,#/d)RIS.1T0tm,@>=_iQiL(Xq#n1$TTkh;%KeqF(*o:T0jH!:b*T3"*:W$5J5g/#RnQm>7QNBt*B(5cHoQ6AYr^gKY:n7$m-d4&R?KM[A:&/8_SDp$u<88-!EkCbc9GooC+Vn'`#C?et;f.tkr4&f4cA0f)+MipKc+1^p]Fu!LAr@ns\A3dV#Wd01k)854Ckl?+VN7he]ck1iT#6lmRr8dRj@NEFRrm#aEQGj(&ep7Rc;r*`-,\/&T.4Ar-/MF"r0>h@.S@ql`qc!nG\lhFi['36?_'eb/ZXSB"2B5j;_iI.<\it/JluhsBjX*-@kQN-H`CWsJOsJ0Y7kK5FG]n#_kYi64;M"(T0RX/L:X=_.D'%s%1#4O&T7*RjWSjND1LK[Vfe?dhmtXhWqm(Q&q*,chgLL!)m%3P0n29IXS0pJ]a.6,UG*^)<;h90hr^Z?4_I_%DcV-AForGeTO]Bb/#S:tZN1h^lGqVP9[ZAq'*$71>tRL.!QbbEO#g%M&b/2D[eD*0Hl,<@UEq:$$Uo-%qf$MZ?pg/_M>46^6)_n1l:3?d@e5A+G+@-SD)=@1&\e+4j3`@0g"I_U-2Q1Fj0u;-B5!%X54pN[92K%Ud'*W\X;AQ>#5^bn$(O>*mQ#')K@0g%F/RtdO'QNkbiIUar&L^bW_'-F?$KftF80bpXlH]X`/p,kl@g[*Z[p?VU,U4HXT[PD>C'KNX$aN(BJN4ZdqiKY-A*Kt+R\Qfm[dW:=@1j06M&6F9)'>Pf",Er1]$Z@DQjsQWYkk$Q;7J[nUqRZMgC&rYRMenoH9`T,(rVR?JjE/m+$.XVa/`_$jZPtDFVK-=jind)?(=F/o6p]?(?`&ukbL6$Tg\@Fe/&\oiuo&$/ZY?)P;\Z)UMOeg&/p(]@XaUk>Yk_@,Xo5AOs87M9#Y81#Fl;FaD(.Ce]3_L7LKS&p+3/K"Gc,1-u1&YGTJCR5Z!ot)CDNg\#Cf3'@MUgAue%Qe^ELkf`m^R`?ESfp3pR>68Y6/A&U@8h3tlkBf/@SMN#Wp@'WcVg,(b-gSRN@0hRX%80ZL28nt/=)T@G`"#a"c(o`,+NEJT61L1&f*_i5Ugm^LLl5nUblRfNqKYWh.:DoGk0$("!l7?s`2Nq_#S-eF(7"]dK#9e%X2YiG4kloZs&VO%SQO0F)&Iro%4-L[b9rYZKbW%p7Wj&g9#(%U$9J(Ju#+*5q>tc^,VSXD$+;bQo*[S?YSm]5r"^FGp2eq1;.60r6h_^8.K8VJKZpbd&"IW2*<[UJ+W]+qQ#Q!YZet(UD/u`W:g;cTVutVW1kNArr3b-Glb5)9O+Y*.pMC4O"N+ZjYk)gs'u9Jr9AQ0(R&54Us\UDET$^VN)Jd^FI?-1No]XBH:501Uc<$9659uaS4#STX<7]'0b-mkM>I%9ZK?P"1_?laQl8J=ru7CHHP"10=cE-s*]$8BMtVag8OG7:__Z$7akuUcJO519!NanGgXH27Hj8U0KdR)V($Ja&U=;-GIL?;::H1>9R-7#SpXegZg#1O#&7SceLFN8LZ#7OMO_U+4l0mSgRV:5\DX-?hD>Ll:41?@9YS>_O0VRma58m6C?R^@+d+-#KV6p)@j:$[Y@pM"bCN-Va_F.089BQ\ZngHF_0%`QW?AA7$a-]W5Tcl0C?3UX^87rGVj!QqT;k]&r/dS?lnA[tAFer5M`I8A)%!aA>%/ns0/95ECBJOCQKI/fgUs=M6q5hs_pOM,%O[mfcYYq_DJb=9D3^/[A.a1ph9Ztq-4QMH=)/tg9u)rcc)`V/CCYh^VkL#91\F-V8bQYHFZTToD5k;9\Z^g'n/0MmqJNC3%8(LEC+?5@&-t]<0e?e9G[c>b=*bH5Yc3H^lF:G0cO9.h)NQ.4f\*uB#-dZZ+Q8`L_J-/nd#bJ2[uhC]#@'W.$2Hs5SqcFH)u6pi8p[Xb?`N>f2UBO$Kc$@dl0Q^6Pr5:>3an.S-!@0L]3r#qZn[@*jLf47WG6q$5-^C>_K2qQG[O+/ZE[rYsh$XmWqY^N'#M-4ts^RZeY^)?VuN[O.?m3FP&S'C9'_0Gi[A\;ZWs0Bs]!7=r;*'FMo>]kEr3(eg\@-aFo3c7#2Q8>'.c)mAm'a.u@,e=k\!T3nUDWRa>*HAP$@63nitlA0E;)i9jllfj8o)XnBsOA2i,=*[-B>dh/AF\o,iZ^5V),_8P@af>c_r$;ug77YS'33XDV6c8>1gj.?V2CHup7Lle!gkW;1+I6$J4f!q&[3qNoQlBang-.GfqrOZIsbXf:)H8[kJJCCrkAg$OZa\3;%I<3?`CguBp.Kjs6_ME(h\-Kjn5i\Vu@;bn_0@3#8CVpB6oD9K%Z%\3W#'-7j(g"TXE=K5U#_mSQ`bI6Eh.)n#h]8:RUr#f\FQqPS=[qMc6H<[kJ_c!mehm^W78_kogjKk1<60=$++mg>@o!I&!in$,>?=oH,=E@pKg>;^Z7s@@$$(_,?NP9CfQH^Gbd\%4gBEt(@.iTo\M^%.',YeDeurp.fi&q(9oWLIX52Om@$p0V*n0`3mPrrXATBC)HJ7D8ZY*R+_JG&:EpH[,DU?8S128/kZUm;ZW\3boJ<$VVpZeGk]ERK)59b?]VKM_a=j2752#n63f.Ouu@L'cR:[4$70RoDkBOL4Un&@tM)=sGJSAHI,%G^Ab`1R@,hc5bqbSp)P,EoW^OM[Ps_)\$C>e*HJ?h7\(g_bg`q3hVka)i&]eb:8U10eWtiT$p"O60f&0YZXq_iT*i#70Z$kBaujmai*ol>RO[cN.TH/#\V?/R#$SujGTG=-__TJL0N0'd(Ls8hmF,rm*F=]6RQ.m:Pk#/p#e6*5g[fON):]S+/TY4]B\"Gs9tu<_2[jJT.?W#SlJ-BUCn<\1^n8KUcaK#\-DZ/ClA2'FsOMN:Vg1FUf'rJP=L'2<_p6%J]OY&lop%>Y_(^ajiba<]r6tkn?*3j#SP3'^S*Fg3WEd(lsZ1KuGVgj-Dhg0[mD5e.,niPVo#/!u)0Vai#p*'8*f2^t+j-RAj4e=`!(7_\#4<@dLND&@R.hW&YhMkomCplQ"=f'3LhO;p/;`D+=s2$oT]!'@GFlD3N6OXj+aX%6@Ii%?Pi2DVm"?&,dj@atjK?WNVAN"Nr4!78Z['S/%#k;F:P*;OVEH_TC;dV@Me8AN;G!l%]#-90&07m0J0C[.+/m=!T2AL=%O'&bG"kUn'W8d:"SDSp/LZK/[8R`U?]TADKd%p-WbE+j]U"_O^5,C%SdjSJr5sF*`#1l\pZYa[s1Sm-V5asCPX[Sd$WCW2m4UXEYQm%;bhrl?8-diQdJ<4ah`m`F$8PF+O.0.>*OQciA@RuT*^HT3=%siEt0CW9djmX1-pP]Shr/%]n4q.[E*0H(/u81aK$`aaQ0UBB]k:H:)e'7472@'aX";,-mWI2'+'c;0,7bLr)>79EgCJ/Qat7m:G=",*Ah"ec#PVG9UQSB7>Df$:)a'+4Yhf-$?t0e'6GNl6rS?u^"/"Wn56T%n\MNjd8][;%#r*,1Xjgh#W8R**duHc6X?P7'Q[jS1N<=F%2A:,9HO660Y1iC'5g>I_Vo3aV&d)rk$]n8p?E%Tf=Gn;X/;D\HA8;9VBkoha$k&;1SN*ZE(I8Hmp;,0*(4@A1Y$*("<"J_MM)Ekt2"ldda;"E9qH(,hCGP8k/P0P%70"6:+5P+U\OGMKD2]Up7uuj9=/2bM%WnQg#BQSOM=3#!!;dEos+,Y)*k=DXF:#c>ZN"`kL^(5&97;up`ldN\[i,,P;U!"Y*aMJ(S'@3h>bTVs;1KMRSF0SZD_#cg8qL`3Q,@J^th4eG7ltKg_PO\F1_bXsd@muO81?tik%KK<>Tl.l52_,')Beu!Y+N$8!@sT[&aUu$>o'H2h/gO2HF\4>mE+G5]"IWlDC7.32n@n"]:@WmF0iSCp1CPjW,,Nn^Y0&!eWLE1h\N95`4O=KS^-O2W]^%Z="?,!$=]JfW\;:6`(EJP3=Xol$?j(AXgJeTs-JH6jJ!F\4r#0:ZdI8*#)6l^;UA_"Xo"66roOXAL<#+Kch9BE-$Yfhkr_^*f`7KC97e9L6W%,M8lJ33Di=4^r6!AcjQWOHB^*[6s:%PJNeo6$1Yr*'^>F"G[=H&c"P[d9\5O!jAJ8iWp:5p1s9nq+q(%jU?mA@`DHPUMde2mZ2k4t!(*XAi1fWKGCf$]IS#!FA&6Cfb5,k/g4T05B@ZWSY"r]%phW%l=C$+!_=RBkbetWJ'.u0""uXLFZ%Bb/k(!bLBTti>;R@q[g="Y))'qjXT6Is7*IWB"XAbXJ/]VnLb^GH,@\Ur[`+-[oXfN#`"tW:4*\K]u_i1oM4]?qS]I29khYsC@PB9D((o9P*X5%H;7%1!pA@bRcpBrRNmR^Gh<#,Z7Zb`q4hXE25m\g?6GBe%O!?D0i9<-G[fWgSU<(R9L,%\Y9PblD%[:U212Dc.kO6WM\4!(oTL9l\mcmR()+U+*5!5@%.=kX;6AY^U79(\l)%Ib7r8p]>DghA869*+br>b$G@As_l1'@kP&KVU-2au:&PAbHE4_a'd.Ge8#>GL%d[I(MA[q%J@nI/-#bKO'fi6dN?#r&;\ie^9Q?a=gl6o+i_:rK%J6O/i8#B1Z1mJ0O+=92,B'VJPgXT:gR67?R]eL:7XCE2.,qG0ZJd0.f1/4EkTelXb5IcInQr;S8P.'=TO[5'KWLNnLaR$[\Hm?1ToTan.tWAj".JL!,_Z">K#J@\p5jPeO/E;%1l^3uALG:.ZgJgD"JJg:IGSd1j'mgG!6PFLKuLK9Img]RYJ?u(lZ#r;GYM30(jd-E:TmkYG0T`QcSB%J/-G\\ET8I8/3K0+1F)$U%Z%-FMRLZ_D/Y?(,BlSn!%@H5W'c%cj*gbLGMp33N/r5@J/j5H+ed>6(hR!@PS@7;&3m)]fp\9UD9VMSq!7F#0'f7Rg.m4kZep_7/NXP+bA,MB=_B-@]f5jfll2XC.0\C+H/d_@"+`XTo>qmlY$Di2p9Z`XF[4R8q:"O!/s`bb6!Vb$ih]V!J3kHN-p3/:B?%`SJhKL$RN_YN&HXX7$9D1OZR,Gjb7:q$PNEd)lCM]BP(VShOD&teKUa1dZ[D=R?CZA#U1$5?s;57=\QnH-9.)kBZ:Uh3+T7G9)ut!.7k,P`)"CsXk(/=o$)!9N09L[[A$7#P?+/UXP7H+#o6&V(d\N=cHgRW%d.FiRPH9b91?9G,a:`OpHJuXmeVDJA3De8@+L%?CtM"*lft=G,%klO?/t8+`[]bGbT0EOX)r7.$E[)dO<*T+-:P2'g;WXSRer>7>1R;mKW]hPV6[`8[PS1+)FF+"[O"A7mVZ(-pnjd`._T%Kd$DL@S'4#-n,o1^0SbT`8%F9g*-Pu_F+5"\6@oWQC="1J$f_5D.1p7\51PVY.N)C/?M47/K0Zu!VTd5R@"lgZ?npdd%mWjhG-DqL-gL3<_OF;*E97?`9I?@2:R3Mp4aI7+L@2MV>"VIQ3L7b2UPHP.`I2(Z-RMJWT4Qc&e@,>L`D)FKHLLen\,@`K"a1OcSOf;++[*!52L)%pb\pFPQ,_1IE!XoX!5^qU3PklJ8RXeXn_'(/mrcc>X>2MR6c_]BC'Euo-L#V!.9F-X"XX15aC<6d!Vk^38l.p,KP+,UC=XL#RgTAq'At*J2Yu3&gYpmC5fTS(tBl)9.2JFVIX\(YeCM$GPhT"nQMJ?j;au8+%kE;X#,T0[Y?"D\eBj-g%Q1V65gKe!NU(*T,Bi(&#D5+#*p,eZ,>9U;q>cP=l/Sn&&BleED-$;fm#p?8Z%R8sFf)Dhu4RG5I^A#a6/5OoN&=C'@4M!#?1il4?=i6IAVeKN^:/@nS`)WUeTo1ouXCK,''`V#PfCm+93U2QX@WX'U\q-6OR#@MAqO=:cmD;7>5$eZFa1NG=WaY*Q2m(>AIr[^fTh=J])YD1'T/]OKE);@Nif`n4H=gB4WA')3rSt19j9Jar0/<2Djqe)YVY'@i,l=3`k)q_c;PHQc?8**]t[l*3A72qV;?k!sSn8Kc^Tu8KnaI`"3>sK/S"7hsRp@>Mk)C&D)*iRUe-HP_OCHX4o\`=^1M#t'3a?XNo\Nkm0?V8%bbVSM8Tfg,\.c+P-#j=EMT7%\T46t]M,p%IcCKjK-r&_%tHc&pS#)H*?HJLG[Rde;lH_.i&N/Jp3f$9'ob_H#?4K%_QAQ44o+/@B#X0)[o)LPpl[1;#=Mu&M:3h(DS!<%kt1Z=:\tOiQYK6egArW_PXB`Ae]ZF>+hh80g0Y(_pdspE]O[>+]r0#c['rg"_$F\L1<[;754;![]32;eSC0M]7MM]YoU1M%6GCEUV4+:8`*):eR%!ZTmB6:V`_;bKi8.2!pn=oS%Z^RYhF#V/73gfKBuO&ZW4"IuQuUS3BhU=hNXq[ao]kS_2Au-@Z:,]beZl`-_eRq@VoCd9YXT]O&fD@q]i85J=5)8tBNBE(nQ;6F%)U>0):udd^:ign"'05PRU$qd`''nEB(h/]JOO:?eY+JVB']kd?T3gln`JVHG,h=W`[1E,`%e?E'%J-U#t-F:'?1,0',W`;[gqI2p9!VmEods'JHh&Tdq8'HLoSf!k*bJ"F*CW"/*s%M_;5g?uuD4G<4^90PMiL*'\<_YjA:Y%72`^hX-Y1ZX++Yf(p`$)nHUsr=f1oC\%$4u2l+bMb=6Q%;$ZK'3?b'8m*-L`W5-O*u&'Q\.Q$8W@(Dgge8#g)UF;jPQTVO%2e#9BJJm5X%_0,;Y6knPR"J4r:]\A25\-qGN2)3d[W&_QQAkNIWEDHD*Z?t4D^a2$gWc-J)qVPNB4@*Fh9&WoNsAl2uMcko$ND@)`?'WI2pn.1$`5493biZPsm#J1EZg)lYKJ(erFlc?tmcXMRk89E6smB/Xh?\blQ]TpcFAgG>l&'LlrpVbsaj,Gi^"5Yt$!Nd!4Ve(XbL^jJP3l?^%EjQQ-o%(f-DPU2OQK)AG/1Jud9$FDs5!s,!-5j8?ARKdXH(tGQk`3,9cs4LIHI1$q2=#Ab8qIENgNEu6JH448sss\FFaQoCSaI\@Xu9'Ts8.G\?/;2C1pe@brKa^jt7;9RUL1`9SSu0J;6H5WRDGn4_],T+KU[!VWO(9V5AH0\/mlKbonX9(>O@WUP+.P[&#ohnHVZS6-"[9hOp[#9]8V/,UV;bO20%QJ_]M=0JZ,ekBkoTJJ"\o(S?fcI=q5H[7BF51&P6$OC))q>:7reR0YgSD8OTZm^l8I?md8(%d`fX)L=u.'3hRYiLt7`1^a6q+5lLB-Sh0LqQ8(h"AfC`6t)]]CQttK+\FN6-SmBp?4!h9qS!,<_KjcZ((kMF$%6C3Sf]'F5$,@sG8RP9=Z)ncCh6];B/@.+7?Z08]idD5$iWg`6)us'pPA;Xf$9jH]6)n\qIcKM\=/,?2`=jS\^#Vk+%bHN"+h`Oee082IaV8Q/KXSa[6!-O`gKgIK`%6MZR@\]bZQ$at/#:I2RSb#i@"nbO'+oam@8'@_15%*QID@-4OEPQ6JEbb#11(+-a,B'8[,)uP5s#V6NotlIC9";6WiE)"CSlo'csc5;&S*q5r0EeH:bDP+%PlAP@7CikJ`s_N,_RlteL0LjH=46iAe,8C`N&L<7s8=m$`g_h/!XjC[S8C?NJ`U2mZj'^e<[R)QH?LM>NK&NZ)r'NX[n5K0bj2=,9RSSplI8'=A]bU"B$BC<^<+Sdf;$LAZta3\YiDJG2]dAO1rK34>TiG&h*-"=hAK^_1XJqQ`HiG&H`.j5!b83O?h#iaX]6(W[q:R1'tf$-ThgY)`.kj5aic>f>_`B!CN`:$im$J"?.5`$BWh;2KB.>B#)nm0*.Mn:f*MjL;ZC)[;5P](iKDjXei\s`Oo'9=C5Fc03J5K4&-DZg4o"54>Sdu9VCErGg6X6$kL/lKonue7$(T*Sk8Vhogk=<)K.7R`[@=r@:(2PocJBZ?3J>L&3S^Y/D+X3dqQ)eVjL(Z'g\=,eR4^!/_TJ+GObIe%E!8r`jH9bhV+s7u9!3$5(=HO<7M&`CWQ!Q5]r;_W*8VsA8jM7`K@5t3SIR#ub-/.6.o'>i?]A:5S7Pilg<_Wl=USu=]:O20<^"k((aVC"Y8mj"reH":Jn+IIkp7LKr'fGSleB>k2TA*nJVht3Gkr\L;@j30i,jQk3!AGBi8FR2]mLtmW4J?@B*KeSn-c5_#)h!-_)RSLcL-e.g9M[Z?0RU2h%!\m#<=g#R=35NK1=%MPiq2b;Tj2!]1.SSNd-+*lRBdd[AH3kbN#u;P`'t:?&[/.PQNODT\KGIJ;/F+8/g%h]n'Jjp<=85?JMi^s[Z7Ei0OV,F[7Lg=72"9j24#l"g567]Kh;M8G05L0qJWsVh3<3L#"@?g8.9LkNc4LUDkA\Af]O,N,j.bC*^Ii;ZBBgWWC0g&u_d#\B.piGR6dqP=(fjFQeeN5:TbJO5SU'I\bCJV:ET0Vuu"?ni!r=@@%\$#eZ/$RPm=Hll^._B&H^"k>n1g5kZCK#.'_J9mrq85D]*Ef+R_3C7O;LbKWPB1#!`@i6,L4j_`g7&-h>@j@0_:9A,:P&iqWilF&4`@\pNOm8rQ64PRiHT;ut/Jd&_df"D+DOf$oRc:^%.;K1aiGTH>HD*8(O,1r48g!eUV6q4"eH=73M.BqCqAebFNiVl4G&M6)14.J8>CJKU6D69QO4-u/nSD$l*K:tdI+W<'@19>Ok9BsAp9c!'8;1NLjL[l&&(dniiT.nGm+i[[l(&/Z#Agh9gtf4\dT$7oQI&J%3N#Z/N5_kJE:!XKPa(5YTc]+Ar_%EX5Fj6sRrB12qh4>N@'!$M>KU&PQ.%@afSVbo5U\2PoU@"*#\Ha4\f_iGb-N`d5\Orth7\F;blrEeFOS#etXMYIsY]L35GpI42#<>e.nYH,:,k/&u6G8J`A2f)=j^$7ceESQkd@_dg9P[7<=B9kqkCPCFbJe5BZmW\3PC!"W6VC:E.9_P;3K2FR=qgm;uBhP#F2J%ul'4i#C%6ci;3R7$\5D2W5&22)"JGZtWh_f?&0gDfm3NW%b$&Kkf;7Y]pe(hnsh[7o*ALK+j1Y`?o/4)]k1g*.?I66(lg27'ufTo"'s9]QRKWRcf0[QO+[;VPR`>"1-igT+W!T0*p6=MkTA.0-4>"lVj]hKb3R?]#_@-PpV"Ag"ai8bP;+AG=9sD]<$E@@]`.PFT/#(UYf4N@e%ImhdSf];L>*dnHp\$+Jb->P0#dn>Um`$85ZB322s=?7N!Q+-(?Tb<6!WfZVIAqaAcnf<0Ds3V6iggg+6/@ChkmS)Tc_u#q!$F7Z!+9;`:+CeC/-;=Xge]#QR/D;S_@Hqr.?'6kUK2fC+"u0b-<"Q%q4+l51&s,"NpaWfW*"7;\5hU9,q(VHVOG9lU5"#^s\V$W5/;J-4L1b!_qP,@DTj!E,iMLaC'^N$qjRP!br\:Y#?WD#Cq13bXaRctQT@P4;&"^8FdboYsWB$hI=g*U)GnkS>0<1!O(tXIW[A":noH;e;\acPrkaOJn,$d'54S#nbiWdfK97Ke;&[9"b**`O>M?>lDbruXb65-*J%'tC0U,h2hNiJ>^f-1\-]$FJ*G"H7%p'kb,LslVF\7CTcu(n(PB&2OmZk^N#0,\gdufqjqUCAPeD0>'?or_kirm:s2$8)lBQoB?Za0"WU/E:o"Yjc-e.AI!_"K`8o"jPm[#fbcTO5a=?kL%9>L5?^<"p/m;?I;[5S'f!@KE)J8E&H6eNpKN;b;Qn4Wk::Y\;6^7\6b[sg$O<^2?EW:I)gYQiE[CgLW%D=!\8a$e9OcObmf.2(e@5.iKupR*(WBVlrmW.)7h'PqGUOM[\5n==ic3?EmXSd+Ult]L'^-'Q=T#I>Em!l`KA(tA]Re;+K*%!rZs_M:dmiqL*8Sh`_M*#C%Ap5`9<($-nH;a4MORoVFq%K9^!O"d?_Rg,mnE!&*nhDLk.TlYU30M^_%AbUG#4d5Xs-9J#NpY$!J6+^*PZ>_ifW>\P#d7:>k`>B?5C("C26Jt/,6P_p&RiCHkI8n!990bfMt.C)8B8e7fU]W6b2T+P>QW(W^'^5VVM!q?HEd=.TI;_\cWGrh`&"E7:5PGdg>-TZXse034,_ChBQc,E!`)m>f4GG3B(KS(HF<("W)+pm;S9gR"k^-cH?ds4oI3jgRp3'ahn?7cB8,pQJ?7*2i?>r*Rp,f*YFk32))UFVf;ul%X9:LqCIX(DF*_\C9b<^j'gQorG''+5k8k5aKq(PYQYmY2>/=-14s>Z;YJ6Z]L2Ubm*]PJr`tIL*`l$(@b6MIRJe9MI_@7`Sf\s`O3$GXP+aj/K5[n=E!(FiS=Wd,Z?K9-+b[?a0N'4J,f!9"UpLi11m]XRMVE[Il'Pg6lg+b4`>M%pE6CnJXcW%1.mKuk4Enmf!Bh,XRshVujFF.e!$`F+f<6sK8^];m1G)l%=8DDDHrL@JU+?R"j+_]i%X[A@"ipjI*e@U]&2o;@gI@O>t=D,^FB/7CPhqn\m0@S`*7uF*81:-::/]A_NR_2\8P-GZ&UEL[Z%!^gHO5kS_F_RbMl;,h/%c.Z[9%'[HBZ-#C1+]Nk"XG8(Zd.ER/3gDZYR>StZU8WC/0P)QA:.k4LB_.?#FqYjB=Smh2DKnfUZ$#gt=kp6)M"jmh_ddlco'h3KN'Ys0AR]._E)GM@8_P$gGp@o3$i_8RZ?dCq3X"din+(9$?'h2=OP#NgnJ6Lp=kH3T/;M'31MZ"k"?`T8AoNCqt7'%Ye+UIn*9#9?Q_%b1*[R]^9D]^XA:78q6di-DT]Z'Z&KaAEW%(X`]<>f,XEGfqJdt;3PG80?D2\C9bcsm=a@3Z>6&gPIKJIZ;N1t.]O@RA'B[ihBu1*Vk8s"(pUIU+0*=#:^<%'m-=R)=3IRu"00!^d3_@6m>HkG>(1oEb?QDc9/i=SdbIG6r8ET_lF;%].9bnNjp&j_@r!A3!/ap.+imCU0\H\dVD5)hSp.>R.\^id=-K$NqCJ*u(&)ZJ9FU/Mf1.:Q=\g6DF%T*\H8(m?LaF/[?PQ.YsVf*58c%GVS("gqrqo2_#-OJ&AD%+B-2!3Wt;sOTHdP?`Uu.M,*5l48MbB\:[-oK3?$8P+)Lb+f$EBAEQ/,qr&EN6V3mkIbrpa+F!KmW)\;jV98,qP/F1&J8X]Wl\JT:RL_pNf3q@+#)LtI_.TGD_t4MEa(F(7ZI\G'"Z:Zg#34=YGttg]`$pim,(OW'a<,Vs%IrB1paKRj8l*6R`*Qa([hJ%%Qo+kMVnl'o3QYUqOkRV=(TjBXg$acfh8KBgWE`R]^)HV)$^9JM$1X/8H]r>P_9+V7/X$%7I$$>OKjF&B4#Z(nE2.:hLW]d%6D%OBgdW*PuDEtH;OAB#;3A=p5hfo(\-*aIM]]t$g6_E'(gP$fR:E*DF5a%4\Mr?MrDRhse])YJ7EG!qON4)V($i'gETaTF!_aW$.m-b0)9j*X(&5B9)Y#;lHfWK^%f9U-@l95,*L^#g0I;=l64rNkP<(gBJ(`?0Hl+bE"9ZUOD@n.8LDalI(4k8,<&m_-OZ6R"WFOBAoSF3A">L'B3;*Ko#-Kh7kV*$N>/d0NaK7!j8.[4Z$u-aZrDTM9EocM63i;lM^ROGX#ooTT@b]QH@N;$N02e3si&E`0UBuBd-abDe&Llu,;qG-V9_puWpA_gU'DPRH'o?,^+QeoP8+ArSJD,S-JbhR`O@2#C_+?h3];?:G3NXJoIRKTp9-n#LsS&6p/=uduN2O"Ia@#ae,6OX.cp1[n71*@':"O82VMXH#+OYIPq!6c:E$HV4`:s:?Dcfus7XYWNDaI2\ifi([A:.>CLp)8IobYu%B*N5lioEh!G>Y9JRl[/C4B?0F(/Zm=LA9/'R40$j]WV&[fN>kYQ6%aSn%!RTnHGiK/F8\9]b%bV)j8!JR:sPKC;2PLu*0auF^4XnFin0GHmSq,tkg,?qX84kBdIlCE_g^EZ-?rHj;;RZ8P911>>PmdA1o[_5)l*]a_%F=M9/p>3NuA90:43X2%l'Rm-XV%XI[p9t4l04,8h)L?#Z;+"-@=\qFU=c#1G]So3L#(W[^5NcTTU`08U0!,dcl0;\!\\DgEg]?2T]05C5o@UDO[*WVFj-B6)^e"&-ALM@i-[#4t2U,Jg&T]V[m;.,Ffd1N@doqfVBU*of?H)MK]B_iZcbMMF:gFQ/.:HCZL&8VFZ+I1*O\5KZRR=\A8Fef+9-V-U?7H,6aP)!*0#Z\ageOSUbU,VmsY2=c4G4JOoBGT=nf$*5]?oSkH>ib3YFNd:m3/V4i]a6SM7OC+t0'(O3m>"oU-YIc5iKRc)!m.kb;$B?qj#E_&l9b$qA1=E!PF5:'$d>-_8S'a8AE9'c-?2$SP,uE6ICelbV16+2I.tN[?ltqn^naoXkNZTl$o>]En0M+=9,"0:m_YTDjhjs0];K9jLETcp&;mS>fY\PQ9^*=$4aAL<2o*Z&c7FpK(C5(*i6qrOM#r9!JD"c%h_*$6?E`F0J[$L""bBK@OCF_L'>GXZr8`3a?637-ess&@/RN>B1Y;l4JY.L%[^]s:OtQJf:]U$&1F"R?C0XsS@[7sAq<%DLV"b)-V6d`Pi$!AMm-D)@PZ!DO&#:6nP97'R)<2Tcd)[?YWEJaNgiaI!`!d91"2Ohc5I7*nIIaadpNjUDPDLtEV%"YJX9QLZ=SD7(W$NaIcuQjuE7;Af#IkCC,Wc6XX0h]e'J]^nu.00@,/[*Zsj_e."HEHA-d<3gc.:e.5sZ)"=iWNa(N:(0*BaE#27p2*FOKqV:YQhG_BACCF+biWniUg+kOQLl;`i[6>DYH6aR9o;';^*M/C.)]bE"?J;Y(m'8]$c8"#b8,T:W4:S-S[XW?PI=I%pIDssI#5MK*Xg>^]3Z.9qihM4'S#_O>UfbSM7,js!^IYCM3Xhq'?&/?el)egHVLG;XNH^G8M&nEg@Boi,XV7%SNr\#I(3.b8$R&7d8(*C,#JQJ@h[Gij&kUOo>58cIr:8,m+I'WA#/fX+o-OFU9$O;j.h/c>ak#ioVG&c?/%;Buj@M=/=Et/<^N&U+HA8i!4]T%0YDpFiE-Zn?(HN]c_+Q)o5r,/Ng7G'"V-E7PRnsEUhb1:J>&rZ"1=[+cd:SJ'Mn*];taKc.@K-+/G<';d%`4uQiPYg!Y0c5]]BbX)G8DoS_YdLTe-n\V$L*e1]5Y3Z*K'f_cD;;a@ehOP`Q/XAi%Hp`-Y8WlfF)AQoGpp,B'd+i$"X>:TB)E6d;Pi-UI/Yon<+L$BS(t.+G!gF65?qHuX<_+hU)AOFo0q?X@M#a4TX=Y0;66SWi"H+JHCFNsj,I7ICF(DUR9GEcLl_sH[>\e:Ak^14Zu&8i.CMrBAL%R-MT?/:q@Vh+,atZ9:%%V,1hU&T"0!Fk@0TteUf]0uWs!r>"=,<*Qq<$F3.Gk6e6#YcE/ggWF*AntMYJfWO$l91"N!_PM3drC)O`%J\S+)uAF1%c<<,Jko%J=I]J=[o-NT1+Fj#&lKmfSj_KR2,CA\r6&fbDN6haaCpB1X35g7*.W80a[kl%Gp3eF:kCqV/.f*57>h1+VOpgI-VU$s64f8m`/RMVVXSOMfMt*Edje2df5e]Hm[4#9,+>*aM",]bI>sie!;cDVoVirsT>ETdoX:S8c,?MFic!>)7]FD9SaT*W/V1'AJMRDT.F"dU<6=_0r\K_$r*Ach!Bq&T7!Ic&,g,!uj.3*?&JB)BLVhg*Si31=;<07*n+dYTkf3O[1X]6$+Z=G2]Bg%P#B&tr6^\\aq""s'XqY>G4k>jW1XOE@eYXqI$lB9rEs:/k#F@NY[;eb7q+%BC0-M+eO;q6>..1uOnJ+FF"-j1U*`'@@okQB1Y44;/JC/rQrr$D_h6(Xu;lC`&$i'uo)&O`8r"%EXSA\8-(rKfbNHbA/O;lN'Hs68npc&?cYai8L>$2?qkSa&s>LRA+Sm)$'%HCH0>07*^%O<3r!_'`bI\-aDrnk*YemU'8?_'+>S)4bUO#iZ(MrqYXH8S2n*'hVhA+d8!ca\=7&K6R3&4,J#!Q$:4`^,[caHPKO5?b>B2/$5mCdoJqJT-Q"S&K]NOJiYDf^5iKm?3)We6+[_.oE=$&&A0tjgYuZQLYnB^RTo"J?$n4bl.Uo*&W[#%VCpS-'O;8KH9#]AU,2sC@A\kfM3Ktp]!N_uVYU8G41e:@H-AB;="^1uTYbdWt(_i"(+M`SG-4:sH/nk?^^dB=J+deWdg!CQgCR]+jAuQ^7UUmVM0>I2h>lU%MG!BQOp70Q'N@6i:H+]BkM)!)n#LDTD7QPDOXt7\L(aMUkKKuhk%PJ,p?\Y"#e5F1E;Z:8e%^Rq^RMoY-H2i*C3@)LmthN/W+qXKP1B3Ojr.VV3XURrg+a^]tkNs&OaaBAL\nHFk_@oD`XcHm)CAd??^\+Y%10E-41IhgI;1:Ppld=0Vp(..]U*n\W!FH(i*%+R"hs9Un/)Ssf?\GkrC8TO;f%*bhUpeu9[juiM2Z*cnf%!CS&bmWiO[=d<:(Eb,_%KU$F%mi6.0hFc6KVdoefgCA-2*HZ,W^eu>umVuiERenS>dC_Kj=9j^%X]371fLkk'cY2=$;:d@)JH"[;[4+SP)X@>+>mBXi_9(Qb8.5\=XF6,WIj736a*6+e%E>K2fIXk;t>mg]Dn._C.SGD5Z^IZG!1<\.io?7;">oS5cr8se#'B)sU.RCed%D]Mc"*#SQV1WT])Rk>1(b'SYUM4\#Mak=@H5TY5])\$dRl=[h%/`uBW0%t5)DGs7o)fC'LTB]jC38+TG-<3Jc:R4jYim*Zlt$ps!b#RF_$Z.FG)Baa[399;Ic\g,`%+*Z?DC)PeIcHA',e-[?<#@RZtWL&F4/eeZoB&EhQ>[.3bBPF)HOrP<:Rdjk5tDoOk@(S30Bl,Z4j_.0G9f_2p-7]BY,]dY)j0f,SCZmNs@m;N_2%1)0k;RrJn!kl@H0M]`;I"A&WN22!;3BEU[ZW2`/.ZGU_tAWO7R9EO,cR(PC\1tePWYX`&T=p`db39N&F;e[fb7&2H;7bLa38Q7tuOuht31+di>2@q+*6.>IQ5lLg(5X+HE%DiZ""0V(:68C5)TW%/k?Jm#`EE,"f%YkAX%H1cu'Tj"oY1bPd4h&]Y:WlC;>t,-F.`lg$%5NRp85dt67\d*0(*6::MurL4B64[Doqqo7F\bXK;]+\Q"AB+YTO"i=3KgVEXiXG#uOu9MlD3,B(`YdCRfS>`Y1+C2#)MTd#nFa/PBrmp14](]K#Up=\1G0aK]C)mcIdnm5(e?$[!hGXR+@.,(ljd@Jp\d3p@kf]pjBR`gg:thu`K(u*+,#eCp_)'6+<+\hnWWo7pK+cr&q%___gGDB+ismMirR!4U!kcZ3i+^6W)e7JaL3H@F)+c;V^lFu1oBH<%_:6neqYnk\f:QL?d_42"OI$]%4N_rK0XN)@ZfJQ(H%MEC8L&%*[mb8bYZDf8m>p&R'g\dhE&ol`hil^O#rWmAM!hu(X9$fd5a!Unj/=@[QBC3coj%uc[`tiFZP#-,8mG#5-38:ibHJC,UP^c^q`-e=4i5`QBl3W-sK>bfN/cq7IgQn5P#@:+MHV">F$W*%rF<2ieQPTdOJo-E/q0"I8dSEL[G0uu#:c.JD_N\OW\u$%[%O7!;%oDaZ??P.OWio&e\2IK[3;*5QE08V1IQ\^/D]`!o14dh'8n;6=!hr@ZWT`:KW.Itlff)?dBD2lt"S8bXG%+&cm3`)-khukB2NmjoE-VJ\_3"/O!CN$4o795L>0McM(^*Tf*;oq?)KJ(hQY>=R2-DS9Cs-kdiPLdr.ek-8Cr3WUWpA,nSE]OWqu47U5&3+$I]Wcjd?a]hX#]ce^P*P89.PMHn:^!?;`"@EJm<*0V:8eF?+R5-;T0Pm0@=fFJJ6f8-cC]]0fZL[NI6TEjo)@l2sTUj,F\26;nP"u@*?sm:uIHbS'M!^mYP?]lmq5m1Y@0BuX\#k;71O+<,f$O=6i&O8-[YJM\Y1_n''/FFtQh$7"%$l^VjI4E4;d3*"MD559rWJ13joYjsJeo3QAqn3"co:43P,IGGt/lD+L1&N&1k\\E!6;LS)gh-C>aN];S%MN1G'VPW4!":9eobSh<@4-sAK7F6`WO""N!=/dtu6p_nh5)g%4MD!^aGs00!#l.(U5("Pq)oq3PDCkLCHb92p2,n+6Ng+4^6>2CaGad!rtl*LCFfU$O,`!5bBT,2B4a%#Ci6`OMFlmNV1`IT\W9ao%Qt4?S^ViViaDj+[:#1GP$+5q$')GMRZMH7j11cr>!-2W<$["0QYahl)iR2VDRB]e(:,'?+jc3:FR476t4-cG)QG1O;NUgscL21_3lmN."OS3s+2V[*P?Lr2_?4T8UMWq&;!8c+*1OsiX",8f\jc@3*@]jbWYXOuQM=i8',U[C*).\[EhMfP:%<*Zi4?DQLrd[#deEjhkh:FGZ0e(CVJ`&u>0:ZX[X:`In'&e5B6@WaF]+@7FbCu).jps^Jj8fJt?Ht=D1G>t,L[n9,3`][DbiELTb@-OnbZS`!D*RP!`QV)fU.WNC_EVQ-Tj0Bs8;,oVa<[<\`8bV=s13SCt+t9V9Of$o,#DENUGNEKK[k1E%9f0cY1MI+7"N`Bh5!E-3Q_H0!ONQ$gIc<[b8.V$PM6PY`n5i3`&B.6bDdR"X(^,sI""gCOTrF!1P(Q@60ea5*JW^5'CahoM-;>+deC%o[&<)h.gUQP8!&IF\U^5$bi<]MBGTYgDAAMTk^-=f8oa!r/QK3T+.`R/l#EU*hQmanGfZ8[TZZNE%Lk6fn?DrEBM(7[p+\/8]0Pmg@UcD'nS#AAMo6XtRf%/K2cpkZIHThtpkr[IO@E)1I[POD,k5G<5e(oIiD.Qts@o80&?_,0e4!/'Bo^3e[4,,fbEnCp\Z[PW&+$o&+.h^F[CcbdM3FmDAncU]NS`1r^DE,R#.+@6=_XAe9[bIY[Dt?VMFPrP5ZEfsSEZ-9?eN&/G-">Hp1GP35q/D$"Ld;lG/`"N&[Rqr'"u6gM$p^Nobo-Qh=Dr@_I!=/2@(cPs[9+Q?@0gK!adGJE`hW]="he.f94W_f.XY,i3`m<;'dQU",)[%b#&t$Nq/B7cYHMtIVbrl87'F]aNXb.tS3HBPB0S81dKrP#R?*>AL9]OVA@SRj(8R03_,`DGT?K6;S4nKa4WTd'7J!%?^EEZST/Wq5FqQnVR[fD7]=XT1,&Q/U]o@"t$8<)d85USXBeBJoKWQA9FLOt\C/S/Qj-0u)AZ3^=M2E'8JV`E?DALfbA=Nk.d58:@%ldj(`FD6P3!mjfN4r&(hYW4CH+(o6?XeHf]0f)U,'n>2&S1".FaMB31K"bOeCQ)."KMCac)p@9.BpsfX"9FEFUaR80%Dj1P#f8j^U@[S(NX\lS:^REeGR`Y]E_uP\aR:WMC*;%"^iBY_@gn3m)!o&p4=g2I[L,?jd[-Z;SKj()5,*)8JTN;e1Lt`.jSL!@QfSLZ"s#qdd`8&^-#fM2>-1V7-N)>/cC2KMm*U+k'=?^ma,KR+^'UHaGqX8SJpW\JcOT;*uQ18LOtA2#+`TC&&9ns,XCKFA,oV!7[upbeJ@8O[hK'+NeW?V3.c"8Ss@25O[I"J7h@lab*61[3gu/=ReP4;'akL6rC6;++%`"H-b%iVD"8=(VW;ku6$MHmd:_%sbpKb7YCCH08gLDdCog-TYu>Oa3dPM61>U?hUV63FRZaB]".MGNI_NA,YrtBP7>VR'U_p#'0s2u\",-;)&er#bN.HeX#f/m5P&TgT.K$&QYD:Ig\(Yd9]FeEDBg](5sc>S,=+#GVgYX?_D-ecd.@;u%Tm?II@o`\?]mlG58g9rfL>;FUn^m+s\>O85?Hg(_&4!P`VToR/qo=E$THj*<9p,.-^)3?.s+I!CP3:7>sYN6-djS&"$0$\u6Nub(+LB58d$"n!5$fJ2B26A;AY@UF1>#j=X>;C2<0i4L@b)9V&-dEa/2`,1G:kd#:ePBC;]D-VacpX2.kq+e!i4&^8RsEMA@;VOL^8[h#*aq^'T*)k"@=P[G3so>7$&C]$t+Wd6j=etFnYI$(Bar^oOPm5[[V0hHJ2BGZm6h.!H'(jYg9)s,I!^tWi9++9sXSQ";DGFp,LN%st@FWt%?HVQtl(p,pXBnBE`ncD\PBO@.ac0MFeQo+E<=KM8-isoXMD@p!3V9gX@U&AZ*A)F4YeJCH?kFP^c^\l^&8?WiZXGe7o=EcQ,Admj]"`YkVWa*2EQ#?$qu7U9hie'U3DSK,Z>eRQG>M!^LSAj!j=5_oWQ:A*gDoqSV7S]\e+N/j*cK9lu(^:5^.+F:oRHe-2..]P2$M+It!L"dk$0>gNQ^A--uq$%s)1"bnh"J%If]hAlJWphuo+]j[#/HG&"c[L!oOkG.!^P554Yr2ZFDZFb\GfPJ9'pd[H,gkEtHf:;[3"Y2HlT>IGG2pgC5T1;?\aVt`CPi@SUnAOC"V/&9`Z`:%a@VN.F*6*CXShi?'[>DMh\i2ODDW)kf0pmZ>`P_O/kg07C9Ghi8X3rl\3^.FUpgkq>&2J99$RLS6Vr7N^$3B:cUo/LG[)Hh6nIR+U+PB3acYpf1'j"IJKkjNok("[(=G-\os$"qF4t;g)djn4E0DU`@0Mf@h>a*G4$8")OAHSA@1_5[8YR15pf?%,DtUpiY/bHNsi/3C+q8TTUUEF9)-SLT"I`H_mUlTNDj2?jBU.uPiY^#o_ENY:1Jp%D;jXg(`-]!6Ub5:B8!_`kGYIDidD^k__P[5jVK[=.JB;>BeLm%GMD*E$):(iZgB7bQ;]Hf7kifdM$UnKCXou6$`>2oH+:YH+sP):M0K^c`uWcRdK:@)MZX*(`Ur3NSS?KK2BFJkLOHE+\,?&"XnF;,@uhOm@j-;UJE@>`gsRTgKq0)_6#OgRg<@`BB",dsqIXVUGei>=RDBcal`Kr7H[e09?8eZk>]pB?M:@:;P6r`+V@6$1:P4[!mLRu3YF4[G6*>&NM3[;1@8=j)/SBO3ABO+QJR"om6W&i7aas_]P@8-:,'RT6;74_B?;VT?jl^-%`,j!JaTa.$6Y/R!._&eX797f3B@WV0L?]o01+*:k%l++NMo=1s8od]ofqS;+I1EKbdmlVg)njC_UcDs-^GkG^H`_:M'EHX$6R2Vlr8caCdp8g1;@9neFrNm=Q7m$lJ\/?0_s1aJGGtp7.5rA+b\9,'I(e_df%Gh1`0Y,f4=1aGQ\iL(9'IN&S/jFXfO8%s:q!K968YAk;i/%6sE"2H]M!LmjGJ,(c,3m-k[>X1WuiOci&#+@:)a'HX$jjHcreF-(SP[5)30/oJOfT]/d]kTOnf3!A[CG&!_I<>(3gLEP2?$)*lB-AS(cRVtPj%*]\=49X/*4]p;;a>_O@1l&TfH`0#jBH[cLOJ$ZNIi'J''sKR1NpQ.up#Qa.4S%7W&I#p6SuVh>UI#mH"'UfH,k#40m?p.H4Xa<.]0Ha,)?>U9cQ$qKq($/,kY3aO\)hJ?m)Ek]b"VV")EWXY/`dkM/to=NYf;u:ge_opE*n+H412U(NT)tVYI1jn][aEl]5A-,%WZF(!c;))is$bt@l.:\=K\-7V0@2%enpYK[nc4RY17G*ZlO;CbcAb6"26r069IXP=?E]<_#:ZMam['WBK(G('".WM.!L;M%u'ca2Fc*o9uTm+NJAOS#50go%cDu#t4k:_Kf0c_oYVtKo=#>#.59XAb2)FMW(Em"-ofj3+Ae#S.o%,s($MekH?d.a35_U4]fkH3jkS[3NlQ;%GjE$/+"#-=)\SJ36*/esk6tC$:0GV\QHF5F)D`u]q(e:JDVS.bVfS*T_MsNa=fuf:/s_6tq0Wu(/2lns_ISjk!=ZH'kFBc)VWBn`bfqnfE.)W_e7Rd8At!++8ci1+#F*.cbK++gVhEE+GdSS4-kIO2),=3^;3\)$nq&S*\K+=Nbff<-8P[S5/nE?c:V$dF**R@!>aVne"3o(i:t#Fbad>)O]qI-t&EtrC3gB,V85b5?=l6(FC/W"_HHNs=3M)"2kCO],%'2OLaIIEb23eUl<0''V"pN5BL`)s%RN5/!47omaZUlt`=p-#&YTuRK8DuYK&\*HJU],u88&$lB9^9n3>rZ9.g#DWa^r%r1Ptc@@"iI-%-ISi/@'#/0Ss5lW3-#7@Ms%7@#G=DS2OM$_X"dm'm5:hsI1J%"VAp1W02HA@.pM-<]/CB]2gi-OM59Cu#+64B9PYH@.EZH.-&a?WOJ;kNmK/90f+X,P9dakcl_US+6nGYn-utP/hW^]PK(QLG0smUlJgG_aSb?\R0RJd:n:u+^][KYK=H&!9C1%e;U=]T)%]j'BFu)MT8J#F/0-Pn79[5n;2kL^;BhF!+.(+rKr3Tn+P7a<6mEQKbouW[_uS[ZRSLZ!Rm$U[7@A`YD$ZAX,@GAN-LSm#9^s0g7"14TP;V-@APAn(-8Xs'F!TqF,dBO9gYfJ8]<0ea>5^2Xk2]HoRScmJ"AOc&u"M34LkT+@lVX_@/q9c>?hbEs!p[4SOLS4!-+Sk@0np(@qWP6Z!tj3g_=57d(bU3Y]NOf*J*;!ZaZg!M7"d9n4_`nW(R#W#\4ec[mImVNhHi[3V1qX#.7WKTOVm_2:f?AYR'LAMlhb=UZ(igCe7bC.TpH/?G(O)C[1.Yt!JYZVGIXbrT^$+dccg.up.q0gK+Z5s:ckbVWY+k+\?..=r^a(:!E+q.+U2*^u/[a"YCu<]aX1Uu=:P*O-nnYmsZRF>"Q/0)0n[7:IY5)DjH$$t/#jee1O[S/Rqtk!k.c&$_scfnTikfc38pO,/[>7?Ac#5YZ)2ZRVilMQ-?:>BR;AKL%pmJcl1[)pR&]-6t?;6%#NEiB2'qp/@(u+g3r+Ws=Hdn4G5`S0r6Oi0P-c_09f>>.OqTMZYsNj=d*oETH?POYGBj0bdI4A@'RI@0I9OP)0`.-oDiV'&YN3;35VY"8!kkKcOUVLhms.@]BadjMD,i/lO6='Kq'M:.[;h[OD!mgEPOL&aV7LKYQVGeNR0;]'`cJD1C-<))'Kl^Ca0HrI&#h8!i3#di]4T=JJeB%b>V-D8_q_"[-M1SWBoLa%d*.EMV:c6Kk3bpL?mfjl3NL0MO=`:l"7lMGA_h6gbeO(BK7A1!2Oh#KR<>J+k63qnbEPXE&pgkC!?r'(>(j;-*]i7e3gVj1+VmFkerq=0_/JnXRhen]b-i9M<=Ic3Ip2nPHp^dDj/ZFcZ@nF5p2p$Yb5#fXedt3WT2?_DlJ=A4YU)64gs>tH.>$e#"==4NiYg88:r/*9;XK'n)Xs(o2YNOR.l=9][NU%[N#_>9`P!BdoI9\:8SOR@$><\@dQ-n.Kf@auG-7g9ZUcch&SNFjqkmWP@b32It;nO'7*H)I#+;nbrYo?K,5C"5&a;pb]3Ta9T:nBH=W)&X=f1/,aJ&8/Y5\C-bD[jMI!Ng>7<8f,?A4&$p_PA;*>HtQ]l]]p07c@?3'sQ9iC'2ea=M&s]]4-Bmr4)k4*#o-GX2p_pO?UoZbO'Su4AaZi,KN(XMi??Z*Vl_&L`3`K-`5`so;Fp;&WA%u^mn^NS8,*.ea;(K(+3I[XJABR&q=H^NKutp.:hDubU[W.7`'W+JN43qn_(F*mRA[h!A'hrZSq7FRTA*Qef5[Lm&9A8=;qC&8%^rd7lmE%],*RMae@hW&o0X$-@B?fS!imGc-.TmoX,P9?R!2u$]"5mafWnH@iW)Ipl',!2VVc]-aU`Z]c?M.jeFq,&V@O78_jnqY:tU'30_Wt`n#('5F/!0!'!A+>>h!`KCQ9_phpnI';9fAIdG;94n4*u73g6C?I/-2nd-GG28.:#&/l.@(#,6'\EM:L:P9ubt)Rc@i,+i+G-SmC)2KO[g-Q[*toLd'7[*)(2RNQ`bC@E\[?0_O$Br`)']T]\)$R^TT'7e/<=Y((s@jeHd:S>TZHr&`cr@)mSI'jL]]7$:5S?6*Ef:s709`,Nu9,O2I/N6/CF31lFh>lIam<=Af8mP7]!Z-f<*!pl/$.)UR5JWl%8eU2W?F!0VcQ&4)ONmh_RIH^C@3lRNKW6linq"YGVG?'i8iHHoaIK3HD^kIJbN\<2c9lp7#P/IQO@L"980aJI-$ATSS&)umur0[_KA""'aYUd$62$!j\W!ihIsA8nh[_D@$,AJPI,\2_k`N*M(VX$VkX>sH^6;:K5qa\TV7/+@P1n[F.$L([CAiQ3:m\!L3A67cQk@2)-cAl#UO:Xj$TNYqK8?nN4Ce:l5`WMgb3ZWj3&dMB4f5,'[b+;1JW=q<,"<96d3.)VAKJXVXN+HDa0\gaZ*Tj2[0mHg,Wmu]GfrS"r,kO,WD#=P"%Rnt8/22n4lY))>/eH)jJ\!e]o'4cC:%5UML@X5R'd7OdEgkCk1RT7F@$R*@1X[iN+>fge3RD<5k<5O-j85lOKYQ3m=kDhWUpO(cs,U5LKS;>b`/]3#=o%VlcZ*Gj!uq7[Z"cEc9)ej'L6[l0$KXH*>>)4;3Xlspf$;?o\24Fi-%!_B!Rk(%dk]rLc^W*Yie$0%@3B>TJ\,EEk'59D-ug:qf]5C`FUOk`7:Fd'<^e)2b_6O'A3pHogTAPFL(hA4GS\dmG@Yf\)&X;4=*ho1@6eMQ:t?ge#N+"^=CqoIi5"OL)BDS2'f4.e6*oS]i&ZtiHhp\CJjQ0_K!B+@S\O<;hhHh`$@&K+#ksF=FrDmtX-,,[cK'nP+sO,LpW8U9:`6O/CL"#fk?\SDQV0PR,N!.'A3/pm)'KU%i(Foqid,%S8nkRq4'^m1jqiruW0?a,TUY^6uJbPbnQ*Sd9;ZU8WJZ?a71fb"tfjZZRBNPs\jDD_=&6_IZ1-W_Vm$=VSPA4Lg2eqdK[1*q=2B*NaZa',7%C'r>m:f=HOk9r.pp2!FZu5eX2)gYgSou^)"_njN604BPG_M/"8/A,&ZVM(UU='a5TY](i:2k_4B+raG%bg`SIXYb'_r>373X!R%4A\+JCXt7LQFn]iB\0?6d6\7J-UlA.U!"/!TZWqAeGfAOA'D+99tYj-="!]TI*t%5?SWph>2b3)*?Rq^R7-'-)JTQ7,o9HB"']=+iCgrbqLnM"X,?,TRgm7(d7!o<15n"*\SeRndrGGn>]j;ZKP`)/9Y&L(t&\@RJb-e[ERBuDnt2XfLcjj@$o+E6'tjP8Hib&q5>]=Wn(qnZ!6VTl:SSed:uoJ:;utQ&S:>D.s-u>`a3KU*W8o.E`acZ2l/2h+:I;'!"o0V7+bg2Uoj3VG+?5,2RIOD]0s;9hdeFG>#O5GZ6M2/B\cLBM0+uOqJp8'X<7Z7ZX@%)#SsjX<=O8&">`ZI@EDO])_Go2r5OMS.I_AdH+C*d#t?7Ts8?Cfr_MYZF)=!h>Z8]]tb#M64p_8OCTLX&D-BV)eG[odAa)s;TQ8!eCgkr]!nt'`L3EbS.IpL7"phZb:'rtNY.)93lXJrp+]i(^Q71$1F39Lf4/O9lB^PbDXC](S$q$EWBlq;ST."n5T#s*3;f@HUEL/lOZA+3q=F-E^jQoCNE>NF)S6aN#TF9S1!^l@gt(D[$apW._S5em:'k4_L_P"QLd2RbO-j-)/\>juF^FabeikLZinHN9]B"U+Ig?^YKdkeKFtf'"+d*uj!ZU>n"k46*8qEB4XcEb#_YKI#N>7X-M:WOdeA%@Q)Kka.)95B+9Kb5-(<7N,V6:O[1O%m76`=;,6\L6RFd[^.R?`HN@37bgq4?NL!fF:,'s#-\TK^GKZc?="tr+^"pPYa+MTXcUihM^@g+_&&;uN?6AXR/L!/d=QK0=cAL,B2rTYWl"1S#n#Q/<;B4)uIC%d>q&:5mmVRapLP=fA=_%W/M12:6m=JE"F/'fi(8C95&.G`+8AYc3EJJ'\.OF\ArpKlU?ne)Cn8EtO9@UG"CGA="p^q@)S+'Lb8DiUfq:fI>aD1a[QNGDV$gK:E.NDtEt,8d]fa"k-JrQ"]#'Cqe'!0!mZ6$n*tVI@ht5c+Pj9LV4eCDKbA5XR7%KaUqH,nNn'YS88EOMk(eQn0LLi.XEEJ5hF'V;a2kB*O/Lu#=FamME57M&*ZEaV)d-lFVXR$%mRP<34p+p[I-J5ap_F)]6.j1[WO1dja19QS^]Y6k0i4VDQVhP!Rb,,>]@6`L%6gc1$7o0X)k&J@Qh,d1d2)I#c\&jYDNRjsA!mmWWG+L%9D9OK+j%#6TPZDb]O]Ij1o!SikC7#NfKVJbiOf9KUJMCQ6L(>)&!"q1MW'm!%X4:%21/?+rB+WFsu;PoXgZE1@MOX3_tes+lX6"#m=!C0&:&jn[I4s\lKPAp4pf7CAX0H[AiMo\\F)JIu%=9VGV:pd)8Oc1B/-O'Y`jnW`t9'CU04"@1B8Wk#[K<^W`@U"SrF6WMgok$A%7R]3jTfs%l;Q5-01t*?Ld=1:Q,aIR;!O8a%R7(TY-t+6AI*pB&1eE96G`oWe3MiI*)*WhNlRVc`FY-7)aM@#Emfl%.#F,FO$(A6"RT;X1Gi\+PT\D"mL^:p^"6OlMgL`F]!k+(4_-g5n1Wg341GP&!PU&Zl@E"6)HHbiOmj6.A]?-[dH(?YL/\=Q07j8p_V]"X+Y"Xm@,P5;3:>CJ/'14]uS@I_15d8331bPcpr"8ESb-oP'aMl+X\l?+g:kh_S;qc4^mH'7JlEorU)Y+3cGW6TF&R-R.V0J=i%kLPM#Flqn`9==84H+p1rQni[#5,s6$>%IXO.d@CkbNC,RB&5E(\!",Zt%ZTL'e%q`MrQfcF3Z='cLgK`pc%%8F5hB1n3$k2I?)krpR;#8&qjRGBcE=#TNaVp3*hTSn,S@VK+CY?W"Z+Lbr?B&V'gr6V#X9I2nl&Aum!ZG%a*9i&eV>_i!'TFW[Qt%b7#SF[k)lS1V%8&4.M))[\_"db::]iKiBkKM8i9HnK;X2//RQ55%g#6dooP#Q$:@[XAqO%Kc^.!DQHpB"O<@KQ*O=5CUZb!>e&^41WHBlE"0,)@/XnK&MB(OIsi&r/^Edfa'uV\@G96'l;j4OO#W1e>UGK!);hYC\lrsGPVr$KV^)iLj!:?E/-cYN!U5^"AOF)F#)\fjo-,A+UeqTf:T[_nli]VjhEf/K4R+0@C(sYrA1U"gD7>;&qeB15O^m.<$Wpic39/Ke`eaW*-=>QMa,#8%s&2UAqH_^0rZW)5SU_,M\JS&KlNAfS+7K6=8JEafRP@gu3`7^3]4Q4R"W'd5an2";8)&e3jX7d,U3M0#iP1lC5tO-&ZAEq^LV5K+l'$I'kjL&dMJl`1Y%Yq<+jiqOTp\P>kjd]RdRbPKUAJD>iWs(XqWfM1QmqEJN8O"V\r7c<@_h"b,j!`kfH#U^X*KkE'pTHZ%6qJG.klGOt=]FSC#5XVae$jStB;u/s4+\+d@i"43\!9t^5&RY_aUI7B>mgL)ckW\2Xd3)MOSBk$)(#X)7h!NBX3"JhN5K`d,cPOnF"M^,7W!$67]:`J8io$d]/$n3'VoY9\DuCS=j]VTb5N8t=g#`7"oU11fcm`T68m4"MQd("+5G0e0$e5"L].dUq`\Bcg85FC6T_L8VuOdkU2/0&rD^Q*r:bJ+`Knc]s'+CTGcC=qW] -import os -import Params -import autowaf - -# Version of this package (even if built as a child) -PATCHAGE_VERSION = '5' - -# Variables for 'waf dist' -APPNAME = 'lpatchage' -VERSION = PATCHAGE_VERSION -APP_HUMAN_NAME = 'LADI Patchage' - -# Mandatory variables -srcdir = '.' -blddir = 'build' - -def set_options(opt): - autowaf.set_options(opt, False, False, False) - opt.add_option('--install-name', type='string', default=APPNAME, dest='app_install_name', help="Install name. [Default: '" + APPNAME + "']") - opt.add_option('--app-human-name', type='string', default=APP_HUMAN_NAME, dest='app_human_name', help="Human name for app. [Default: '" + APP_HUMAN_NAME + "']") - -def configure(conf): - autowaf.configure(conf) - autowaf.check_tool(conf, 'compiler_cxx') - autowaf.check_tool(conf, 'compiler_cc') - - conf.check_tool('misc') # subst tool - - conf.check_pkg('dbus-1', mandatory=True) - conf.check_pkg('dbus-glib-1', mandatory=True) - conf.check_pkg('glibmm-2.4', mandatory=True) - conf.check_pkg('gtkmm-2.4', mandatory=True, vnum='2.11.12') - conf.check_pkg('libgnomecanvasmm-2.6', mandatory=True) - conf.check_pkg('libglademm-2.4', mandatory=True) - - # You need the boost headers package (e.g. libboost-dev) - conf.check_header('boost/shared_ptr.hpp', mandatory=True) - conf.check_header('boost/weak_ptr.hpp', mandatory=True) - - conf.check_pkg('flowcanvas', mandatory=True, vnum='0.4.0') - - conf.define('PATCHAGE_APPNAME', APPNAME) - conf.env['PATCHAGE_VERSION'] = PATCHAGE_VERSION - conf.env['APP_INSTALL_NAME'] = Params.g_options.app_install_name - conf.env['APP_HUMAN_NAME'] = Params.g_options.app_human_name - if conf.env['BUNDLE']: - conf.define('PATCHAGE_DATA_DIR', os.path.normpath( - conf.env['DATADIRNAME'] + conf.env['APP_INSTALL_NAME'])) - else: - conf.define('PATCHAGE_DATA_DIR', os.path.normpath( - conf.env['DATADIR'] + conf.env['APP_INSTALL_NAME'])) - - conf.write_config_header('config.h') - - print - autowaf.display_msg("Install prefix", conf.env['PREFIX'], 'CYAN') - autowaf.display_msg("Install name", "'" + conf.env['APP_INSTALL_NAME'] + "'", 'CYAN') - autowaf.display_msg("App human name", "'" + conf.env['APP_HUMAN_NAME'] + "'", 'CYAN') - print - -def build(bld): - # Program - prog = bld.create_obj('cpp', 'program') - prog.includes = 'src' # make waf dependency tracking work - prog.target = bld.env()['APP_INSTALL_NAME'] - prog.inst_dir = bld.env()['BINDIRNAME'] - prog.uselib = 'DBUS-1 LIBGNOMECANVASMM-2.6 LIBGLADEMM-2.4 FLOWCANVAS DBUS-GLIB-1' - prog.source = [ - 'src/main.cpp', - 'src/Patchage.cpp', - 'src/PatchageCanvas.cpp', - 'src/StateManager.cpp', - 'src/jack_proxy.cpp', - 'src/lash_client.cpp', - 'src/lash_proxy.cpp', - 'src/load_projects_dialog.cpp', - 'src/project.cpp', - 'src/project_list.cpp', - 'src/project_properties.cpp', - 'src/session.cpp', - 'src/a2j_proxy.cpp', - 'src/dbus_helpers.c' - ] - - # Executable wrapper script (if building a bundle) - autowaf.build_wrapper(bld, 'patchage.in', prog) - - # Glade UI definitions (XML) - install_files('DATADIR', bld.env()['APP_INSTALL_NAME'], 'src/patchage.glade') - - # 'Desktop' file (menu entry, icon, etc) - obj = bld.create_obj('subst') - obj.source = 'patchage.desktop.in' - obj.target = 'patchage.desktop' - obj.dict = { - 'BINDIR' : bld.env()['BINDIR'], - 'APP_INSTALL_NAME' : bld.env()['APP_INSTALL_NAME'], - 'APP_HUMAN_NAME' : bld.env()['APP_HUMAN_NAME'], - } - install_as(os.path.normpath(bld.env()['DATADIR'] + 'applications/'), bld.env()['APP_INSTALL_NAME'] + '.desktop', 'build/default/patchage.desktop') - - # Icons - # - # Installation layout (with /usr prefix) - # /usr/bin/patchage - # /usr/share/applications/patchage.desktop - # /usr/share/icons/hicolor/16x16/apps/patchage.png - # /usr/share/icons/hicolor/22x22/apps/patchage.png - # /usr/share/icons/hicolor/24x24/apps/patchage.png - # /usr/share/icons/hicolor/32x32/apps/patchage.png - # /usr/share/icons/hicolor/48x48/apps/patchage.png - # /usr/share/icons/hicolor/scalable/apps/patchage.svg - # /usr/share/patchage/patchage.glade - # - # icon cache is updated using: - # gtk-update-icon-cache -f -t $(datadir)/icons/hicolor - - # Dave disabled this, ask why before removing this - #install_as(os.path.normpath(bld.env()['PREFIX'] + '/share/icons/hicolor/scalable/apps/'), bld.env()['APP_INSTALL_NAME'] + '.svg', 'icons/scalable/patchage.svg') - - icon_sizes = ['16x16', '22x22', '24x24', '32x32', '48x48'] - for icon_size in icon_sizes: - install_as(os.path.normpath(bld.env()['DATADIR'] + '/icons/hicolor/' + icon_size + '/apps/'), bld.env()['APP_INSTALL_NAME'] + '.png', 'icons/' + icon_size + '/patchage.png') - -def shutdown(): - autowaf.shutdown() - diff --git a/gladish/AUTHORS b/gui/AUTHORS similarity index 100% rename from gladish/AUTHORS rename to gui/AUTHORS diff --git a/gladish/src/GladeFile.hpp b/gui/GladeFile.hpp similarity index 100% rename from gladish/src/GladeFile.hpp rename to gui/GladeFile.hpp diff --git a/gladish/src/Patchage.cpp b/gui/Patchage.cpp similarity index 100% rename from gladish/src/Patchage.cpp rename to gui/Patchage.cpp diff --git a/gladish/src/Patchage.hpp b/gui/Patchage.hpp similarity index 100% rename from gladish/src/Patchage.hpp rename to gui/Patchage.hpp diff --git a/gladish/src/PatchageCanvas.cpp b/gui/PatchageCanvas.cpp similarity index 100% rename from gladish/src/PatchageCanvas.cpp rename to gui/PatchageCanvas.cpp diff --git a/gladish/src/PatchageCanvas.hpp b/gui/PatchageCanvas.hpp similarity index 100% rename from gladish/src/PatchageCanvas.hpp rename to gui/PatchageCanvas.hpp diff --git a/gladish/src/PatchageModule.hpp b/gui/PatchageModule.hpp similarity index 100% rename from gladish/src/PatchageModule.hpp rename to gui/PatchageModule.hpp diff --git a/gladish/src/PatchagePort.hpp b/gui/PatchagePort.hpp similarity index 100% rename from gladish/src/PatchagePort.hpp rename to gui/PatchagePort.hpp diff --git a/gladish/src/StateManager.cpp b/gui/StateManager.cpp similarity index 100% rename from gladish/src/StateManager.cpp rename to gui/StateManager.cpp diff --git a/gladish/src/StateManager.hpp b/gui/StateManager.hpp similarity index 100% rename from gladish/src/StateManager.hpp rename to gui/StateManager.hpp diff --git a/gladish/src/Widget.hpp b/gui/Widget.hpp similarity index 100% rename from gladish/src/Widget.hpp rename to gui/Widget.hpp diff --git a/gladish/src/a2j_proxy.cpp b/gui/a2j_proxy.cpp similarity index 100% rename from gladish/src/a2j_proxy.cpp rename to gui/a2j_proxy.cpp diff --git a/gladish/src/a2j_proxy.hpp b/gui/a2j_proxy.hpp similarity index 100% rename from gladish/src/a2j_proxy.hpp rename to gui/a2j_proxy.hpp diff --git a/gladish/src/binary_location.h b/gui/binary_location.h similarity index 100% rename from gladish/src/binary_location.h rename to gui/binary_location.h diff --git a/gladish/src/common.hpp b/gui/common.hpp similarity index 100% rename from gladish/src/common.hpp rename to gui/common.hpp diff --git a/gladish/src/dbus_helpers.c b/gui/dbus_helpers.c similarity index 100% rename from gladish/src/dbus_helpers.c rename to gui/dbus_helpers.c diff --git a/gladish/src/dbus_helpers.h b/gui/dbus_helpers.h similarity index 100% rename from gladish/src/dbus_helpers.h rename to gui/dbus_helpers.h diff --git a/gladish/src/globals.hpp b/gui/globals.hpp similarity index 100% rename from gladish/src/globals.hpp rename to gui/globals.hpp diff --git a/gladish/src/jack_proxy.cpp b/gui/jack_proxy.cpp similarity index 100% rename from gladish/src/jack_proxy.cpp rename to gui/jack_proxy.cpp diff --git a/gladish/src/jack_proxy.hpp b/gui/jack_proxy.hpp similarity index 100% rename from gladish/src/jack_proxy.hpp rename to gui/jack_proxy.hpp diff --git a/gladish/src/lash_client.cpp b/gui/lash_client.cpp similarity index 100% rename from gladish/src/lash_client.cpp rename to gui/lash_client.cpp diff --git a/gladish/src/lash_client.hpp b/gui/lash_client.hpp similarity index 100% rename from gladish/src/lash_client.hpp rename to gui/lash_client.hpp diff --git a/gladish/src/lash_proxy.cpp b/gui/lash_proxy.cpp similarity index 100% rename from gladish/src/lash_proxy.cpp rename to gui/lash_proxy.cpp diff --git a/gladish/src/lash_proxy.hpp b/gui/lash_proxy.hpp similarity index 100% rename from gladish/src/lash_proxy.hpp rename to gui/lash_proxy.hpp diff --git a/gladish/src/load_projects_dialog.cpp b/gui/load_projects_dialog.cpp similarity index 100% rename from gladish/src/load_projects_dialog.cpp rename to gui/load_projects_dialog.cpp diff --git a/gladish/src/load_projects_dialog.hpp b/gui/load_projects_dialog.hpp similarity index 100% rename from gladish/src/load_projects_dialog.hpp rename to gui/load_projects_dialog.hpp diff --git a/gladish/src/main.cpp b/gui/main.cpp similarity index 100% rename from gladish/src/main.cpp rename to gui/main.cpp diff --git a/gladish/patchage.desktop.in b/gui/patchage.desktop.in similarity index 100% rename from gladish/patchage.desktop.in rename to gui/patchage.desktop.in diff --git a/gladish/src/patchage.glade b/gui/patchage.glade similarity index 100% rename from gladish/src/patchage.glade rename to gui/patchage.glade diff --git a/gladish/src/patchage.gladep b/gui/patchage.gladep similarity index 100% rename from gladish/src/patchage.gladep rename to gui/patchage.gladep diff --git a/gladish/src/project.cpp b/gui/project.cpp similarity index 100% rename from gladish/src/project.cpp rename to gui/project.cpp diff --git a/gladish/src/project.hpp b/gui/project.hpp similarity index 100% rename from gladish/src/project.hpp rename to gui/project.hpp diff --git a/gladish/src/project_list.cpp b/gui/project_list.cpp similarity index 100% rename from gladish/src/project_list.cpp rename to gui/project_list.cpp diff --git a/gladish/src/project_list.hpp b/gui/project_list.hpp similarity index 100% rename from gladish/src/project_list.hpp rename to gui/project_list.hpp diff --git a/gladish/src/project_properties.cpp b/gui/project_properties.cpp similarity index 100% rename from gladish/src/project_properties.cpp rename to gui/project_properties.cpp diff --git a/gladish/src/project_properties.hpp b/gui/project_properties.hpp similarity index 100% rename from gladish/src/project_properties.hpp rename to gui/project_properties.hpp diff --git a/gladish/src/session.cpp b/gui/session.cpp similarity index 100% rename from gladish/src/session.cpp rename to gui/session.cpp diff --git a/gladish/src/session.hpp b/gui/session.hpp similarity index 100% rename from gladish/src/session.hpp rename to gui/session.hpp diff --git a/gladish/icons/16x16/patchage.png b/icons/16x16/patchage.png similarity index 100% rename from gladish/icons/16x16/patchage.png rename to icons/16x16/patchage.png diff --git a/gladish/icons/16x16/patchage.svg b/icons/16x16/patchage.svg similarity index 100% rename from gladish/icons/16x16/patchage.svg rename to icons/16x16/patchage.svg diff --git a/gladish/icons/22x22/patchage.png b/icons/22x22/patchage.png similarity index 100% rename from gladish/icons/22x22/patchage.png rename to icons/22x22/patchage.png diff --git a/gladish/icons/22x22/patchage.svg b/icons/22x22/patchage.svg similarity index 100% rename from gladish/icons/22x22/patchage.svg rename to icons/22x22/patchage.svg diff --git a/gladish/icons/24x24/patchage.png b/icons/24x24/patchage.png similarity index 100% rename from gladish/icons/24x24/patchage.png rename to icons/24x24/patchage.png diff --git a/gladish/icons/32x32/patchage.png b/icons/32x32/patchage.png similarity index 100% rename from gladish/icons/32x32/patchage.png rename to icons/32x32/patchage.png diff --git a/gladish/icons/32x32/patchage.svg b/icons/32x32/patchage.svg similarity index 100% rename from gladish/icons/32x32/patchage.svg rename to icons/32x32/patchage.svg diff --git a/gladish/icons/48x48/patchage.png b/icons/48x48/patchage.png similarity index 100% rename from gladish/icons/48x48/patchage.png rename to icons/48x48/patchage.png diff --git a/gladish/icons/48x48/patchage.svg b/icons/48x48/patchage.svg similarity index 100% rename from gladish/icons/48x48/patchage.svg rename to icons/48x48/patchage.svg diff --git a/gladish/icons/scalable/patchage.svg b/icons/scalable/patchage.svg similarity index 100% rename from gladish/icons/scalable/patchage.svg rename to icons/scalable/patchage.svg diff --git a/wscript b/wscript index 909f5d25..f23cd0e1 100644 --- a/wscript +++ b/wscript @@ -28,17 +28,19 @@ def display_line(conf, text, color = 'NORMAL'): def set_options(opt): opt.tool_options('compiler_cc') + opt.tool_options('compiler_cxx') opt.add_option('--enable-pkg-config-dbus-service-dir', action='store_true', default=False, help='force D-Bus service install dir to be one returned by pkg-config') def configure(conf): conf.check_tool('compiler_cc') + conf.check_tool('compiler_cxx') conf.check_cfg( package = 'dbus-1', atleast_version = '1.0.0', mandatory = True, errmsg = "not installed, see http://dbus.freedesktop.org/", - args='--cflags --libs') + args = '--cflags --libs') dbus_dir = conf.check_cfg(package='dbus-1', args='--variable=session_bus_services_dir', msg="Retrieving D-Bus services dir") if not dbus_dir: @@ -56,14 +58,61 @@ def configure(conf): package = 'uuid', mandatory = True, errmsg = "not installed, see http://e2fsprogs.sourceforge.net/", - args='--cflags --libs') + args = '--cflags --libs') conf.check_cfg( package = 'libxml-2.0', atleast_version = '2.0.0', mandatory = True, errmsg = "not installed, see http://xmlsoft.org/", - args='--cflags --libs') + args = '--cflags --libs') + + conf.check_cfg( + package = 'dbus-glib-1', + mandatory = True, + errmsg = "not installed, see http://dbus.freedesktop.org/", + args = '--cflags --libs') + + conf.check_cfg( + package = 'glibmm-2.4', + mandatory = True, + errmsg = "not installed, see http://www.gtkmm.org/", + args = '--cflags --libs') + + conf.check_cfg( + package = 'gtkmm-2.4', + mandatory = True, + atleast_version = '2.11.12', + errmsg = "not installed, see http://www.gtkmm.org/", + args = '--cflags --libs') + + conf.check_cfg( + package = 'libgnomecanvasmm-2.6', + mandatory = True, + errmsg = "not installed, see http://www.gtkmm.org/", + args = '--cflags --libs') + + conf.check_cfg( + package = 'libglademm-2.4', + mandatory = True, + errmsg = "not installed, see http://www.gtkmm.org/", + args = '--cflags --libs') + + conf.check_cfg( + package = 'flowcanvas', + mandatory = True, + atleast_version = '0.4.0', + errmsg = "not installed, see http://drobilla.net/software/flowcanvas/", + args = '--cflags --libs') + + # We need the boost headers package (e.g. libboost-dev) + # shared_ptr.hpp and weak_ptr.hpp + conf.check_tool('boost') + conf.check_boost() + + conf.define('PATCHAGE_APPNAME', "gladish") + conf.env['PATCHAGE_VERSION'] = VERSION + conf.define('PATCHAGE_DATA_DIR', os.path.normpath(os.path.join(conf.env['PREFIX'], 'share', "gladish"))) conf.define('DEFAULT_PROJECT_DIR', "audio-projects") conf.define('PACKAGE_VERSION', VERSION) @@ -200,6 +249,68 @@ def build(bld): # lash_wrap.c lash.py: lash.i lash.h # swig -o lash_wrap.c -I$(top_srcdir) -python $(top_srcdir)/$(subdir)/lash.i + ##################################################### + # gladish + gladish = bld.new_task_gen('cxx', 'program') + gladish.target = 'gladish' + gladish.includes = "build/default" # XXX config.h version.h and other generated files + gladish.uselib = 'DBUS-1 LIBGNOMECANVASMM-2.6 LIBGLADEMM-2.4 FLOWCANVAS DBUS-GLIB-1' + gladish.source = [] + for source in [ + 'main.cpp', + 'Patchage.cpp', + 'PatchageCanvas.cpp', + 'StateManager.cpp', + 'jack_proxy.cpp', + 'lash_client.cpp', + 'lash_proxy.cpp', + 'load_projects_dialog.cpp', + 'project.cpp', + 'project_list.cpp', + 'project_properties.cpp', + 'session.cpp', + 'a2j_proxy.cpp', + 'dbus_helpers.c', + ]: + gladish.source.append(os.path.join("gui", source)) + + # Glade UI definitions (XML) + #install_files('DATADIR', bld.env()['APP_INSTALL_NAME'], 'src/patchage.glade') + + # 'Desktop' file (menu entry, icon, etc) + #obj = bld.create_obj('subst') + #obj.source = 'patchage.desktop.in' + #obj.target = 'patchage.desktop' + #obj.dict = { + # 'BINDIR' : bld.env()['BINDIR'], + # 'APP_INSTALL_NAME' : bld.env()['APP_INSTALL_NAME'], + # 'APP_HUMAN_NAME' : bld.env()['APP_HUMAN_NAME'], + #} + #install_as(os.path.normpath(bld.env()['DATADIR'] + 'applications/'), bld.env()['APP_INSTALL_NAME'] + '.desktop', 'build/default/patchage.desktop') + + # Icons + # + # Installation layout (with /usr prefix) + # /usr/bin/patchage + # /usr/share/applications/patchage.desktop + # /usr/share/icons/hicolor/16x16/apps/patchage.png + # /usr/share/icons/hicolor/22x22/apps/patchage.png + # /usr/share/icons/hicolor/24x24/apps/patchage.png + # /usr/share/icons/hicolor/32x32/apps/patchage.png + # /usr/share/icons/hicolor/48x48/apps/patchage.png + # /usr/share/icons/hicolor/scalable/apps/patchage.svg + # /usr/share/patchage/patchage.glade + # + # icon cache is updated using: + # gtk-update-icon-cache -f -t $(datadir)/icons/hicolor + + # Dave disabled this, ask why before removing this + #install_as(os.path.normpath(bld.env()['PREFIX'] + '/share/icons/hicolor/scalable/apps/'), bld.env()['APP_INSTALL_NAME'] + '.svg', 'icons/scalable/patchage.svg') + + #icon_sizes = ['16x16', '22x22', '24x24', '32x32', '48x48'] + #for icon_size in icon_sizes: + # install_as(os.path.normpath(bld.env()['DATADIR'] + '/icons/hicolor/' + icon_size + '/apps/'), bld.env()['APP_INSTALL_NAME'] + '.png', 'icons/' + icon_size + '/patchage.png') + def dist_hook(): pass