From e5f13d2b9482b54aaadadb0619cb832fb7db3576 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 26 Nov 2013 21:53:38 -0500 Subject: [PATCH 01/50] reorder child dirs to make optionally external dirs more obvious and only test USE_EXTERNAL_LIBS once --- wscript | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/wscript b/wscript index 876e343923..6fe36608d6 100644 --- a/wscript +++ b/wscript @@ -50,15 +50,17 @@ top = '.' out = 'build' children = [ - 'libs/pbd', - 'libs/midi++2', - 'libs/evoral', + # optionally external libraries 'libs/vamp-sdk', 'libs/qm-dsp', 'libs/vamp-plugins', 'libs/taglib', 'libs/libltc', 'libs/rubberband', + # core ardour libraries + 'libs/pbd', + 'libs/midi++2', + 'libs/evoral', 'libs/surfaces', 'libs/panners', 'libs/backends', @@ -71,7 +73,7 @@ children = [ 'export', 'midi_maps', 'mcp', - 'patchfiles' + 'patchfiles', ] i18n_children = [ @@ -807,7 +809,7 @@ const char* const ardour_config_info = "\\n\\ write_config_text('C compiler flags', conf.env['CFLAGS']) write_config_text('C++ compiler flags', conf.env['CXXFLAGS']) - write_config_text('Linker flags', conf.env['LINKFLAGS']) + write_config_text('Linker flags', conf.env['LINKFLAGS']) config_text.write ('";\n}\n') config_text.close () @@ -818,18 +820,16 @@ def build(bld): # add directories that contain only headers, to workaround an issue with waf - bld.path.find_dir ('libs/evoral/evoral') if not bld.is_defined('USE_EXTERNAL_LIBS'): bld.path.find_dir ('libs/vamp-sdk/vamp-sdk') - bld.path.find_dir ('libs/surfaces/control_protocol/control_protocol') - bld.path.find_dir ('libs/timecode/timecode') - if not bld.is_defined('USE_EXTERNAL_LIBS'): bld.path.find_dir ('libs/libltc/ltc') bld.path.find_dir ('libs/rubberband/rubberband') + bld.path.find_dir ('libs/taglib/taglib') + bld.path.find_dir ('libs/evoral/evoral') + bld.path.find_dir ('libs/surfaces/control_protocol/control_protocol') + bld.path.find_dir ('libs/timecode/timecode') bld.path.find_dir ('libs/gtkmm2ext/gtkmm2ext') bld.path.find_dir ('libs/ardour/ardour') - if not bld.is_defined('USE_EXTERNAL_LIBS'): - bld.path.find_dir ('libs/taglib/taglib') bld.path.find_dir ('libs/pbd/pbd') autowaf.set_recursive() From 3ea7529c14c73f015807643c2d979fda4a3335d0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 26 Nov 2013 21:54:48 -0500 Subject: [PATCH 02/50] fix broken situation with respect to taglib on windows where we used to use symlinks to fix up taglib's insane header/directory structure Symlinks don't work correctly with git on windows, so instead we now copy the required "public" headers into the build tree as part of the build. Works on Linux. --- libs/taglib/wscript | 75 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/libs/taglib/wscript b/libs/taglib/wscript index 8c1f1fdd1e..219cbd3f08 100644 --- a/libs/taglib/wscript +++ b/libs/taglib/wscript @@ -34,6 +34,79 @@ def build(bld): if bld.is_defined('USE_EXTERNAL_LIBS'): return + # the story: taglib distributes its headers all over the place then copies them + # into place during an install. but we're not planning to do an install. so this + # doesn't work when code does #include . + # + # one approach is to store symlinks in the repository. but this breaks on windows + # where symlink support and git are not very well developed (if at all) + # + # the approach here is to copy the header files as part of the build step, if necessary + + headers = [ + './ape/apefooter.h', + './ape/apeitem.h', + './ape/apetag.h', + './mpeg/id3v2/frames/attachedpictureframe.h', + './mpeg/id3v2/frames/commentsframe.h', + './flac/flacfile.h', + './flac/flacproperties.h', + './mpeg/id3v2/frames/generalencapsulatedobjectframe.h', + './mpeg/id3v1/id3v1genres.h', + './mpeg/id3v1/id3v1tag.h', + './mpeg/id3v2/id3v2extendedheader.h', + './mpeg/id3v2/id3v2footer.h', + './mpeg/id3v2/id3v2framefactory.h', + './mpeg/id3v2/id3v2frame.h', + './mpeg/id3v2/id3v2header.h', + './mpeg/id3v2/id3v2synchdata.h', + './mpeg/id3v2/id3v2tag.h', + './mpc/mpcfile.h', + './mpc/mpcproperties.h', + './mpeg/mpegfile.h', + './mpeg/mpegheader.h', + './mpeg/mpegproperties.h', + './ogg/oggfile.h', + './ogg/flac/oggflacfile.h', + './ogg/oggpage.h', + './ogg/oggpageheader.h', + './mpeg/id3v2/frames/relativevolumeframe.h', + './ogg/speex/speexfile.h', + './ogg/speex/speexproperties.h', + './toolkit/taglib.h', + './toolkit/tbytevector.h', + './toolkit/tbytevectorlist.h', + './toolkit/tdebug.h', + './mpeg/id3v2/frames/textidentificationframe.h', + './toolkit/tfile.h', + './toolkit/tlist.h', + 'toolkit/tlist.tcc', + './toolkit/tmap.h', + 'toolkit/tmap.tcc', + './trueaudio/trueaudiofile.h', + './trueaudio/trueaudioproperties.h', + './toolkit/tstring.h', + './toolkit/tstringlist.h', + './toolkit/unicode.h', + './mpeg/id3v2/frames/uniquefileidentifierframe.h', + './mpeg/id3v2/frames/unknownframe.h', + './mpeg/id3v2/frames/unsynchronizedlyricsframe.h', + './mpeg/id3v2/frames/urllinkframe.h', + './ogg/vorbis/vorbisfile.h', + './ogg/vorbis/vorbisproperties.h', + './wavpack/wavpackfile.h', + './wavpack/wavpackproperties.h', + './mpeg/xingheader.h', + './ogg/xiphcomment.h', + ] + + for h in headers: + tgt = bld.path.get_bld().make_node (os.path.join ('taglib', os.path.basename (h))) + if not os.path.exists (tgt.bldpath()): + bld (rule = "cp ${SRC} ${TGT}", + source = bld.path.make_node (os.path.join ('taglib', h)), + target = tgt) + # Library obj = bld(features = 'cxx cxxshlib') sources = bld.path.ant_glob('taglib/*.cpp') @@ -69,7 +142,7 @@ def build(bld): taglib/ogg/speex taglib/ogg/flac '''.split() - obj.export_includes = ['.', 'taglib', 'taglib/toolkit'] + obj.export_includes = ['.', 'taglib' ] obj.includes = include_dirs obj.defines = ['MAKE_TAGLIB_LIB'] obj.name = 'libtaglib' From 796f39b9670f28b4db4b695e8e3f33ca521d0103 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Mon, 2 Dec 2013 21:10:08 +1000 Subject: [PATCH 03/50] Fix compilation on linux now that libardour no longer links to libjack Similar change has already been made in master branch --- libs/ardour/io.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index ebd295411e..2cc213f797 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -1414,7 +1414,7 @@ IO::find_port_hole (const char* base) std::vector buf (AudioEngine::instance()->port_name_size()); PortSet::iterator i = _ports.begin(); - snprintf (&buf[0], jack_port_name_size(), _("%s %u"), base, n); + snprintf (&buf[0], buf.size()+1, _("%s %u"), base, n); for ( ; i != _ports.end(); ++i) { if (string(i->name()) == string(&buf[0])) { From e80d18b0b3ecf9890d83a273a5a77de112022790 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Mon, 21 Oct 2013 20:41:24 +1000 Subject: [PATCH 04/50] Revert unfinished export visibility commits by John Emmas These break the mingw build and the visibility work will make this code redundant --- libs/ardour/ardour/session_event.h | 4 ++-- libs/ardour/ardour/visibility.h | 30 ------------------------------ 2 files changed, 2 insertions(+), 32 deletions(-) diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index e90ab71e26..8629f83c85 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -36,7 +36,7 @@ namespace ARDOUR { class Slave; class Region; -class LIBARDOUR_API SessionEvent { +class SessionEvent { public: enum Type { SetTransportSpeed, @@ -151,7 +151,7 @@ private: friend class Butler; }; -class LIBARDOUR_API SessionEventManager { +class SessionEventManager { public: SessionEventManager () : pending_events (2048), auto_loop_event(0), punch_out_event(0), punch_in_event(0) {} diff --git a/libs/ardour/ardour/visibility.h b/libs/ardour/ardour/visibility.h index b702e94edb..09287b877d 100644 --- a/libs/ardour/ardour/visibility.h +++ b/libs/ardour/ardour/visibility.h @@ -20,36 +20,6 @@ #ifndef __libardour_visibility_h__ #define __libardour_visibility_h__ -#ifdef LIBARDOUR_IS_IN_WIN_STATIC_LIB // #define if your project uses libardour (under Windows) as a static library -#define LIBARDOUR_IS_IN_WINDLL 0 -#endif - -#if !defined(LIBARDOUR_IS_IN_WINDLL) - #if defined(COMPILER_MSVC) || defined(COMPILER_MINGW) - // If you need '__declspec' compatibility, add extra compilers to the above as necessary - #define LIBARDOUR_IS_IN_WINDLL 1 - #else - #define LIBARDOUR_IS_IN_WINDLL 0 - #endif -#endif - -#if LIBARDOUR_IS_IN_WINDLL && !defined(LIBARDOUR_API) - #if defined(BUILDING_LIBARDOUR) - #define LIBARDOUR_API __declspec(dllexport) - #define LIBARDOUR_APICALLTYPE __cdecl - #elif defined(COMPILER_MSVC) || defined(COMPILER_MINGW) // Probably needs Cygwin too, at some point - #define LIBARDOUR_API __declspec(dllimport) - #define LIBARDOUR_APICALLTYPE __cdecl - #else - #error "Attempting to define __declspec with an incompatible compiler !" - #endif -#elif !defined(LIBARDOUR_API) - // Other compilers / platforms could be accommodated here (as an example, see LIBARDOUR_HELPER_DLL, below) - #define LIBARDOUR_API - #define LIBARDOUR_APICALLTYPE -#endif - - /* _WIN32 is defined by most compilers targetting Windows, but within the * ardour source tree, we also define COMPILER_MSVC or COMPILER_MINGW depending * on how a Windows build is built. From 30da95b60930d2ce45cf2a3b9b2d3bc612002471 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 14 Aug 2013 18:03:34 +1000 Subject: [PATCH 05/50] Remove duplicate ALSA pkgconfig --- libs/ardour/wscript | 3 --- 1 file changed, 3 deletions(-) diff --git a/libs/ardour/wscript b/libs/ardour/wscript index e7dcf45635..b509db361f 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -259,9 +259,6 @@ def configure(conf): autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0') - if re.search ("linux", sys.platform) != None: - autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA') - if Options.options.lv2: autowaf.check_pkg(conf, 'lv2', uselib_store='LV2', atleast_version='1.0.0', mandatory=True) From 9b5440ec03edaaf7a795d819c211f40134a67dd4 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 27 Sep 2013 22:51:57 +1000 Subject: [PATCH 06/50] Use PBD::pthread_name in MTC_Slave for portability --- libs/ardour/mtc_slave.cc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index 0dee2a071b..1a1c5f2bec 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -309,11 +309,7 @@ MTC_Slave::update_mtc_time (const MIDI::byte *msg, bool was_full, framepos_t now to use a timestamp indicating when this MTC time was received. example: when we received a locate command via MMC. */ -#ifdef COMPILER_MSVC - DEBUG_TRACE (DEBUG::MTC, string_compose ("MTC::update_mtc_time - TID:%1\n", ::pthread_self().p)); -#else - DEBUG_TRACE (DEBUG::MTC, string_compose ("MTC::update_mtc_time - TID:%1\n", ::pthread_self())); -#endif + DEBUG_TRACE (DEBUG::MTC, string_compose ("MTC::update_mtc_time - TID:%1\n", pthread_name())); TimecodeFormat tc_format; bool reset_tc = true; From 18a59dd7fa65eddeef5eab4d76df2f458aa9f7ad Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 27 Sep 2013 22:52:32 +1000 Subject: [PATCH 07/50] Include pbd/localtime_r.h in session_jack.cc for MinGW --- libs/backends/jack/jack_session.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/backends/jack/jack_session.cc b/libs/backends/jack/jack_session.cc index 7cd7f6c62b..60d11a8f0c 100644 --- a/libs/backends/jack/jack_session.cc +++ b/libs/backends/jack/jack_session.cc @@ -25,6 +25,8 @@ #include #include +#include "pbd/localtime_r.h" + #include "ardour/audioengine.h" #include "ardour/filename_extensions.h" #include "ardour/session.h" From c3d2b1ea18d71f98a75ad19d09a8b982b879305e Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 27 Sep 2013 22:53:30 +1000 Subject: [PATCH 08/50] Use PBD::canonical_path instead of ::realpath This is a previous change that seems to have been lost in master -> windows merge --- libs/ardour/session_state.cc | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index bbd3432205..5c3ffae3cc 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -136,14 +136,7 @@ Session::pre_engine_init (string fullpath) /* discover canonical fullpath */ - char buf[PATH_MAX+1]; - if (!realpath (fullpath.c_str(), buf) && (errno != ENOENT)) { - error << string_compose(_("Could not use path %1 (%2)"), buf, strerror(errno)) << endmsg; - destroy (); - throw failed_constructor(); - } - - _path = string(buf); + _path = canonical_path(fullpath); /* we require _path to end with a dir separator */ From a9fc076d2ec9d3868119ab227c14832ced496060 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 27 Sep 2013 22:54:54 +1000 Subject: [PATCH 09/50] Waf options are not valid during build stage so use environment variable --- libs/backends/jack/wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/backends/jack/wscript b/libs/backends/jack/wscript index c5c506525a..1dd28dc0c3 100644 --- a/libs/backends/jack/wscript +++ b/libs/backends/jack/wscript @@ -43,7 +43,7 @@ def build(bld): obj.includes = ['.'] obj.name = 'jack_audiobackend' obj.target = 'jack_audiobackend' - if Options.options.dist_target == 'mingw': + if (bld.env['build_target'] == 'mingw'): obj.uselib = [ 'JACK', 'PORTAUDIO' ] else: obj.uselib = [ 'JACK' ] From ad906794b873362bfac8e028a1ac7fb0fadb9b31 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 11 Oct 2013 21:51:37 +1000 Subject: [PATCH 10/50] Fix pattern used to search for audio backends on windows The audio backend dlls have a number postfix after the library/module name --- libs/ardour/audioengine.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 0119aa642c..607606f4c7 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -472,7 +472,7 @@ AudioEngine::discover_backends () Glib::PatternSpec so_extension_pattern("*backend.so"); Glib::PatternSpec dylib_extension_pattern("*backend.dylib"); - Glib::PatternSpec dll_extension_pattern("*backend.dll"); + Glib::PatternSpec dll_extension_pattern("*backend*.dll"); find_matching_files_in_search_path (backend_search_path (), so_extension_pattern, backend_modules); From f74521b0cdee78b108922f71dc480f5186260e88 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Mon, 21 Oct 2013 20:54:37 +1000 Subject: [PATCH 11/50] Remove command line string quoting when forming jack command line on windows This used to be necessary when we started the JACK server but now that we write a .jackdrc it only causes problems. I have fixed this before in some branch, must have been lost in a merge. --- libs/backends/jack/jack_utils.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libs/backends/jack/jack_utils.cc b/libs/backends/jack/jack_utils.cc index 331c164353..01af13fe9c 100644 --- a/libs/backends/jack/jack_utils.cc +++ b/libs/backends/jack/jack_utils.cc @@ -891,11 +891,7 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c ostringstream oss; for (vector::const_iterator i = args.begin(); i != args.end();) { -#ifdef WIN32 - oss << quote_string (*i); -#else oss << *i; -#endif if (++i != args.end()) oss << ' '; } From 4a1b43b9d551d82252adf070a253a21cd77647a5 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Mon, 2 Dec 2013 19:57:51 +1000 Subject: [PATCH 12/50] Replace non-portable printf format specifier This caused Diskstream state to be restored incorrectly --- libs/ardour/audio_diskstream.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc index f4d10c2043..0a9393e980 100644 --- a/libs/ardour/audio_diskstream.cc +++ b/libs/ardour/audio_diskstream.cc @@ -1789,7 +1789,7 @@ AudioDiskstream::get_state () LocaleGuard lg (X_("POSIX")); boost::shared_ptr c = channels.reader(); - snprintf (buf, sizeof(buf), "%zd", c->size()); + snprintf (buf, sizeof(buf), "%d", c->size()); node.add_property ("channels", buf); if (!capturing_sources.empty() && _session.get_record_enabled()) { From 0f6a65e405792d434e61f8e86fe67bbceaa4cabe Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Tue, 3 Dec 2013 20:07:32 +1000 Subject: [PATCH 13/50] Use Sleep instead of usleep on windows in JACK backend --- libs/backends/jack/jack_connection.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/backends/jack/jack_connection.cc b/libs/backends/jack/jack_connection.cc index 09e6c9d6e7..77c86b9143 100644 --- a/libs/backends/jack/jack_connection.cc +++ b/libs/backends/jack/jack_connection.cc @@ -145,7 +145,11 @@ JackConnection::close () _jack = 0; /* If we started JACK, it will be closing down */ +#ifdef PLATFORM_WINDOWS + Sleep(500); +#else usleep (500000); +#endif Disconnected (""); /* EMIT SIGNAL */ From a420328354c3e8a9cd52b0fceb23b2b2a6b45c26 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Tue, 3 Dec 2013 20:21:17 +1000 Subject: [PATCH 14/50] Reinstate call to package config for JACK backend Not sure how this got lost, merge perhaps. --- libs/backends/jack/wscript | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/backends/jack/wscript b/libs/backends/jack/wscript index 1dd28dc0c3..b827c95cfe 100644 --- a/libs/backends/jack/wscript +++ b/libs/backends/jack/wscript @@ -20,6 +20,8 @@ def options(opt): autowaf.set_options(opt) def configure(conf): + autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.121.0') + # # PortAudio is currently used to get a list of audio device names. # We should find a better way to do this that doesn't involve this From 0258f2958b05c420105d0e684681193e404201ac Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 3 Dec 2013 10:24:05 -0500 Subject: [PATCH 15/50] switch from using Sleep/usleep to Glib::usleep() --- libs/backends/jack/jack_connection.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libs/backends/jack/jack_connection.cc b/libs/backends/jack/jack_connection.cc index 77c86b9143..fee1b299ba 100644 --- a/libs/backends/jack/jack_connection.cc +++ b/libs/backends/jack/jack_connection.cc @@ -21,6 +21,8 @@ #include #include +#include + #include "pbd/epa.h" #include "jack_connection.h" @@ -145,11 +147,7 @@ JackConnection::close () _jack = 0; /* If we started JACK, it will be closing down */ -#ifdef PLATFORM_WINDOWS - Sleep(500); -#else - usleep (500000); -#endif + Glib::usleep (500000); Disconnected (""); /* EMIT SIGNAL */ From 69df7763a19c56e83dd95b964c51172fbef7f22b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 3 Dec 2013 10:24:34 -0500 Subject: [PATCH 16/50] switch from using Sleep/usleep to Glib::usleep() (and remember that we need to make Glib::usleep() actually work on windows one day) --- gtk2_ardour/ardour_ui.cc | 6 +++--- gtk2_ardour/editor_ops.cc | 2 +- gtk2_ardour/export_range_markers_dialog.cc | 2 +- gtk2_ardour/export_video_dialog.cc | 2 +- gtk2_ardour/linux_vst_gui_support.cc | 5 +++-- gtk2_ardour/lxvst_plugin_ui.cc | 2 +- gtk2_ardour/system_exec.cc | 2 +- gtk2_ardour/utils_videotl.cc | 2 +- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 763b4070be..e80a61722b 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -753,7 +753,7 @@ ARDOUR_UI::starting () // wait for announce reply from nsm server for ( i = 0; i < 5000; ++i) { nsm->check (); - usleep (i); + Glib::usleep (i); if (nsm->is_active()) { break; } @@ -765,7 +765,7 @@ ARDOUR_UI::starting () // wait for open command from nsm server for ( i = 0; i < 5000; ++i) { nsm->check (); - usleep (1000); + Glib::usleep (1000); if (nsm->client_id ()) { break; } @@ -3506,7 +3506,7 @@ ARDOUR_UI::start_video_server (Gtk::Window* float_window, bool popup_msg) } int timeout = 120; // 6 sec while (!ARDOUR_UI::instance()->video_timeline->check_server()) { - usleep (50000); + Glib::usleep (50000); if (--timeout <= 0 || !video_server_process->is_running()) break; } if (timeout <= 0) { diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 1a818f1c71..2c21418817 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -3481,7 +3481,7 @@ Editor::freeze_route () /* wait for just a little while, because the above call is asynchronous */ - ::usleep (250000); + Glib::usleep (250000); if (clicked_routeview == 0 || !clicked_routeview->is_audio_track()) { return; diff --git a/gtk2_ardour/export_range_markers_dialog.cc b/gtk2_ardour/export_range_markers_dialog.cc index 4b99162974..97a8dba25f 100644 --- a/gtk2_ardour/export_range_markers_dialog.cc +++ b/gtk2_ardour/export_range_markers_dialog.cc @@ -93,7 +93,7 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList& if(gtk_events_pending()){ gtk_main_iteration(); }else { - usleep(10000); + Glib::usleep(10000); } } diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index 67030cdad5..e88f9c5eff 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -572,7 +572,7 @@ ExportVideoDialog::launch_export () if (gtk_events_pending()) { gtk_main_iteration (); } else { - usleep (10000); + Glib::usleep (10000); } } audio_progress_connection.disconnect(); diff --git a/gtk2_ardour/linux_vst_gui_support.cc b/gtk2_ardour/linux_vst_gui_support.cc index 6eec688a7c..4d90bdd4aa 100644 --- a/gtk2_ardour/linux_vst_gui_support.cc +++ b/gtk2_ardour/linux_vst_gui_support.cc @@ -33,6 +33,7 @@ #include #include #include +#include #include "ardour/linux_vst_support.h" @@ -377,7 +378,7 @@ void* gui_event_loop (void* ptr) /*We don't want to use all the CPU.. */ - usleep(1000); + Glib::usleep(1000); LXVST_sched_event_timer++; @@ -706,7 +707,7 @@ vstfx_launch_editor (VSTState* vstfx) /*QUIRK - some plugins need a slight delay after opening the editor before you can ask the window size or they might return zero - specifically discoDSP */ - usleep(100000); + Glib::usleep(100000); /*Now we can find out how big the parent window should be (and try) to resize it*/ diff --git a/gtk2_ardour/lxvst_plugin_ui.cc b/gtk2_ardour/lxvst_plugin_ui.cc index d31038755b..e3335d4990 100644 --- a/gtk2_ardour/lxvst_plugin_ui.cc +++ b/gtk2_ardour/lxvst_plugin_ui.cc @@ -141,7 +141,7 @@ LXVSTPluginUI::get_XID () */ while (!(_vst->state()->been_activated)) { - usleep (1000); + Glib::usleep (1000); } int const id = _vst->state()->xid; diff --git a/gtk2_ardour/system_exec.cc b/gtk2_ardour/system_exec.cc index 59f3647e51..d0188d5b36 100644 --- a/gtk2_ardour/system_exec.cc +++ b/gtk2_ardour/system_exec.cc @@ -537,7 +537,7 @@ SystemExec::terminate () if (pid) { ::kill(pid, SIGTERM); - ::usleep(50000); + usleep(50000); sched_yield(); wait(WNOHANG); } diff --git a/gtk2_ardour/utils_videotl.cc b/gtk2_ardour/utils_videotl.cc index ed1bfad766..2e250b2cee 100644 --- a/gtk2_ardour/utils_videotl.cc +++ b/gtk2_ardour/utils_videotl.cc @@ -325,7 +325,7 @@ extern "C" { struct A3MemoryStruct chunk; long int httpstatus; if (status) *status = 0; - //usleep(500000); return NULL; // TEST & DEBUG + //Glib::usleep(500000); return NULL; // TEST & DEBUG if (strncmp("http://", u, 7)) return NULL; chunk.data=NULL; From 75212b28b2d4c0345a43745cd738b0d214ba5d47 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 13:57:04 -0500 Subject: [PATCH 17/50] new/extended windows packaging scripts and associated resources --- tools/windows_packaging/README | 8 + .../mingw64/fonts/conf.avail/10-autohint.conf | 8 + .../fonts/conf.avail/10-no-sub-pixel.conf | 8 + .../fonts/conf.avail/10-sub-pixel-bgr.conf | 8 + .../fonts/conf.avail/10-sub-pixel-rgb.conf | 8 + .../fonts/conf.avail/10-sub-pixel-vbgr.conf | 8 + .../fonts/conf.avail/10-sub-pixel-vrgb.conf | 8 + .../mingw64/fonts/conf.avail/10-unhinted.conf | 8 + .../conf.avail/20-fix-globaladvance.conf | 28 ++ .../conf.avail/20-unhint-small-vera.conf | 48 ++ .../fonts/conf.avail/25-unhint-nonlatin.conf | 128 ++++++ .../fonts/conf.avail/30-metric-aliases.conf | 211 +++++++++ .../fonts/conf.avail/30-urw-aliases.conf | 40 ++ .../mingw64/fonts/conf.avail/40-nonlatin.conf | 90 ++++ .../mingw64/fonts/conf.avail/45-latin.conf | 77 ++++ .../fonts/conf.avail/49-sansserif.conf | 21 + .../mingw64/fonts/conf.avail/50-user.conf | 7 + .../mingw64/fonts/conf.avail/51-local.conf | 6 + .../mingw64/fonts/conf.avail/60-latin.conf | 70 +++ .../fonts/conf.avail/65-fonts-persian.conf | 419 ++++++++++++++++++ .../mingw64/fonts/conf.avail/65-khmer.conf | 16 + .../mingw64/fonts/conf.avail/65-nonlatin.conf | 195 ++++++++ .../mingw64/fonts/conf.avail/69-unifont.conf | 28 ++ .../fonts/conf.avail/70-no-bitmaps.conf | 12 + .../fonts/conf.avail/70-yes-bitmaps.conf | 12 + .../fonts/conf.avail/80-delicious.conf | 19 + .../fonts/conf.avail/90-synthetic.conf | 64 +++ .../fonts/conf.d/20-fix-globaladvance.conf | 28 ++ .../fonts/conf.d/20-unhint-small-vera.conf | 48 ++ .../fonts/conf.d/30-metric-aliases.conf | 211 +++++++++ .../mingw64/fonts/conf.d/30-urw-aliases.conf | 40 ++ .../mingw64/fonts/conf.d/40-nonlatin.conf | 90 ++++ .../mingw64/fonts/conf.d/45-latin.conf | 77 ++++ .../mingw64/fonts/conf.d/49-sansserif.conf | 21 + .../mingw64/fonts/conf.d/50-user.conf | 7 + .../mingw64/fonts/conf.d/51-local.conf | 6 + .../mingw64/fonts/conf.d/60-latin.conf | 70 +++ .../fonts/conf.d/65-fonts-persian.conf | 419 ++++++++++++++++++ .../mingw64/fonts/conf.d/65-nonlatin.conf | 195 ++++++++ .../mingw64/fonts/conf.d/69-unifont.conf | 28 ++ .../mingw64/fonts/conf.d/80-delicious.conf | 19 + .../mingw64/fonts/conf.d/90-synthetic.conf | 64 +++ .../mingw64/fonts/conf.d/README | 23 + .../mingw64/fonts/fonts.conf | 151 +++++++ .../windows_packaging/mingw64/fonts/fonts.dtd | 224 ++++++++++ .../mingw64/gtk-2.0/gtk.immodules | 39 ++ .../mingw64/gtk-2.0/im-multipress.conf | 22 + .../mingw64/pango/pango.modules | 35 ++ tools/windows_packaging/package_win32.sh | 242 ++++++++++ tools/windows_packaging/win32-env.sh | 54 +++ 50 files changed, 3668 insertions(+) create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/10-autohint.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/10-no-sub-pixel.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-bgr.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-rgb.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vbgr.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vrgb.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/10-unhinted.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/20-fix-globaladvance.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/20-unhint-small-vera.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/25-unhint-nonlatin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/30-metric-aliases.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/30-urw-aliases.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/40-nonlatin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/45-latin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/49-sansserif.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/50-user.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/51-local.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/60-latin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/65-fonts-persian.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/65-khmer.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/65-nonlatin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/69-unifont.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/70-no-bitmaps.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/70-yes-bitmaps.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/80-delicious.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.avail/90-synthetic.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/20-fix-globaladvance.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/20-unhint-small-vera.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/30-metric-aliases.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/30-urw-aliases.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/40-nonlatin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/45-latin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/49-sansserif.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/50-user.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/51-local.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/60-latin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/65-fonts-persian.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/65-nonlatin.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/69-unifont.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/80-delicious.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/90-synthetic.conf create mode 100644 tools/windows_packaging/mingw64/fonts/conf.d/README create mode 100644 tools/windows_packaging/mingw64/fonts/fonts.conf create mode 100644 tools/windows_packaging/mingw64/fonts/fonts.dtd create mode 100644 tools/windows_packaging/mingw64/gtk-2.0/gtk.immodules create mode 100644 tools/windows_packaging/mingw64/gtk-2.0/im-multipress.conf create mode 100644 tools/windows_packaging/mingw64/pango/pango.modules create mode 100755 tools/windows_packaging/package_win32.sh create mode 100755 tools/windows_packaging/win32-env.sh diff --git a/tools/windows_packaging/README b/tools/windows_packaging/README index cb01c5675f..749092b3e3 100644 --- a/tools/windows_packaging/README +++ b/tools/windows_packaging/README @@ -44,6 +44,14 @@ windows executable. This could probably be done in the waf scripts specifically for the windows build but I felt it simpler to do it in the packaging script for now. +--------- NOTE -------------------- + +package_win32.sh is an updated/extended version of package.sh from Valeriy. It +should probably be merged with package.sh at some point. It uses a number of +additional resources located under mingw64/ + +----------------------------------- + The packaging script then copies the JACK deamon and all the required mingw shared libraries from the host system into the packaging directory. The shared libraries or dll's are placed in the same directory as the Ardour diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/10-autohint.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/10-autohint.conf new file mode 100644 index 0000000000..c597bf41da --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/10-autohint.conf @@ -0,0 +1,8 @@ + + + + + + true + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/10-no-sub-pixel.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/10-no-sub-pixel.conf new file mode 100644 index 0000000000..87ada4ef2d --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/10-no-sub-pixel.conf @@ -0,0 +1,8 @@ + + + + + + none + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-bgr.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-bgr.conf new file mode 100644 index 0000000000..e1f64fd33b --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-bgr.conf @@ -0,0 +1,8 @@ + + + + + + bgr + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-rgb.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-rgb.conf new file mode 100644 index 0000000000..2b49fe3d24 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-rgb.conf @@ -0,0 +1,8 @@ + + + + + + rgb + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vbgr.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vbgr.conf new file mode 100644 index 0000000000..5947650df1 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vbgr.conf @@ -0,0 +1,8 @@ + + + + + + vbgr + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vrgb.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vrgb.conf new file mode 100644 index 0000000000..84481bde2d --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/10-sub-pixel-vrgb.conf @@ -0,0 +1,8 @@ + + + + + + vrgb + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/10-unhinted.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/10-unhinted.conf new file mode 100644 index 0000000000..025ae2a82a --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/10-unhinted.conf @@ -0,0 +1,8 @@ + + + + + + false + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/20-fix-globaladvance.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/20-fix-globaladvance.conf new file mode 100644 index 0000000000..2a9c063257 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/20-fix-globaladvance.conf @@ -0,0 +1,28 @@ + + + + + + GulimChe + false + + + + DotumChe + false + + + + BatangChe + false + + + + GungsuhChe + false + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/20-unhint-small-vera.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/20-unhint-small-vera.conf new file mode 100644 index 0000000000..c4ebee9d44 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/20-unhint-small-vera.conf @@ -0,0 +1,48 @@ + + + + + + + + Bitstream Vera Sans + + + 7.5 + + + false + + + + + + Bitstream Vera Serif + + + 7.5 + + + false + + + + + + Bitstream Vera Sans Mono + + + 7.5 + + + false + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/25-unhint-nonlatin.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/25-unhint-nonlatin.conf new file mode 100644 index 0000000000..ffb70c69f6 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/25-unhint-nonlatin.conf @@ -0,0 +1,128 @@ + + + + + + + + + Kochi Mincho + + + false + + + + + Kochi Gothic + + + false + + + + + Sazanami Mincho + + + false + + + + + Sazanami Gothic + + + false + + + + + Baekmuk Batang + + + false + + + + + Baekmuk Dotum + + + false + + + + + Baekmuk Gulim + + + false + + + + + Baekmuk Headline + + + false + + + + + AR PL Mingti2L Big5 + + + false + + + + + AR PL ShanHeiSun Uni + + + false + + + + + AR PL KaitiM Big5 + + + false + + + + + AR PL ZenKai Uni + + + false + + + + + AR PL SungtiL GB + + + false + + + + + AR PL KaitiM GB + + + false + + + + + ZYSong18030 + + + false + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/30-metric-aliases.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/30-metric-aliases.conf new file mode 100644 index 0000000000..702a495ea6 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/30-metric-aliases.conf @@ -0,0 +1,211 @@ + + + + + + + + + + + Nimbus Sans L + + Helvetica + + + + + Nimbus Roman No9 L + + Times + + + + + Nimbus Mono L + + Courier + + + + + + + Liberation Sans + Albany + Albany AMT + + Arial + + + + + Liberation Serif + Thorndale + Thorndale AMT + + Times New Roman + + + + + Liberation Mono + Cumberland + Cumberland AMT + + Courier New + + + + + + + + + + + Helvetica + + Arial + + + + + Times + + Times New Roman + + + + + Courier + + Courier New + + + + + + + Arial + + Helvetica + + + + + Times New Roman + + Times + + + + + Courier New + + Courier + + + + + + + + + + + Helvetica + + Nimbus Sans L + + + + + Times + + Nimbus Roman No9 L + + + + + Courier + + Nimbus Mono L + + + + + + + Arial + + Liberation Sans + Albany + Albany AMT + + + + + Times New Roman + + Liberation Serif + Thorndale + Thorndale AMT + + + + + Courier New + + Liberation Mono + Cumberland + Cumberland AMT + + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/30-urw-aliases.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/30-urw-aliases.conf new file mode 100644 index 0000000000..9d5920306a --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/30-urw-aliases.conf @@ -0,0 +1,40 @@ + + + + + + Avant Garde + URW Gothic L + + + Bookman + URW Bookman L + + + New Century Schoolbook + Century Schoolbook L + + + Palatino + URW Palladio L + + + Zapf Chancery + URW Chancery L + + + Zapf Dingbats + Dingbats + + + + Symbol + + + Standard Symbols L + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/40-nonlatin.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/40-nonlatin.conf new file mode 100644 index 0000000000..a875db08c3 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/40-nonlatin.conf @@ -0,0 +1,90 @@ + + + + + + + + Nazli + Lotoos + Mitra + Ferdosi + Badr + Zar + Titr + Jadid + Kochi Mincho + AR PL SungtiL GB + AR PL Mingti2L Big5 + MS 明朝 + UnBatang + Baekmuk Batang + MgOpen Canonica + Sazanami Mincho + AR PL ZenKai Uni + ZYSong18030 + FreeSerif + serif + + + + Arshia + Elham + Farnaz + Nasim + Sina + Roya + Koodak + Terafik + Kochi Gothic + AR PL KaitiM GB + AR PL KaitiM Big5 + MS ゴシック + UnDotum + Baekmuk Dotum + SimSun + MgOpen Modata + Sazanami Gothic + AR PL ShanHeiSun Uni + ZYSong18030 + FreeSans + sans-serif + + + + NSimSun + ZYSong18030 + FreeMono + monospace + + + + + Homa + Kamran + Fantezi + Tabassom + fantasy + + + + + IranNastaliq + Nafees Nastaleeq + cursive + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/45-latin.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/45-latin.conf new file mode 100644 index 0000000000..7e41264688 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/45-latin.conf @@ -0,0 +1,77 @@ + + + + + + + + Bitstream Vera Serif + DejaVu Serif + Liberation Serif + Times New Roman + Times + Nimbus Roman No9 L + Luxi Serif + Thorndale AMT + Thorndale + serif + + + + Bitstream Vera Sans + DejaVu Sans + Liberation Sans + Arial + Helvetica + Verdana + Albany AMT + Albany + Nimbus Sans L + Luxi Sans + sans-serif + + + + Bitstream Vera Sans Mono + DejaVu Sans Mono + Liberation Mono + Inconsolata + Courier New + Courier + Andale Mono + Luxi Mono + Cumberland AMT + Cumberland + Nimbus Mono L + monospace + + + + Impact + Copperplate Gothic Std + Cooper Std + Bauhaus Std + fantasy + + + + ITC Zapf Chancery Std + Zapfino + Comic Sans MS + cursive + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/49-sansserif.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/49-sansserif.conf new file mode 100644 index 0000000000..c6209a7d31 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/49-sansserif.conf @@ -0,0 +1,21 @@ + + + + + + + sans-serif + + + serif + + + monospace + + + sans-serif + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/50-user.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/50-user.conf new file mode 100644 index 0000000000..3f8901296b --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/50-user.conf @@ -0,0 +1,7 @@ + + + + + ~/.fonts.conf.d + ~/.fonts.conf + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/51-local.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/51-local.conf new file mode 100644 index 0000000000..ca9fbe1959 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/51-local.conf @@ -0,0 +1,6 @@ + + + + + local.conf + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/60-latin.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/60-latin.conf new file mode 100644 index 0000000000..2107e31e4b --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/60-latin.conf @@ -0,0 +1,70 @@ + + + + + serif + + Bitstream Vera Serif + DejaVu Serif + Times New Roman + Thorndale AMT + Luxi Serif + Nimbus Roman No9 L + Times + + + + sans-serif + + Bitstream Vera Sans + DejaVu Sans + Verdana + Arial + Albany AMT + Luxi Sans + Nimbus Sans L + Helvetica + Lucida Sans Unicode + BPG Glaho International + Tahoma + + + + monospace + + Bitstream Vera Sans Mono + DejaVu Sans Mono + Inconsolata + Andale Mono + Courier New + Cumberland AMT + Luxi Mono + Nimbus Mono L + Courier + + + + + fantasy + + Impact + Copperplate Gothic Std + Cooper Std + Bauhaus Std + + + + + cursive + + ITC Zapf Chancery Std + Zapfino + Comic Sans MS + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/65-fonts-persian.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/65-fonts-persian.conf new file mode 100644 index 0000000000..0033675a49 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/65-fonts-persian.conf @@ -0,0 +1,419 @@ + + + + + + + + + + + Nesf + Nesf2 + + + Nesf2 + Persian_sansserif_default + + + + + + Nazanin + Nazli + + + Lotus + Lotoos + + + Yaqut + Yaghoot + + + Yaghut + Yaghoot + + + Traffic + Terafik + + + Ferdowsi + Ferdosi + + + Fantezy + Fantezi + + + + + + + + Jadid + Persian_title + + + Titr + Persian_title + + + + + Kamran + + Persian_fantasy + Homa + + + + Homa + + Persian_fantasy + Kamran + + + + Fantezi + Persian_fantasy + + + Tabassom + Persian_fantasy + + + + + Arshia + Persian_square + + + Nasim + Persian_square + + + Elham + + Persian_square + Farnaz + + + + Farnaz + + Persian_square + Elham + + + + Sina + Persian_square + + + + + + + Persian_title + + Titr + Jadid + Persian_serif + + + + + + Persian_fantasy + + Homa + Kamran + Fantezi + Tabassom + Persian_square + + + + + + Persian_square + + Arshia + Elham + Farnaz + Nasim + Sina + Persian_serif + + + + + + + + Elham + + + farsiweb + + + + + + Homa + + + farsiweb + + + + + + Koodak + + + farsiweb + + + + + + Nazli + + + farsiweb + + + + + + Roya + + + farsiweb + + + + + + Terafik + + + farsiweb + + + + + + Titr + + + farsiweb + + + + + + + + + + TURNED-OFF + + + farsiweb + + + + roman + + + + roman + + + + + matrix + 1-0.2 + 01 + + + + + + oblique + + + + + + + + + farsiweb + + + false + + + false + + + false + + + + + + + + + serif + + Nazli + Lotoos + Mitra + Ferdosi + Badr + Zar + + + + + + sans-serif + + Roya + Koodak + Terafik + + + + + + monospace + + + Terafik + + + + + + fantasy + + Homa + Kamran + Fantezi + Tabassom + + + + + + cursive + + IranNastaliq + Nafees Nastaleeq + + + + + + + + + serif + + + 200 + + + 24 + + + Titr + + + + + + + sans-serif + + + 200 + + + 24 + + + Titr + + + + + + + Persian_sansserif_default + + + 200 + + + 24 + + + Titr + + + + + + + + + Persian_sansserif_default + + + Roya + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/65-khmer.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/65-khmer.conf new file mode 100644 index 0000000000..f9d06f2a97 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/65-khmer.conf @@ -0,0 +1,16 @@ + + + + + serif + + Khmer OS" + + + + sans-serif + + Khmer OS" + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/65-nonlatin.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/65-nonlatin.conf new file mode 100644 index 0000000000..53ac064b0a --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/65-nonlatin.conf @@ -0,0 +1,195 @@ + + + + + serif + + Artsounk + BPG UTF8 M + Kinnari + Norasi + Frank Ruehl + Dror + JG LaoTimes + Saysettha Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Gothic + UmePlus P Gothic + SimSun + PMingLiu + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + ZYSong18030 + HanyiSong + MgOpen Canonica + Sazanami Mincho + IPAMonaMincho + IPAMincho + Kochi Mincho + AR PL SungtiL GB + AR PL Mingti2L Big5 + AR PL Zenkai Uni + MS 明朝 + ZYSong18030 + UnBatang + Baekmuk Batang + KacstQura + Frank Ruehl CLM + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + sans-serif + + Nachlieli + Lucida Sans Unicode + Yudit Unicode + Kerkis + ArmNet Helvetica + Artsounk + BPG UTF8 M + Waree + Loma + Garuda + Umpush + Saysettha Unicode + JG Lao Old Arial + GF Zemen Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Gothic + UmePlus P Gothic + + SimSun + PMingLiu + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + MgOpen Modata + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + AR PL KaitiM Big5 + AR PL ShanHeiSun Uni + AR PL SungtiL GB + AR PL Mingti2L Big5 + MS ゴシック + ZYSong18030 + TSCu_Paranar + UnDotum + Baekmuk Dotum + Baekmuk Gulim + KacstQura + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + monospace + + Miriam Mono + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + MS Gothic + UmePlus Gothic + NSimSun + MingLiu + AR PL ShanHeiSun Uni + AR PL New Sung Mono + HanyiSong + AR PL SungtiL GB + AR PL Mingti2L Big5 + ZYSong18030 + UnBatang + UnDotum + Baekmuk Batang + Baekmuk Dotum + Baekmuk Gulim + TlwgTypo + TlwgTypist + TlwgTypewriter + TlwgMono + Hasida + Mitra Mono + GF Zemen Unicode + Hapax Berbère + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/69-unifont.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/69-unifont.conf new file mode 100644 index 0000000000..177dec5d4e --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/69-unifont.conf @@ -0,0 +1,28 @@ + + + + + serif + + FreeSerif + Code2000 + Code2001 + + + + sans-serif + + FreeSans + Arial Unicode MS + Arial Unicode + Code2000 + Code2001 + + + + monospace + + FreeMono + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/70-no-bitmaps.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/70-no-bitmaps.conf new file mode 100644 index 0000000000..6b506e82a0 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/70-no-bitmaps.conf @@ -0,0 +1,12 @@ + + + + + + + + false + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/70-yes-bitmaps.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/70-yes-bitmaps.conf new file mode 100644 index 0000000000..c153aebdca --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/70-yes-bitmaps.conf @@ -0,0 +1,12 @@ + + + + + + + + false + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/80-delicious.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/80-delicious.conf new file mode 100644 index 0000000000..728f50caee --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/80-delicious.conf @@ -0,0 +1,19 @@ + + + + + + + + + Delicious + + + Heavy + + + heavy + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.avail/90-synthetic.conf b/tools/windows_packaging/mingw64/fonts/conf.avail/90-synthetic.conf new file mode 100644 index 0000000000..b8d1e85e1f --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.avail/90-synthetic.conf @@ -0,0 +1,64 @@ + + + + + + + + + roman + + + + roman + + + + + matrix + 10.2 + 01 + + + + + + oblique + + + + false + + + + + + + + + medium + + + + medium + + + + true + + + + bold + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/20-fix-globaladvance.conf b/tools/windows_packaging/mingw64/fonts/conf.d/20-fix-globaladvance.conf new file mode 100644 index 0000000000..2a9c063257 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/20-fix-globaladvance.conf @@ -0,0 +1,28 @@ + + + + + + GulimChe + false + + + + DotumChe + false + + + + BatangChe + false + + + + GungsuhChe + false + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/20-unhint-small-vera.conf b/tools/windows_packaging/mingw64/fonts/conf.d/20-unhint-small-vera.conf new file mode 100644 index 0000000000..c4ebee9d44 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/20-unhint-small-vera.conf @@ -0,0 +1,48 @@ + + + + + + + + Bitstream Vera Sans + + + 7.5 + + + false + + + + + + Bitstream Vera Serif + + + 7.5 + + + false + + + + + + Bitstream Vera Sans Mono + + + 7.5 + + + false + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/30-metric-aliases.conf b/tools/windows_packaging/mingw64/fonts/conf.d/30-metric-aliases.conf new file mode 100644 index 0000000000..702a495ea6 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/30-metric-aliases.conf @@ -0,0 +1,211 @@ + + + + + + + + + + + Nimbus Sans L + + Helvetica + + + + + Nimbus Roman No9 L + + Times + + + + + Nimbus Mono L + + Courier + + + + + + + Liberation Sans + Albany + Albany AMT + + Arial + + + + + Liberation Serif + Thorndale + Thorndale AMT + + Times New Roman + + + + + Liberation Mono + Cumberland + Cumberland AMT + + Courier New + + + + + + + + + + + Helvetica + + Arial + + + + + Times + + Times New Roman + + + + + Courier + + Courier New + + + + + + + Arial + + Helvetica + + + + + Times New Roman + + Times + + + + + Courier New + + Courier + + + + + + + + + + + Helvetica + + Nimbus Sans L + + + + + Times + + Nimbus Roman No9 L + + + + + Courier + + Nimbus Mono L + + + + + + + Arial + + Liberation Sans + Albany + Albany AMT + + + + + Times New Roman + + Liberation Serif + Thorndale + Thorndale AMT + + + + + Courier New + + Liberation Mono + Cumberland + Cumberland AMT + + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/30-urw-aliases.conf b/tools/windows_packaging/mingw64/fonts/conf.d/30-urw-aliases.conf new file mode 100644 index 0000000000..9d5920306a --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/30-urw-aliases.conf @@ -0,0 +1,40 @@ + + + + + + Avant Garde + URW Gothic L + + + Bookman + URW Bookman L + + + New Century Schoolbook + Century Schoolbook L + + + Palatino + URW Palladio L + + + Zapf Chancery + URW Chancery L + + + Zapf Dingbats + Dingbats + + + + Symbol + + + Standard Symbols L + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/40-nonlatin.conf b/tools/windows_packaging/mingw64/fonts/conf.d/40-nonlatin.conf new file mode 100644 index 0000000000..a875db08c3 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/40-nonlatin.conf @@ -0,0 +1,90 @@ + + + + + + + + Nazli + Lotoos + Mitra + Ferdosi + Badr + Zar + Titr + Jadid + Kochi Mincho + AR PL SungtiL GB + AR PL Mingti2L Big5 + MS 明朝 + UnBatang + Baekmuk Batang + MgOpen Canonica + Sazanami Mincho + AR PL ZenKai Uni + ZYSong18030 + FreeSerif + serif + + + + Arshia + Elham + Farnaz + Nasim + Sina + Roya + Koodak + Terafik + Kochi Gothic + AR PL KaitiM GB + AR PL KaitiM Big5 + MS ゴシック + UnDotum + Baekmuk Dotum + SimSun + MgOpen Modata + Sazanami Gothic + AR PL ShanHeiSun Uni + ZYSong18030 + FreeSans + sans-serif + + + + NSimSun + ZYSong18030 + FreeMono + monospace + + + + + Homa + Kamran + Fantezi + Tabassom + fantasy + + + + + IranNastaliq + Nafees Nastaleeq + cursive + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/45-latin.conf b/tools/windows_packaging/mingw64/fonts/conf.d/45-latin.conf new file mode 100644 index 0000000000..7e41264688 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/45-latin.conf @@ -0,0 +1,77 @@ + + + + + + + + Bitstream Vera Serif + DejaVu Serif + Liberation Serif + Times New Roman + Times + Nimbus Roman No9 L + Luxi Serif + Thorndale AMT + Thorndale + serif + + + + Bitstream Vera Sans + DejaVu Sans + Liberation Sans + Arial + Helvetica + Verdana + Albany AMT + Albany + Nimbus Sans L + Luxi Sans + sans-serif + + + + Bitstream Vera Sans Mono + DejaVu Sans Mono + Liberation Mono + Inconsolata + Courier New + Courier + Andale Mono + Luxi Mono + Cumberland AMT + Cumberland + Nimbus Mono L + monospace + + + + Impact + Copperplate Gothic Std + Cooper Std + Bauhaus Std + fantasy + + + + ITC Zapf Chancery Std + Zapfino + Comic Sans MS + cursive + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/49-sansserif.conf b/tools/windows_packaging/mingw64/fonts/conf.d/49-sansserif.conf new file mode 100644 index 0000000000..c6209a7d31 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/49-sansserif.conf @@ -0,0 +1,21 @@ + + + + + + + sans-serif + + + serif + + + monospace + + + sans-serif + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/50-user.conf b/tools/windows_packaging/mingw64/fonts/conf.d/50-user.conf new file mode 100644 index 0000000000..3f8901296b --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/50-user.conf @@ -0,0 +1,7 @@ + + + + + ~/.fonts.conf.d + ~/.fonts.conf + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/51-local.conf b/tools/windows_packaging/mingw64/fonts/conf.d/51-local.conf new file mode 100644 index 0000000000..ca9fbe1959 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/51-local.conf @@ -0,0 +1,6 @@ + + + + + local.conf + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/60-latin.conf b/tools/windows_packaging/mingw64/fonts/conf.d/60-latin.conf new file mode 100644 index 0000000000..2107e31e4b --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/60-latin.conf @@ -0,0 +1,70 @@ + + + + + serif + + Bitstream Vera Serif + DejaVu Serif + Times New Roman + Thorndale AMT + Luxi Serif + Nimbus Roman No9 L + Times + + + + sans-serif + + Bitstream Vera Sans + DejaVu Sans + Verdana + Arial + Albany AMT + Luxi Sans + Nimbus Sans L + Helvetica + Lucida Sans Unicode + BPG Glaho International + Tahoma + + + + monospace + + Bitstream Vera Sans Mono + DejaVu Sans Mono + Inconsolata + Andale Mono + Courier New + Cumberland AMT + Luxi Mono + Nimbus Mono L + Courier + + + + + fantasy + + Impact + Copperplate Gothic Std + Cooper Std + Bauhaus Std + + + + + cursive + + ITC Zapf Chancery Std + Zapfino + Comic Sans MS + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/65-fonts-persian.conf b/tools/windows_packaging/mingw64/fonts/conf.d/65-fonts-persian.conf new file mode 100644 index 0000000000..0033675a49 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/65-fonts-persian.conf @@ -0,0 +1,419 @@ + + + + + + + + + + + Nesf + Nesf2 + + + Nesf2 + Persian_sansserif_default + + + + + + Nazanin + Nazli + + + Lotus + Lotoos + + + Yaqut + Yaghoot + + + Yaghut + Yaghoot + + + Traffic + Terafik + + + Ferdowsi + Ferdosi + + + Fantezy + Fantezi + + + + + + + + Jadid + Persian_title + + + Titr + Persian_title + + + + + Kamran + + Persian_fantasy + Homa + + + + Homa + + Persian_fantasy + Kamran + + + + Fantezi + Persian_fantasy + + + Tabassom + Persian_fantasy + + + + + Arshia + Persian_square + + + Nasim + Persian_square + + + Elham + + Persian_square + Farnaz + + + + Farnaz + + Persian_square + Elham + + + + Sina + Persian_square + + + + + + + Persian_title + + Titr + Jadid + Persian_serif + + + + + + Persian_fantasy + + Homa + Kamran + Fantezi + Tabassom + Persian_square + + + + + + Persian_square + + Arshia + Elham + Farnaz + Nasim + Sina + Persian_serif + + + + + + + + Elham + + + farsiweb + + + + + + Homa + + + farsiweb + + + + + + Koodak + + + farsiweb + + + + + + Nazli + + + farsiweb + + + + + + Roya + + + farsiweb + + + + + + Terafik + + + farsiweb + + + + + + Titr + + + farsiweb + + + + + + + + + + TURNED-OFF + + + farsiweb + + + + roman + + + + roman + + + + + matrix + 1-0.2 + 01 + + + + + + oblique + + + + + + + + + farsiweb + + + false + + + false + + + false + + + + + + + + + serif + + Nazli + Lotoos + Mitra + Ferdosi + Badr + Zar + + + + + + sans-serif + + Roya + Koodak + Terafik + + + + + + monospace + + + Terafik + + + + + + fantasy + + Homa + Kamran + Fantezi + Tabassom + + + + + + cursive + + IranNastaliq + Nafees Nastaleeq + + + + + + + + + serif + + + 200 + + + 24 + + + Titr + + + + + + + sans-serif + + + 200 + + + 24 + + + Titr + + + + + + + Persian_sansserif_default + + + 200 + + + 24 + + + Titr + + + + + + + + + Persian_sansserif_default + + + Roya + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/65-nonlatin.conf b/tools/windows_packaging/mingw64/fonts/conf.d/65-nonlatin.conf new file mode 100644 index 0000000000..53ac064b0a --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/65-nonlatin.conf @@ -0,0 +1,195 @@ + + + + + serif + + Artsounk + BPG UTF8 M + Kinnari + Norasi + Frank Ruehl + Dror + JG LaoTimes + Saysettha Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Gothic + UmePlus P Gothic + SimSun + PMingLiu + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + ZYSong18030 + HanyiSong + MgOpen Canonica + Sazanami Mincho + IPAMonaMincho + IPAMincho + Kochi Mincho + AR PL SungtiL GB + AR PL Mingti2L Big5 + AR PL Zenkai Uni + MS 明朝 + ZYSong18030 + UnBatang + Baekmuk Batang + KacstQura + Frank Ruehl CLM + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + sans-serif + + Nachlieli + Lucida Sans Unicode + Yudit Unicode + Kerkis + ArmNet Helvetica + Artsounk + BPG UTF8 M + Waree + Loma + Garuda + Umpush + Saysettha Unicode + JG Lao Old Arial + GF Zemen Unicode + Pigiarniq + B Davat + B Compset + Kacst-Qr + Urdu Nastaliq Unicode + Raghindi + Mukti Narrow + malayalam + Sampige + padmaa + Hapax Berbère + MS Gothic + UmePlus P Gothic + + SimSun + PMingLiu + WenQuanYi Zen Hei + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung + MgOpen Modata + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + AR PL KaitiM Big5 + AR PL ShanHeiSun Uni + AR PL SungtiL GB + AR PL Mingti2L Big5 + MS ゴシック + ZYSong18030 + TSCu_Paranar + UnDotum + Baekmuk Dotum + Baekmuk Gulim + KacstQura + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + + monospace + + Miriam Mono + VL Gothic + IPAMonaGothic + IPAGothic + Sazanami Gothic + Kochi Gothic + AR PL KaitiM GB + MS Gothic + UmePlus Gothic + NSimSun + MingLiu + AR PL ShanHeiSun Uni + AR PL New Sung Mono + HanyiSong + AR PL SungtiL GB + AR PL Mingti2L Big5 + ZYSong18030 + UnBatang + UnDotum + Baekmuk Batang + Baekmuk Dotum + Baekmuk Gulim + TlwgTypo + TlwgTypist + TlwgTypewriter + TlwgMono + Hasida + Mitra Mono + GF Zemen Unicode + Hapax Berbère + Lohit Bengali + Lohit Gujarati + Lohit Hindi + Lohit Marathi + Lohit Maithili + Lohit Kashmiri + Lohit Konkani + Lohit Nepali + Lohit Sindhi + Lohit Punjabi + Lohit Tamil + Meera + Lohit Malayalam + Lohit Kannada + Lohit Telugu + Lohit Oriya + LKLUG + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/69-unifont.conf b/tools/windows_packaging/mingw64/fonts/conf.d/69-unifont.conf new file mode 100644 index 0000000000..177dec5d4e --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/69-unifont.conf @@ -0,0 +1,28 @@ + + + + + serif + + FreeSerif + Code2000 + Code2001 + + + + sans-serif + + FreeSans + Arial Unicode MS + Arial Unicode + Code2000 + Code2001 + + + + monospace + + FreeMono + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/80-delicious.conf b/tools/windows_packaging/mingw64/fonts/conf.d/80-delicious.conf new file mode 100644 index 0000000000..728f50caee --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/80-delicious.conf @@ -0,0 +1,19 @@ + + + + + + + + + Delicious + + + Heavy + + + heavy + + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/90-synthetic.conf b/tools/windows_packaging/mingw64/fonts/conf.d/90-synthetic.conf new file mode 100644 index 0000000000..b8d1e85e1f --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/90-synthetic.conf @@ -0,0 +1,64 @@ + + + + + + + + + roman + + + + roman + + + + + matrix + 10.2 + 01 + + + + + + oblique + + + + false + + + + + + + + + medium + + + + medium + + + + true + + + + bold + + + diff --git a/tools/windows_packaging/mingw64/fonts/conf.d/README b/tools/windows_packaging/mingw64/fonts/conf.d/README new file mode 100644 index 0000000000..c2fb52c3b4 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/conf.d/README @@ -0,0 +1,23 @@ +conf.d/README + +Each file in this directory is a fontconfig configuration file. Fontconfig +scans this directory, loading all files of the form [0-9][0-9]*.conf. +These files are normally installed in ../conf.avail and then symlinked here, +allowing them to be easily installed and then enabled/disabled by adjusting +the symlinks. + +The files are loaded in numeric order, the structure of the configuration +has led to the following conventions in usage: + + Files begining with: Contain: + + 00 through 09 Font directories + 10 through 19 system rendering defaults (AA, etc) + 20 through 29 font rendering options + 30 through 39 family substitution + 40 through 49 generic identification, map family->generic + 50 through 59 alternate config file loading + 60 through 69 generic aliases, map generic->family + 70 through 79 select font (adjust which fonts are available) + 80 through 89 match target="scan" (modify scanned patterns) + 90 through 99 font synthesis diff --git a/tools/windows_packaging/mingw64/fonts/fonts.conf b/tools/windows_packaging/mingw64/fonts/fonts.conf new file mode 100644 index 0000000000..6f5fe4b0e3 --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/fonts.conf @@ -0,0 +1,151 @@ + + + + + + + + + + WINDOWSFONTDIR + + ~/.fonts + + + + + mono + + + monospace + + + + + + + sans serif + + + sans-serif + + + + + + + sans + + + sans-serif + + + + + conf.d + + + + WINDOWSTEMPDIR_FONTCONFIG_CACHE + ~/.fontconfig + + + + + 0x0020 + 0x00A0 + 0x00AD + 0x034F + 0x0600 + 0x0601 + 0x0602 + 0x0603 + 0x06DD + 0x070F + 0x115F + 0x1160 + 0x1680 + 0x17B4 + 0x17B5 + 0x180E + 0x2000 + 0x2001 + 0x2002 + 0x2003 + 0x2004 + 0x2005 + 0x2006 + 0x2007 + 0x2008 + 0x2009 + 0x200A + 0x200B + 0x200C + 0x200D + 0x200E + 0x200F + 0x2028 + 0x2029 + 0x202A + 0x202B + 0x202C + 0x202D + 0x202E + 0x202F + 0x205F + 0x2060 + 0x2061 + 0x2062 + 0x2063 + 0x206A + 0x206B + 0x206C + 0x206D + 0x206E + 0x206F + 0x2800 + 0x3000 + 0x3164 + 0xFEFF + 0xFFA0 + 0xFFF9 + 0xFFFA + 0xFFFB + + + + 30 + + + + diff --git a/tools/windows_packaging/mingw64/fonts/fonts.dtd b/tools/windows_packaging/mingw64/fonts/fonts.dtd new file mode 100644 index 0000000000..cbdfdab3fb --- /dev/null +++ b/tools/windows_packaging/mingw64/fonts/fonts.dtd @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/windows_packaging/mingw64/gtk-2.0/gtk.immodules b/tools/windows_packaging/mingw64/gtk-2.0/gtk.immodules new file mode 100644 index 0000000000..3eaf413f9d --- /dev/null +++ b/tools/windows_packaging/mingw64/gtk-2.0/gtk.immodules @@ -0,0 +1,39 @@ +# GTK+ Input Method Modules file +# Automatically generated file, do not edit +# Created by c:/Users/VKamyshniy/gtk/source/gtk+-2.24.18/gtk/.libs/gtk-query-immodules-2.0.exe from gtk+-2.24.18 +# +# ModulesPath = c:\Users\VKamyshniy\.gtk-2.0\2.10.0\i686-pc-mingw32\immodules;c:\Users\VKamyshniy\.gtk-2.0\2.10.0\immodules;c:\Users\VKamyshniy\.gtk-2.0\i686-pc-mingw32\immodules;c:\Users\VKamyshniy\.gtk-2.0\immodules;c:/Users/VKamyshniy/gtk/inst/lib\gtk-2.0\2.10.0\i686-pc-mingw32\immodules;c:/Users/VKamyshniy/gtk/inst/lib\gtk-2.0\2.10.0\immodules;c:/Users/VKamyshniy/gtk/inst/lib\gtk-2.0\i686-pc-mingw32\immodules;c:/Users/VKamyshniy/gtk/inst/lib\gtk-2.0\immodules +# +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-am-et.dll" +"am_et" "Amharic (EZ+)" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "am" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-cedilla.dll" +"cedilla" "Cedilla" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-cyrillic-translit.dll" +"cyrillic_translit" "Cyrillic (Transliterated)" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-ime.dll" +"ime" "Windows IME" "gtk+" "" "ja:ko:zh" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-inuktitut.dll" +"inuktitut" "Inuktitut (Transliterated)" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "iu" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-ipa.dll" +"ipa" "IPA" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-multipress.dll" +"multipress" "Multipress" "gtk20" "" "" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-thai.dll" +"thai" "Thai-Lao" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "lo:th" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-ti-er.dll" +"ti_er" "Tigrigna-Eritrean (EZ+)" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "ti" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-ti-et.dll" +"ti_et" "Tigrigna-Ethiopian (EZ+)" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "ti" + +"c:/Users/VKamyshniy/gtk/inst/lib/gtk-2.0/2.10.0/immodules/im-viqr.dll" +"viqr" "Vietnamese (VIQR)" "gtk20" "/Users/VKamyshniy/gtk/inst/share/locale" "vi" + diff --git a/tools/windows_packaging/mingw64/gtk-2.0/im-multipress.conf b/tools/windows_packaging/mingw64/gtk-2.0/im-multipress.conf new file mode 100644 index 0000000000..d6c8129d90 --- /dev/null +++ b/tools/windows_packaging/mingw64/gtk-2.0/im-multipress.conf @@ -0,0 +1,22 @@ +# Example configuration file for the GTK+ Multipress Input Method +# Authored by Openismus GmbH, 2009. +# +# This file follows the GKeyFile format. On the left of the equal sign goes +# the key that you press repeatedly to iterate through the text items listed +# on the right-hand side. The list items are separated by semicolons ";" and +# consist of one or more characters each. The backslash "\" is used to escape +# characters; for instance "\;" for a literal semicolon. +# +# The example configuration below imitates the behavior of a standard mobile +# phone by a major manufacturer, with German language setting. +[keys] +KP_1 = .;,;?;!;';";1;-;(;);@;/;:;_ +KP_2 = a;b;c;2;ä;à;á;ã;â;å;æ;ç +KP_3 = d;e;f;3;è;é;ë;ê;ð +KP_4 = g;h;i;4;ì;í;î;ï +KP_5 = j;k;l;5;£ +KP_6 = m;n;o;6;ö;ò;ó;ô;õ;ø;ñ +KP_7 = p;q;r;s;7;ß;$ +KP_8 = t;u;v;8;ü;ù;ú;û +KP_9 = w;x;y;z;9;ý;þ +KP_0 = \s;0 diff --git a/tools/windows_packaging/mingw64/pango/pango.modules b/tools/windows_packaging/mingw64/pango/pango.modules new file mode 100644 index 0000000000..192022961f --- /dev/null +++ b/tools/windows_packaging/mingw64/pango/pango.modules @@ -0,0 +1,35 @@ +# Pango Modules file +# Automatically generated file, do not edit +# +# ModulesPath = c:/Users/VKamyshniy/gtk/inst/lib/pango\1.6.0\modules +# +"./lib/pango/1.6.0/modules/pango-arabic-fc.dll" ArabicScriptEngineFc PangoEngineShape PangoRenderFc arabic:* nko:* +"./lib/pango/1.6.0/modules/pango-arabic-lang.dll" ArabicScriptEngineLang PangoEngineLang PangoRenderNone arabic:* +"./lib/pango/1.6.0/modules/pango-basic-fc.dll" BasicScriptEngineFc PangoEngineShape PangoRenderFc latin:* cyrillic:* greek:* armenian:* georgian:* runic:* ogham:* bopomofo:* cherokee:* coptic:* deseret:* ethiopic:* gothic:* han:* hiragana:* katakana:* old-italic:* canadian-aboriginal:* yi:* braille:* cypriot:* limbu:* osmanya:* shavian:* linear-b:* ugaritic:* glagolitic:* cuneiform:* phoenician:* common: +"./lib/pango/1.6.0/modules/pango-basic-win32.dll" BasicScriptEngineWin32 PangoEngineShape PangoRenderWin32 common: +"./lib/pango/1.6.0/modules/pango-hangul-fc.dll" HangulScriptEngineFc PangoEngineShape PangoRenderFc hangul:* +"./lib/pango/1.6.0/modules/pango-hebrew-fc.dll" HebrewScriptEngineFc PangoEngineShape PangoRenderFc hebrew:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" devaScriptEngineFc PangoEngineShape PangoRenderFc devanagari:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" bengScriptEngineFc PangoEngineShape PangoRenderFc bengali:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" guruScriptEngineFc PangoEngineShape PangoRenderFc gurmukhi:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" gujrScriptEngineFc PangoEngineShape PangoRenderFc gujarati:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" oryaScriptEngineFc PangoEngineShape PangoRenderFc oriya:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" tamlScriptEngineFc PangoEngineShape PangoRenderFc tamil:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" teluScriptEngineFc PangoEngineShape PangoRenderFc telugu:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" kndaScriptEngineFc PangoEngineShape PangoRenderFc kannada:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" mlymScriptEngineFc PangoEngineShape PangoRenderFc malayalam:* +"./lib/pango/1.6.0/modules/pango-indic-fc.dll" sinhScriptEngineFc PangoEngineShape PangoRenderFc sinhala:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" devaIndicScriptEngineLang PangoEngineLang PangoRenderNone devanagari:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" bengIndicScriptEngineLang PangoEngineLang PangoRenderNone bengali:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" guruIndicScriptEngineLang PangoEngineLang PangoRenderNone gurmukhi:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" gujrIndicScriptEngineLang PangoEngineLang PangoRenderNone gujarati:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" oryaIndicScriptEngineLang PangoEngineLang PangoRenderNone oriya:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" tamlIndicScriptEngineLang PangoEngineLang PangoRenderNone tamil:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" teluIndicScriptEngineLang PangoEngineLang PangoRenderNone telugu:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" kndaIndicScriptEngineLang PangoEngineLang PangoRenderNone kannada:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" mlymIndicScriptEngineLang PangoEngineLang PangoRenderNone malayalam:* +"./lib/pango/1.6.0/modules/pango-indic-lang.dll" sinhIndicScriptEngineLang PangoEngineLang PangoRenderNone sinhala:* +"./lib/pango/1.6.0/modules/pango-khmer-fc.dll" KhmerScriptEngineFc PangoEngineShape PangoRenderFc khmer:* +"./lib/pango/1.6.0/modules/pango-syriac-fc.dll" SyriacScriptEngineFc PangoEngineShape PangoRenderFc syriac:* +"./lib/pango/1.6.0/modules/pango-thai-fc.dll" ThaiScriptEngineFc PangoEngineShape PangoRenderFc thai:* lao:* +"./lib/pango/1.6.0/modules/pango-tibetan-fc.dll" TibetanScriptEngineFc PangoEngineShape PangoRenderFc tibetan:* diff --git a/tools/windows_packaging/package_win32.sh b/tools/windows_packaging/package_win32.sh new file mode 100755 index 0000000000..5ef6c17cf9 --- /dev/null +++ b/tools/windows_packaging/package_win32.sh @@ -0,0 +1,242 @@ +#!/bin/bash +function copydll () { + if [ -f $GTK/bin/$1 ] ; then + echo "cp $GTK/bin/$1 $2" + cp $GTK/bin/$1 $2 || return 1 + return 0 + fi + + if [ -f $GTK/lib/$1 ] ; then + echo "cp $GTK/lib/$1 $2" + cp $GTK/lib/$1 $2 || return 1 + return 0 + fi + + if [ -f $A3/bin/$1 ] ; then + echo "cp $A3/bin/$1 $2" + cp $A3/bin/$1 $2 || return 1 + return 0 + fi + + if [ -f $A3/lib/$1 ] ; then + echo "$A3/lib/$1 $2" + cp $A3/lib/$1 $2 || return 1 + return 0 + fi + if which $1 ; then + echo "cp `which $1` $2" + cp `which $1` $2 || return 1 + return 0 + fi + + echo "there is no $1" + return 1 +} + +# libcrypto-10.dll -- OOPS +# libgnomecanvasmm-2.6-1.dll -- OOPS +# iconv.dll == libiconv-2.dll +# libpng15-15.dll == libpng16-16.dll +# liblo-7.dll == liblo.dll + +ABANDONEDDLLS=' +jack-0.dll +jackserver-0.dll +libbz2-1.dll +libcppunit-1-12-1.dll +libexpat-1.dll +libgnurx-0.dll +libharfbuzz-0.dll +libFLAC-8.dll +libvorbis-0.dll +libvorbisenc-2.dll +libidn-11.dll +libssh2-1.dll +libssl-10.dll +pthreadGC2.dll +' + +DLLS=' +libiconv-2.dll +libpng16-16.dll +liblo.dll +libart_lgpl_2-2.dll +libatk-1.0-0.dll +libatkmm-1.6-1.dll +libcairo-2.dll +libcairo-gobject-2.dll +libcairomm-1.0-1.dll +libcairo-script-interpreter-2.dll +libcurl-4.dll +libfftw3-3.dll +libfftw3f-3.dll +libfontconfig-1.dll +libfreetype-6.dll +libgailutil-18.dll +libgdkmm-2.4-1.dll +libgdk_pixbuf-2.0-0.dll +libgdk-win32-2.0-0.dll +libgio-2.0-0.dll +libgiomm-2.4-1.dll +libglib-2.0-0.dll +libglibmm-2.4-1.dll +libglibmm_generate_extra_defs-2.4-1.dll +libgmodule-2.0-0.dll +libgnomecanvas-2-0.dll +libgobject-2.0-0.dll +libgthread-2.0-0.dll +libgtkmm-2.4-1.dll +libgtk-win32-2.0-0.dll +libiconv-2.dll +libogg-0.dll +libffi-6.dll +libintl-8.dll +libpango-1.0-0.dll +libpangocairo-1.0-0.dll +libpangoft2-1.0-0.dll +libpangomm-1.4-1.dll +libpangowin32-1.0-0.dll +libpixman-1-0.dll +libsamplerate-0.dll +libsigc-2.0-0.dll +libsndfile-1.dll +libxml2-2.dll +zlib1.dll +libstdc++-6.dll +libgcc_s_sjlj-1.dll +libwinpthread-1.dll +libeay32.dll +ssleay32.dll +libregex-1.dll +libportaudio-2.dll +' +. ./win32-env.sh +. ./print-env.sh + +cd $BASE || exit 1 + +if ! test -f $BUILD_CACHE_FILE; then + echo "ERROR: $APPNAME is not configured and built yet..." + exit 1 +fi + +if [ -d $PACKAGE_DIR ]; then + echo "Removing old package directory structure ..." + rm -rf $PACKAGE_DIR || exit 1 +fi +echo "./waf --destdir=$PACKAGE_DIR install" + +./waf --destdir=$PACKAGE_DIR install || exit 1 + +echo "Moving everything from $PACKAGE_DIR/msys to $PACKAGE_DIR ..." +mv $PACKAGE_DIR/msys/* $PACKAGE_DIR || exit 1 +rmdir $PACKAGE_DIR/msys || exit 1 + + +echo "Moving Ardour dll's and executable to $PACKAGE_DIR ..." + +echo "mv $PACKAGE_DIR/lib/ardour3/*.dll $PACKAGE_DIR" +echo "mv $PACKAGE_DIR/lib/ardour3/*.exe $PACKAGE_DIR" + +mv $PACKAGE_DIR/lib/ardour3/*.dll $PACKAGE_DIR || exit 1 +mv $PACKAGE_DIR/lib/ardour3/*.exe $PACKAGE_DIR || exit 1 + +echo "Deleting import libs ..." + +rm $PACKAGE_DIR/lib/*dll.a || exit 1 + +# delete sh script +rm $PACKAGE_DIR/ardour3 || exit 1 + +if test x$WITH_TESTS != x ; then + echo "Copying tests and test data to $PACKAGE_DIR ..." + cp $BUILD_DIR/libs/pbd/run-tests.exe $PACKAGE_DIR/pbd-run-tests.exe || exit 1 + cp -r $BASE/libs/pbd/test $PACKAGE_DIR/pbd_testdata || exit 1 + + cp $BUILD_DIR/libs/evoral/run-tests.exe $PACKAGE_DIR/evoral-run-tests.exe || exit 1 + mkdir -p $PACKAGE_DIR/test/testdata || exit 1 + cp -r $BASE/libs/evoral/test/testdata/TakeFive.mid $PACKAGE_DIR/test/testdata || exit 1 + + cp -r $BASE/libs/ardour/test/data $PACKAGE_DIR/ardour_testdata || exit 1 +fi + +echo "Copying mingw config files to $PACKAGE_DIR ..." +# just copy it all for now +cp -r $MINGW_ROOT/etc $PACKAGE_DIR || exit 1 + +cp -r $GTK/lib/gtk-2.0 $PACKAGE_DIR/lib || exit 1 +cp -r $GTK/lib/gdk-pixbuf-2.0 $PACKAGE_DIR/lib || exit 1 +cp $TOOLS_DIR/loaders.cache $PACKAGE_DIR/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache || exit 1 + +mkdir -p $PACKAGE_DIR/lib/pango/1.6.0/modules || exit 1 +cp -r $GTK/lib/pango/1.6.0/modules/*.dll $PACKAGE_DIR/lib/pango/1.6.0/modules || exit 1 + +cp -r $TOOLS_DIR/mingw64/* $PACKAGE_DIR/etc || exit 1 + +echo "Copying mingw shared libraries to $PACKAGE_DIR ..." + +for i in $DLLS; +do +copydll "$i" "$PACKAGE_DIR" || exit 1 +done + +echo "Copying JACK server and drivers to $PACKAGE_DIR ..." + +# VK: -- FIXIT cp $MINGW_ROOT/bin/jackd.exe $PACKAGE_DIR || exit 1 +# VK: -- FIXIT cp -r $MINGW_ROOT/bin/jack $PACKAGE_DIR || exit 1 +# VK: -- FIXIT cp $MINGW_ROOT/bin/libportaudio-2.dll $PACKAGE_DIR || exit 1 + +SRC_DIRS=' +libs/ardour +libs/pbd +libs/gtkmm2ext +libs/midi++2 +libs/evoral +libs/panners +libs/timecode +libs/audiographer +' + +if test x$DEBUG != x ; then + + PACKAGE_SRC_DIR=$PACKAGE_DIR/src + echo "Copying source files to $PACKAGE_SRC_DIR ..." + mkdir -p $PACKAGE_SRC_DIR/libs || exit 1 + cp -r $BASE/gtk2_ardour $PACKAGE_SRC_DIR || exit 1 + for i in $SRC_DIRS; + do + cp -r -p $BASE/$i $PACKAGE_SRC_DIR/libs || exit 1 + done + + echo "Copying JACK utility programs to $PACKAGE_DIR ..." + # VK: -- FIXIT cp $MINGW_ROOT/bin/jack_*.exe $PACKAGE_DIR || exit 1 + + echo "Copying any debug files to $PACKAGE_DIR ..." + # VK: -- FIXIT cp $MINGW_ROOT/bin/*.debug $PACKAGE_DIR || exit 1 + + echo "Copying gdb to $PACKAGE_DIR ..." + cp $MINGW_ROOT/bin/gdb.exe $PACKAGE_DIR || exit 1 + + echo "Copying .gdbinit to $PACKAGE_DIR ..." + cp $TOOLS_DIR/gdbinit $PACKAGE_DIR/.gdbinit || exit 1 + + echo "Copying Gtk demo to $PACKAGE_DIR ..." + cp $GTK/bin/gtk-demo.exe $PACKAGE_DIR || exit 1 +else + echo "Optimized build Stripping executable ..." + $STRIP $PACKAGE_DIR/ardour-3.0.exe || exit 1 + echo "Stripping libraries ..." || exit 1 + find $PACKAGE_DIR -type f -name "*.dll*" | xargs $STRIP +fi + +if [ "$1" == "--tarball" ]; then + echo "Creating tarball from $PACKAGE_DIR ..." + cd $BASE || exit 1 + tar -cvJf $PACKAGE_DIR.tar.xz $PACKAGE_DIR || exit 1 +fi + +if [ "$1" == "--zip" ]; then + echo "Creating zip file from $PACKAGE_DIR ..." + cd $BASE || exit 1 + zip -r $PACKAGE_DIR.zip $PACKAGE_DIR || exit 1 +fi diff --git a/tools/windows_packaging/win32-env.sh b/tools/windows_packaging/win32-env.sh new file mode 100755 index 0000000000..5bdf4d2238 --- /dev/null +++ b/tools/windows_packaging/win32-env.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +BASE=$(readlink -f $0) +BASE=$(dirname $BASE) # up one +BASE=$(dirname $BASE) # up one more +BASE=$(dirname $BASE) # up one more + +HOST=x86_64-w64-mingw32 +MINGW_ROOT=/mingw +GTK=$HOME/gtk/inst +A3=$HOME/A3/inst + +export PKG_CONFIG_PREFIX=$MINGW_ROOT +export PKG_CONFIG_LIBDIR=$MINGW_ROOT/lib/pkgconfig +export PKGCONFIG=pkg-config +export AR=ar +export RANLIB=ranlib +export CC=gcc +export CPP=g++ +export CXX=g++ +export AS=as +export LINK_CC=gcc +export LINK_CXX=g++ +export WINRC=windres +export STRIP=strip + +BUILD_DIR=$BASE/build +BUILD_CACHE_FILE=$BUILD_DIR/c4che/_cache.py +TOOLS_DIR=$BASE/tools/windows_packaging + +. ../define_versions.sh + +APPNAME=`grep -m 1 '^APPNAME' $BASE/wscript | awk '{print $3}' | sed "s/'//g"` + +# These are only relevant after a build +if test -f $BUILD_CACHE_FILE +then + # Figure out the Build Type + if grep -q "DEBUG = True" $BUILD_CACHE_FILE; then + DEBUG=1 + PACKAGE_DIR="$HOME/$APPNAME-win32-dbg" + else + PACKAGE_DIR="$HOME/$APPNAME-win32" + fi + + if grep -q "BUILD_TESTS = True" $BUILD_CACHE_FILE; then + WITH_TESTS=1 + fi + + ARDOUR_DATA_DIR=$PACKAGE_DIR/msys/share/ardour3 +fi + +# put this somewhere better... +VIRT_IMAGE_PATH=$HOME/Data/virt-images/winxp.raw From 60134ddcbadfb6af9737c5fa303f10d13f34344c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 14:43:32 -0500 Subject: [PATCH 18/50] remove unnecessary and *nix-centric LANG= from start of command used to get gcc version; use python's platform.uname() rather than os.uname() to get platform information --- wscript | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wscript b/wscript index 6fe36608d6..d6410848f2 100644 --- a/wscript +++ b/wscript @@ -6,6 +6,7 @@ import re import string import subprocess import sys +import platform as PLATFORM def fetch_git_revision (): cmd = "git describe HEAD" @@ -85,7 +86,7 @@ i18n_children = [ # Version stuff def fetch_gcc_version (CC): - cmd = "LANG= %s --version" % CC + cmd = "%s --version" % CC output = subprocess.Popen(cmd, shell=True, stderr=subprocess.STDOUT, stdout=subprocess.PIPE).communicate()[0].splitlines() o = output[0].decode('utf-8') version = o.split(' ')[2].split('.') @@ -127,7 +128,7 @@ def set_compiler_flags (conf,opt): optimization_flags = [] debug_flags = [] - u = os.uname () + u = PLATFORM.uname () cpu = u[4] platform = u[0].lower() version = u[2] From 4ef6232de452bc67f694a0538bcfd8b30b451778 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 14:44:00 -0500 Subject: [PATCH 19/50] fix another instance of the horrible "interface" keyword collision --- gtk2_ardour/system_exec.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gtk2_ardour/system_exec.h b/gtk2_ardour/system_exec.h index cf8518f547..2c16bf9e9d 100644 --- a/gtk2_ardour/system_exec.h +++ b/gtk2_ardour/system_exec.h @@ -30,6 +30,15 @@ #define STDERR_FILENO 2 #endif +#if defined (__MINGW64__) +#include + +#ifdef interface +#undef interface // VKamyshniy: to avoid "include/giomm-2.4/giomm/dbusmessage.h:270:94: error: expected ',' or '...' before 'struct'" +#endif + +#endif + #include #include #include From 339fc9ed139dfd5c167760d35f56df52281dbef8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 14:44:37 -0500 Subject: [PATCH 20/50] fix platform portability issues caused by use of shell cp(1) command and perl script --- gtk2_ardour/wscript | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 97677bc5fc..cd606029eb 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -3,6 +3,7 @@ from waflib.extras import autowaf as autowaf from waflib import Options, TaskGen import waflib.Logs as Logs, waflib.Utils as Utils import os +import shutil import sys import re import time @@ -364,6 +365,11 @@ def build_color_scheme(path, prefix): f.close() return color_scheme +def copyfile (task): + src = task.inputs[0].abspath() + tgt = task.outputs[0].abspath() + shutil.copy2 (src, tgt) + def build(bld): VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR']) @@ -638,7 +644,7 @@ def build(bld): obj.install_path = None set_subst_dict(obj, light_rc_subst_dict) - obj = bld(rule = 'cp ${SRC} ${TGT}') + obj = bld(rule = copyfile) obj.source = [ 'ardour3_widget_list.rc' ] obj.target = 'ardour3_widgets.rc' obj.install_path = None @@ -680,11 +686,15 @@ def build(bld): # 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad', # 'SAE-us-nokeypad', 'ergonomic-us' + # + # explicitly state the use of perl here so that it works on windows too + # + a_rule = 'perl ../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap <${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] ) for b in [ 'mnemonic-us' ] : obj = bld( target = b + '.bindings', source = b + '.bindings.in', - rule = '../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap <${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] ) + rule = a_rule ) obj.install_path = os.path.join(bld.env['SYSCONFDIR'], 'ardour3') From b7835cd7b131d2843404b117f2313a0b708d3fe0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 14:45:17 -0500 Subject: [PATCH 21/50] workaround compilation issues with assembler in fpu code and mingw --- libs/pbd/fpu.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/pbd/fpu.cc b/libs/pbd/fpu.cc index 5d81cd2fd3..ef5d21ab4d 100644 --- a/libs/pbd/fpu.cc +++ b/libs/pbd/fpu.cc @@ -39,11 +39,14 @@ FPU::FPU () _flags = Flags (0); +#if defined(__MINGW64__) // Vkamyshniy: under __MINGW64__ the assembler code below is not compiled + return; +#endif + #if !( (defined __x86_64__) || (defined __i386__) ) // !ARCH_X86 return; #else - #ifndef _LP64 //USE_X86_64_ASM asm volatile ( "mov $1, %%eax\n" From 597c9c9b25790808c9ab8b0fb021bd8b9352d79f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 14:46:40 -0500 Subject: [PATCH 22/50] make mingw-based pthread comparison function work with both 32 and 64 bit variants of mingw --- libs/pbd/pbd/abstract_ui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/pbd/pbd/abstract_ui.h b/libs/pbd/pbd/abstract_ui.h index 905074c474..e3f1f36b4e 100644 --- a/libs/pbd/pbd/abstract_ui.h +++ b/libs/pbd/pbd/abstract_ui.h @@ -57,7 +57,7 @@ class AbstractUI : public BaseUI }; typedef typename RequestBuffer::rw_vector RequestBufferVector; -#if defined(__MINGW32__) +#ifdef COMPILER_MINGW struct pthread_cmp { From 8970446d7ec292e71a937f8f7c38389595d75b42 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 14:48:45 -0500 Subject: [PATCH 23/50] additional source file for mingw build --- libs/pbd/wscript | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 59f7a3368b..317ffd0c45 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -125,6 +125,8 @@ def build(bld): if bld.env['build_target'] != 'mingw': obj.source += [ 'crossthread.cc' ] + else: + obj.source += [ 'mingw64/mingw64_pbd.cc' ] obj.export_includes = ['.'] obj.includes = ['.'] From 3144a81acb7d62ee7069dd814f7b5e8d3b7bcb76 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 14:49:03 -0500 Subject: [PATCH 24/50] additional header needed for mingw build to get realpath() --- libs/ardour/session_state.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 5c3ffae3cc..7847c932ec 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -76,6 +76,10 @@ #include "pbd/clear_dir.h" #include "pbd/localtime_r.h" +#if defined(__MINGW64__) // for realpath +#include "pbd/mingw64_pbd.h" +#endif + #include "ardour/amp.h" #include "ardour/audio_diskstream.h" #include "ardour/audio_track.h" From c0e5506994094862337d8c9050aa056268c1147a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 17:21:50 -0500 Subject: [PATCH 25/50] we don't use realpath() anymore so there is need for a special mingw include --- libs/pbd/mingw64/mingw64_pbd.cc | 71 +++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 libs/pbd/mingw64/mingw64_pbd.cc diff --git a/libs/pbd/mingw64/mingw64_pbd.cc b/libs/pbd/mingw64/mingw64_pbd.cc new file mode 100644 index 0000000000..07c3e9708c --- /dev/null +++ b/libs/pbd/mingw64/mingw64_pbd.cc @@ -0,0 +1,71 @@ +/* + Copyright (C) 2009 John Emmas + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifdef __MINGW64__ + +#include +#include + +//*************************************************************** +// +// realpath() +// +// Emulates POSIX realpath() using Win32 _fullpath(). +// +// Returns: +// +// On Success: A pointer to the resolved (absolute) path +// On Failure: NULL +// + +extern "C" { + +char* +realpath (const char *original_path, char resolved_path[_MAX_PATH+1]) +{ +char *pRet = NULL; +bool bIsSymLink = 0; // We'll probably need to test the incoming path + // to find out if it points to a Windows shortcut + // (or a hard link) and set this appropriately. + if (bIsSymLink) + { + // At the moment I'm not sure if Windows '_fullpath()' is directly + // equivalent to POSIX 'realpath()' - in as much as the latter will + // resolve the supplied path if it happens to point to a symbolic + // link ('_fullpath()' probably DOESN'T do this but I'm not really + // sure if Ardour needs such functionality anyway). Therefore we'll + // possibly need to add that functionality here at a later date. + } + else + { + char temp[(MAX_PATH+1)*6]; // Allow for maximum length of a path in UTF8 characters + + // POSIX 'realpath()' requires that the buffer size is at + // least PATH_MAX+1, so assume that the user knew this !! + pRet = _fullpath(temp, Glib::locale_from_utf8(original_path).c_str(), _MAX_PATH); + if (NULL != pRet) + strcpy(resolved_path, Glib::locale_to_utf8(temp).c_str()); + } + + return (pRet); +} + +} + +#endif // __MINGW64__ From bab60c2e8c307f0c9455d4083c4850b2d0163845 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 17:23:18 -0500 Subject: [PATCH 26/50] we don't use realpath() anymore so there is need for a special mingw include --- libs/pbd/mingw64/mingw64_pbd.cc | 71 --------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 libs/pbd/mingw64/mingw64_pbd.cc diff --git a/libs/pbd/mingw64/mingw64_pbd.cc b/libs/pbd/mingw64/mingw64_pbd.cc deleted file mode 100644 index 07c3e9708c..0000000000 --- a/libs/pbd/mingw64/mingw64_pbd.cc +++ /dev/null @@ -1,71 +0,0 @@ -/* - Copyright (C) 2009 John Emmas - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#ifdef __MINGW64__ - -#include -#include - -//*************************************************************** -// -// realpath() -// -// Emulates POSIX realpath() using Win32 _fullpath(). -// -// Returns: -// -// On Success: A pointer to the resolved (absolute) path -// On Failure: NULL -// - -extern "C" { - -char* -realpath (const char *original_path, char resolved_path[_MAX_PATH+1]) -{ -char *pRet = NULL; -bool bIsSymLink = 0; // We'll probably need to test the incoming path - // to find out if it points to a Windows shortcut - // (or a hard link) and set this appropriately. - if (bIsSymLink) - { - // At the moment I'm not sure if Windows '_fullpath()' is directly - // equivalent to POSIX 'realpath()' - in as much as the latter will - // resolve the supplied path if it happens to point to a symbolic - // link ('_fullpath()' probably DOESN'T do this but I'm not really - // sure if Ardour needs such functionality anyway). Therefore we'll - // possibly need to add that functionality here at a later date. - } - else - { - char temp[(MAX_PATH+1)*6]; // Allow for maximum length of a path in UTF8 characters - - // POSIX 'realpath()' requires that the buffer size is at - // least PATH_MAX+1, so assume that the user knew this !! - pRet = _fullpath(temp, Glib::locale_from_utf8(original_path).c_str(), _MAX_PATH); - if (NULL != pRet) - strcpy(resolved_path, Glib::locale_to_utf8(temp).c_str()); - } - - return (pRet); -} - -} - -#endif // __MINGW64__ From e0cc10540d76a2d3c87ea1dd1742eb4d894b1eec Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 17:24:39 -0500 Subject: [PATCH 27/50] extra source no longer required --- libs/pbd/wscript | 2 -- 1 file changed, 2 deletions(-) diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 317ffd0c45..59f7a3368b 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -125,8 +125,6 @@ def build(bld): if bld.env['build_target'] != 'mingw': obj.source += [ 'crossthread.cc' ] - else: - obj.source += [ 'mingw64/mingw64_pbd.cc' ] obj.export_includes = ['.'] obj.includes = ['.'] From 550b991176b31c644947ad6184633b437d11eb0f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 17:39:41 -0500 Subject: [PATCH 28/50] remove unnecessary recently-added include for realpath, which is not actively used --- libs/ardour/session_state.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 7847c932ec..5c3ffae3cc 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -76,10 +76,6 @@ #include "pbd/clear_dir.h" #include "pbd/localtime_r.h" -#if defined(__MINGW64__) // for realpath -#include "pbd/mingw64_pbd.h" -#endif - #include "ardour/amp.h" #include "ardour/audio_diskstream.h" #include "ardour/audio_track.h" From ef2c1ff92fd15de2f7ff4125f8ba698927ce07da Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 17:40:21 -0500 Subject: [PATCH 29/50] add (likely, partial) windows implementation of POSIX realpath() for COMPILER_MINGW where the latter is not available, to the only place realpath() is used --- libs/pbd/pathexpand.cc | 52 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/libs/pbd/pathexpand.cc b/libs/pbd/pathexpand.cc index 5784ec9428..4935297ea0 100644 --- a/libs/pbd/pathexpand.cc +++ b/libs/pbd/pathexpand.cc @@ -33,12 +33,57 @@ using std::string; using std::vector; +#ifdef COMPILER_MINGW + +#include +#include + +/**************************************************************** + * Emulate POSIX realpath() using Win32 _fullpath() since realpath() + * is not available. + * + * Returns: + * On Success: A pointer to the resolved (absolute) path + * On Failure: 0 (NULL) + */ + +static char* +realpath (const char *original_path, char resolved_path[_MAX_PATH+1]) +{ + char *rpath = 0; + bool bIsSymLink = false; // We'll probably need to test the incoming path + // to find out if it points to a Windows shortcut + // (or a hard link) and set this appropriately. + + if (bIsSymLink) { + // At the moment I'm not sure if Windows '_fullpath()' is directly + // equivalent to POSIX 'realpath()' - in as much as the latter will + // resolve the supplied path if it happens to point to a symbolic + // link ('_fullpath()' probably DOESN'T do this but I'm not really + // sure if Ardour needs such functionality anyway). Therefore we'll + // possibly need to add that functionality here at a later date. + } else { + char temp[(MAX_PATH+1)*6]; // Allow for maximum length of a path in wchar characters + + // POSIX 'realpath()' requires that the buffer size is at + // least PATH_MAX+1, so assume that the user knew this !! + + rpath = _fullpath (temp, Glib::locale_from_utf8 (original_path).c_str(), _MAX_PATH); + + if (0 != rpath) { + snprintf (resolved_path, _MAX_PATH+1, Glib::locale_to_utf8 (temp).c_str()); + } + + } + + return (rpath); +} + +#endif // COMPILER_MINGW + string PBD::canonical_path (const std::string& path) { -#ifdef COMPILER_MINGW - return path; -#else char buf[PATH_MAX+1]; if (!realpath (path.c_str(), buf) && (errno != ENOENT)) { @@ -46,7 +91,6 @@ PBD::canonical_path (const std::string& path) } return string (buf); -#endif } string From a7961f04cf7d74a3cada760908b364b0e4453690 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Dec 2013 17:43:15 -0500 Subject: [PATCH 30/50] fix error in mingw version of realpath() --- libs/pbd/pathexpand.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/pbd/pathexpand.cc b/libs/pbd/pathexpand.cc index 4935297ea0..203bdcd069 100644 --- a/libs/pbd/pathexpand.cc +++ b/libs/pbd/pathexpand.cc @@ -71,7 +71,7 @@ realpath (const char *original_path, char resolved_path[_MAX_PATH+1]) rpath = _fullpath (temp, Glib::locale_from_utf8 (original_path).c_str(), _MAX_PATH); if (0 != rpath) { - snprintf (resolved_path, _MAX_PATH+1, Glib::locale_to_utf8 (temp).c_str()); + snprintf (resolved_path, _MAX_PATH+1, "%s", Glib::locale_to_utf8 (temp).c_str()); } } From dc60753ddebf29f8da056120513b6592684622f3 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sat, 7 Dec 2013 20:20:12 +1000 Subject: [PATCH 31/50] Use correct header include for _fullpath According to http://msdn.microsoft.com/en-us/library/506720ff(v=vs.120).aspx --- libs/pbd/pathexpand.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/pbd/pathexpand.cc b/libs/pbd/pathexpand.cc index 203bdcd069..26454e4164 100644 --- a/libs/pbd/pathexpand.cc +++ b/libs/pbd/pathexpand.cc @@ -35,7 +35,7 @@ using std::vector; #ifdef COMPILER_MINGW -#include +#include #include /**************************************************************** @@ -63,7 +63,7 @@ realpath (const char *original_path, char resolved_path[_MAX_PATH+1]) // sure if Ardour needs such functionality anyway). Therefore we'll // possibly need to add that functionality here at a later date. } else { - char temp[(MAX_PATH+1)*6]; // Allow for maximum length of a path in wchar characters + char temp[(_MAX_PATH+1)*6]; // Allow for maximum length of a path in wchar characters // POSIX 'realpath()' requires that the buffer size is at // least PATH_MAX+1, so assume that the user knew this !! From ed8e6461b5bbd6528abb9d3d31e322a29d8b3d5a Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Mon, 2 Dec 2013 21:31:22 +1000 Subject: [PATCH 32/50] Add scripts for building using mingw compiler with distcc --- tools/windows_packaging/configure-distcc-debug.sh | 12 ++++++++++++ tools/windows_packaging/configure-distcc-release.sh | 12 ++++++++++++ 2 files changed, 24 insertions(+) create mode 100755 tools/windows_packaging/configure-distcc-debug.sh create mode 100755 tools/windows_packaging/configure-distcc-release.sh diff --git a/tools/windows_packaging/configure-distcc-debug.sh b/tools/windows_packaging/configure-distcc-debug.sh new file mode 100755 index 0000000000..501e849860 --- /dev/null +++ b/tools/windows_packaging/configure-distcc-debug.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +. ./mingw-env.sh + +export CC="distcc $HOST-gcc" +export CPP="distcc $HOST-g++" +export CXX="distcc $HOST-g++" + +. ./print-env.sh + +cd $BASE || exit 1 +./waf configure --prefix="/" --bindir="/" --configdir="/share" --noconfirm --no-lv2 --test --single-tests --dist-target=mingw "$@" diff --git a/tools/windows_packaging/configure-distcc-release.sh b/tools/windows_packaging/configure-distcc-release.sh new file mode 100755 index 0000000000..19cabf9c44 --- /dev/null +++ b/tools/windows_packaging/configure-distcc-release.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +. ./mingw-env.sh + +export CC="distcc $HOST-gcc" +export CPP="distcc $HOST-g++" +export CXX="distcc $HOST-g++" + +. ./print-env.sh + +cd $BASE || exit 1 +./waf configure --prefix="/" --bindir="/" --configdir="/share" --optimize --noconfirm --no-lv2 --dist-target=mingw "$@" From 31d1164d3f55b62194b0617c9a917df793d2a30e Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 9 Aug 2013 14:15:44 +1000 Subject: [PATCH 33/50] Refer to external repository for instructions on setting up Fedora to cross compile Ardour using MinGW-64 --- tools/windows_packaging/Fedora-16-mingw.txt | 41 --------------------- tools/windows_packaging/README | 4 +- 2 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 tools/windows_packaging/Fedora-16-mingw.txt diff --git a/tools/windows_packaging/Fedora-16-mingw.txt b/tools/windows_packaging/Fedora-16-mingw.txt deleted file mode 100644 index 23c9a749ce..0000000000 --- a/tools/windows_packaging/Fedora-16-mingw.txt +++ /dev/null @@ -1,41 +0,0 @@ - -Fedora Packages are installed via $ yum install foobar - -wine, needed to run some tests during the configure process - -mingw32-gcc - -mingw32-libogg - -mingw32-flac not in repo <- requires libogg - -mingw32-libvorbis - -mingw32-libsndfile not in repo <- requires flac, vorbis -mingw32-libsamplerate not in repo <- requires sndfile for examples? - -mingw32-gtkmm24, this will pull in all the gtk+ deps etc - -mingw32-gtk2-engines not in repo <- provides clearlooks - -mingw32-libglade2, required for gnomecanvas - -mingw32-libart_lgpl not in repo -mingw32-libgnomecanvas not in repo <- requires libart, libglade2 -mingw32-libgnomecanvasmm not in repo <- requires - -mingw32-portaudio not in repo - -mingw32-jack-audio-connection-kit not in repo - -mingw32-fftw not in repo - -mingw32-curl - -Optional - -mingw32-cppunit, if tests enabled -mingw32-gdb, for debugging - -qemu-kvm to run virt images - diff --git a/tools/windows_packaging/README b/tools/windows_packaging/README index 749092b3e3..8a8c4c8d7b 100644 --- a/tools/windows_packaging/README +++ b/tools/windows_packaging/README @@ -8,8 +8,8 @@ not all are yet. Prerequisites -Follow instructions in Fedora-16.txt to build and/or install the required -packages. +For setting up the required packages to build Ardour refer to the README +file located at https://github.com/mojofunk/fedora-mingw-ardour Configuring From f25c7081c989da71c05af0ea3b39d1ab75da74b0 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Tue, 6 Aug 2013 19:20:18 +1000 Subject: [PATCH 34/50] Add script to copy package directory to directory shared by VM directory path set in ARDOUR_VM_SHARE_DIR --- tools/windows_packaging/cptovmshare.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100755 tools/windows_packaging/cptovmshare.sh diff --git a/tools/windows_packaging/cptovmshare.sh b/tools/windows_packaging/cptovmshare.sh new file mode 100755 index 0000000000..f447f57b5c --- /dev/null +++ b/tools/windows_packaging/cptovmshare.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +. ./mingw-env.sh + +cd $BASE || exit 1 + +if [ -z $ARDOUR_VM_SHARE_DIR ] +then + echo "You must set ARDOUR_VM_SHARE_DIR in your environment to use this script!" + exit 1 +fi + +if [ -d $ARDOUR_VM_SHARE_DIR/$PACKAGE_DIR ]; then + echo "Removing $PACKAGE_DIR from vm share directory ..." + rm -rf $ARDOUR_VM_SHARE_DIR/$PACKAGE_DIR || exit 1 +fi + +echo "Copying $PACKAGE_DIR to vm share directory $ARDOUR_VM_SHARE_DIR ..." +cp -r $PACKAGE_DIR $ARDOUR_VM_SHARE_DIR || exit 1 From 3512a9fe404bc8727f6756334f5baeec26d42fac Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 11 Aug 2013 18:44:58 +1000 Subject: [PATCH 35/50] Remove two scripts no longer used These scripts are too specific to my virtual machine setup, a more generic method can now be used by setting ARDOUR_VM_SHARE_DIR and using the cptovmshare.sh script. --- tools/windows_packaging/cptovm.sh | 62 ---------------------------- tools/windows_packaging/mingw-env.sh | 3 -- tools/windows_packaging/startvm.sh | 4 -- 3 files changed, 69 deletions(-) delete mode 100755 tools/windows_packaging/cptovm.sh delete mode 100755 tools/windows_packaging/startvm.sh diff --git a/tools/windows_packaging/cptovm.sh b/tools/windows_packaging/cptovm.sh deleted file mode 100755 index 62e6fd6a27..0000000000 --- a/tools/windows_packaging/cptovm.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -. ./mingw-env.sh - -TMP_DIR=tmp -LOOP_DEV=/dev/loop4 - -cd $BASE || exit 1 - -if [ ! -d $TMP_DIR ]; then - echo "Creating temp directory to mount vm image ..." - mkdir $TMP_DIR || exit 1 -fi - -echo "mounting vm image as loopback device ..." - -sudo mount -o loop=$LOOP_DEV,offset=32256 $VIRT_IMAGE_PATH $TMP_DIR || exit 1 - -if [ -d $TMP_DIR/$PACKAGE_DIR ]; then - echo "Removing old copy of $PACKAGE_DIR from vm image ..." - rm -rf $TMP_DIR/$PACKAGE_DIR || exit 1 -fi - -echo "Copying $PACKAGE_DIR to vm image ..." -cp -r $PACKAGE_DIR $TMP_DIR || exit 1 - -if [ "$1" == "--data" ]; then - DATA_DIR=data - - if [ -d $TMP_DIR/$DATA_DIR ]; then - echo "Removing old copy of $DATA_DIR from vm image ..." - rm -rf $TMP_DIR/$DATA_DIR || exit 1 - fi - - echo "Copying $DATA_DIR to vm image ..." - cp -r $DATA_DIR $TMP_DIR || exit 1 -fi - - -# in case mount is busy -sleep 2 - -echo "Unmounting vm image ..." - -sudo umount -d tmp - -echo "Removing temp directory used to mount vm image ..." -rm -rf $TMP_DIR || exit 1 - -if sudo losetup $LOOP_DEV; then - echo "sleeping for 10 seconds and trying again ..." - sleep 10 - if sudo losetup -d $LOOP_DEV; then - echo "Unmounted loopback device successfully" - exit 0 - else: - echo "Unmounting loopback device unsuccessful, you will need to use losetup -d to unmount device" - exit 1 - fi -fi - -exit 0 diff --git a/tools/windows_packaging/mingw-env.sh b/tools/windows_packaging/mingw-env.sh index 616f89af5e..819ea04055 100755 --- a/tools/windows_packaging/mingw-env.sh +++ b/tools/windows_packaging/mingw-env.sh @@ -47,6 +47,3 @@ then ARDOUR_DATA_DIR=$PACKAGE_DIR/share/ardour3 fi - -# put this somewhere better... -VIRT_IMAGE_PATH=$HOME/Data/virt-images/winxp.raw diff --git a/tools/windows_packaging/startvm.sh b/tools/windows_packaging/startvm.sh deleted file mode 100755 index de65be9b5d..0000000000 --- a/tools/windows_packaging/startvm.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -. mingw-env.sh - -qemu-kvm -smp 2 -m 1536 -hda $VIRT_IMAGE_PATH -net nic -net user -vga std -soundhw all From 86e63380ee2257c57f9a0acdba0dc1e564cdd8c9 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 11 Aug 2013 14:15:16 +1000 Subject: [PATCH 36/50] Add two scripts for running gdb so source listing works when debugging Updated Debugging section in README --- tools/windows_packaging/README | 40 +++++++++++++++++++++----- tools/windows_packaging/gdb-ardour.bat | 4 +++ tools/windows_packaging/gdb.bat | 4 +++ tools/windows_packaging/gdbinit_home | 1 + tools/windows_packaging/package.sh | 7 +++-- 5 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 tools/windows_packaging/gdb-ardour.bat create mode 100644 tools/windows_packaging/gdb.bat create mode 100644 tools/windows_packaging/gdbinit_home diff --git a/tools/windows_packaging/README b/tools/windows_packaging/README index 8a8c4c8d7b..c02320c32a 100644 --- a/tools/windows_packaging/README +++ b/tools/windows_packaging/README @@ -100,17 +100,43 @@ When configured for debugging the package contains gdb along with a .gdbinit file to automatically set the source directory so that the "list" gdb command will show the source code corresponding to the current stack frame. -Use break `Somenamespace::somepartialsymbolname + tab to list symbols, then remove -` to set break. If you press tab with when there are thousands of possible -matching symbols be prepared to wait a long time(this can also cause gdb to use a -lot of memory). +New versions of gdb will not load a .gdbinit file unless it is located in the directory +set in the HOME environment variable and auto-load safe-path is set appropriately. -For reasons I've yet to determine many symbols are not accessible so the best way -to set a breakpoint is by using filename and line number. +So the gdbinit_home file needs to be moved to directory set in %USERPROFILE% and +gdb started via gdb.bat for source file listing to work. + +The gdb batch scripts cannot be used if the package directory is on a network share +so the package will need to be copied to a local drive first. + +When starting gdb using gdb.bat the Ardour executable needs to be set as the program +to be debugged with the "file" command + +e.g (gdb) file ardour-3.5.exe + +You can then set a break point at main() with the "break" command as usual + +e.g (gdb) break main + +To set a breakpoint in a dll/shared library like libardour you need to wait for +the symbols to be loaded which only occurs once the program has been executed using +the "run" command + +You can set a breakpoint at a function + +e.g break `Somenamespace::somepartialsymbolname + tab to list symbols + +then remove ` to set the breakpoint. + +If you press tab with when there are thousands of possible matching symbols be +prepared to wait a long time(this can also cause gdb to use a lot of memory). +For this reason I prefer to set breakpoints by specifying the source file and line +number. e.g (gdb) break audiosource.cc:976 -but this seems to only work after running Ardour at least once. +using "catch throw" or "catch catch" can be useful to break at points where exceptions +are thrown or caught. They are a number of glib debugging options see diff --git a/tools/windows_packaging/gdb-ardour.bat b/tools/windows_packaging/gdb-ardour.bat new file mode 100644 index 0000000000..7d290b0791 --- /dev/null +++ b/tools/windows_packaging/gdb-ardour.bat @@ -0,0 +1,4 @@ +set HOME=%USERPROFILE% +echo "set home to %HOME%" + +START gdb.exe ardour-3.3.exe diff --git a/tools/windows_packaging/gdb.bat b/tools/windows_packaging/gdb.bat new file mode 100644 index 0000000000..90f586b6c7 --- /dev/null +++ b/tools/windows_packaging/gdb.bat @@ -0,0 +1,4 @@ +set HOME=%USERPROFILE% +echo "set home to %HOME%" + +START gdb.exe diff --git a/tools/windows_packaging/gdbinit_home b/tools/windows_packaging/gdbinit_home new file mode 100644 index 0000000000..910710cf8c --- /dev/null +++ b/tools/windows_packaging/gdbinit_home @@ -0,0 +1 @@ +set auto-load safe-path / diff --git a/tools/windows_packaging/package.sh b/tools/windows_packaging/package.sh index 92f55e8906..dfe586c457 100755 --- a/tools/windows_packaging/package.sh +++ b/tools/windows_packaging/package.sh @@ -161,11 +161,12 @@ if test x$DEBUG != x ; then echo "Copying any debug files to $PACKAGE_DIR ..." cp $MINGW_ROOT/bin/*.debug $PACKAGE_DIR - echo "Copying gdb to $PACKAGE_DIR ..." + echo "Copying gdb and config files to $PACKAGE_DIR ..." cp $MINGW_ROOT/bin/gdb.exe $PACKAGE_DIR - - echo "Copying .gdbinit to $PACKAGE_DIR ..." cp $TOOLS_DIR/gdbinit $PACKAGE_DIR/.gdbinit + cp $TOOLS_DIR/gdbinit_home $PACKAGE_DIR/gdbinit_home + cp $TOOLS_DIR/gdb.bat $PACKAGE_DIR/gdb.bat + cp $TOOLS_DIR/gdb-ardour.bat $PACKAGE_DIR/gdb-ardour.bat echo "Copying Gtk demo to $PACKAGE_DIR ..." cp $MINGW_ROOT/bin/gtk-demo.exe $PACKAGE_DIR From 12065351e532fba23aaf6c549657e6d293cdfe6a Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 11 Aug 2013 18:48:09 +1000 Subject: [PATCH 37/50] Updates to windows/mingw README file --- tools/windows_packaging/README | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/windows_packaging/README b/tools/windows_packaging/README index c02320c32a..4a766685c5 100644 --- a/tools/windows_packaging/README +++ b/tools/windows_packaging/README @@ -1,8 +1,8 @@ Building Ardour for Windows The windows build is compiled and tested with the MinGW compiler that is -packaged in Fedora, Currently using Fedora 16. There are many cross compiled -"mingw" libraries that Ardour requires that are also available on Fedora but +packaged in Fedora, Currently using Fedora 19. There are many cross compiled +"mingw" libraries that Ardour requires that are available on Fedora but not all are yet. @@ -28,6 +28,8 @@ These scripts both source the mingw-env.sh script to setup the appropriate environment variables and then call waf with a specific set of parameters that are appropriate to configure for the windows build. +There is also configure-distcc-debug.sh and configure-distcc-release.sh that +configure to use distcc for building. Building @@ -81,8 +83,8 @@ in a separate terminal(Command Prompt) before starting Ardour so that they are not both writing to the same terminal. This will probably be fixed at some point so when jackd is started by Ardour the output is redirected etc. -The cptovm.sh and startvm.sh scripts are intended for testing Ardour in a -Windows XP virt image and may need to be altered to be used successfully. +The cptovmshare.sh script will copy the package to a directory specified in the +ARDOUR_VM_SHARE_DIR for testing in a virtual machine. Testing @@ -90,6 +92,8 @@ Testing When configured for debugging there are a number of test programs(prefixed with test_) included in the package. +The tests for libpbd, libevoral and libardour can be run under wine from the +windows packaging directory using the wine-*-tests.sh scripts Debugging From 2970b791411e3c83e617cfc0774d2581bd0e44db Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 14 Aug 2013 15:07:37 +1000 Subject: [PATCH 38/50] Only call define versions script in mingwenv after a build is successful This stops clean.sh script complaining about a non-existant path --- tools/windows_packaging/mingw-env.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/windows_packaging/mingw-env.sh b/tools/windows_packaging/mingw-env.sh index 819ea04055..1895cd4040 100755 --- a/tools/windows_packaging/mingw-env.sh +++ b/tools/windows_packaging/mingw-env.sh @@ -26,13 +26,13 @@ BUILD_DIR=$BASE/build BUILD_CACHE_FILE=$BUILD_DIR/c4che/_cache.py TOOLS_DIR=$BASE/tools/windows_packaging -. ../define_versions.sh - APPNAME=`grep -m 1 '^APPNAME' $BASE/wscript | awk '{print $3}' | sed "s/'//g"` # These are only relevant after a build if test -f $BUILD_CACHE_FILE then + . ../define_versions.sh + # Figure out the Build Type if grep -q "DEBUG = True" $BUILD_CACHE_FILE; then DEBUG=1 From 02dd48b3865d047416d6b25aaa3be1ebb8c8a513 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 16 Aug 2013 19:50:19 +1000 Subject: [PATCH 39/50] Use DEBUG flag as defined by tools/define_versions.sh in mingw build --- tools/windows_packaging/mingw-env.sh | 3 +-- tools/windows_packaging/package.sh | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/windows_packaging/mingw-env.sh b/tools/windows_packaging/mingw-env.sh index 1895cd4040..45fda2c52c 100755 --- a/tools/windows_packaging/mingw-env.sh +++ b/tools/windows_packaging/mingw-env.sh @@ -34,8 +34,7 @@ then . ../define_versions.sh # Figure out the Build Type - if grep -q "DEBUG = True" $BUILD_CACHE_FILE; then - DEBUG=1 + if [ x$DEBUG = xT ]; then PACKAGE_DIR="$APPNAME-${version}-win32-dbg" else PACKAGE_DIR="$APPNAME-${version}-win32" diff --git a/tools/windows_packaging/package.sh b/tools/windows_packaging/package.sh index dfe586c457..b1b22e074c 100755 --- a/tools/windows_packaging/package.sh +++ b/tools/windows_packaging/package.sh @@ -144,7 +144,7 @@ libs/timecode libs/audiographer ' -if test x$DEBUG != x ; then +if [ x$DEBUG = xT ]; then PACKAGE_SRC_DIR=$PACKAGE_DIR/src echo "Copying source files to $PACKAGE_SRC_DIR ..." From 30370eb0a039b991342ebf1437e94ebc4db793c6 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 16 Aug 2013 19:52:21 +1000 Subject: [PATCH 40/50] Don't include *.debug files in debug package These files slow down gdb at startup and many(any?) don't seem to work correctly --- tools/windows_packaging/package.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/windows_packaging/package.sh b/tools/windows_packaging/package.sh index b1b22e074c..449d008444 100755 --- a/tools/windows_packaging/package.sh +++ b/tools/windows_packaging/package.sh @@ -158,8 +158,8 @@ if [ x$DEBUG = xT ]; then echo "Copying JACK utility programs to $PACKAGE_DIR ..." cp $MINGW_ROOT/bin/jack_*.exe $PACKAGE_DIR - echo "Copying any debug files to $PACKAGE_DIR ..." - cp $MINGW_ROOT/bin/*.debug $PACKAGE_DIR + #echo "Copying any debug files to $PACKAGE_DIR ..." + #cp $MINGW_ROOT/bin/*.debug $PACKAGE_DIR echo "Copying gdb and config files to $PACKAGE_DIR ..." cp $MINGW_ROOT/bin/gdb.exe $PACKAGE_DIR From 192ba4b34b5b6adef657b17672d7da2e409cfece Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 16 Aug 2013 20:16:29 +1000 Subject: [PATCH 41/50] Strip all executables in a mingw release build --- tools/windows_packaging/package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/windows_packaging/package.sh b/tools/windows_packaging/package.sh index 449d008444..c54e455418 100755 --- a/tools/windows_packaging/package.sh +++ b/tools/windows_packaging/package.sh @@ -172,7 +172,7 @@ if [ x$DEBUG = xT ]; then cp $MINGW_ROOT/bin/gtk-demo.exe $PACKAGE_DIR else echo "Optimized build Stripping executable ..." - $STRIP $PACKAGE_DIR/ardour-3.0.exe + find $PACKAGE_DIR -type f -name "*.exe*" | xargs $STRIP echo "Stripping libraries ..." find $PACKAGE_DIR -type f -name "*.dll*" | xargs $STRIP fi From b679b078e90fde4db44d9a176dcc40329bf55c90 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 29 Nov 2013 08:30:10 +1000 Subject: [PATCH 42/50] Use new version variable in windows packaging scripts --- tools/windows_packaging/mingw-env.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/windows_packaging/mingw-env.sh b/tools/windows_packaging/mingw-env.sh index 45fda2c52c..983e6d0b9b 100755 --- a/tools/windows_packaging/mingw-env.sh +++ b/tools/windows_packaging/mingw-env.sh @@ -35,9 +35,9 @@ then # Figure out the Build Type if [ x$DEBUG = xT ]; then - PACKAGE_DIR="$APPNAME-${version}-win32-dbg" + PACKAGE_DIR="$APPNAME-${release_version}-win32-dbg" else - PACKAGE_DIR="$APPNAME-${version}-win32" + PACKAGE_DIR="$APPNAME-${release_version}-win32" fi if grep -q "BUILD_TESTS = True" $BUILD_CACHE_FILE; then From 74ab358b21db88d8360ec432ac4a0b479a875c71 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 11 Aug 2013 16:48:31 +1000 Subject: [PATCH 43/50] Move environment setup to run tests in wine to new file --- tools/windows_packaging/run-wine.sh | 21 +-------------------- tools/windows_packaging/wine-env.sh | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 20 deletions(-) create mode 100755 tools/windows_packaging/wine-env.sh diff --git a/tools/windows_packaging/run-wine.sh b/tools/windows_packaging/run-wine.sh index 86415206cc..d1d509782f 100755 --- a/tools/windows_packaging/run-wine.sh +++ b/tools/windows_packaging/run-wine.sh @@ -2,26 +2,7 @@ . ./mingw-env.sh -cd $BASE - -LIBS=$BUILD_DIR/libs - -export ARDOUR_PATH=$BASE/gtk2_ardour/icons:$BASE/gtk2_ardour/pixmaps:$BASE/build/default/gtk2_ardour:$BASE/gtk2_ardour:. -export ARDOUR_SURFACES_PATH=$LIBS/surfaces/osc:$LIBS/surfaces/generic_midi:$LIBS/surfaces/tranzport:$LIBS/surfaces/powermate:$LIBS/surfaces/mackie -export ARDOUR_PANNER_PATH=$LIBS/panners/2in2out:$LIBS/panners/1in2out:$LIBS/panners/vbap -export ARDOUR_DATA_PATH=$BASE/gtk2_ardour:build/default/gtk2_ardour:. - -export VAMP_PATH=$LIBS/vamp-plugins${VAMP_PATH:+:$VAMP_PATH} - -export PBD_TEST_PATH=$BASE/libs/pbd/test/ - -if test ! -d $PACKAGE_DIR; then - echo "Win32 package directory does not exist" - exit 1 -fi - -cd $PACKAGE_DIR - +. ./wine-env.sh if [ "$1" == "--run-tests" ]; then if test x$WITH_TESTS != x ; then diff --git a/tools/windows_packaging/wine-env.sh b/tools/windows_packaging/wine-env.sh new file mode 100755 index 0000000000..95d0bf79a0 --- /dev/null +++ b/tools/windows_packaging/wine-env.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +. ./mingw-env.sh + +cd $BASE + +if test ! -d $PACKAGE_DIR; then + echo "Win32 package directory does not exist" + exit 1 +fi + +LIBS=$BUILD_DIR/libs + +export ARDOUR_PATH=$BASE/gtk2_ardour/icons:$BASE/gtk2_ardour/pixmaps:$BASE/build/default/gtk2_ardour:$BASE/gtk2_ardour:. +export ARDOUR_SURFACES_PATH=$LIBS/surfaces/osc:$LIBS/surfaces/generic_midi:$LIBS/surfaces/tranzport:$LIBS/surfaces/powermate:$LIBS/surfaces/mackie +export ARDOUR_PANNER_PATH=$LIBS/panners/2in2out:$LIBS/panners/1in2out:$LIBS/panners/vbap +export ARDOUR_DATA_PATH=$BASE/gtk2_ardour:build/default/gtk2_ardour:. + +export VAMP_PATH=$LIBS/vamp-plugins${VAMP_PATH:+:$VAMP_PATH} + +export PBD_TEST_PATH=$BASE/libs/pbd/test/ + +cd $PACKAGE_DIR From 20f3e4d1fcf5dba4f6963eaec55e723cbb73de1d Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 11 Aug 2013 18:13:41 +1000 Subject: [PATCH 44/50] Rename run-wine script to wine-ardour and run library tests from new scripts --- tools/windows_packaging/run-wine.sh | 20 -------------------- tools/windows_packaging/wine-ardour-tests.sh | 5 +++++ tools/windows_packaging/wine-ardour.sh | 5 +++++ tools/windows_packaging/wine-evoral-tests.sh | 5 +++++ tools/windows_packaging/wine-pbd-tests.sh | 5 +++++ 5 files changed, 20 insertions(+), 20 deletions(-) delete mode 100755 tools/windows_packaging/run-wine.sh create mode 100755 tools/windows_packaging/wine-ardour-tests.sh create mode 100755 tools/windows_packaging/wine-ardour.sh create mode 100755 tools/windows_packaging/wine-evoral-tests.sh create mode 100755 tools/windows_packaging/wine-pbd-tests.sh diff --git a/tools/windows_packaging/run-wine.sh b/tools/windows_packaging/run-wine.sh deleted file mode 100755 index d1d509782f..0000000000 --- a/tools/windows_packaging/run-wine.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -. ./mingw-env.sh - -. ./wine-env.sh - -if [ "$1" == "--run-tests" ]; then - if test x$WITH_TESTS != x ; then - echo "<<<<<<<<<<<<<<<<<< RUNNING LIBPBD TESTS >>>>>>>>>>>>>>>>>>>" - wine pbd-run-tests.exe - echo "<<<<<<<<<<<<<<<<<< RUNNING EVORAL TESTS >>>>>>>>>>>>>>>>>>>" - wine evoral-run-tests.exe - echo "<<<<<<<<<<<<<<<<<< RUNNING ARDOUR TESTS >>>>>>>>>>>>>>>>>>>" - wine ardour-run-tests.exe - else - echo "No tests to run ..." - fi -else - wine ardour-3.0.exe -fi diff --git a/tools/windows_packaging/wine-ardour-tests.sh b/tools/windows_packaging/wine-ardour-tests.sh new file mode 100755 index 0000000000..22a8876241 --- /dev/null +++ b/tools/windows_packaging/wine-ardour-tests.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +. ./wine-env.sh + +wine run-tests.exe diff --git a/tools/windows_packaging/wine-ardour.sh b/tools/windows_packaging/wine-ardour.sh new file mode 100755 index 0000000000..cb6547427e --- /dev/null +++ b/tools/windows_packaging/wine-ardour.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +. ./wine-env.sh + +wine ardour-3.3.exe diff --git a/tools/windows_packaging/wine-evoral-tests.sh b/tools/windows_packaging/wine-evoral-tests.sh new file mode 100755 index 0000000000..50b77f70c8 --- /dev/null +++ b/tools/windows_packaging/wine-evoral-tests.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +. ./wine-env.sh + +wine evoral-run-tests.exe diff --git a/tools/windows_packaging/wine-pbd-tests.sh b/tools/windows_packaging/wine-pbd-tests.sh new file mode 100755 index 0000000000..a7306caf6c --- /dev/null +++ b/tools/windows_packaging/wine-pbd-tests.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +. ./wine-env.sh + +wine pbd-run-tests.exe From 7e42cafe395e934d966938728e72b03c1167fb42 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 16 Aug 2013 20:52:45 +1000 Subject: [PATCH 45/50] Add ability to run single libardour tests using wine --- tools/windows_packaging/wine-ardour-tests.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tools/windows_packaging/wine-ardour-tests.sh b/tools/windows_packaging/wine-ardour-tests.sh index 22a8876241..6556c8a9c4 100755 --- a/tools/windows_packaging/wine-ardour-tests.sh +++ b/tools/windows_packaging/wine-ardour-tests.sh @@ -2,4 +2,19 @@ . ./wine-env.sh -wine run-tests.exe +if [ "$1" == "--single" ] || [ "$2" == "--single" ]; then + if [ "$1" == "--single" ]; then + TESTS="test_*$2*" + elif [ "$2" == "--single" ]; then + TESTS="test_*$3*" + else + TESTS='test_*' + fi + for test_program in `find . -name "$TESTS" -type f -perm /u+x`; + do + echo "Running $test_program..." + wine "$test_program" + done +else + wine run-tests.exe +fi From e9529d26e1a5cfceefc0e840e04811cec019b059 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 16 Aug 2013 21:08:57 +1000 Subject: [PATCH 46/50] Add --list option to script to run ardour tests with wine --- tools/windows_packaging/wine-ardour-tests.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/windows_packaging/wine-ardour-tests.sh b/tools/windows_packaging/wine-ardour-tests.sh index 6556c8a9c4..a4bd033c8b 100755 --- a/tools/windows_packaging/wine-ardour-tests.sh +++ b/tools/windows_packaging/wine-ardour-tests.sh @@ -2,6 +2,15 @@ . ./wine-env.sh +if [ "$1" == "--list" ]; then + TESTS='test_*' + for test_program in `find -name "$TESTS" -type f -perm /u+x`; + do + echo "$test_program" + done + exit 0 +fi + if [ "$1" == "--single" ] || [ "$2" == "--single" ]; then if [ "$1" == "--single" ]; then TESTS="test_*$2*" From be376350b549ddac13a258db650acc55c100c817 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 11 Oct 2013 21:54:40 +1000 Subject: [PATCH 47/50] A few basic tests for AudioEngine --- libs/ardour/test/audio_engine_test.cc | 53 +++++++++++++++++++++++++++ libs/ardour/test/audio_engine_test.h | 14 +++++++ libs/ardour/wscript | 2 + 3 files changed, 69 insertions(+) create mode 100644 libs/ardour/test/audio_engine_test.cc create mode 100644 libs/ardour/test/audio_engine_test.h diff --git a/libs/ardour/test/audio_engine_test.cc b/libs/ardour/test/audio_engine_test.cc new file mode 100644 index 0000000000..b992caf73e --- /dev/null +++ b/libs/ardour/test/audio_engine_test.cc @@ -0,0 +1,53 @@ +#include + +#include "ardour/audioengine.h" +#include "ardour/audio_backend.h" +#include "ardour/backend_search_path.h" + +#include "audio_engine_test.h" +#include "test_common.h" + +CPPUNIT_TEST_SUITE_REGISTRATION (AudioEngineTest); + +using namespace std; +using namespace ARDOUR; +using namespace PBD; + +void +print_audio_backend_info (AudioBackendInfo const* abi) +{ + cerr << "Audio Backend, name:" << abi->name << endl; +} + +void +AudioEngineTest::test_backends () +{ + AudioEngine* engine = AudioEngine::create (); + + CPPUNIT_ASSERT (engine); + + std::vector backends = engine->available_backends (); + + CPPUNIT_ASSERT (backends.size () != 0); + + for (std::vector::const_iterator i = backends.begin(); + i != backends.end(); ++i) { + print_audio_backend_info(*i); + } +} + +void +AudioEngineTest::test_start () +{ + AudioEngine* engine = AudioEngine::create (); + + CPPUNIT_ASSERT_NO_THROW (engine->set_default_backend ()); + + init_post_engine (); + + CPPUNIT_ASSERT (engine->start () == 0); + + // sleep + // stop + // destroy +} diff --git a/libs/ardour/test/audio_engine_test.h b/libs/ardour/test/audio_engine_test.h new file mode 100644 index 0000000000..9a6d9cc241 --- /dev/null +++ b/libs/ardour/test/audio_engine_test.h @@ -0,0 +1,14 @@ +#include +#include + +class AudioEngineTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE (AudioEngineTest); + CPPUNIT_TEST (test_backends); + CPPUNIT_TEST (test_start); + CPPUNIT_TEST_SUITE_END (); + +public: + void test_backends (); + void test_start (); +}; diff --git a/libs/ardour/wscript b/libs/ardour/wscript index b509db361f..4ba8f4a0ed 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -434,6 +434,7 @@ def build(bld): testcommon.source += [ 'sse_functions_64bit.s' ] if bld.env['SINGLE_TESTS']: + create_ardour_test_program(bld, obj.includes, 'audio_engine_test', 'test_audio_engine', ['test/audio_engine_test.cc']) create_ardour_test_program(bld, obj.includes, 'automation_list_property_test', 'test_automation_list_property', ['test/automation_list_property_test.cc']) create_ardour_test_program(bld, obj.includes, 'bbt', 'test_bbt', ['test/bbt_test.cc']) create_ardour_test_program(bld, obj.includes, 'tempo', 'test_tempo', ['test/tempo_test.cc']) @@ -452,6 +453,7 @@ def build(bld): create_ardour_test_program(bld, obj.includes, 'session_test', 'test_session', ['test/session_test.cc']) test_sources = ''' + test/audio_engine_test.cc test/automation_list_property_test.cc test/bbt_test.cc test/tempo_test.cc From 298768fb73107f1aae3f75c1fc3307e7bc1aeab2 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Fri, 25 Oct 2013 21:00:20 +1000 Subject: [PATCH 48/50] Add README to mingw package --- tools/windows_packaging/package.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/windows_packaging/package.sh b/tools/windows_packaging/package.sh index c54e455418..dd1ec88119 100755 --- a/tools/windows_packaging/package.sh +++ b/tools/windows_packaging/package.sh @@ -54,6 +54,8 @@ mkdir -p $PACKAGE_DIR/lib/pango/1.6.0/modules cp -r $MINGW_ROOT/lib/pango/1.6.0/modules/*.dll $PACKAGE_DIR/lib/pango/1.6.0/modules cp $TOOLS_DIR/pango.modules $PACKAGE_DIR/etc/pango +cp $TOOLS_DIR/README $PACKAGE_DIR + DLLS=' jack-0.dll jackserver-0.dll From 94993816cc5da618d3bab4fa9eb145db575ba1b1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 19 Dec 2013 12:55:52 -0500 Subject: [PATCH 49/50] move portable copyfile function into tools/autowaf.py and use it in both gtk2_ardour and taglib --- gtk2_ardour/wscript | 7 +------ libs/taglib/wscript | 2 +- tools/autowaf.py | 7 +++++++ waf | Bin 94823 -> 94861 bytes 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index cd606029eb..f5ff15e9c6 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -365,11 +365,6 @@ def build_color_scheme(path, prefix): f.close() return color_scheme -def copyfile (task): - src = task.inputs[0].abspath() - tgt = task.outputs[0].abspath() - shutil.copy2 (src, tgt) - def build(bld): VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR']) @@ -644,7 +639,7 @@ def build(bld): obj.install_path = None set_subst_dict(obj, light_rc_subst_dict) - obj = bld(rule = copyfile) + obj = bld(rule = autowaf.copyfile) obj.source = [ 'ardour3_widget_list.rc' ] obj.target = 'ardour3_widgets.rc' obj.install_path = None diff --git a/libs/taglib/wscript b/libs/taglib/wscript index 219cbd3f08..709eb0fd90 100644 --- a/libs/taglib/wscript +++ b/libs/taglib/wscript @@ -103,7 +103,7 @@ def build(bld): for h in headers: tgt = bld.path.get_bld().make_node (os.path.join ('taglib', os.path.basename (h))) if not os.path.exists (tgt.bldpath()): - bld (rule = "cp ${SRC} ${TGT}", + bld (rule = autowaf.copyfile, source = bld.path.make_node (os.path.join ('taglib', h)), target = tgt) diff --git a/tools/autowaf.py b/tools/autowaf.py index 46c563519f..7d4da7b061 100644 --- a/tools/autowaf.py +++ b/tools/autowaf.py @@ -10,6 +10,7 @@ import glob import os import subprocess import sys +import shutil from waflib import Configure, Context, Logs, Node, Options, Task, Utils from waflib.TaskGen import feature, before, after @@ -91,6 +92,12 @@ def set_options(opt, debug_by_default=False): help="LV2 bundles [Default: LIBDIR/lv2]") g_step = 1 +def copyfile (task): + # a cross-platform utility for copying files as part of tasks + src = task.inputs[0].abspath() + tgt = task.outputs[0].abspath() + shutil.copy2 (src, tgt) + def check_header(conf, lang, name, define='', mandatory=True): "Check for a header" includes = '' # search default system include paths diff --git a/waf b/waf index 927b8ae126b192c0d8e9f1918122b5d590d6ca35..c29d226aff5dbe5b624ec83ccefdfb955308e9cf 100755 GIT binary patch delta 89724 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 delta 89707 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�zRte7s+tl> zzTnlk5W=joUI!20$xDflp@!dQmi;&W>gmwO`saU<%QVb~vv-l)bNImDx4tO1JzTG& zw~&W)X_e+0om5~ZI!wB*D5Ii6eC z_^i-v%i8&w?C1S6lYvFxVq>C7Y~sUr)F%o1wcKsBW-UXz?TxdLfz4)ugc4#Qs4p#k zt-#nc##zD^DKDS);K_zCe`PZ9kh4Vzz84WtDm~Bh9r{PmZ-ZwZzh8OgpPq+2Ijb+k zzaU~GEO;VRC#se*IqRN<+s8bd{Z~@^HLClhe*K~m-#(91&dRf9aUWzs^OzOCNaKS= z$Iz{K%idVXyUq8#%ZItRJZr6a`D`rPKm5=4asJ(J9Kp++xFB;gsBNZ(PDcXmDd00A z>*e#EBRTJ>Tck4=1SyK9$q7WgF;wtb1ev1TC_}}r$OemXv14QDzy)|N40Y`@=FK}G zu;emXS{FV82WrjNe=g=_q$!Ht)E7;fyo0QlUOV*Feh!Z`(bu^C6yJI2KqueGKKSe%E#-xc zYu~dXB8&28=u#qe@YB;sn@DFMx2(`)Ln)pw5=3~IfdNQTpmWjn8nIo|P0`z3QG|sv z5g|-Xc&=M^f5rcq8D52HvQOUGaQZ6B&R^P^mW>5Tn1jm^vO58=LE!qljLERQ0TUZr zFqWO9^8t9g#tkCox}-JJ-Wwjm?qkz z;CjK?$%VBS%}AT@_NFazXRMU%ZEMM+S2#Tx!ACLW^6f;1^o}#lGOj2d}<= z9+L%OFn^Ms`XA(jx-zNlF&!Ax#Z5gMRxTcfsX?D=iCVQVqng9gTm)dKX{D+lo1=Vc zugd!x+~vZ$?w(~$bX#P?C>GlT5}@865=b*HIxu)}!^2|jf)X4Ei%}FL1>QjFT}K)^ zk>t2(@d-|@R<^v>>Zs1qz;7cc=QBr_cG8KX34bSs^OfxGQc~_@&T@=-L%J^|6y*J$ zMagN+F6waEcaIzhGbcE5GJF$vlP99Rw4;~cD}OvP5q3z*1`gw$P|>F$JmE8FD=eJg z!7$1hm%Q%|+wXps6~noL09JFHUFo#x%agS9cJt(Oi zh4(;w*!^SBGDKWkP94JzON1?uC3VW6;P9bp0tK@Yb6!ZPT1>&pU_;_n5+|-%Q$8as zRfN41q(KK!6$@156ka1@BP>>n*kVoco`3thD3>Q%K6LGZ9uMTF(cfRXiH@V#_V43W z;~@Tp$)t~~((v}jg8jAaF0-__QY{~!O%_i%#GLv3u^?r3ltBlY?&XnAC&W2FPLBA#+om*SA7=CMJ}trCYEkUATRza|Qad_j#MyHdkhmWixrZ6V%HEcuoqxs^ z2eqv7Pv7z;4Buk^Yro)|+a3rKM}j+@Ey(3@J;~(E_=b7#(JM)_MBlkTds8-r_%}7L zT6jmt58h*`g%2JoLSG)YElll(Pq6cvj8k@}uYl2ZIhrEWL>^_)X~>Yk$#%qYFjG*f zlN1ZN$i2S;VPGPFZkSNPYsRK7X5Z|%zEomcfAJBZ8e9B!Y9e{#5Y|;wVe=IcL8P@5u*qYw!cv>nD@90L*DTi7 zsjZcJUAPRCOj{M3h7+h#3o5HiOwLt~oCcZ41uHkWI~;{kwo`r2eV9G8D9h@y5wgf^}$)8vD@goNauaP(9u~e;T(mCpYCIC_UfhUk5SUb@7Z<9!E3xEqPT>BxX|a zx&e!}p#`H_qvM|E7_ z>Mh5yx*AhdT^B*`xZAuhf8_xTV$Z;`JV#5gbab{ebaQ;AH#+*BB34osjH4}aiDeR1 zXwSt(VK{^}ZnwtNS%rJ;^!djQrnrj7Gx~phUtaKarz)U+)wree_})F~IiBF;?^7l+ z<$8T9D|d^qd&^f|EejMt!Bq?QSjge9tm|%YT>>rI8o0>whxDC$Q}(@k?q#n|mE-fK z)YYO$#4bDf@vI+5j<~9UT8OeWWr2w?1Z_0Wz4hlMo2;seU9htud^OfRM zO6Ev6C&!~P>EbOma$hg&6@M=%lk{gS0W6atXd4PF>q#_BHK`8$uaib-BY((3pUMLg z`J@vz$<{zRdMpH7*d!=mQmqV8sZ!DoT=D0!Hr}FY8jic~SK9c(kQ(41U?HSI`5y?- zMAE8XEq4hx#Md~7+PnyscS+N%u%)0mouT;R=gJ}ra>&{c`3D@D_6k`*=KR{}R_ zEPMAcyd3?H<(si4K7W2r<)@)jOqKA2@VmwK9A{V&`71qYIbFW@`0e=PxPLzcqzmHfhi&)IdBTea zbk&-K+#`PpD--9@y+3t}-e*Z`7JB0m#Btwx{I#wRmH9zAopkivE`G_s$x~YHnCc6L z^5x>X#%VZM;!SfIm-MP3+LPDmO*^|fW( z(^&0ti)^G~K-muGXld|RhmtYG4i@EXI;0~g^ouz-#6X@$Gje{{3uyJM^toJ*cA6jTr0${8^NHu1gDyQp>op%c=P&o(Kbjn-6sTQ^JM*@O zqR|%coQ-i*YYz9qnEEI;4|Dd@pH)_fsb}n5l<%`!ujX|lHiutTTXxmIKp|zRx-4*O zbhI@ned4U=ktPSCl6{raxw0TQu>yl0xNL^O8a8IcUc5 zD{2M@X znWIOqr%P4NU@am+iC+KUuD;jJ_Ei@-M^eM2I;HScVEfY5cRd-L&}VjM@1vl4P7Zfa zTit9eZ35Z6NTAJ?9Jus|HB+L0Mk~b1HonDM#|C^C`s=+;J2!1tW*s~#7_OC8)sx|E zS%2|sAiN~5qP82E&OUf$8oW-bBh2NXc{*UZ!R(L|Dsn4?s$_PHnWmN0m3WZi_~@#4NTssVZm>!mLFv(1`isAb;AQH^m=4$--&)yq~yp5$>SDRjLf<1%6^f zKwsJ|ow-k_;VV3ZRr|EyHp~n`LWD(5tb=v#>%edV^q4y;X``FoQ3VLbC`&nk(bo}NNH?mObQ-4Tq-@nrT-UN7nN+cevXuwmIZ~DT zcfztAXaI#uT&M-xi|}-$kK}f_ig7aR$av}TwxLl=9ui~+8W+72&B#LsCM7JTk8q_1 z2q$R}jH)<(5VUZ;ad=muPx9)su0YdUCl|pz3$mmxco<$lRILCe7yA>$>>v`oS>9 zU_ugDaDN$je>%CXE;_dT>5Pe$9z%1QvX!d@#Eu*;M2IHTwSS%|mYS=>O-LB%Hnv&V z=N)*Q=FYt7B0<~h4npEoK}w7jY6Uo&7oH~x{G>3vq;dtys>If60z$o7gi+D=vxZJ< zg$vjQ+vaBm9sIh-O1yEfnPfWHpeB8a{bxACBd?DVG^AnAn~pZr{*6TE<$i|UT6axt z`X7A1b!fD9=1x3S!0c>z!6H1IbGFx*Tunea9UDIO+8(oAOuJNCT52z;Tv5P^hE5!B z*BIJBp-f1qQ!AuqalysU-+%C&H8NvM6TPS#Rb*0G)C8((i6nNl<19mDutX@NC-lJ0QJuB zs}e5)4s8d~f-?JsF~CgrL@EL#6&VL-^xIy(i~vv@w`lsR18q~Pof=gHK~EU2(|9f; zQ?l6B#;m{^{Qe^-P(E?Vhi8E21QT3QUuCoouHilU5ju=Pe>RC(=T%McIPG?iEwCA< zz--n$UfVS9P%>poaoVqHAC+n!*(BpSL#J3?7icv(N#|Av9NX8R zVq^??R-MOG5UQ*rEQL0$VU=X4)y|Z5p%{-BJL?;R)u=`8%FlD_vU=_#hGFBJER*vy z3qIXTzsCMgf6t{~(u>Prcz;Da7@fqnA&`=haN5Y}DRHP}<6&fI5riJ#r#(Hc&?%+2 zZ%XrZc35o=n{A`mkzR%#V&HgLlQ>p$GglTxC^$u1>GCeSS49`g$ge#F67UEZpEz$7 zRPFCi?`)sV`r!^uLq&=ZJO=qxCs_}W`^K-B9?h`?e}Z5%F1{P6wpaH~QJ`SJ^RflG zZdDh#Bj@aO#uO1T_fx~X#$Z?LQX?#q*tW%0-Cw5p{a3@;@{kV32O{&LCE|f*C*QJzQ0vlv7P{jjxyWlOD6Uj< zf2`rLf7E^)Ey}ig&H9Z%abP4#1dw9|f`PFJPoZ_T%^Ug^j@>U#ydx;RL5id!EKx|! zeBus0snL3F79SYnflXn)O_s=b66$dN0r89M?I^V# ze)!;F1dv4yj)twv0M> ze{aL52@H95T=cx6bp#RZlY}uK-JM^~-r-Q({nU=$(;o8>)YheFN&EW~n|xJ5bC zeav6YBZi4@G;Z6GZ3IcEIGNTl)q@Y6KAek{$6j+8&!j#)NYDqN!86pL;?3B*=c!3_ z!|vhzoeyVD6TS1Ubi+WQx-bp4H8|w% zbG8mJ1QpV_hy^S_Ul^{A98igXQWMm;z5BTlW1Hj4xnbkCn2Z3K9OWACcvI5g!L%bN z?zu2fL6L^T_IEzyHVf24R64pldTttwp+q5wz413do#=a=SbszIBsO`uX@Sqze@5A$ zrU&{=-IAho$rJW}EiIxFD)-S!nTD^b$|qz((RRchxTn%C>@=M)uc47_;FQOHu7+2O6m z{9sr`+J4(`xvP8Qrl2sH$Ec4>f9HovwYE1KH}Ba}#&Zvyp6LPkd#9%zXCo-{&L9#7 zEJHZ#gvs_lbTjvu@i($c14?yUj;c0CI9fY&pnmLfvCb1`;T}4$wt*PJPcf^@DVPC! zsChpoV&X&eYtsw>Z};^tgA}R9+5}$_yU%QW_wQ>tUcA*wF%^{~w<|i2f8(x;Vq;G% zb#fvbW`fOWpw=|mP+ii<(^VlLIK;4U&>x>~BPh)aC1SLROOcy&2*wZCr`PPnQ8q|> z9fwcnt2@X~WbK`qDvAAZ$d9H4pjS+f&i=gYnM`A2iXRi-FA;Y%LQiEWfdkw$kHzT* zm;@U6JM5e*CO5`-{9W(Af2S^Ze5k4FI&U(vQWU#Xl7u355~G8Ag)-O+CNOZs19wI# z41+L(5Ktmp2wdzpkFZray-V`d!G<#s8mv$#5sui=GaKyZc%H~T$5_-f6dKM6sYb$y z0)iNZ1v+11I|zXSBxngUVzP3FJC|hwC!h~k-(!j)<3zAnq}D=Le`CuI9V00B*C+sI z%9b(2kyT}y-W%VW+nR5w)S2G?N7#opcRinav>vyTPg5sz76F8W6)gOp%RF{nx{;-h z$LS!+Fr1!#oOb)O*IEnKF)d1MHsQH`Hm0bW@z32gEJ*FHq6nj<+T5GELt*oK`EBRo zWQ1YE<)?t-Hkm-0e|XSRq|iY@VZ}1l_Fo)tfUFclvcE`Y7W7$T>gUK_GUbBzFw%BA zRbkxsbfH87h?#WQ& zt3F6JCSmIm;+;v57)ggNY3#Rzq^tG%X(~o%7h?#^W$#Qt z7>b{AE{rOrhBXqGE1G09z!A8!7}&hny!auw>;Q-w?-o}WEq|(|Vi}i6IUt{2uJo_o20Qber1ZJ7CIB$OKq!3KP?jfD>D}3s0-^{u7)4VV zvt!~ABTzWMEjqM1%M_~HQ(Ifyh?nD zfAjeA0na;P7hY$oJtv#9#D`yb<;#+>cqF8gV#;l9LpjnjjL8^e~iNP z%q8rpxV*tMFAUlAgoX0K)PUb^ukxcYdT9kBQ3FV-FM8V*27)*KOX=!KJe%1G8NkpkyWLxPHL zYn_gYkYMcTxJskDwGXvL5Le=wQ=tHov_0^)=T!I^{8Xws7w zlDAZyX~`-9LF?sy?z~gI)!{7mYAA1bIU_6}jM1hniXj7{5dE>%Tl9L1JvO1n@11ry zG(McY0@SDsg}^nl8tSbQR*ig*z148Da^B}%Qr43oa0EHQ?S7>X6DYJb9jHA2W$^M-I@1fMo9@H{E!1(MmP3da z`+m>ca__YKH~PKvz}u(jz2wl_v)3LRT532t;nYCa7pn>MfvIi>f2yqZ!ERSYHWF;A zfgumZjXJNnh5J)@*)P&-ZFT;-YlIlSor2s=l9B zJao*s(Odc0+iE#E@Jf72FKUL!clP`h2@D~|Vn$E|l|ceM&Q^}l z6{<{hQ`nv{>%Mi3e->8v!K@VQuRlO)b@I%x<0%fwx#^>coknW2_d^CI?In+^p;Hdt zls*(1&xll-UqCGQdwcouDg+}atIZDD<~kh9u%>+9l_CKmDJs=SBn*K?=~Sk3K>pt? z2KEy!j5I)~Bwn-TSzqKa>-|Y7;#!$-Um5D6NB~JY!jPh&e+Lft>iKC^A64P%OjEioThUz0lCak!!FL zR`&yGfSf?h2_T156cs<5XFqF!fzTp0iZs#&CYV(tEHz$gR>NlK!3@e1?XqEQORzp# zT%uT3j)m?Ae}tDhUBbW85G?C$^e>=Ug$uQ1WEQlqC)Zf{%^8L z`CODgewNM`I5 z$*{Um+MTx}D3MQx=Q6xMBLIhYrpF$DN18hzIYM5lf2*h^yyf69h)bA^;)NKe#Jk); z^Qod4Q65fC+(@Dy`BD7ou!GvS$}~Mdnq~2^Ay4$|a;&x?8DeBS_;k^& z3wkx^VCG9Sk-Dmkp%Eo2Qzb%{fU6!~t;vMkDc`y(h-=To5d#ipI(-`moz zROs6|e}QP9*>sKbH(`%uJaBq=(o6Z)M6YX$Yl%p z#5&8h8360oY9f1&l?KQ!S9g}PqQwfPY>(GV1ADpIJVqNqDm@OAO??lcZEk7n!`TIl8(&qi%C8aiRlxO|D2rUktd z0NipA+XnFq3vks1r~wiKvsqASLZw_f6kQVhDomu$k*96v`hC1`dmm7i?Zr~)c3Xwv ze<%Zi21Srlr+LDoYz}iqNFErORTB_5sn}&2?9>3`bU?IrhQjLV$k(%1hkE9Y&Zd`Y zYM}>p=?=O329Y{+q# z-r?54oz9qo8%C~=4>YT5NE*O{<&&LLvIRV-s;%bAeK6Ug8{kN?FoPl?(1dh}VkCn^ zQPLKOkcuRTlVF6?Ll}z0pwOd1f~2qSa!WmJ>#?=j@^Vvtz_N#IljLwcihQklzvti@wCC-hhn4^!v!;AWH95Rpz0 z!#p-4EU>3;@{d~Sf!%0>Zm=R2AW4z-c;zIdwHOP4v!8BuDzUXET_Y^(vOIv}?y$Fu zGTBapb45raD2U6|5r2}PrAao_n-$Ak_L}mU>zc2G#EKQ!Z&@_c744z)YomMN zxDIZC)JhvdsN=sXxE2QKQ^Zk*B51(x5aNcSVGN~;Xo-fN%ZZR>ju*(`(_+qn>vRJv zs)l-YF$Q)NvV=t7z{nR8bVw;Yh!$CGE+YunTG~e(hK2|h*?*t{bQW8gM*##?Hnc;e zmO_#asR*G*kE4zGZR4pPv!j+|)G8Y?cOJ=uBZOlU)bpXXbiC3hGo8>c#X0M$t9HcZriWXemE;YjLxGYDC%ln zI_Htj>Nw#eD1Uxf-CmCG6OXW?&dQuR)ja!<<5{x(xPrt;jbDR$o|@BK*JkNGcaq9Y zVrGg+s#R1J3#w_T1HRp6=YSIYJYIGOK3VB^vccBpM4YwlCcfUZ*n5q+`&te%#HgHk zB_y2L4<{oiBo-6bRWlKXo-}j}g29nEP2_C8JKbnz8GrGoF*!h!c|0cD=czi0I&>)b zVBaq|Y8)h*QP-yPC#Lt7RSsI0c`R!dPlvpugoK#~d$#xo_`b=W=6!$QGq&hgcw|J| zaNuw?!9tahECi5s5R*bYdh&L`nu&})nk-<4)&AUp? zVJPKvYXs!vNjossrPnbQ8;Fl@;QI6JQB=szPUeYy6^Az;rfT6}FgYi!?=JqM}MtfJ(5_vU94gpbQf zsDD3wD3W68suf#F-!z^gV3d|JTFlWF#S!dESOHCsZ5$$QGwP|*Hol7nS{0QT@8olw zu-dF+*-N*>Ww4v(ki+n1uC{{Tn!e~w@4&UWFk829I%ZMD18{ze=ZWLxWSl{JtD?!I zpgF_fDM!_HdXToy6?&?$JUUl&J=ir5dVeV+C`NBR^RtO#R%~a1LW5W_FmEDC6Q>hB4s}k0)*+}j<9&PnAI*_>PA<(DosdA=Xr7KMXn&F- zhqa;``}OfJ6;p~`!Kj46_%J*Z#fYL9klhp!iO8w!dVk5}ytLc3RX5H2GPeO7Xa$5o zybfq(j8h0M+a5zXXK;!KBPh!7K{qlJQ?_`@KDab)n!?;TO(A*o^A-c>eA zS+>V#+N*fh2+prgDM1bynL~P}o`1xmiOZ+)Bx!mtwd^u`dWM)|hA@pXfje5t&jg=8 zX(K2Z2$3G|fv+Pd2UYpq%${uF(`3Aw%56H&g~0dm&DJBy`5xXEItabtZZYes2cjT& zLF$D-qdFrfL^oaT62U1jd|eoDeCsj+z>R|0r)s9)hS-Ki_*=Wajl69smVd^TM$Dd? z=m`=Uih_cYbuWcjsYO!fCFnLLo^qz~kvPf-u~81jW~v6|!AT&3iKcF6DuBURPe{$4 zluJ0hPMRq~q-@!f-1xM!Sp{$D;&X(GyYNk?E_mT)yP?es9pv*SMk5zeMC!P%!qh<7 z4~e(JPAzry&6$C%QuzD36@MIeyY`fH_ts|BxX-B6I3nM1dq|G(J4eg!QVA2J^%NTj5(NnX$eg63eA^D)zauEy`?v1Cr0yVe!B5%0gSW@j^iqfd zBPhP#l)B3ghLJv=DX&-AdUy=Dw-z5`hJapz25f+^X^-^eK}Mqo^?w(mFGEP5Wn6W#GON1YVfY zdO>vaQ<9S^+)O)cMSn<3{uZB3r@%a8qs$Qy2_SR9&3dt2i`o$oGCE1@j3bus8K>_} zYN0SH9=z)0B)^WtQ0x6YQ}{hUs^lNwF>kLkJ1TU zYp?Z}wz`LO@pwJQ=ld={=Pbd1XYxB)%kl*(LW)+7Er+_e^MBJg@XbPcG0G@7K5tPp zHc?`Pl{OoQ2=5o_2k~3{>A^->xF+I~@Sr7yWk6nlCKhN9xf6v4ByZuf3 z-};a5EFJQHz!~isi98TQsj_gRqZgQ(D;AgP{Z`7VzGaa##|z(u?`_qK@&4pMKkcG~ zRTHbI_5<5qi+@nZ&}1+YnVFJ4_KTn01>^g`+TgP6jLDFV`~NN3jV#c`DYk!C$5)P; zSKfV#mVU*$8kA6c!Q@&WT08&V{eOSglBtvs6EDAB&~Jo))v%>1R0f_L`b_JyWvmq~ z&bnmFL-}BnWhngR;^yg~qos=HrPJ5dz>ESIE^R;jO(e-nL|;jV4iAg6EqKy!8xR#!!9b))}3cnE-Q3^9yjBP{xH zo1R81Jb!B&YZyj_`j9co13=8k0W7^sK|n-MrcNH|NBBHb8(r}UCj--YtZdOdbdF+GuS5wjmnI&|^%P7~+lU2?}x!PAA!i>z9fjW*G( zL_npYEG6aY=@tCLPp5{zJib;!~x0^wyp!5^S1<>Ysu%BOZC?sU6BP<63tRpP>Sbq-W{i>Qk$Rqv;Q%WNauHK{C&gmgfR14ns zBPe)tFHb(vx5TGrPvs*h=K`%YGxJ-=n%}mAPei6^uvGu#E7B6@>(k=#0~>aF_70$b zVFTRXuS=c%G>CkTXs;c6DdVag#O#UkEzf`!kUxU8OWZ$f5wfSnKPW5l>-xJy?tj#$ zN6*MK^<}G4qILG4ZJOsgl=v1G+g~0dEX=|Nog=+}ANXe)#|Efv_vrI@XT)=OhmXel zM|8^iNMYrau+*55hTU#Jhyy$v^uf+^-b5cB_q}i6K%W&wKt56iq8T+GS=i(~41Pga zdH#m9BgT!Hz*rH~XGlWr3Fstz z2d~qy?;fW|suthu1L;7B2Y=~A7MHKxUA<3!Ptm5w`0G!On^j;Wm5;+&_}vGE5VhMP9dtw+hRf2XTnoAS_ab7s;Vv?By-AKCaq@Chfwn>ptzHSj^w z=8}{~&wg-e_G5L6=+z%01VB07pmJJot$Sg&TdjRGpESB~ph*A)M1OpJ!4)DrKf_Wd zE46Z5EWb!(m*;3F&uS5DpEy0VAU?qTQt zx3iPI2v`IC3Z4aeBPi6lYg%wW!OkWEsY6T4WUV-I+K@6Hxx|q9OGT%_RCfM##HAP)Je~sIh*1*hwHU#8^q!@CAypaH$=|yneRmY zjkmtbkAE(rNr47Dw)>tFeyqJartN9dxZypQ%D1c-Q{p0Zs9NVmD|2XiECSUPO?WUC z0xA}%1kQ~7BPcZ0lCCa`S^*1yt2aoxTqYcnBPeC{Nmjzp3v-o*qM`QK(89Z9y7kgK zNAjI@Y3$=CLcw8j)i?+Db~+A>6_!QgE}!n1jDI)B-m0nH4)WyT2~!BACDdu((#d9h zeBNZnh|K`aKr+9nlkazcfRZx*YPCF1!#A7vgSu_(nXL{-iz=?*@HjQvQpB^nW*>~ea@z35|^!F>J=yii(GG+Y4qhr7b7Tnr)mAz&g$lW->Zv6u6~u# zA8X^CHLc_+P9NrqX=4zd>qEf*8^?uhso$R!xAh(GpUY-taz^8uHu@|w=sqmWIAm?> z(UVtE2TRbmiXs=i#G%crQx~g#>Y%jsGbrWU6S@+;GpZ4Qn!wTWem5m2vICZiD}Nb@~WIN*=U{d@YsNv|qD&x7KVgwkdsD03NH zCrd7G>D^b3&y|$8x>I0)vZ!THMzXF^m3CKhTL9LuV9ZSG z@vG@G$B68hKMzMbOfl6wCt3WRnBf7~m#)sqXY6tW(86l(ob^Q`EX+F_xbwEp$MP(U z?Zhjp(nUpD={Gz@fx+5qa9>#brspQiRuOle_A1S_Gn^;leT$G(Ve*cV+N(0DllemLX z#|IBa{B)Os&2-D%s>jE|ReN)OLzV$LINF}M^6IHJcj?=Ii0{S&S$4t>aft6Df!SqP z^8nDE3Eaa*X-#h0YSXGyBPg$#b0Wh5M0EiXLKrzo=NZNDcwC7p^EqyKBAgst9{oI&F8Km~XBoyR>YFuLTzU%})nQIDDuk_@fAD!)A0!O_Paq zwWZuGg`ujG8kY@cvd)>)9n}evjOXnB-%2soJ2Jk`R``BOtz9izP0y9QYTaW11S0RzYY zBYap!a85u+bAaKKjh8HcNSo-&68nybWt%TMaQTC9`C_&m6zPr6J082gC|WIYtc{_k zXs~915C{*6$3Xl?oOp(MoBZajdlmwt)5@g~8aASi9AG1a~&Lb>;fkF1>B9{FU#J5MmvDQy3*ou}0DdR5v{jjC zGT?3dONu1Cz6 zj~~LAfz7{w#l%1Brg?}W{f5_OMeok2%U)Ac`Hm!Ps&z0DAXW%S6&QGsW$r*n-^v;h zML}Am0YOGllpjhUd&s+5;B$9z-B{LHATUr4wc;G8br-6Ja+KX8D7{I@p-K*76AU_>BWS8J zAaW5gcA2>bIC4>`g<;V_?(kpb?D5}&>NB9noCMzWMIi!|01^?8FAhRf>;s{`kD9c8 zlzcINz}JQ#_CB@S>TAY!I8YRd!CubE&rfdLO?h;GSyp4dyuF5OIwa%3fM8%^9wJ5v zIZo+`Z;0vNb{hzbc+tx^d`rjb)OhEyqMySjMTr$`Q0Yy1$&vx^$D_bSb3c+YCTsTg z4#a1}ZgaA$QTgO4?c%LM7xc5NO6w!NqOH%9FPjg4h-VwOP8Q3h9#g(j#^oVDufCgV z1WPvzG8-A`>x zkm~Dyd{I`%nnEBESb;bB1)VPBr#F2-Jv7^PFF?asz2W20Q*PVIM@!Sv)jMd}uyQC+ z;&liAXstgD%4TruBZ>!RqvV2H+^efHMz&9jtU zx!`WUmA>D-MdHCKI_H4@@$>opqtUaF4-g{2zEtU6=c|Lc;(ec-Rh|hmRz*-vFXf!+ z`SdRg)${9E`A^7*S-#WbRi-rjimFqagvm5>&r9~ZF9HycE#%fu+uV4$$j*NSKX>bY zO@PFXL#8#s<<+1Uo-klX{&qe_S`;tSeI3 zv#x{{?@%MZt%~z)31g94qTm?ffAl2=mULej)w3cRYl#S@6X z5uV({@x14!@`mR#Gcz7ifBGMjp724pHNtJCD>|7ja3d^Q?`L88Z@-4J9$cqR2QH|4 zpKoV;M|2J~ZPDa#t#m0>Ifm_3(C$0AU34e@0>yb8kF}-243PKKKa#91QL1z7I;`LH zWBT+r-KzawenulG++>>}ClrbN%mPF!iKFuTX|WS;^!^sqiOt=%fAoZ_+f^ehS4x=u zyzUn>Jj5xh_)oJGhX?HQsy)uQ&RZm*i3RpI4p`R^^BR?c8LE-M#IYnLwJ4VfaFm+ks@lZT&2e{p_l{VMPUAsG~Va-TjA=SFqVd+1JPo(9K;9joHZ!TQWskChhODlukS z63NUQCj6e@w2|oUj|ZLkHpbqj86VNsQ^Pt`AG@__LIP?bHEBa|`GhpQz5=T5!V+DL z#?UOJQ?SDO;v%mDYmG(h;nFCQOvC#(R@jPA)IkW4fAM?3)7MZVXTprZ-({btP1f~& zdwcn#g1(2I=kU8bs22f?v3sT3c=f*DpOyjA$XAt+rfnlAYMZ*;nu!hv1{!eCD zX~a(Pe^Cae$TExog4Iq2+0zJzz;We5b|Wan6jn%5)NpDJn_i58WRT=_`6R}`f!gpu za>BU6#FL>1yh?{&wNxO$MiwY%+Zl(!_b+o_ ze8zgts3n753(?)BR|w%FEH1WE9#>Yii3HnRe^V7hwN!3VBP;@B;+Sl`{DABl!vNwb zO!e*qg}6aq%X7u&YKVrzvlm;4Bjc62$k;XkVryrBy4crmRqaO$9F!pjpd&1r(8w}@ zBeo%H+YHUAUXd`&>yDe=s)UvmeaQWOw$-!0*n{7tH{r|)TfAr;2%R|0N^|IrGJr@C ze;~RpP%E12G2vy}1MUY&_Wf@cP>3@T4t`yPTx?6$gVs+r?cI&!UGsGjt`fRna}IZG z6|bT$I;q{jkWRE|MMZY1D%AJ~Rv&(|A0*~HpWZi|t;~>Ho^j-y5u`$EBP{YwgI!zM z+C;fpBK}NZw~6B`%9Xgdb2eL4k;AgMf3u;??@OFHbt349JrG#}Z?5KatPBS>#x9d1 zEcu!$aY8_?VAnft9ae1o*RiOVVpfZ`J2Qig{utsv{6lBFmnf+K^utdj}K znqc+=g77GjXf=dd1s}6)AFyAp@VeNW@+ln2*g8KiN!QqQZPBBdJzcZf7`RCve>o^7 zTXbg;ctDUSiDKPU!>I7LAP8Fi;fwOA1`N!RH39aayu9q~JwR;{vi`lB&(jq?|1N{0 zmIL9S)AL%oanliHeZAbXu%Y$kP&#k#bN$7a@8rp&wh$ z=x67g_1Prs>@Ne1HaFV@hC4Yaj~*YwW21Uawx$}(nur5^Gy-5uflPw8&rHQ0h8Qx7 zn|`IYN+T@AR#f+ae6(4ie<|JXn_!s`85$Qp_GJzzc$%aZ!k z8tNk`QPwzsN&J13tvlT31G`@yW(fF0-9Elm*t4E4&lilZpQ39_A^Q(Ub$xq3AGSUn z4~AR6fNd!u=9g()DqnX)$F8LOh6oe&8}8S7=YW7f0hqS5Vg3Tnmd3w_+9N2TRpE!l z_4xT)$Twz1*15yLe?k=}?D~qHj*;pA00(3+>iwTU>>o8~r}dy8qy-7>K-e1u0J)D8 zPE~q@2*OwU91#)+@sdyKe`zcwfIvT_&0kD(A{+n0&`43icmW;g7bvhM13<}CfU#Np z?1M53uxb95HT=fI$6se<74yMO`!!kNKfiSc0ETD#En7Ejb_~|oY>q^^dzOE=GBuks0nb$qfzbMN!XkQzH@!O`9bErL zhNQu*Jt!Wf=o|v!1rNO+)|!s4iy_24Gl-=D<~_%xf9KbQSMhl3=2$Uug=nsC04lfu z>dJA;kh!<8k{zT8WbpShkW~A(2ox4kBPg|m*II0Ge@(hG2w@Msg(0h<($M&ir~DXu zeDNRC;#=*wRxBt8)3+UaitY6@HUNpytaKqnm7ao-GQ=3cSym{OK46F1!Pxu{)iZFh zVq-d5kEE@4{@!{?(o6lNC9A~TV3slcp?reFTtYttH&@~udcR?DIunMvArpivWTzF% zz+^?&e*vZF%Cn%-38~AF1tNY^1f(@Ju=4MP&AuXYNOLP-&v;U?Mb$*<_g^70HBgb& z!o%ZIQOC5enIkNpj9Cnhs1j!yf%AHfaF5kTP#nSF9fU#$QMEKS_B?19rx zfwQPfRByy1DCBh=yXWNJg8A!nMqw$wHf^iqf5jH1fly&;LL1W_0BhXnU`EE_r6|A_ zNFHaIY{869LCWS&063avNb0FuE^LIhb0!8*s;wg|BPcO@NJ=do1Aou$dY;>=V*!5a z`LcX;9jK4o)cwX^icfzOc4caWqBdW*VS{K~Y5?X%TBZ<&S!@4|48Hyde$W&P=o4zG ze=sOXs2e+fU2|`*=5=hB5<@7U4s-}Pd%_f&$3TzU5&j93)4GTLU*>)q&n1Wx1IrRX zhft78oGN}ETbp&R?pZxdDL}sl1lUS)Df5vj}i?}kw)BfLw&6|D^j}IX5;>>`j@DQ~!v?J0MSU4C|BPi#D^qZTaiYWGWZ9Fh#6Pa+vlun#C^fVLRtNV&oyL#g2ZC=SXXX(>e*{Re9ay$mhU+$GWfT*gw{^E11<`A= z2owOoAmG^k1%v0oM`(WtCkJVvUJ)?72!=wLmmN>Z9q=SdI(7ZOZ~R%Ix9$(ShO!|N zsUazlPF*T(HzvQ=z|;fS5Gzpx={qAR@iqv^9PNhkcjOlq=!vQ0yrjS*n0_fwd3R#S ze`%Kjj7QYhrBa=hDVlp%w9XmeB36-HCxTS%zbb;q~L9a>{Ar4pf#qMe>0La zN}kVRyy6i?q9gdhKA0L)X_grfVT?Y2!}2iEL0>P22IL&k;)B+o4rS%HydXq$!~KGT zT?lxbLwI%$4Dm1UNGhtUiYZZFP<=*7Uh+^=M*muT)7SJvg+Ffq+-g9UpKMdN($T#k z_)r}ihO$C)L}XAU`neQ7-`mIVf1ej@kSEq#Jc6&>x!9{uaswQ0ZrF(aba|~|>2K`O zLe1PyJDJB36L4)}ZO3zrPp@mstGlNFZmHAfdEO+QUBjazEKJqRcW$Ov#!2E(3{49? zm7XIknpP^LkX3a9u{Vm-1lNSe5K#nFP@1uD?Zsw$F^7XH7OTS!!3frd+hfP_JWm7EXqareOZP3B)W+WfG5 znCY|d)q`Kh#*sXF`sq|7{5YQAIftX`Ih?@sKw4GX&gAh16p>-=fY0n1 zG)0&Krf6x&3kghOd9tps1AF5_XRtS)Rn)#f(VC{C`F0crNS`>5f5&btDYL?nT?jym zliq#3KQFdb-rRou;WXJ@yT7d4xR4k_>M_ZmToMo=_19xj@iMoA%@8bbp+TY`34LM^ z?jgj@+E~f@A=?L+xVh|2e`c6NiQ+Unm~ivfdXcoD*CA7(zEV z^8D|&KbaoCp=$#5e|@?ZKL9+9yL*G~JAgS4Fz!-4g7uIRlL+nuf#2Q$lM^+gVE54w ziYwv2qo%liK-^*RcpFMXC2jVd+V*iPKy!|r(n%-un^Vv@-a|W2uNzm?9i+MA6j(q} zSj1Hj{&U19BPgZLg*ktSi*N{b2&b&bpi^gsj>PDDvNv!8e-9%pk>2<(Om7B4KuC~X zTlF5!-+{ynHm`^ketkw?%ke4I+G-jn@|1lWVUeGsI{6HJGH0*VYm0cE*SJ3~3--NU zA1V{$;(lvqIDx3hE*ta@p_-MFWe-Z42;hK7U&)e5C#)NSCy*MCN{1ibwy+CFB~4C3 z(zZyU=lF^Fe;5*Ws`tbA{7r$Z*W7bGrR$f{er~-S$f4#|a=x2T#aoz*F&Tz=uFc*m0o(R^wxg`UfDG&HJnBloVCVH2nC3GFZP^dg8N}_*1R?XaKw%S5 za$bP4hp6BknZVZLI3p-0w9v3}B4>^!-s6wt<*O?2f1#i?=w?;A`f3Hr2CLsvL+y`h z<5_apb88No>Oi0s7SE*t8RYc*lsjWhl0WiT++wJH~#0N0R>QNZPL4hQME~TCj zy)$kuv2Pu?#aJ?VsL*Z>$FR?sZG9=Pmh%uCFjJxo{Re+U&jE%49}Yo6NQ8xYxIG73 zBPoh)n$E4N|hw-N`79p&VBo~<)s+3sNYxz3gz)T(ofEp>koM;DQtE2})lbNz*KWte7{Pf&r2GBSOTtZQhNc=MdHrbohk!hd{PV_V zWOk4c`hcO<5%xh&1T|=D_%4sKeKyzg*W-kdXh^H9=GRTT^+~+@0KtG<5CcNN%;}{) zf9KX`@4q7`QgN+%?QCK9T(P+B7(%bFeJ*& zdovQ>K_9fOGwX0eFqJc4urY*tyiQzyX$#PuXJg4dUDXUPtr3+>LvQMEp(4V><@t<| zPzI6{K*X9gqm5!mA95*jLxxKS%&g#Rf7riuWJ!A?EbFjT7p(q=Gz)wotg``KgdK<7 zM%FE`6a^HQ0RfBLls zhIK{Kf`g=ldljIvM33qHkLl=6kHdNFgzLb2>ZB0oEGb44Z@cu~T-WC6_gf+cl%{A2 zD@iG!-xqhjx5Lh??%L+PaXXP!xkExI!wDGyl2F~ii*-;akXW!TWBSWCJbBMQPlwsA z{m)<7^#PIaPHK7}66c{GNaztu`b&`j5DB zQ+|%)1Ns!iEF-MimV}Axx`{1BV$xSu?R_%d)vq;-8?pl-gX{zngj@WV|QIn;~gq-0{}<&foKfFpvnf}v|{i}-Pe)ZfBE?_2odVcoxy=(H-FIPE|c<5utAXuV^5=o_8_x`~BUFWVL zBs~XD&Yy2Qj}LQ6ln>w#e<4|G@*^luqCIEs_dk+e5wKQAi2BCRae}F#sZ46yyH&a6 zk0UOAKT#tnP1tV9JSu5r5MWps5HZleVK9}AvJf&5OZ}$v>f1#p$$&!)I%wsPYLZ50 zmQIA%!hcvDQAAG&6ORZ8OvaQ`oHoe9FHjVoK_ZG2bc1iwgU}R3{PcZ659F1o)~^roLTxFqP=|A1A;2?zlBu_Q{8@aH zHf$!QzR681>qL~;-_>->Z(iVEcSe$Zg+IUX`$FGYke``TPszU`NX@kT`+hoThKWjl zm*4Tw-X2!YUOQNbf0N8rR2Rs2&P*oqGiYRoh>zg;v!qtAcMDvN6_R-^x@#*bSA+2S z=0gcru|mAViE5llnMB$@i3|9Ff@TwWJ%i-u$_JU3xGC)FdwO+SFK`e{&Pp^QQp98c z=u*jofW-&e4)c41zXvyO4&8-9EHfM&#Wkj|2Uz_<*G9jMe;pfpBPhFoghA{!sq$`I z5Q06Z^7MY21;K)$fCPb`A$gndk0;TlW6-A{=p!hPWOqcGa*(P*z>U-N*aqN|YXhf5 zhWQ@L6ujGkJ3ef!8i~HLxdyn-J?|_D2ns<`C>~< z>%Y%&uU4Yi9P^7!N&EA@+$2GKegnTs~P#zi}DE@TZE6t9+S+j8rC)^>B%^f7tYPoExvPBPg*fr*L)~b=c@A zyxul3C8uXTXq5HSQ_wJI=l?zyr|$kX?Xa z#5>iK-j~u4$HM=gN~KpFU~-Un??f67MB4E@Oh^3%dC<2Z~>y%f+jPwpqfx#Zg2V-0gA#k~RBNUiA1yYzD*TbIP z3FFNAI-d2>3AB5NKupifd8US1U@|+4-YJwb>QB{G1GxyX-{du8B7{B# ziVkcpLuZ5~VnG-pDRS-ywUK?8n428+1?0d3fAxpUv;3VP^-!;96uG{`A6~isb2V!* z@Yp%|PaOZ?y$BEX5GVSl?Q{Cjam%N}J%o7A0tYEpMNaiaLC2;nChb7U23)(D2>eri zC*OqU<5bNAaS89?T~YZa_sKeEec~^0>O++JDR&T&;iQ#f(*q3Au@Dt>(*LNP!_!7O zf65fQe@Mt9DAi_O1|*InEJn)7qPwd?z6f&{2tQ5$dHtZ>Y5L2SHjM_1J=i!2Wsy%jP>yP5K}n99*S{Z{ad8azZ;q z6E%oO4OGLN{_3oaDD zhs*Asw&;N$d2EQ{h!R!%lq4}V-fFk(Ua?JT29-6fGa2%sT0cY9>l8JGw)32Ge<8NC zU}Td4N}!EuXC~Wgsf%i>TSfNIS?R>er{aN6b z0>M#&uwuZsoL-bt35qEe=%G{(wSveP{lU*R`U8v)M{QNDVe-8p`i~&?1&o)>76*72 z6bM7>O9VjI>mI^-50ktc&0q$ef7nMw^>uo1uJdt#HhV^kKfmEemu7)c*ubQOE4$l{ zgy4AsLx#2S1o}Wg$O6Gj-|fEx>i;JB@3-u_`?B+y`Yu$n6G)Jxf(J?|l>(}YXV!nl zLV{aAgSM0t_@QIbmL*#PM*lw6X^S;C$Go7HU)#nId>?5=XjQ9ffT5Qoe<+1jA~4Mr z1Xdwpbw9tp{m>4cke%Jauap3?A0OVBNguFo`;3R#^xIa|2?aR%Zf?$zw~l!6YvS1x4B z(z@o{r*|@$@3Jp9Tl$|ZfpJodA|Sx)?<%RGv^Ie>QG=+m9O}ql6e4)4F211s=%3T< z18cNG1ru*BfYky~;S%xX@_09rI$j{*ew{p?u7Thg2Z%S5`H%4I=p=g-4t=|!;{M7d z?vPX@di-LHeq{sL(*|5ysS-j7ibmip23aG6KrztBu&x4+7!V#>d&UEonoCSgp6_TaTxErkD4iW=5GhzLMtA_l?Me=DRjv6?_ZG(5F;#tgsP{h zQ2etGBkE3(?``;~9-rLs5&(xR8;BM1{Hga?pOrR#e9O}2EI=q3mghy!3`@ZQc%cq+ zuy3{7DU zTP?er{(tC@N%LJT1PC4eKC(&bbmSbme~dFk`FFU*w65#oyDr)8v*WSwlJM=8?1DZK zK~m6;Dzj^yEAjzz4VuD5)ssM{jRu1f}00bW)Q@g6zA@0}bat}X+ zQS>}L;c8wERydIgmi;{Ey*;(HlhB9!#%r2=c5<9u{sbC(c zy46huKfL0SBX%PwnTf&u?$I=f1JGn9Y$It&6}DD7qh)eq7-D}zSGY)aA`XaMcK$Xx zsa63#esPxv;y|jFSQGh!QV*f!{I^;f3{}d$e z{NLT!0QgBR8~=v_FxBRYARSdGM8nS>O(E!m{M+tOqkRxu2tglei;p8HmLqaZU=Kf% zvC(#_VC*rH$02{)A-Onv%9|sP6!pI-^*d*WHTb6YWTHPZo2w$c5FG3Me;xZ{a5dnXvkXO4C;w(Q?rPJ1Z4@QM@%Rd zzAtk9R#|)^6wHS?Mnqo5b=dmF70`~1B3o5$F*>6LrQa`_eQF{rU23M*J zT^YLE0?U8uqU`lj6rS3hJrbm`BNy`wWqemi^VhGWvRLswjPqrUTCay)?3?FZtBBwb znc<_Q?|xa|%bvlr^z3f?L-X5&a+%WxQw1ZkB>1@g9=o3&HTi8|jXzp^)3->mBP>1; z=t^m^kr(k$6r;b9iQQ_kY}7#s1l(_7mET?t9!P)A^*}S5w7E9Q`b@PbzR^#z zk-bD~s8GY^dc1Z!3`0&yi`C)jla>OA!GMefj9fHq%^D*pN=r2*M&AxJpuVC5EQI=i zpX+~mM+mgM-zm8DqAd;xl8=jAP;-<=yEaD4SWquB&p=n4rAzru!=p>SZ}O50f>@RR z56F2wQSXk9k?yMm{Yn(-@Yt=z&sT8S%FcI7Mgx0j5lHa;4`z-dqS^975|ziO*(vx% zOv|lsjw%J9hJL#?aD~C={v z;h7HCLG@4N-V+|KTnzo)6at6KdjZ-^9>XGvgeNGyk*yNPehYLdEoOu`u9S_AnhI>H5=`=^e4_vkwxZ`Bl~j@zrOWjqSRD#cCwjLlT`j z2L=Ru;t}=wK_vW-l>-Hllkza@jlGmP<}Nq#kqhKO^Q?SD#^(3C_Q}&^5%=dNVB0~_ zsWuDW+3~NIZSB`&>C=s!iOWh*0+oMGqg=6Jk&Q$!1;rAqmB9>_z<(O>U@3XTHzO#W z&1reHdGL=Z@|$K|+*8CODDjtTL1~Swprp)g2S_mi=!$e59=iY;K@q_K${stl$E(s z0n1l$tDyo^eldFsh|#XbTtnE{g$PG=Z`T2@zsB)O$bgSB*P&Aq2F>A6Uq&B^qxg=c ztJ}!b1Sb890a0s}&=;RfW37M6CA#-~?_RV}C-kzIh%i#?`V;v-W-=BtsYMPyzTDfj%9j^MfP&F$@+XEPQ{g{=N7xe^-0= zJ%bVb=pBiF1pTmd->cD?UKLeV(f*Os1Cfw<|BxYLazH=Hqq#T4;#TdX!I`gl{9tr{ zDDpF!nm4tebYb12`ieDWn~|vBKuJIlfW(N5q&lDS_!dr~%XhTm96TdM@zhJf;DtVo zozC|tVK8h6V8J^7S3`fsBPgcnyfD549>7`tnSd}rE)J8oP3X_uom%|dBF1YD=lkT+ zNN-Kt1Ev+)&Mq46L#>DS^z zvWnVKOl-MEYR8Rr(oKx02=!mk_-hzf%Xy5n>VM3$$tN#T!*1QLT>YT`L^rO z7iVLuj(+Z!>rc(yHt3d^jQ1ZTy2LUZqJ-hHQ2u65nc&bJH!3O98mesrHc}>^#bErhR5R%CWT_jBtekKuCL#`+sT^AK}ApD?_2th zQvm}YITV4SR181T_6+5H>Hv87w%RNEh+W;=cV2_CST0Gs-w5#Hu45 zq1(*H57^jn^y-2lDq!3B&5(a51A%j~w2)l4tt~qY6uyT?4o0I;YAle#uqzNRX@zo8 zyzHtKtOlmC8uc+997)W;WmAWGRP6Qe zea*0lUH4&?&E(WLdI*u5*BfNAcmWK{m{~bUCHz~DLlwOPT4_jfSPvsgZCY2e6hr%2vUH^;b+A zq8uYABPiz-zY=gvLJ>22ok8K!VCH7!H^!=7=xJ3cp;QxNN#F=~n@%Il&P69FCx^ba z*3jr-rDN-Zf_jkD6<=Zj9%em`N`Hs)OHr$Q zp08%Ji>s-&`50NFNY2GNOeKv$;dD@(OdUNvloMsR@73G!$6DC#HE>RKo$HHi2xxTR zoN&P`H{G0L;j^2P^t{l+)u=d3B@n`$ThWMo5mcUX`7<{(n{ZXw+le>^iKq9`Om0Ie z!0Jt>q&2W(6;}Ae=PYZx)qm>abk1ijkU~VTdp6*3YoQF5%e3PoC}9G`Fh|4r{eQi< z>IH*%V}n~`&8^|nxaD?vn3+lFDul;-Fvr{2?^n7MMB5f7AIPDhuF@4UWZ6O%8GzJ# zxE@bG65e8JbPj?d8&u#07p>4O-6~wUnHEr9dTp_T1M3V~@mwt}i+>-$?7gdiZ_(__{|%Ho)PAO#AzLWU8qxz{n|U-znx7Y1P&+o`(PsjS@bSnpkJ z5vK!!k`N1pBPc5HoPTKOA}Vx-C@{{-E+UN5Ci_M(-k^DVkFsiLbuK%I*>a7`Ir?zJ zSB|+(nZ^u@!y_T-SoWKjJbV++Ntgmq%z=%i8c6WOuJ-v^3}!xg-i=dLwe$G+v!{IHuF1LG+4q9FPpCD4)*4CDZZYW| zr(#iwKC@uS&q$l%CbTGclui@5C>hK}iY8VPQ5zXPRhR2_UE+q(V6v8k>K1Z6f_M5( z8ZO5(bBM|MtFUk1_VcX9>5R87WXy{k%%)j#%*>f{Gcz*A*v!n5W)CwiP{)~+%PxD8 z^O^WORL_OgXMaFg2P7)GvsuVYNGk;ZuuM7-$UU5Kriq;~65?wtq`n8XJl>(I1kmMkl_Evb~I5+f{UAb-+VL}NqZu?9>tcxD0v>(RqR z9gdQL*mn5^n4`>cB=sNbc6NDbM!L$$RS-l4ML|WXXF@_k5SeZ%rFZ;28ZAZOjV8>I zauXV+FtKFeuO+^ox(Y5X`A3L9A{EB8G+pAg1avU{oeq5iq1I zV`^PXp%c@##;q*9kEZyw_gicjIQtZg9>))X!YpD?O($X8$Dyg2PMrX~i)=yUn5#gF zGWKz0UQj9+TAUMyy%TzQz-)&}gPsB1yCW!URDZLYoWTUBu%P4|pfMvQF_6$v&r2LE zmRTCT279_41~cniwBeq>sNnT*EeWBOj! zgB$K@BJldvN!r99xgL({3(Zdzj%YAzsR7%<;@ z9p<|c>3AHoB%8_;K-ZdYcM)IMQLO64V1G4)2-q|WIYAzBY*Uh&N48IAs!(<&J2%xu z0a6CiT;{7`a3(2(e!U@!B0}Nv;_B0?fm$2kqB$^T^l7%8$YRsWqmg<8!BE$Fx?Qs3 zQ*vb&C{j>nb@n4DkSDo~@nlXoD!LnINuFu<2g)MlM21I-C~PfpLg8XNNa^}WMyrU(tr27i!Gt@_&vGbaWO?tIB?ClSQ&Xst$=dk`v`CL+Ufjb_8N4j@1a8Bixk5qDV{5X| zZ0+{e&zHo3?`pJDqys1kK+>Ii|FGv0Z&QTMmku_BHU_`VjPyQ}GE8)gkAG7?z1mbB zci*qN?H#t}lVuC3)XxL0WdUm#6<4=Fgcx1=3y^<8=nQ1Rv^^9?Q_8U4$dBGYl>f+B z;d9jjO8D-2Sp2foiR9*ta}fM44D_wWraV6`TIVBPKyopSo;jKiTLPZJU|6!*EIPvG zr+>#2>ETiO%GWh`p)>M9^M5fhW(y)lA~j9g2*CoF1x);ESJ&_PjDtSrFpz~IT{?9C zJJ=|DnxclJr@BRO6c-C4EE)+wK|TCl&9L3Dq_jTo8ZCGG=lVa=&-Tx4s>l0(-J_O< zysK}Y+D?R0BnA(q8t?K1SrqCk&`gMhF@YjNF-j5sc!+xLc6NE{Lx0RWsYy3}e@j8& zdP;6Y`wo#Bb#+dlHGYcz9+OC>Y_%g*KN0d;x+OjZ>B+IWV zygTSq_&+Ki>5+h4ihl`_BrJukNCRO7J57`bf!D3(J>1u)pyyx?mDJ^8uOIZ>Q(b}) zbT|)8BoaWo;t#)v<#`lTA~gc#Ik#Kh2}nR=YApmTp_-zfA4hTJ2qGl@*dSEifKRv$|gDJUZ>Xc0m&X5>RqXx8$OBP>IsH1%lc6^_CXOk$LnG9cc9=|da5gZ)jA zM(eY)(051Jp38IWzt;!#1??~c?BMK|w;mZLYVslnYXj8+$bAS?M5*LNDj@pgLk;D2p2Z zOuj9VJa{C5>9boYm)hCGEiWjnHRp7&jv7X#0+N*X$$wUstjJ=iwpGfE8qHx%1`vrF z27oYSOb>V=E(nYae6j!C|GD0((Gw#pOBmXZ81gKUjUyz+B-t2SDC?FZERMR>q2v?7J->XWhW54+c=v zD??wyu%PW81@-*ZEfI|i98q>h;APS?dmw5aP?3YlWJDF(JMu2dSorc2n7D2g4{#)X zWeY`AqUNF>BTy6vmF zAR;0oC{{N+K6GLkoK2Ly=SRD4Yi_hq;YxocRLGa?QbidQ-`jC`Ebt>J^2u>CL_sKI zfg%S34k8>zLsTijp%0H-Nu-L1gd?WlnG|grYo8Ga?64Rdq%w(AP%Icv$5dd5XOTuh zqkpj7>TWIH408^34of2Ber+VxZAHegp(8{R2EBj8O|n7GJlskSgkX)Bc5E2&L?TzN ztQR+!z2FjDQF{XCTh|6BL}v@V9+yDWkG>-;39RkR?Mo)l^Vc3Wf*s|@{D05PBgck^ ze-D}1j(@St*>6mXI!~&JtdtkNW-)>DK7aTid|$YM2_ezbrq``_QPLwUYfl<=QuhV( zATlE?)JXs+VkCgDAt1fLLXcls0r&$O6EI`|ArVg$1BU@}qM#6{1xIn!cniOeLe-&x zKp0&Q*`-T$gr%>k_|Lanh1y}!vzbMR;wbIgjVoYwXVL2+{eK3@Qc9vkrHvyfMSoLt z3A8(7%^;Np{9$mqpRF|P7~oc+v> zT5@+yC$mx&qCX3!F0iSDrV`mBC|rXhc}Ui=IfhJPQIsH<2P+j7m_S$13@vhu9u~_m zB4mr|`R;6jyirkH_9#*V*#$NToN=QP+vOU9E@}mJ!wZ>_;4=jr1Q}QQnScAW>#+O2 zNb!JSBPel1VG!6LbnXa*0v!)`^SOkzlKtRj{JOEc%9V008=^mY)zVD7! z;Zv1*<;%4uESr7^6rEL2TV11ual(PYp|}MJ5Gd~M!QG*_yL)iA;9k7J-Cc{jQ@l77 zDN?9>C;uHYxnP(fd#(M-^L_-d)QCVCs1O|&G2|cZvcg(KKT?}R!nmR>O$Ibm)1I8) z|I)ZK4>kQc*e}!MEsq9ZMo`96#gV}o8R*EmPWsO|!*YJFU#9PWq^NK<-RY?3B?T)3 ziPOtc2xxXH=SqAxJH4_Ov)g=!X)vla%K!a#5*hgsRx< ziVbhmVtxGOaksVTXZZuTrZE;usBv`b9priT{_7(F9EG1D3_@0o8te3uDwm~j6BosDs$q_X~W@e;?#@H$k1&>YXs@#hl(^{QSuXHI6W*a?k)L0Zpm7%xz>Z9M&5{zw@gsO zqvVOLBFnj@zwAB#yaFd2?){cBjvoP4cfLHC&w< z6(D!cvj~;&UHZx)Sqo(Yo6+>k2-wWwi@(;YMJmb67F@^W)7baeWbHQ?%ZDi=5T6VH zv7#`pf8*B+{q;4hDt;B_wwXr0H;T|)tXaybtuKU+=-cVyXD@>%`i#Ip&=7-I_dC=G~{E!-0~XJl|)?` z=i4eM;=GS`O1>=JQ@9EWJZkuAqFKC!SSGD>)SpX536`@@7)P4t4>KWwX!Y|yc{b*C z+L@a`JuElPr9+AAsL#^|qkrXKy_>l++hMErtlsZXJ}Wu)E~$Ob^eZSqB{8Vy3+H0Q zj3&LjO)14vFKwR=Q@o)Q_5C?!6>&)gqvEoZjd#yvM$1roK()$~G;doZ`w+5fa?)w) zC4@`c9Xl4#*e(!9WG`;~9Q%k~{`M#2<>zfFbbTQ%o$@c0tn*GY5oWG0lOBm)3FGcv z(HX98M4P6A+qY3M(0;L7<@NlLyRi4xp^)g0Tp^@W6zV+wW@C3)p6yAGL51PT#75M=L$+w+9JpSP{OHVF!V zeq(PT`&HM1Ei~21ET|=#FiOXX$!ZR^zWRa*AWm@2VAzi##6WTgLuQ#J{W|x?J}q@of}@0M*ETZ|3aY}P&&|x zH;#%wuP*dqtJQPjp=#}o!wmShXfW%AraAOE4K<03Ui_;Q_Ttq;lSKb8?%vmAuAtm? zxvYo_fBi*o88UfwV*E~m2&O5jspjOlLK2_77}k~EWV3JU)rD?%Q`_^Kz8n2tpu}X% z!zl*X_#0_73uhFBD|9Yw40nRxuelC!R;GT4yqeH8hoeV=k~j4C*F*dp47LaIV&@t3 zR4b*isQ3F_4vU>;sU91RX;wrq*PEt%zU&R|9Z>uo8cv-JlN9UE0uK|(K8ONf$tc)s zij8O)tfU-S)lnAyrT7=+l-EaY&{oR-==0tFn=DW*7Kke6_K*HUV3Wj1U%yCNBP9Jb=b`__bkv0VzgjiWFs0YTf0^vX9KshY|7v2iE>Bu1AQ zBo)B+qo5=EXiQd~j{ct!r6nH^IypuNMkxnAezGQd#CBSNYGr1uOFj^UU&lr&=^oLr zt4Bvw88a_D!I!TEOXNF)3RL_?5QC$5moE(m10ola3%yaq48QpMoRFa(`yGy~l1m73 zTN^(L=+1TS0>R{Y&cyaC11RE$!_rUg_3Zi22~jm>HF|nejWh9ega_x4%`f`H&EpKx z+3sw{;f{$JZB_iuVaW^slodYbwL{1xg8A1}0NrdJ?Zk7jPpAE)4geklf-Q7_ zV5W`|3OD1P8bxShMo0B<(YMjruISKrGP04a454&i9Gu^+yv1**YXfQ?pM{C`aYL$` zXKVR(!ssU@qkTIOa~#xZL+3!mDo1c%Utjlu-GM6!DKnBff9H;}0T4vYymCb;_G^Vv zA)|60#!c2t8W}Z;&@N8K<*hKdcD|FW|)4FV(kzUpQBJQX_tLFJ`qY_Ss;bZ9EA0@K9ma#?5sz;8I= z`WZ&rsV!~fWZT}81`!RxI7SI+9-Q$;>~>$3?QE@;$?#>Zo2^N+64tpP#)$o*C23)6 z(XG4kPH2JeWb9b-W0P^tLD)-+&2$Ip`k5^(Uvna7bF_!OA(+E$f6s@DY9HEExmo?O z>-K>IZ}!=0Zc68H^l?co2nen;M`T-DSt(AYIhG_BogFS0VM7{*Y+QF+iOf5@#6WPo zi3r!b7CodL0k*A}-60#pLVo^iTxowTo|7mGtz&*nEK6p+gwr2&yfJ9dinJ3}$B%wo zDZmf)OcN2lKFz!eYi_txX?(*%$yU+xh`XSA8HQ^Km!c_m?43aBY#c3cs%mP;Oz;L^JjHXxUE5f zR#H;>iiduEMkAEA@l9i36d?dqg^0aB4>tVj63qpjF#lJkKT)0S=<{*ucfqggD$RbI zp)cJB$#`ty#k^is5_M6+DVo~c#Clo|eNI_QrGv3lS+^oK;~O26tO>4TMTIWHhyK5O zbk4OBLF@Q8t+4=@R)pwM6*c?|2SDQt+S>vt0D{pcQo)*`mnyMp-rS7crEoT+JRpeP zD*du?Tfs7d(o*=<^f*IlPalW1yh%eWB9=%uOMw+xovzR~822)?#DzISV`oUf(}b_{ zI33Zh;WvTWO}DKf{ZtyRSb(e+jkM!i{#cr?<-<*QZC_#On01nYo8B2}PPs!NL9?WB z!QpGH-{_^+KUqe~fD>^46?4vyP~*BJZ|$MJV2gE#kOq7oZj`47+LAAf>izN|EdWb> z-BtGC35o*zs5^zakPF-WF+veKO4!gn8j8!6sft}7V382arX=Slpmcy^XcIV4$Yz3D z<26wa=qJ31-Uf0G%GuNP%DbROKs>}Vf~#ET+!7B@^ynvh_ph;mw+fBZt{TDKiPk-Q>W$#? zJm#=Bhm!A)@e|*rzfb~j${>{q=75`rUPBV!e}dXB}!ClIfk8aI7yYQD7Rl;fxwd`Hl6}Tt%5(0tkcANuOKqoiQ}g6;mvr` zzQQ4t>Y7(?KMd}_FA5JT$P*xY?9TP2h-B@7qJ0sh{U-d!Bxv}Y?~Hnl0|<_b+zbP6 zZ`gBMKRUU%xVE%0!lD1XMJAzv1641s%G+=ztA%{c+(<*Zit;KxDOUkp91K7-#!{v@ zM$1oIdO;<=L$?|(V--5E409xf<>LcfRyuYiJ_o^=auB}xF^`NoGiD^X1gJC`Xlewpm>KnOvOi_<6g@-GB#4O1%2miq>n@UQ@ zurB-06I1zKsDxFG+d$TqdH3x(b(HaIPOQVR-+rbxjQBFL9gVy-`z}7_q<(R(*>h9s zCc&XI@{@*Hgg`N|s1hqYsSdt8D{k3oDChh#L)*zl2@S(5gD1 zB(m0pwjPBylew^OkqctXg^I#Ef_xj6t}T|!U=^`vXey0lOEvX<oSoY)ZwDaGDhTMw<81TJ>q3hWY6Tb z=oOGW%JaMu?^f3=yu#K?;D+41Tcn%t;lEH!DVL@;7JHgHAjsfgd+AtZclI)WGdVfx z>GXzj1Xai?0EZl#l20}e2Xj-d{`aS84_E$BN=^CiV>A)hPdZ-G(-QyfC@DdJUp)SJ zX=jq(~ON;vjBpL|^GSVZ-_3Vj8cew~Pm&^o5hfPBP zTrm1fg@(ILcS>&zh*Ao?qkJc^-MGEbc%sgjf2bzD;jqG?oDdv2nW#^kMX82xouk6y zh9s;X>w_E^P~fFwGeeM*1PiN!ZSPdySDd!Oz!Mo8&)g+-$Q2b0#VE!v*ojqmvpA>7 z3N`4{N+{MitQ=IlgvD$ZFGs|U4kc`lg%m35a6>u;GQm9BOvc>F#*USYZK~m_5Tp2} zTpwN|TT0ga2EJ-$tqcL%Or%=5ZNBXXzX(3N94rFH)=Y|On;d?6GQ%XSR!H&$ntlOk z`INE|a}-~WE_|NQ4hTZip+JfN5KJ=1fqD>cvrl*8-*niiDv}hZTSvE{$oA|ncgrW` zRxgiy6+8$rq=o2JIbJM=*IWDVwCCPeE!3)>kcQt>dAz|GT+6HTF(|rQcb&r-8S#cR zT#J9-cM0d<5N=)httI>5MB=SP;u_SQ0C(Nc<5~QzS8RePe>7TPv*0(Is`Hk(HN~Rt zr*k_;`x2jE7S>Fyj4}|k7iek1g&XS4UFuLkJ4r4f{lk2S?oNvw)?J9dYnh@w3W-qS zPUb0OTZ(8e2*ske#9b5sBq6-RQQ=wOzvBMN1h8 zs$(QLMdk-p#VzMoTjFSo1FCz=5E$9g#xtlF^fr7^8tU3oW?-{#XvSwPx|{mlbK=XR8T+rlj~P*2%^glmkq!8MK{?Q zSD}x?7S+XJU5U3Nju2-(7NMVsI2(kjkh4dB_p2_h>G0lsKDgKz57ybR?ub~J`iBZ=IUlf-yi*2=le>mWV?Pgr^Y<58Km1b{Rd_`@ku=pcy zai)>lBvGnK?@h8c&EPegIc9hsCrGJQMiVCYXhle%k z_tDY14F(yM?466Y^;Me7sU@Z#efAKM=?Yn~#FV++Hfm>%aaR>K9w&{JLUEBZv)MfO z$zDP1O)oH333eBV)oBy>ZZxj;Mr*L!{6+N5i3Epqt0wCDTgdo9%9L&IPLuh#qJeHT z460$9d+vSx6u64BgEI^yzQm8tKX?sDt@uX$x>?(;6*kuXY8yWNOATG9)e@;@Ay zCQOM?(xjb6l@E;O8Bw}{LlgS=#P$A6FQ0VDjO;GIq(|I}Z*+yUBlcUw zvsvd!FiEa0A+f+L$}0H^L03Z3%%sOrH`mU$A_;bH^??VhL9k$h#k?rTS`POoTl#y2LU=JAem%<8;o$OZTP@nv6uW_?Z5 zVOrZ};E|P&F%CL;vU79t91pfy-6ns3YTj290&B|Ns!^G^8Lp9zaXDimwp)B7ME0?I zSHI?~nYeHW^~KP1x@ITz+gj~Z2W~LHqBPj$#mz`Wr04qndGlD>^7+<_?NpA`(41KV zCa=lnqtAV9G$*(f@?(Ku)=MtvJY}FXj)G+NZsHx;Np12X@3uT-YRDfYH9ka^3M4}^ zoyUESh+c3-@UjwfwhPa!(S}LAWH@r|9U2C2r$>b4UxUDwkH3C6 z<`>us=tw4|=ft4(aEakjO^J~63KeH**K}x0{1Wr<&Y%3!Z|$PLoM)ejfBk>Z!37%9 z7e+*`C;5u;*gJeSr{8Iv#T(zAx~vS9f-vr)1TbpD;qN`@0Z<2u9>(~U8~hxZQ{{Cb z#$Wm)N@HgMf`0%k#yJsrcHXDL>T?tr4+M4~so=${6XT{&55*mB97nDB{as&y;O_`@ zMTMcqlenNzxqzp^LGt+r0zIhM?DuTLfq=lPCyI+$fEre@?3Jc5-PvczeWSm()p7f( zy#uG2^GIhvvZ{VDXcLV***Anrt(#sl#qq5~#l`!Z6$6d2Tqc#a@a@)*K?+}uEyUeu z6J6!Pe|yA@FbdC5L)Vxto5GQ2`c{sgov!k(g3re~k;3hR9e+>w7$@{|(7q$svV~78 z*=`^uv*}ur;=A7hz9m8MR#A}jjow1GFm`YjF%OMaDY-+nU7i0INFtHk6&EGza zf<5UASlj2@+pe}Q>4q{lC)rOGZ{JQT!k>x*GjWe|v%Hl)v(V50?fI2;d5!HNQ;3QP z?^4YH{37{{GZs?a>Zvqsd>ia^4*n|92AKHDRULhYN$2r9quJA4tW;F8WBBJ{eP%Xp zB0|eiLK}xJDyUVRd-pT%&y)^>s1aAV6`Z{>Cn_d0HR#&9W>7t|Y}xceI0k%>ERVN@ zuE=!(NS#q)yU!V3)kr{QBf{@4ZfF6ob&)a>DvxoAByf$+Tm=7R8(?15SH`Yx^qfk_ znr5T~5^Sj+Wk}Uw$!o@=O$rl<4Je{3ur#M?w$%`bnmYC%6jo;AvUvxi4F&OESs~QF ze8zjZCMRaOpf$ZDt^@nOFX!$iX?+5P3W6p6kuLbCFoEkU&D;#A(gg{?Yiaj|K`yhk zu4$jzY3|~+I|iON2o<4j3zH~9F%(8A*yVSPRMigLl4UP*Z5{`H6sw+B5ucII z_iFGR{^a)vvWu9JrQtb3PE?8&^WEgHaue;U6Hq(hg$9N7GLL*6>9)-En~T0Y^t6H< z_n%`~VtmNXijI!S=RmBO?O53(^u5mfpL`=vN58EdPg>*s9|qJ0R0qlLAGL);CG63A zl+j8L(*W5iS2R}m>HTtjxp{JPUcbGI9b0-Y1Eo?mE^&6WU;vj<1u`=qrN?W&n}9w=0HE7%zR$3V zk44sc-*@;F!rE4yZ1FW8Au&-HwnyfAAhzG2;o`Egdu)wj2LfzKDim7ln~80@8!cM; z@^*?&f*AIPvhiw_O37t(!|f}Zs%00;h+#${yE{O4O9y}%tEHx(Sl`;1yPO0*-kTrm zYKF~a=jl<-226~Q<|0$QB+pvHpz)6TQL@uurMdmX>yaN3o@VTAsxXoX-~ zxjH<5>oD`X9dA(GYW$nqAF&lj$3%s-z=>a1+JV%FyiDXaABYgeV7egb(j&|0PPH2| z)T)bz!Nx{Te}qP)fNGKuUym*--@MLD=RBE$YK(MCnT&K^<)b~>BO9&xfD)It|AdeO zlyEU7HJP{EPPTF!?zVU5jE)#Pi=aLf@{U7$^67h;B_MywEPJQ)vPigPwI#8z6>?dn z^-*^0hp@eidbKKY3cl%^2dyz2%cGQvisQMx8Y)Psqu12NqvF_MEFrnPOc52OoRwwk9fG+6ZaWj7v0wy9(Z z*UXo*nT>#r_Vob%`5?DO>0}rVKI1V(gWpT&MRodt*@}Ck%1SL|eTl0FxyR4p7F-y`%K-26b9jIE7;N3zWIZ_IQ=B?s&DmhSzZ5 zue+xy!1SYy`T)FPmhdg7#o^^us?i^>qpDRC-hx`WydSp{K_!$$Byl>ek?RtSN74)t0Rs+hiJe05^S>CGqOYG zD@cT)eCS)D35z!Sfr%E4AbHIOe1c!kiGVk)ZiUOWw2Uhfgzhe}P~F7yk&Zb>0@ag zL#RL+Rj*K=PCx;|=Wl@z))J)T6u?Nv?dX86uJrORaTLk#{pd@PTa%F60Y zF=4ZlOonH09+A>a2%JonwdQL7 zf%@Mx;UoE`{cD!{zI!eP4Y?gnPZl|c;TRpM*031qo*6o_-r{?R1Ni8NwJ$vv{FvvZ?qjHQm?=cm0mG8z~ z+K6zJ-Y!4@YkitlsLj(sYn}(?Gy=?iyt}rXWL_0i7;XIOR~X%uV#JSb_pfoIO zz&s5{F-vJ<|md1=K%S-~K3 zNKv^E@ew;!x%gk#xJU@mpcZiZIg^qbsY0F=U-vj7!Ai;gN*F_7HmOYGn|wzEN<4A^ z5FG4+aZ!85Rzrw#y+b&T0~6ngVk^W}2};7aaX;Z2G!YRXX-7nZI%nVcQ97O0bY1b@ zzE})1+YfL+>WWn@W=-2fP;XYV=tf?0=-G}hfTNI-S7048_?~vheZ+ zZvK=?={y)2!%01?q|$^^@yRhrV(ybdeAIa@uwiO_K2+qtTKH4Bk{R?2sQn7`U+vDv zn(U)t;>1bX_jFxF3nJ@v5l*M_-%rWc=w_(*?4?TE|8uZgKBE`|Scg-uW5Sy%!y zSo}YJ1cLQx+Ga-(lro=xWne?aa7#{lqH(IZOn{1~J zJv4{&r_TH+Db{RJP*0$-RwwU{F>WJ{r%^yWshoDa?D0P6B$vP#9$_m(Xh>n&TfmUn zOx_h{R>vepf9L*@H}`;u=MQr%5mR!$nbL*+Z_R?PJQbDr9tfTo^KprC-~xH_S7JPizj$BpZ z(|Snxg0lrHN(4@2q*4Z8pY_kra9CbJgtQ&aS&&2Q;t~D$iDk*nkxhz}r?Wv%FqBiJ z!Q#jF+ubUAQFo;u#ku~}n}XJjJrH-6;@-Xme)K?-25*0}OmpA$xgUkrWO4ZSF*O9) zm0ua94OwmNR>4ln#H(#xkN*S*XM)Xl8}|hZlXe>as?8cdtMIbg6==^Rm@~TD%8qW; z>nj;@iPH205o9gsaTQ+!TrY5Jv7jxw^Wp6_gbg)pAjSlI7z)8T)V*o0Azud1O9b%e z^l4a)Gn(KI0LL`8948ZIBE~_op@}NZSW_A?l|9;_HI9ryyn zJuhkcX01(6SzP2BZl*rA_s%y=<%{H<_*{W%wAo$DXoDUyqd>TisIhX4+E^M&^J~O#1^uQgSrs)v$9^en0?c-u{b|kHS^I z|Hqt56M9Un`l@8**#}%yO#KKbo2Zo2lnXpxS+=^dBOqjAiGPx8!))=A(Y0 zBjF|1l_;iBUi}iYw46pWoJ5No4?GPsuhm^ z7(~u+z3AG3y!c5vRZ~U#V865eo&rDw`Tzwwi6)oJm%``Q^$+1g`v2kF3+6@=0zq@3 z?E(MVe&)U#S=m@XA!ctG$c`klAUSKg4r#KEL{;Vd>keNXvWm&G2Ih3RcJBH|#6N0H z41Z6X2N{Higvz0OxAeocGjG# zQTetSkD9hKD_BP@dYhHaG2adZpRs7k$#Jq)QB5=|XwH#mBs83K1cF*&tmSIxj-^## z7)}iY!pa&yRjo!m>sU__tCt|_k}>02z3ObFtZLMzY^)RFx0AD5V?4QT?UbUT)~Q>d zKP2iL0If4uPHc45TifYWbJ}DZL?F-FOo9rH1=dMtoIh;T_B80CfGFgN;i&`ihU;ws zyaE#e6qCc=!fSgHqc=90UA3YB=bi7{9ZMm=YZs)0t))Kmd?CLJveDd?ob9Wu#PE*Ri={deP8-g8EC%&@6OqN435uQYPk; zvkACKrCUC4yhSnLB5Bd(@@e7g5yt#vyp8lrm*8@K`(W`0i_N4wx?7?{11MXej(_e1 z-J-N2dp*x(?!lbp)4d_q+locN_t*H`q))sukbDXe5rfoJD4E3I~U-_xI^ z3-L6(&EvvCLCe$oxBKF6bEn>sj?B@+(8UqwO-tonP<*BH=_kt+BP+hWTz(vnGQ1&5 zk1am|Y6!m|(%DAYRlEET(OQxJ3B8LR)J=%^_BJ7l% zn@Qg5ecl=8lmNN0K)=QJ`+{R`gkPY$R&67fM}U+h&OD1S2<$elunFN?uS*Wjz^-BwB8 z=vqf9ba=2RaH+e`Mj8)(40KU{MCw%yG6f_go2$o zi8T?ytO(QB)(2U{okWK77_7`NqpCS>1Hm?cB1=j{%E`_O+iZV+1}c_cVFd{Zx$VmJ znZ9DxlsD$%#fc)PNI_NGQlRuMHqBGz<5t%FqSw1uQ;>wpjgp>q+7&dBUtOMrT+6|< zCv9WQVqC3iQQBF-Z^Lz$nCgs&5&IXEFK4lFkE+$Xhe;Mti!p>q2{GC=L@Y@p_y|3bbM6t zd8yahzBFH8+N_ow(#50qb$xQ$cUXb=Jkpn{{r$1 zuoa|q)zoNb0baY`hHKAKgKE4co}LSx6V>x}J;*nN|3c}Y&yxO+AvpEu2oZdG+t*{P zx?`K`tv3G@tUOcZuw($4<9lIBJh+<0vENvAAofYeXex*0=wOD6ykO;?nviCx=~t zym04*X2lI9)g~@FBq!i07<@MXF__#`xpLG6Jb6|HKPb@`b=TnZ-D>-BTe1?q{|o$j zS=KT%Gxf7QhquHPcEoBF6K-4@e@bg)8EG5Am7a|r!?#8xfTn4!8<(XxyoQoo;Chu< zJ~aWxuta)gQv!LqM4be@Nf;HPVh~|wVP*gX@-LvJn)acGR^v`)fo7KUsm%T`2|Q!a zxQI(@wDiZ0Lb+oIv6%wF7uhQn`7%~COJ@!79O9O4{eRsGUw;pl<@IZ9lTXN}khGB~lC5(a@U@eKDW8Md+ygJO=nsma2gy8gq zHzTO?(cQ@?E^A%q>nXZ+0IOFEw@NcE%9&m}CQ4bZSOlns5eGdRb}zov zZvB7ArvN@l^YM8H#nZE8Njp0#C-5xe5fF6?u>IALnyA5e3OL>3uDe)tttsq@1;uCZ zL0w{P*>MFCgCR&4mQrO?bbR=HpaTq!^2m>IZvN-JKNoWSM<&aE^iB)Juv4nFY_K-N zs#koI)CKJ_xk}H`>GqvSe|xhVh1V~u>dNcMDsbSng$RZtKoO@-1;eBx(hSahpCpBu z_WFq4SD~%l1nwd>XrkID$R(SSWJqAem=x7%=^KtX*5R9M3wZ7dEHs zzFx|o6`cl(8sK{u@_|iFT_!KYW04`!T@S0JU9EYu_KCzfAwb?sg*AN(8lRkfB3f4# zeg=p*YXz#T?@%%fNR*hYhB#ner#jBArux%!I1q}df4~cU(!(~XV9D`HP55@m**JkF z@=h|Q$H$5PJ&I|T=+ z4VZfg9Mrp6GGz`r_u}cDt-i=`2cuT&)^Wn+aP(vr%lsw`xoM$2Wpb+lmO16N>%B{* z9C$zJ*JCCuC(AO8W3h@vjov*c3JygW<0{Zl1U1iI-9; z;23wqd4&_=O$g=hYOQc(%v+(r(up}UI*pZ*;9eCVs7AxCLio4JrX+Ln7$Qk%iLg88 z#R5m_w7rw??;=h5pNmcD1o4Rc9$u#PaA0bcI)5sCv3@@QFo3h?0KS-;@1H3UZf2MN z{kmg}V~D-Vc;Y*;5JfzdJ2+UP>YqGr<#Q*Rpp34dKu!aW1I{Vx(}KbK-(1 zJtWfi5cjb)L=vYDE>jvI!e5@j^2o%*h<4d_KsiHG)=ujW<-#?>a6b*s-(T7NBU%X? zuApvphQ?lCEOlE%IYywdw9V}W!}%<gk|M_zX;J!5p(dwMI3$4i5Huht_vtXR%wfMoJ9 zd%rZ*+aSod?OG}v9Q&+}PWT!_GG)VXL~)=DwL91f+jI+`t!~z7tB31ST#cJbvPkl@ z0okbc-p?KDCnVP|-etdO>Oi`W$uFfH6{JRr!}QNqQnzZZn_EM*paT4=}rh-l7HNKgYAA58oB3XQ=f8baZvB@G2hSDueM9RntFxZWd4bNi{wS zW%2J&kwyxk!#b2#j;~V%f)jO+2!LpEaBQ4?&{jLiM-ppftP~K^7AHQVP)FyN4u5jj zF85#bnB7&FBtY`4SabqvxiV!gryx~dTuXnJ?z5u(|7y>ZwyGoE{E9lGD5w7sl|`$S zwZCNj#6|93^Jt3`wfVfn{7=zS5b=G4lF&^g;|po6sc8SoO)HNahhWPm+X;<-%)j|V zMx)IGr$zk{*uSi4n{bD%FbjFO^07LznRc=gi~fZFTbb+EU&#+2ZHCX(x^C|2aitA_ zhbAqGUbT)=I=U)t-QILhrTP3}lEb&IP3{{6wW{(1##!%2%?ui_m9nmfaTgA3sDqSV zp7T%LN-khQTAfOwCGxa#VwoP(*$oFe1uqtrXFDoVjzY85$Mr0Ei*jyBH_6RmGG94m z3(NKvdI(k>Za%e8saE(i;paKIctrP8bwirMird!lqYwZH#*UTM1%g)QG%IJ-5Pzx{ z+qi^9bC81zeHTfAs*gNdB_tC{Y&cy9Qf)=o0r7byMH3t8GU!T=Bg5-6=*)py?%B+0 zrOosCU}hsMj&wv=(?&tHs=1nYN~m;3YKBag_b;FMvnnE78)uhH-qKYOiEl9_GsQMB zE7H3=4c~S|?v%bSXUB2QL8}?i?Y84jA{#LGOX|N(PtJ0uc<2gejfPeOvZ6I(=oTrs z3#Lx34wdP<p7WeWMw#$E#yx(N zmes?rfxfRqx|W@O&Z33hGaGbyDz4V`^&uiW@E6uY_2yi=m*$m?TP^Ik&V`RVSH^hKm@Gz;P$Yl$8K zXdMS_eB*=gtN(D>b^pk*%L>*eU}df57)h{x=VwAP<(;BExSZ&56aNo0OVpcJF`%?4 zIl&Rm78x|=*)AC~Wbh!eCk8Im@&5tE4nb5n=k%v-c6D?R_m7Wt=4$$B57O-`&-&Uc z)#Mo!YVHE?CXplN=6daIfpzA}21;pXuRUkhni`e;K8}I{&2}v{I#L2{AOpkjO<1@E zr$baBz7(jPQAGiHwdCX`&=V}O`dZ2eKyWo1zXCt4h*zxd@{{v_m-Wuw3QBRjno@I5 zjl_Z>eeO|)BBYiSHWCyCy6h9=wG$v+)K7`5VW&wndC?{{Uj`XaMC)#!ORYw7Wl$W~ z?W^0BSX7o4l5#u^#u^>M;t3gK+4o2=83eH zi8Ft9_ctao=4kJbUuk!-F+vTU_p&6Om#ILf^H72k9vdsb@>&bFcGeJ2*J;-u{aP6m z?2J?Cl%*NRDxFUo^5Q|}1V_bQA_$yHsq9}A4tJNOly*mo5s$?irL|eLQyaajnXb+n zlOSDV zOLjG*%2r$WJDbI)4*-P$0|$pKq2~I>C2q7T5v`nVVGe`jkPW&kt!4bD^lxZO z|CX%O%{CX+Co&(YhR+u7$1md)7W988RMepUx>Cn~()x{;-E-Y>}X$Tilrq){wOn?yL< z=uxN}8p)q~2jh5Uo(@hMxuHqB8>O2XF{9DS#D-Nm{aEzU3F(W~ zf1aLc?smiWD~KA{TvN-@hLRus9_L0f@{#U~y?+;{YRW~c0Toy$;L`s-*)u5)#m);* z9L!tSueYd~a=u?CHgna>_%Y*SFf#Lk(H9NKjf)yY8K|o04J$#`#72U!FF5l{D&KJJ0*;w(>qh z3hB2u;+DkAKXyy7Hfd5h56RN09@tAib}*(<=ZG`HI*^7gTeC0}VtyMg$KW*b{w!W*^pN zD3Hd&Plu37MJosS zjr}hOJql-7$L}*hhaM;^Eg1h1VW92gm_l{nxKpu-YAy@d{-h#?^5Sa_B%EHd zdvD5``d7Q#XX^;__eiIJ=4Z%GC!yn!5=ZocKxFxKNOszXSl(Jum=W&}mWr<%^hAIx z=km zc^{4lF%F$%r?#d(K z%~4o{@?KfB_Jwkk%-}w@0QfN38sy7=n@LAd z#ul3auqMZ?AiP2*{SG1F$f^ySNzOr!IxCfEnTQZ z6dc-1b^JgEA^iA23>gfca$Ui3Lh}(us%sj#UE7>Dk-m$+6n9tdF^jm-bc0=^bL7Px ztLTerr5gg_rb6GKPE1TGt~YGdU<%yuV~-SpiexwYx(JhA+#Ay)Sk_K+|JlTP`yoAY z5CGSba9pYi1sj4wjAkr^uyird^npmNE%6*;yFd^k+6%yh<}Z(aHIDP%Mlzkm%fWqD z!Ahycwd}y_gU{=znSlbS7jfS+c#v5Fl#MXaNeJP07ZU1@Z>!z198*NRjAh}b?3IEE zQ<9pfJ6PL8YGxGSs59avz8h4@VaT zGbS@rEwVlC&S9mn?iZuSxl+}2@dj(fkpf+M!#&lC`lYX48(FT^U5N$VPF^k>lanhR zo|NC_5tP~40K;c9BjVlTypa1{;f+_s@fv;Td8Z|U=!p6BaJ(M$8VBo5%MyNucED>S z$MOvwR&c$nKV_i#s&L+~f@qG#pue5z3+(({Y#O94YGpjXLK+S^74z&mT*fo7p5qw_ zp3?cdY3JWM2gt>varA@+Drxjv4FA-&)X)jzkye0R5U2{~a#UeklcjWh6nlKPZfitG zcG)x$P4j{fOj94km{hEg>9~n==c;MPJ^c{$&dV;js5UPqbJDW>fnn7UkPre9C{s$IkJ%-bmI_;s`k|2A8 zg{)>kEw9u6fOUcXy{ngS)%8 z#fueb;lH_0c|S8bXYaMwTA!JT4~&{)cyj=Dj2AmPLc=@q2hJVicFpYD|76-R`PS2A zP1)QXmHNZe4^JccW%gm|RohVRdq;XEB7THgsp?KWx{xWFkq*X$H4tk;#$=&r0JJs3 z@8#Np8ku3?c~Wq<19}dLZg7oLlZiVcjelqZSC}sLH~F6cOlX;n%rt7)+A$pjl@^TZ z+X@j=vy9YOpJ%IYqvkwB-#5Vq`cH1Sstfi42}2no9ffB~{T?9PG<&$)-))l+l?+;1 zWhBYVx>810p|q;q+4QLS+t@F4r1?Gd?oc#-2$Nx`DjWdbmRH zex3drD_v!7^<_3aEDIPP9AB{3&O0kJAJtq~&hNier}Cc79CcAI7rY2{&jiNWWOcRb z_x{vT>6@>p-?&|MwuS5SAWe>v>X{v>C~HU338?4>t<`qEO1$sIyOzs9Opig?>PTfb2Mf)(|>e%!JSeaC*6YOfj8aW zsNH&lb@(4~WdscBZ9F7bQdXTI`ieQ}QVrq0zHG~GCMPyTtiVO`z6A6<&{W>eLgx*B zC(nku1_a<?r4-0umFe zl-lIb>{4DtgsVRZ8UqLJ0v=!p$9v9a6qCLKEJU{GtlVPJ;N(MmAmxFbeWErhA?qKk zlElJO871bvEOgn_zf9fbFe^NNGPG=ctnUi1iYzx^W+7Dd8y(aP2sx{9lyDV`_IWv5 zG?o)BUv(4oTgA+W@jq{e`y&a(;*nG!<*Y0^iB*K+`($Ez1+iWcDVfI3&7~GOSb;Oy zZ;{iO<>a0Z3g@DUVgc;9NqbBci(ts-&m5=-S36yUGe^WOZZ3+Z7A$!^PiP!esni@U zZJNJDcQ~W&nNYYUp&UBaVE!vh@MnbM`#uZ@o0rU@8I=uzuQN?jGC!5yX~;Py=&gQm zZrVg(Vnv00?D*;qWumC8nbn)szQoh`V|a87nRD# z%=;(8R>FQTx0|t!br;Zm;r0tmT6&0=S(rq+p*e(*C12cB0bb)!?@wu^0` zxjf+$kmyK2WoPSZ$f-?LEM{S|Z!H^#V|X2Lai8(&Vb2l#nJS?@+B7tsNs7XKaPU+Y zmiGQ<-f<77wft|d#hLo9ZIOMTYN*sB4+u!`0xL4LC%-0~@#wt9#8Kw_pY`jY|ep>jZx|EFj?LXeYD^ITYzjN-$KR%y>@@1Rz}I1R}{^R;cjsggDN_lEW7zUR1-eE&e`Fp zzP;?!WyQJKTEp(ByfL9xyP)rA&xbJ5N5)M}jxy9#uMRr$j>MPK1`Fxs^xH_(SGUUn{c<0oU^%F+xS))<$BnVe@SCu}Ksw#x1JplHCk*LxAbC-rm<$@9z0lKa6G z&?>X%JhzF^nB`k1Qks)Mvr`YglFq=F51RjFS)Os0nT4dS9uj4o^MSgEd3DDa!}Mc) zT;|$ebw+n{8)mqFBQl*)EssoaaSYmjZTgBAtk_1sNNQ!i2l%`SB?%?vWOQ}9kp4Cs z1QToi4iOzW(_}F$e4;JOh>jt+zNBp)==wvbrxl^VVDZg)&x}0cd@yme9mH8o{A2HB zVPfu&!(SXGueDGLxnvh;D#0^{dFmqqyjeiOlw#O&CDA_xLiE$bkGimNC-x!QHo-V3 zKN=n+a!|0!7VJ!0iS;iap^-Oy808L0bhFHK*E>3Ri(rfq-e0>m=PMKlKkA+A@?tzM zLCi5^3fJQgPKe+2eXBd5?TMRDfCqP|7#PMes%G{jyr~T!SV(6k`l5gO{3u}{BBleB zXqQZ8kQdoQ)Tky770o#*Rnzy7LW(o%OO)y*T|*h7s`)>OIvJSjeCldy(}`T+q}D1y zUHHjssBP220eTd0Kr1_YGlnLa3acTTQMn&&+MORXH~ENE=MtoTVkYS=$RHUniW&pA zjhwCO(Hxipk1P&GYoWSMxO&EmFsE@W99l4RRvcls^>rvJt{h#^Hml*{(tqro#$V2% zSWwWIjve}!`BfsARkSAGBGr_oA>9YLD8m?je6%Uy}c@?5pkh&NUET51hc6oIf__A_yYrbd=dM9>Lc zq9Z1-GUZW*;lG--?~ZrIB0MV2I(IH*UFl7ArO(C_das}R&4@0X!vjF`k385m97Izr zWchJ}vIi1M2cy^bMza>*I@5}Zt$)*m3LwA?S5gWDl2`C&u3j%?SayUyYwLorP&o&!OP?8l6R*C)BUdY+Rs@ojOw@zG>QBr;@ zQMKORWd4Y<;su9SV{5%LG+MuKj-Ruo6foH9IQ+MrCyvY6%udggrj6Xp`a|mY6ESDCdkGHh_jZ%p8*UW>_CmF8)V9TEo!odKnz-Mtm87sqPk|zxfr2|@jTZq! zV~{YJs($fMWY~H8A|EOeDP-iWUamf#Sgt0$KC67pgh_!3)XrVgD3c}xLyNj2hrtj+ zYDXk<Vj%` zZYGs^8*KK7Hjp3wi#w{qUWwF90xYu{xvJru1_7kd^|wh*(%}@mYE5zS=G;{jmLB$$ zLnH7~SYx8@XtYI4hyoC-#3&V_C||d*la0I?Q=nudV$6=fnN(BHm7FJJ^fJ0A%|}f~=7-0cyp$@~#-Jmld?de5!|<$J7g|bxoaz^xc9+o;$|> z5nGCFTC`D{FT0xsrZ_^G!B7#&>Tjr@L)5zW%khkN%8ZFyr8h(OtQm_jMTLM04iX$* zf32lRA2cDYlOv=^Hp^yFek+G1sB58Fh+O}sq{ouViol_O>#8;J5IR%4MkX$m17xXm zqx9=_F+$_E{QL&tbkKR$N1kTrmxgmPdtXz zNeX0H5V6Sh<71xMYkYH@h4-{A>xQrlFk}Vi!bwZD4o5RKoRL)-Xzvy|H{41+7Yl}3 zN~}P>rbMDkxzX2dj9I$1uI&6pnG!p;#u;pU=_?A|mb&IHjVY5slm{|OUo+z?t7WvE z%C<=J31r2Vt6M%=sEz@X22f)!=#Xbxy@eYA8<08%DmYP@M)qg5CXaBw?+>paR!$m^ zvisSNzHk%0{|29&Y~M7?O@lCAwvpvh-d@w*$Aemch=?21ZU5)d>`=&}h?)m0&H1@X)e5N;;R0CuQb(;xQ;d*0HV5Z1m6(8Y#t3?=b8sZoley_D=sEe?yh?irJ8VOnTUmg@Oi4JC_TnghfEA zuIn()=vI7W{zQct8M3-QTCwr;k~8GmB{^_=TVBzX^N; zRdV~c$e1qfQ@OPRmTK#E}X87!dsSJ=A7#wuK$%0nM zqFI!7bMjsJeHYR{KmU^h5y9jtVeYj>R0QgHlf_vZu*G(ygk!tsX;kPRmi5WPkQ~H& z*{TN|WQqqzWbt0g)&4rK^6!|-G+eEDjZ(?^L-R+}ZFk`XC+ZlYYTstR(1>UXZyNKs z>Hv2Mk z;XR|Wacw`<9lh$-b%ZOt`PdH|sE}tde6mX;S)mRKT|*zw9PE;-T35D~cd2XA`;pqr zk|Axt(j2TblPrdG1h#cb_$F6#YU7|{ewtjcwE!WH%OUL6MD zW0G-eEhtxXe&;I;w*U>XR4zHC#vSB82FJniAp=fy=QWB_#4*OI@!WUf>ud_CS5Qi znJjzcI055xe2)1g;&a``Lpk0S*}*_acyty)CO0T`DOjTvj5*0@g@=K;2>{{)rEC&m zm*ylGyqpMn|1`&kHmxUxn$I2EGgOV{#xM27?QsSQY6c_IHHy_bW!gRZ_N)W?J@!3L z)33gCGQ-=fP;*9NUpZICUHKwH;_>)LODtE=I76jEZ>fNadB<0jj=on&^@{};7^(Yp z*k;Ge;}pX{ZmRRxVn@d-O<10^7?^0zyfl0VG*}*qvus^5+uSlt|In*LQH!c6MpG z*~s8xLl;53eEWBb!qILT^(f8<@ow-m$d$i*_B5q7)EXcHGwyziC>XwomZeRYEGe$d z-l5CeG`#-p_yiuDC`8osP~C_9gp|A~oe~$*0_yu*veCdUDwD(^vVZDY4qRd4OcslKcnPuTsMAY=Z(F>)96hhvRu>SesK>|-X?!N17LF(?D7 zL6ZS18BbN}EKn%=IkF?<#r>a!p%huDr$Z5@Axg`(kfKEA1URB8Mq>{?v=w0B82*QT zKz)l?B-?t1;REF`(K6yYcu-XCf{Ohd!k_fU#QZ@?s@#dPlBROIE^Ogpp;RMgQPPmnExvZf3I zt6}0@u4U3RXPJ;q&%q9KND2eP@x3q~J;<`1allYkQ?BEJPU$PGWDN3Z2b0j8tYqVL z!q=D@v`KUm)L{njkYW~UNMAvF!TNVO9oLxXIrKRpETk740cLtA+3_1v(pTh3M+C6F zk>4Pi&N|Pxnj3RViVdn*RKoMfRV~yq8U~<=oJ*sMWSCINu#?Wh*PkEho*n{-eplZ$ z9EXX}#Um~<%in^F>5lVi+P}q<=6HTcnKsQyB0wEM zIqDKlSj1FF^@#{Cm|!n{tduC|2l6F^pj=fNq>sacCV$~*!iWclisZ>fAV$=9FkLKg z57yBq@Urq_-7iEXXswy29>u>WO(>LHMRswhTrQxMW5x02v}&OKmmk1)XkKU2WbY|H z66!&cz)%b(fd0oO5i|lJxIx6@rPrLg07+pMu8CE8F#g+jyGwL$)Z>1gM`S{deF0YPs*L&PU1$M_2&>z^ydqk4P}!yH9kJ20R35qV&UkvJVi-G z_0+bQ@5c~CJX)+-RJFff=b9QJEH;WPiA0tg)M~FSFZj*TfBI|Qq0Yg|(#FG2g+>GA z2CD6!Mxy-9QyU82TFl=GrjIPf_1^8~1Q_2fpNKIDMYwZ<7?PMdOnL&xQN=Jwt zaBIKrN>86x?^%@~+s_2XR@M@OZMfh#8(v}Q6iAX)E$kq8Q0s3@Ft)-1QfkF|J3cd+cucf^!?PiW)b@Hm(#4-5^pN3SS9-{3pIeBDbcG3|_IO>Wn7RZ}@uQ3Y&D0+NQKKeX z;}1H-VbXtob*qymD)Nv=V}+74sR3NHD)E7x0}j}WeItWCnDrrgni(66iG?pmh*)z> z{eH~g@b}4ql{FMhrRJo5)dgsQW_bCPkxPIi26tPI`uh&UwL113WXHsa=hm(ww+EJeTGdJyPRn#`wQ+ z5$|f^8m^zFN0IwrXcZWg+MfnQ)amI#*wV70TKdXsX7j*08z@xO3_5A4IYGfk)~2OE z0o?DQOJ3xzbS(<^Iy<0METLLKJ{=3=)uB2lIw%JqzqYI|GpxqCP1RRA#^d1LQ|>ag<$$H zefR|^GT{CU(3ORymJvB_`{6071oglVE81NY7 zeLcr}XNhhQ2>gHGLov)NDHxgVa2O>=+6esXcH7^$>hP6OP^FWkjP4g0Y(?;e@#Krx zlRF;^@lE!J5Z&xId#;FQ_ghLFPWhsWFdoA&-LLXmNk-O_G#v|>G$xlj7vW))XM?dt zHAHf^U$ddegC>4E4}8T8|ATUN)qZUg&QPHfIVK`{!=Z25T$g6``GC9kKL&tgjz01q ze+0ccFrrq_$_Svdy>wdgg9^23b~MV1!BF})(5Nc2x#Rq{HMrK*!~8jf6f*+&dHXOeBvfjKZf{@FnwbRNWg+$j z)jpr_CH&Xw_u`n3U2gu@8r=6gHFO!bqf`SpEX~!`s4cVfZHn_70SP;9ZGx;Rt**DX zT`&B*WW%^WM6(g2zVphzcBQ*cv%1}r3j>Ty%axC?WeIUqEE#QMn%5R}<@NF1z|dGz z0vdcVmNL8U?&0*fx1_v$N6#&{+{mXGyo=Cx@M@I`s+-4HsAfJ`*lc)+zoO>;eB-n) zWbZCcCR`V4s9E0)Ll1buPiel_Gr#mAfEnuiQrqP@@P(#E@vX{4(1--ETk zY>W9^f16p@=}R|nE7iPY+(bnJmVtCC>{UhnO~--SaF+=}w$!ol&E4L6 zT@#y$%OQL>4U2-o(3-X=EyAu2ae4vg%9?nG(%#rW#VWi5oN0Z212Cjt`Wv?F%oyB@ z(QO8gUK$C8me|~u6xLoKBw7mZJRay+?*_ABJZ1bekbP#@w++?E*Yv3DgJ&9toU7v;I#RFyEn#HOO!ei?g zo7AOYmCPZ2W%ELLmbAT?Dfoj=0Dgh@zaPK)4*0DMRQ%bR$+q8H=9OwFXLdf>PS&H7 zIr%Hln%P50k2N3+T#?95&*%(|PNnbz}% zG=szM1ozH12R`=R%2L}VLU500RR(WaM5;Ba?*VXbz~?2ovmNVGbQhXz((jw&Z8qi- zX@?-u@#XU@UlfQ%eHFJxDKU{>{*Y-I&2F5L#ybXqWoxS`AJLiy8ab0 zzmE4`yub6le*F;fYl%EHQ{qHY#=I4Q-9v&UFDX5T7D|34^GHIkDwg=%^t6A2pzfD> zBFp>ET&EqPyJXV_EOVN<7^yzMSyH&T?i!S7x_ACSBk?IQE7tV;F4hraPfN1wTX~y+ z?5Knyx3Pvl^bw+I2XybLr>hxq+UUW>W0al_?}u_vC2m!1qt5o#UyAGmw5TZ0F2Ine zp?*P0v~?2$iI;kK5hzfIPa#$j(Y%hGPW#VJ1=Lbf7~Ff3n0TupH-{A@QtZwBriyVN zA29p*q5%QYe1ExP-Vk&aTuBwBbHs+ra{``Hxz5k06`!y#IWz$Uw zgw>eK*V!bL*}|fDePqseVcgMGir8vQI7oIdBuwBfGo5Yl!K+=$+k`|vJTC+yV?YR< z1yM{#1`qpiY7Z79b68hPCKW;SpUv3f)aL`c4Kk!AMs7Leu^z)JI6g1hHNBADoa!IG z8AsJs>)qx)h_tDV|M0NJ{HkeC9oU5Jr+)1wQ&Wst#o>}tg#wu~J0*7u0ivr=7f3hh zf*((3bz}B4f&aQsdIKIk|C(=~mfU(gBF^BUDkJ}x>I8otvf$6-)2t<=*Eiwjs%QJY ze%63g+gqFr54=sFDa0F3IZBAme_NCgFC_oLIZU!oPV$22GQ4YZj;IV9^4jej<${C| z*KU_;CiHJa*#w&ws^Mc0N)y)BHi-EL{2&EG+2t|h*wGr4Ix+MC>(HB#(BSb$#2zX( z|0Wux{X)EIh6cwiHZoLv7jk=Ea7?RBK$pu-nlcvUFMl~LRFqd1HtbRaI8>B4G?9W+ z)*mm@W!#a81eYK6xI}MecYofKkVv&+wgrX&996ZFAz&SCj;o#m=iQmly#?D}`!1$n4QY?TX5D@mzY$N_-}WL7403`y3)9G+Z0-ogNY-^$=(F1QFWh3}A;DpuoU z5erKLgI^&W4MO2B^a-S+Wy;AeZdOy7-Nz{m%CSTywDS1(lBlz>&UW>xy>;(X#@qr& z&$)n;P_j1XXl{8U-mQ?M#b@@3KR^Q=100r33iH{VOzpdnaZos8tpx&|3`53Y{ZzDf z#<(C_Wrh%k#uQaNHL`G~$BJ2PJ152lqM-` z?>KsEhIAnWd{(aiL<;owwK`A{ve{tD7KeBW%Hf$_@CIrCRZMEQ?O<>khLTVvN<*e( zh%1?{>}U{4w}pc_6=aLMUY6TJCU^{B&K?IcFj>MOpQvNgJ+h<@Bf%1MVzSU>C1>J| zrD0&#oh0+rp*zqO8OtKTa@J$hD;7478)V{Fltr1oNhmQ1eIqg|O&OJ^fuA@&4hy7F z5^9O2Ym-eXQM?Tza|uBmL0B?)e{rcO=Wp;#xpAL(eqwf;lXUF7QJBnj83#8O8M?xi zLr19`LgE+`Xa=$DBV3XWme|}9$Xz=yec}UM+shqR@}t+^8IL@@aW@yjUW0QFs@q#V zU?LR3P~Ej9e@l}gZCdWuxH1#Cr#aV{%{HGthk}3wL`4LL%o9w7l*Kiu;dbIMt!uaA zBgK%)6e4m7k+tTEaN{ra3qIOF262SC3NEW!JCcpZ62 z&~tNy`Iy+!V^|fi_&9RBCKWTA8;pCsu0pSyGZW{suWOJ}Gk7`L*95dvs5c`b>1%lG zIt5Qsokg6P-P7?R1vNTnpp)5%>3O8?7xYH#anyy>eG zr>2gT396K2qj-Z;LM_iEf*(!D+mYnad=QjqfU(b3jP{G(tsQr9Tx>b<6`zZPcqN=C zyx!oc*fO+f#O#>ph-U$|1o~Yk4NR*PojZN!NBxN{M^me**kV(VBEzC-GE>VkGAadkAyv2!Ot zF1}XAL;JN`z~EDATGe(k(cT?gR|+i&1jpbZNs*M?f!Vz64u);2Cl_Yr-5&u6BV73= zcg-z-L0HB(F)ts_M~M+8YaPP}L#ZfyTs)~`BH>Lmk8NqHc$xN?aM7pZ$Oh_3D#%<8 zHAxT#Kch|D@IYvifEpkue=bQoK%vqEW_M*TR;8?zoT9GvrS67i>vfq4_%Gg<8MmQU zx-VYA%mi6?8ec6(qNy3)m+<&%FXfcMhpO;ffwR7g>@Ya}dxa=(YOno;PvHWmkQmjP zV;dwWp68tS)VYRHX$E>BJQ%`x)*2xA>>8=xqNk?M{M3GRu=PnjQltD^@9VtgD`*uu z1`C~@x;+W2p?piqh6=LgT4)YzadbKpSkgEAc|4r3^JBKTYy7iEXrk0h8YZ@r#({Ej z7JN+DUtfB69e}_ELr>RNpW)XJZ=H<#i;hsfMl*rl9GGVyA<1``*kTw#mp=%HSMuVM ze|s$_i`r}P0hQlx2Sbx4*rOj_QxG24l!SuEr)qL^k`ipxLG$GKoqqO^szN33*v{Gj z<8P%zL!S|4_jdl*h;C@H!b)fk7e<8^pFqYJgCg6%Motf_*tu#!@Xd zKB-JoBi5&#$@>J1(?{%ASp58CyXt(}e{43792#ySSCT~>BfRQ!%<3JdZCWihx(zpH z&Ww#-w2te0Q3&(EIL8uos2LbYD$6hI6yZ^9DsCefNDn9y>L07lxvfulyWlfO85d`S z#66EbH=_iVFahM__84$rFeWfm|1RqERje8DjwG{{*a!6f$d$E4G(_D^V*_S_cOd1GN zlQ?0Vi^Kyn^meEk?wLg--b@1KIRNcjAz%f7*odYpRbA;daodx*dD`pGcTq;Im(0X) z-~N-G1{j7~AA_t5943Idn#1=+?eh!(T~uVcM)y>P;14aO$4hJPFLrlvf12G7QYPpR zpBoG~JN{@kuP2ua3b4jlG-t-@#Uhpz_}Tf(=k*j7ShYDzt?J^m1+?w-;}iufDq3*MxYzHkd6XDm3@O)N%cr3h`VaJy2H zTumy-u{cEcP{lkhg%SvLWSyIvgjq^&8B=1*!jqx`U4WQuT&y^mq0+@m2z)Yjv_!JX zXebjqT&@96vg=C_syGUUQK%k@5l~PgY6x`Qme!YyD;!L$D)WYLwFbNx`JMhSNUv!t zaVJC9KF17OCRudAmoH!J;b$u#1xs`>d1^l1IzD)TMD1rLS5uk8cuP~F|B|5tLru_8 zn@6X=*M{iZ_LM+FyGcq!9kGm)7SX4%J!*$c2$`g+nQUX4qzd~yfCPg`*i3!1k7_s~ z1e20IS79fG1pQDYC!8FdUM>0eE^}Hi?p>r?L@L@WbDhG(Hu9o1`Q@5{~=5knz z9lSN}`P1jIQ@vF!SZhyCRRgbaTlSdSYD=r^H0WTW`MX6S>RW&a^@Oj|Z{m~aN3v-y z)w9`}1+un5%rCEgI6m5zkKmPJRFnK6weZGub!jajzzCy>E}>U(bAK_8YURu3O&xjD zlm5u#@ZxwkcCnbA7kPC4t__>d5`8yL*QV;8Qo%q2ts#o=85`wwEB@(@F6!v?IsD`8 z*MMG5))9PqG3ryqQoxTYT53y3qbQN`kaCDUd;M?|wsyzC1pY#Ar_%h3uqK-c`h} zii}Vc3Pu_Oah%SYFJ3|7)A_PoK`2k#I-9GL&S-jQg3)(dketos-SXgmxbBd&BPYcj z7ape{*xeXmxV7oB0+3gBGgZZ&)Wl4)Gll*}MGLercwiV)YzAzW!>E{5u}od?(o-tA z!Jtl<$f()1>1w~&0qs~d2l9nE zlpWkuM;ceU*|p2_eD-JLGY6XaQYf(NuK}CJDaspz$i3fkVts#REFLoUWKl6J2nuVD z>J05PJ}BF)^I1-Qk{FxC9l{-+;AqF+&fB|>_r28oc6OFnB3l9JwW$k@wyWo<_g!D8 z!IMLMPuu3KOzOTpN6ii$NTms99{WPGC*?R)J&CvaZ;1$;HMAAK`!l*dz2Wu!XMQlf zP7zo-E`BxJswndNx(6z~+e8=O^2N-y2n23A#Pk0%`$nqUC&TUcVep-4i_oPTkJ{X8 zEN9oXgb=2sokOIav@2PvQ(-w?#m9745{r029m%X@PU3yvLS>ovCtuylqN4&!59v7B z6Pzu7nXpAdg-E)~ocp4oh=Is5GIzx{gy4GOj#g5BVv#56Q{Te1wsGooOX5&ot{gcG z`|lrn|A5A(aqM&~!4Uo;f9$ul(`aKlj9VZo8)=+r3-75iTiN*WeDg0q86#u~a$xJN zt27vTZ=9Hr#NtYmJjb1j=AZ)>rC;~TUJ5uO?@5&t@B3E_U5!4%5i{7>tZ+gsBA!k| z%_JZm%mT0qFD&2Dh~PBMX_C`O&#`at>TO=F2|MR{ZH%_1BoK4qN1r$ibC&z~Q9p_f zS8Z{*nAI-ZPH=vL-NfRZG&+^y8{FbmkM+r~w15XmD^+J*@ z3ulWY6WR;cJOTUp<>sDIn)lJ6WVL7ZnGmj#X3IA1p+I{9@ziGE@h;y!rP?Lc#WB^! z;?Z=`LbSI9rCPq3ziB$=rd)xsAD;jS@JsCN?d`QkIvG*}@k6(S1^)0|U4x!0B!ryo z0=K@-OZfS?PsBsx&h+bT(sykgA@R&`gIcGd0mh&=t?bF9o=ud0JHu?@j^~bAC!xw(t*7 z{3Y?H!97d9PThr(z9Q+W%umCk1i}u|{dwhS7Rl?~CSduf8$dq#xSsT|haKDYUzGPffZPGh|DzjqiK#AZE5EFkW-V6yDb%?=qq6w!qc zJn9|Z*{+kMYz;=VlkdD&Diqf6H@;jtO`V$9Z&&7p;quMQnjY>l+A5a{D4O@9Tcvh74x2BpL7-3NMcFUb%*DW?xCvHxgPsr7=Th1x&aR`1j820 z^IleR!vhI1t6;1^1so{i3-9oQ6kiaGe}ASOPRP8S-bew-d=-s(rSj^xp-rG`73M2^ zBtze79pcodj*W$w6b`OWjh(o_W8dlvd!|EiNd;%DoN>+Fbu%oPaTteeDw^24-Jo`f z^%N9T(;aFPr>(j}-eaNZe7IdF+LtX!pA51*2a3t$t9p%XRq&gHc|udX*#r?newZ;E zE*>g4#0;V>PerV#yw$ow;nVAa|L0hwb->;EkP9wR(+4V_!!gdcEv*1liT0F4IGl^^ zK=X^q?`gVLDW}Z|Hfs1iStJTR@DEcwZE7s~Gtn{zpt@g8GkX>{$`AR>xEcKF?WPy^ z`h(8p=C$@>>(Y|&tvu~(S-PxHP{;wr0&5M;Z~N5~U!0lH3$i<@`4b^xi7s#FmQ_+s z5WoVX46gJ^$yEMxdiG>h<&SaoxvW#_d1j}vt_Uuy z-yD7BYwI?IOhW2;kffu#9lR88%0Vo$VxRL|3ml=F28+YXNmKw8bp z*xR{kb+c{5tg_qfNQ`rhIBA+MEu+t0kGc>d+s^$JhO|>IcU%L=_C$46on+A@ zAL(=TB+BJXsWVcu5{=oQP^ld(Yp!((_ur_AJB8h)h(5%~D1r4)I7c~!>G)BY7X!}= z1+pahh)F~76GV0q)#(L&0=25oK&CCRUvO7tjS5fHhJ0PAr?6y0iFB!5aU*P?nSG?O zIRoDp(!q7UK*bsOgpo;R-(Dv?a|f>7z`@zFy>m~TDS2nVlAE|!VN2+9tkKabiT&>b z-=of*nRDBcBQ-GHDUY6Dy7%vy@ps}Zq&j3kGbu_v1hIkjB&inksfew#lAIB1ioVA1 z&^kgoerKan^4$ZdfS?P~ofl}%1m3E4*61v(Eg>Ui5|X9C7^|n!b>m|^;C^7PXZ0vu z+Dr@TeVR}20>jVs%ehR&J6!S){8N8QFjb!xSerNotz&R6=riaB)!pPGbRs{9E91A3 zOs_fxBXGS*z3Ntei9BFo0eC6i@CT6)N;fpz*nIWB@3XCKT_PoSO|KJn)FGFz!K&7; zE+Z$?t~TxUyGQcZPm|yFR&z0`Yw-`nrf?1<&!>w0_p~}yz8`N(^ zK{&E6*=jJ<@=04d7Pl0N=R})kC?dxMB7RsxyxZ{q_CfZ3_~HulLWnNX-&|eNfAD?2 zbkP*h1y??CnCjSAh{Iu1Fm+>VQ=?mDqE#C?8eMO1Fy0iW|3dBm^55Liqx>gK^^k|W zyd7jb@yR(Tntg!)EL~9@6^Bz3Z04_4sZ3p4snsi8bjY#9n^56H z5H>Ds@E4Y6Tgq5Lt4eJv`R7{0B2&v1STh$LSmL0YOepD+EIC#As{k^IDK$1Rd(&u} zyxBYRHXZxp(1y$Va~igbK#$L1A-fZvE$N3>Ir9%TqPbMVJ7_O9-Z(8PGCfVejd)&W z3H}S%QGOkR6}@R!r`#H0BG2&TCG^;s`8W`DnD^1MR3G0e*V>exil>yd zW6KXRD2<8^<4!dmNW6`WP-a}jlEV%}p^7H~;b=R~m`b}PqoX~lP>C<1`wMh9CkH&^ z>ghTxMW<@fY{*XTCcm11=6BAeQ^8FFsx2661TMOFpDsBSTBS+&lyd?%p8usZdaZ#{s9lstDy!jHqBYQ`qWj#!}f!g367!j5)KG>slS8i`Gl%gdBeBg9}<3o214MS>2F z2ZUx`wQOuw_7sX0r#y9ebd)c3iZPIZ`-NdN3R1khZ_z17C&7A%=Q%-2kk?G8dv0&4+TDQ zTIy$xSK!(&w=$^;gYp4k-TYPG&PnJd$dc2Frhe3=*ixbd?n-Z*G8VMFw}?vni+!QF zHwPbya)r_?R$KyQ^syfS3lBtJzg~c(UhT+=)5t!F^qtWpWj~%wj>>%NeJ7HmMOLyH z7y58l3%>cBS}CxX!KH;t-UHq5vkqGBW{xH9*$VV}x{O#{kLr%h{l0b}pvjZa?hmW#rNf3#A5(-?Mu4dbDgmxZoA? z?+u?-RsOlpca<`!l;ytSvlV*y_o8mZzZcYULeJdfr7{f$(H2T3AjZzhor6@z!H|m^ zo?AMUC}GD$YIuNp=Nc` z3GMGNrtj@{odI7EhS*8L)~7ph0nmkwJrnAw#6|W(!`k1;Hxlh%w*Gy~!977vg82B? zuY}%uw>EGcY!^emh~@fWXlYzTME&m9kG=5FS~w)y4ePI7Op@tV4r4bHFs9JZ$n>(h z0Fo4A_U&?w>5+#LRm+q|FbrD*eg*d-QXYDz-!HI@;*6aF3DbXv z7D>md^D>ZHE?h^NktESeITkaNNfEFP#vPL;sEsuz>8*78)h|DM*B_Pfk=unT^~W9$C@8Sc zUvI!oa}y20NY?)bpA{U*kDpgfefz_jv_Uq`&q*%=wkVuZG*Fv6mtT!?J8v!<_CrF= z$x*bZjXsVqzk2wEu>*a@OSXokOsh7DZ7^H{&_S)s|;fXE8W4Zz*S* zW{SNJk@rj3KkK+d`gj(u8XZ@J&6xxz5d3nKO#h^WLX=ez-U;i0- z8Q!DUSM7UcGRAk);!_Z9=1Ok$CjBo(8oK3e+r!ej&HHP~v)3hzc(`Sg1Zga`&|T5& z)Lfx2Jl;%yIAThpL7S0q!P<~eNPt>hL#V;nSX2@*ktNiuLsd2jG|jY(X=gHSqgG7u ztaZ1wuWlK{DtM)_bt9t;+nIH6xg0`W{x z!)36BgOSG?ebHTH*@nkls$+>EnkJ^TBP?-uPWYjJgizY(G)>%zByv4E+1kt*yE;rN zLm9&89T8HU3BKgcDcIHFh&KfqVon;h3=>F)Lxd3nzHB{fvf$#NT|1+lXoQgaGD6KSUB*QtD1q|HyK+BBGplkb8#Ag@(t~2cQfgW7^GRF6%RHj^ z#WY=iaHk8mE>mvdojQRz5JE&F8au;g?gcLJ&-m_e5>kQ#f;LO#|r$|(t@iQsV^%XowDO%% zlS@n0-w_==WTW8mOGvY`o^hC^SO)^OpTyhksQpaN2=*MusCRH6t{#+k2vog(@qXV#<9_TrjU|rPPFy532f~gg!CBcv1VU? zG_G4J#v!Ar?T~RJEbPokcf?E2TyZ8wFwMP>%OMUdqMZ{QjZGV~=%H>eJ*%xbJJ_dQ zCkYT9B;bTXXPb#lL~V>@fM$+FBuzsqB#R>`S5!3lAY(cOFgC$*Or*t-GeXPIBmA}7hGUq7afDCas3V;kd>mNlmfLJ9^uH-( zHqx7-hR+tUuNo$?F_2Q2=AzPnGZaG*q+&tNchIa;w)kYia2RHm&zCD%t`t%7dzmwy z8;B!MW)eS-8AgV~Pi!fK6=*6LvBaGx48-gomXgI<)}q0yd7i-9Tdz}aX1Rh^{Nn0| z4-uHfieD=M;qk#Xn4IDoOzVS5lO`^p$TC=jp`i&#j5lNq(4O|E$pBbL3AQV!!VR(8w4XP zAf3=LbxjDos%Tl3(g?0E$Fe(w@7heZBPgSRrCeuh97RH1 zDTrXPgFtACnSX>xKx3Iwr+V!!OM?Tsg~^GqWDM+z#saD_jR+$sRAk9C1CU&3%*rDy zp+=z5N^=xLiZX`72nz%ZkZlAR5wIgD6(LC$`g9$rT)P{a5q8lVE2gH+g2-UmWZJ_r z84MkbBdF;p0|G0UkTOI!f^+PYl$BJ8Ra1CeOo$l{!GENPkxc-MO(Q5~W2}Y(qg~b+ z7)A#uX`@DnLj=?@D233dfWwm%NGezm??Rh99Y#DCBRd@qs;*dru2?rxJCG1X+)@W9 zfd-UJSg5;#Z0?MbT7&bWx%mjbYOxEPiLA3rSJV_)Sd4CH&Z76=h1FII@E@_AWeFPJaM2WB2 zS7ck!OoCNV&_vi+>DUx*rtQO!W~x~xKXer{V1!HR9L-d-T)R<})F3r_@q*CJu%k98 z!cSH~#~Wp!+htpa5hfmdF+V3}^RNdBQ^BPXLV-Ij7kL6%` z!S(kDpjZSYvB3BrSe&=aZICA(I&6v7C$zx$Z0lZm z;JnM3sa)Ajxm|dQ6C9F_k*p|^2!LY*L5hP+vugukg_t7Pa%fpbvpP({V0b6HS~izw z(5G=DC^qBWO&4~QNe<+S$!ca~LnfvG8qg&ugjPi8kGIS`{K@rG+&#VF43BK7et+}B zO}l}hK0v2b6geY9@7fo{u>4oh_QlBG)vl>#EFDTwQjtq@F^<$!R)V%M4i-DJ<2DRJ zI9oqdOv?pw5=_9q9;u!%HRvT-7O&udFp`W8Wo#rA)&80|{B_OVPk+L?=4#HoQ(;v za61x_nT8qyK2IryD@rOchp5(Gkk=uu#*}2vg&atmp~!xzQU|Ulj1epW7=MCDumxo{ zG^W~3td;sHSvILKFquUv2_gfL1R($|6g{{aL=dz`1aByd0s)C*GKFdgSt2Fb2nI|5 zAVnRZuY^!{B82qii0q{fx-hwu`tlTCcmf-AHXYX8=;+YdKNqX;uIF!`-F9NR&*Gxj>-;MF{po$8GxZ(|=|T-0NUa=2R`Q z$sEC60v1XabgMOI;v49q!bl)3>SULw^S z&ek&5X`c4LSW9*O&%@22J|^=b150s<;{`4nx8xfLaki|$FL2sWhvQUlgW{;Oh6${T z24srDqDV(bD9{ljD1S9Fq>44Jkyf{}I_i1y=?=s-zAV~YBPeVFhk;)U%!SCx6YljA5HUm0#4Hc*{FSlzZc* zVA&@lq|f!@v^zN&Vi*UO)G++p&7x04*k;Dw&pNYn;3vz~K!1z7bQKR^OB5q0;8a?L z0TK+VA`D7M5I=8zjAQZGc~1i|Jno_T)_(N(9$sRJ+P?kZ7ZgVz@3Lf(AOLGD*-b4* zm>{%*YgL+RMrs-~+EKUetZP{;n`-Rox>qfBrni1}Uu}In1CO_nm>PHJ4)jFeeL48< z+vu$wi1BsIkVl&U)&%(xxM$T7?%UWC zuV7Bj9T-Re9K?IX^oPFaqV%f?85O+Ci#hEgNc29O{0|>)we_Hz`u+2PG=pJ4zVS(H zNI?ueUs7VD;fw^>eNl}^GR0vd2_0p~;-=Wb!%2`B(SI7SdXoTv(FdlxuHLsnb}EGZLYssaPe|69DK)yt(`HB~Q4|`> z-ZcO~iU^C4UWhCrpg@Qaf`Ne%5&(wNe0q4{J%7;eo+h;Sc@!cQ*UN`VBHA@5g-H;x z+J|@pZP84qQ}OHM72L!HN~%%0+<1F@H_@hdnMI9oih)n#T!(Qz$y?W4QA7?U!)qn= z&adb{z^-uOA5W*>=g2;NE{)2Ju@QeqtYQ~<*TpC!EU#UE)Qdbs9DI1|M&gN8Rg4ri z<$qcMUO;IhEP$|PK2%t3Uc|~DL;JKPbDIJ7d0SEUmb7hfab-<}6dvKyD3l4k6UK{| z5c1z>LPY!qVB-TLC@REMSR#szrUEb+i@TWPP)BwJYOuecmBK*BmLW1Rv>}@;*loRQ zw^SB1^4!vGp)6}A&8bUj>PvqcZnfK~2YkU=m-3H+0G&#&LMczPoS2e9ux zyZmf>1H6+`jx(UFJk&XKhdy!yjAJB-kOmSAREoD$x!>F<9M6MMnrvW;WZJ={Dw;{J z&-ogQ>-c`EQ)r2bg;^1iAr+8dK!jE5J$+oSfYfCZr)K*gn1X~ifj}R_ zZeXdi`}#FH{k<&u|7G>|5>D_B0D|eG!Te6)^U(TcW=Uvl5&Lw!EfAlEL41?2LGF=Y zNjlQkP3Zp2>yU}7RLIOp1Jogb_kZ1@zhtT+g+*B;6LhKVf%$CLbzIIRgKQdwBLR#C zq5CwT;Ug&hop<@>Qep`rmG)om@XsvaTc1nTiNF{c+~rrL`sp^zBUDlthVDiR_WIGEqVq1|(v@3yfK6Z}SkJAXz1l%oW& zZ6SFjLZW+-NdZM7As8QN)AB7n8z zSXh^KOOW?T63YwmBPjSa!5GQ{G%67?V@INjs6uMv-=(2sP@_cKuvf_MpGfM-BPhEe zcy7C|YJVxUr7IO}URuSq7R6~zu|idvXswHCnr%o4;BS2UIvZ-8lz%FzLNbsu_wxAv zHi7g=mVyq$($V}i@X+&wBaB3KK~Sh0KIg^}q(+UgWy;27 zvc{82kx0<|xh6Bp5rMf9WpG$w0`Cv-V1>3IO^c#nBP>XxLPyWK_|0wUMT#RRn3)8RPtuNUbK=#ZXNE zG?gnLv0)+-Q>W1=KDsm5U^FpOnfRb(ilDGqZG4L+cH^87;+q0PwnVvMEtV?|)Raa= z2!mk2qJ}G72#CRmZATm!V?{jL?M$LerFLB;+UuQdG|`)7A{)1^?Q@!<(x%fxZH=Vb z6_7J*Bu!$wBP|_A7fWd!{W$;cl zHNd6)y_m*|l!%OMN@c$bE7qA+9Jo$gZ_q{pg4+hORb0nT&PEd}`fPuJHH=7;p|S}_ z2n^9@ry`y>D;Hcm42E}A{zdVE4DYYXJWk`G)8~?s?)|xoli|K{G5M=$ZaGXXxRXL> z7ZB%!7i{dy9BEg04qs;45=Hi;DGZVC(o}tZW`jwbKw|c=Xr@A;{2j*{=g7hsl*3zO zTk&Ky7xXz8jyw<2Y12lCIRO*vCjkV;LZ_A7;2)I0#koZ&OmT%d(VR;35Nl^ zd|Hp8=CTsOe`O<5OEJc2nw{UlmUFD{ugJv{y5-fbeMH1P&Ij#u13hr!ID79 z<6QqnkL?G!e-<&ALJx`L)37TRA|O{IDE&FOijn3c%u_7=nf3ItN4!F41c)9+0A#4M z_H2MyZ3G_d|6$g9@=TNyNk@$cDVz%wrxbfK4z2-fNa=sRVp^3$RjTF=tHO56cOr+g zw=Uh9WI<5%WNJllkVM_~YQe5r(qr|-UCr3 z`*(la|Al|Q?f-xKHh->P>*xKS?*C`|zu*7&=KrVofBx>}`j7ta_y50aEBpKZLZDBp z@TsHzkJdj20U$ylD1Rd;ipU5drWl(bn$t@DbNfS4{j?(w)KnriAlQK5)v~{({*+pb zT8WsA$zO8Dn@GfZEzpB|P>2$xco8!y-@f9Y*WuRR4hgUH=!X zdvt&Q4!FBF3`E>{7PQ!Zhhp|-lRvF>ZHcs<-ozt@0Fg#)>Gsq3WLt@iz&96uzx{KT zxZ7;rVxt>U69z}nrhi++v<9Y%;S*wQKX#Tj#Y&qs` zNZ`hC5bE-XttBWWLaSuWX@SXqC=bmU|8qs-5az>#RxwcQ+Y^K|*V6H*yv{W$^-dLn zytF$(NtoJftRpNG>$GVE_!F_XGvsQq-OQ#8i|E`i*g~h;iJ~JY(9;7xn*8TET|9sD zO^mi%F4Lrn^IVnKOmP@@NQ`}G#bC!{&2l3~8inbdZzmaIut-=CJCra^R~BEJd$TwD zaE$Z%P)ah$dy?ev<=M;0n`CLr#~sC!7TBEL-2hb+ZD8U~&d|o26kBMz;ujdwJhG5> z)A2sO&wmV@hG>6c%8EEBc%|SUuHAnQta~wv)W&@@m=lT!lQ9Y8$YD|vH4EzBNIiy{ zi!Q~2xYj~I*RkU+831Pi(Fm$3+>D684wQwuEZG~y5RhaTKte)HbquBC?xDWy)}@e4 z=68D79zJ*9d@eDJWnb#OGoEiPTa3NCBPgcCL304@(~X2C+TiD?cA&9f5MqBZNitAi z*o6yV+ZCxc)M}EcD5f-MpDVRpC?^<#82G{;p)upK0Q{k{mQ>rde1~Grm4@?&EOH~Ob zix%Zun$fXJRLZO9+Sg5^VzHun>!qV=D_faoF@ZYSKxQ<7d}OMLZHGbW`L)#7G;+$p zWD`-3_fqL}}63p$L(pj}EPbm+Qma$2L8o z9xaMy*%=R98hAAO1o(gdko2+|$?MwGQAA_LP@M_xl?WlIf;jpA%ON|@2zG0FBPil( zeTNWizxxIOM+D-ZBT@tZv?PM02#9FtE<$YTn$*diYD=otX4*!$R^x5cSC80iX3ZM* z-c@V#G?p>6U@4Gxe0~$%^O~O<0s3+gI*^ZlPof8^cX!J8dggywaWLC$tv@_?KF;5s zK$$@_bc7=OVpI2&9*?{7AM_%iN!|EDp(a$(p))QXr~*h2{XIiapZHAw?-u`>ewcr| z_doLZ$iw)*TlkXj4D|E8?ruNVuFg{&g*-!I|IR8D4;7Ir@~s~mh|+7GEW?+>VD0a3 zkOwbYQ@^FYA2xpy<@ From b1231696caa7d08c80055ca59b18f4b634dc47cf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 19 Dec 2013 13:04:04 -0500 Subject: [PATCH 50/50] Mingw64 has pthread_t available, and does not need a thread ID comparison function --- libs/pbd/pbd/abstract_ui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/pbd/pbd/abstract_ui.h b/libs/pbd/pbd/abstract_ui.h index e3f1f36b4e..ad97f25781 100644 --- a/libs/pbd/pbd/abstract_ui.h +++ b/libs/pbd/pbd/abstract_ui.h @@ -57,7 +57,7 @@ class AbstractUI : public BaseUI }; typedef typename RequestBuffer::rw_vector RequestBufferVector; -#ifdef COMPILER_MINGW +#if defined(__MINGW32__) && !defined (__MINGW64__) struct pthread_cmp {